openstackweb/openstack/code/LogoRightsPage.php

181 lines
5.7 KiB
PHP

<?php
/**
* Copyright 2014 Openstack Foundation
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
**/
/**
* Defines the logo permission form page type
*/
class LogoRightsPage extends Page {
private static $db = array(
'LogoURL' => 'Text',
'AllowedMembers' => 'Text',
'EchoSignCode' => 'Text'
);
private static $has_many = array(
// Relates the submission data objects to this page
'LogoRightsSubmissions' => 'LogoRightsSubmission'
);
public function getCMSFields()
{
$fields = parent::getCMSFields();
// Adds a sortable table of the submissions into the CMS
$manager = new GridField(
'LogoRightsSubmissions',
'Logos',
$this->LogoRightsSubmissions()
);
$fields->addFieldToTab("Root.Submisions", $manager);
$fields->addFieldToTab('Root.Main', new TextField('LogoURL','Path to logo downloads page (URL)'), 'Content');
$fields->addFieldToTab('Root.Main', new TextField('EchoSignCode','Numerical Code For EchoSign Document'), 'Content');
return $fields;
}
}
class LogoRightsPage_Controller extends Page_Controller {
// enables the form to be submitted
static $allowed_actions = array(
'LogoForm'
);
function AllowedMember() {
// check to see if a member is logged in and if their email address is in the allowed members field
$currentMember = Member::currentUser();
if($currentMember && (stristr($this->AllowedMembers,$currentMember->Email))) {
return TRUE;
} else {
return FALSE;
}
}
function LogoForm() {
// Create fields
$fields = new FieldList(
new TextField('Name', 'Name*'),
new EmailField('Email', 'Email*'),
new TextField('PhoneNumber', 'Phone Number*'),
new TextField('ProductName', 'Product Name*'),
new TextField('CompanyName', 'Company Name*'),
new TextField('Website', 'Company Website (URL)*'),
new TextAreaField('StreetAddress', 'Street Address*', 2, 20),
new TextField('City', 'City*'),
new TextField('State', 'State'),
new TextField('Zip', 'Zip / Postal Code'),
new TextField('Country', 'Country*'),
new CheckboxField('BehalfOfCompany','This submission is on behalf of my company')
);
// Create action
$actions = new FieldList(
new FormAction('doLogoPermissions', 'I AGREE')
);
// Create Validators
$validator = new RequiredFields('Name', 'Email', 'PhoneNumber', 'CompanyName', 'Website', 'StreetAddress','City', 'Country');
// Form(controller, form name, fields, actions, validator)
return new Form($this, 'LogoForm', $fields, $actions, $validator);
}
// called when the form is submitted (see 'form action' above)
function doLogoPermissions($data, $form) {
$submission = new LogoRightsSubmission();
$form->saveInto($submission);
//Giving the submission a page ID establishes the relationship required for it to work in the DOM view in the CMS.
$submission->LogoRightsPageID = $this->ID;
$submission->write();
//Send email alert about submission
$From = $data['Email'];
$To = "logo@openstack.org";
$Subject = "New OpenStack Trademark Agreement";
$email = EmailFactory::getInstance()->buildEmail($From, $To, $Subject);
$email->setTemplate('Trademark');
$email->populateTemplate($data);
$email->send();
Session::set('LogoSignoffCompleted', true);
$this->redirect($this->LogoURL);
}
function init() {
parent::init();
// Shorten Text Area
Requirements::customCSS("textarea {height:3em; width:300px;}");
// adding JS for jquery based validation
Requirements::javascript("http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js");
Requirements::javascript("http://ajax.microsoft.com/ajax/jquery.validate/1.7/jquery.validate.min.js");
Requirements::customScript('
jQuery(document).ready(function() {
jQuery("#Form_LogoForm").validate({
rules: {
Name: "required",
Email: {
required: true,
email: true
},
PhoneNumber: "required",
CompanyName: "required",
ProductName: "required",
Website: "required",
StreetAddress: "required",
City: "required",
Country: "required"
},
messages: {
Name: "Oops... Please provide your name.",
Email: "Oops... Please provide your email address.",
PhoneNumber: "Oops... Please provide your phone number.",
CompanyName: "Oops... Please provide your company name.",
ProductName: "Oops... Please provide your product name.",
Website: "Oops... Please provide your company website.",
StreetAddress: "Oops... Please provide your street address.",
City: "Oops... Please provide your city.",
Country: "Oops... Please provide your country."
}
});
});
');
Requirements::javascript("http://assets.zendesk.com/external/zenbox/v2.5/zenbox.js");
Requirements::css("http://assets.zendesk.com/external/zenbox/v2.5/zenbox.css");
Requirements::customScript('
if (typeof(Zenbox) !== "undefined") {
Zenbox.init({
dropboxID: "20115046",
url: "https://openstack.zendesk.com",
tabID: "Ask Us",
tabColor: "black",
tabPosition: "Right"
});
}
');
}
function BrandingMenu() {
return TRUE;
}
}