diff --git a/code/AssetTableField.php b/code/AssetTableField.php index b67b9f09..6c2abf55 100755 --- a/code/AssetTableField.php +++ b/code/AssetTableField.php @@ -108,34 +108,6 @@ class AssetTableField extends ComplexTableField { new LiteralField("ImageFull", "{$childData->Name}" ) ); - - if(class_exists('GalleryFile')) { - $tab = $detailFormFields->findOrMakeTab("BottomRoot.GalleryOptions", _t('AssetTableField.GALLERYOPTIONS', 'Gallery Options')); - $tab->push( - new TextField( "Content", _t('AssetTableField.CAPTION', 'Caption') ) - ); - } - } - else if (class_exists('GalleryFile')) { - $tab = $detailFormFields->findOrMakeTab("BottomRoot.GalleryOptions", _t('AssetTableField.GALLERYOPTIONS', 'Gallery Options')); - if( $childData->Extension == 'swf' ) { - $tab->push( - new TextField( "Content", _t('AssetTableField.CAPTION', 'Caption') ), - new TextField( 'PopupWidth', _t('AssetTableField.POPUPWIDTH', 'Popup Width') ), - new TextField( 'PopupHeight', _t('AssetTableField.POPUPHEIGHT', 'Popup Height') ), - new HeaderField( 'SWFFileOptionsHeader', _t('AssetTableField.SWFFILEOPTIONS', 'SWF File Options') ), - new CheckboxField( 'Embed', _t('AssetTableField.ISFLASH', 'Is A Flash Document') ), - new CheckboxField( 'LimitDimensions', _t('AssetTableField.DIMLIMT', 'Limit The Dimensions In The Popup Window') ) - ); - } - else { - $tab = $detailFormFields->findOrMakeTab("BottomRoot.GalleryOptions", _t('AssetTableField.GALLERYOPTIONS', 'Gallery Options')); - $tab->push( - new TextField( "Content", _t('AssetTableField.CAPTION', 'Caption') ), - new TextField( 'PopupWidth', _t('AssetTableField.POPUPWIDTH', 'Popup Width') ), - new TextField( 'PopupHeight', _t('AssetTableField.POPUPHEIGHT', 'Popup Height') ) - ); - } } if($childData && $childData->hasMethod('BackLinkTracking')) { diff --git a/code/CMSMain.php b/code/CMSMain.php index 638bab5c..167bda3e 100644 --- a/code/CMSMain.php +++ b/code/CMSMain.php @@ -324,30 +324,9 @@ JS; * @return DataObjectSet */ public function PageTypes() { - $classes = ClassInfo::getValidSubClasses(); - array_shift($classes); + $classes = SiteTree::page_type_classes(); + $result = new DataObjectSet(); - $kill_ancestors = array(); - - // figure out if there are any classes we don't want to appear - foreach($classes as $class) { - $instance = singleton($class); - - // do any of the progeny want to hide an ancestor? - if($ancestor_to_hide = $instance->stat('hide_ancestor')) { - // note for killing later - $kill_ancestors[] = $ancestor_to_hide; - } - } - - // If any of the descendents don't want any of the elders to show up, cruelly render the elders surplus to requirements. - if($kill_ancestors) { - foreach ($kill_ancestors as $mark) { - // unset from $classes - $idx = array_search($mark, $classes); - unset($classes[$idx]); - } - } foreach($classes as $class) { $instance = singleton($class); @@ -642,7 +621,7 @@ JS; if(Director::is_ajax()) { // need a valid ID value even if the record doesn't have one in the database // (its still present in the live tables) - $liveRecord = Versioned::get_one_by_stage('SiteTree', 'Live', "\"SiteTree_Live\".\"ID\" = $recordID"); + $liveRecord = Versioned::get_one_by_stage('SiteTree', 'Live', "SiteTree_Live.ID = $recordID"); // if the page has never been published to live, we need to act the same way as in deletefromlive() if($liveRecord) { // the form is readonly now, so we need to refresh the representation @@ -1177,8 +1156,7 @@ JS; return new Form($this, "AddPageOptionsForm", new FieldSet( new HiddenField("ParentID"), - new DropdownField("PageType", "", $pageTypes) - // "Page to copy" => new TreeDropdownField("DuplicateSection", "", "SiteTree"), + new DropdownField("PageType", "", $pageTypes, 'Page') ), new FieldSet( new FormAction("addpage", _t('CMSMain.GO',"Go")) diff --git a/code/MemberTableField.php b/code/MemberTableField.php index 53d742d2..c9b14293 100755 --- a/code/MemberTableField.php +++ b/code/MemberTableField.php @@ -33,9 +33,9 @@ class MemberTableField extends ComplexTableField { static $data_class = "Member"; protected $permissions = array( - "add", - "edit", - "delete" + 'add', + 'edit', + 'delete' ); private static $addedPermissions = array(); @@ -44,32 +44,31 @@ class MemberTableField extends ComplexTableField { private static $addedCsvFields = array(); - public static function addPermissions( $addingPermissionList ) { + public static function addPermissions($addingPermissionList) { self::$addedPermissions = $addingPermissionList; } - public static function addMembershipFields( $addingFieldList, $addingCsvFieldList = null ) { + public static function addMembershipFields($addingFieldList, $addingCsvFieldList = null) { self::$addedFields = $addingFieldList; $addingCsvFieldList == null ? self::$addedCsvFields = $addingFieldList : self::$addedCsvFields = $addingCsvFieldList; } function __construct($controller, $name, $group, $members = null, $hidePassword = true, $pageLimit = 10) { - if($group) { if(is_object($group)) { $this->group = $group; - } else if(is_numeric($group)){ - $this->group = DataObject::get_by_id('Group',$group); + } elseif(is_numeric($group)) { + $this->group = DataObject::get_by_id('Group', $group); } } else if(is_numeric($_REQUEST['ctf'][$this->Name()]["ID"])) { - $this->group = DataObject::get_by_id('Group',$_REQUEST['ctf'][$this->Name()]["ID"]); + $this->group = DataObject::get_by_id('Group', $_REQUEST['ctf'][$this->Name()]["ID"]); } + $sourceClass = $this->stat('data_class'); - $sourceClass = $this->stat("data_class"); - - foreach( self::$addedPermissions as $permission ) + foreach(self::$addedPermissions as $permission) { array_push( $this->permissions, $permission ); + } $fieldList = array( "FirstName" => _t('MemberTableField.FIRSTNAME', 'Firstname'), @@ -78,11 +77,11 @@ class MemberTableField extends ComplexTableField { ); $csvFieldList = $fieldList; - foreach( self::$addedCsvFields as $key => $value ) { + foreach(self::$addedCsvFields as $key => $value) { $csvFieldList[$key] = $value; } - foreach( self::$addedFields as $key => $value ) { + foreach(self::$addedFields as $key => $value) { $fieldList[$key] = $value; } @@ -102,12 +101,7 @@ class MemberTableField extends ComplexTableField { Requirements::javascript(CMS_DIR . '/javascript/MemberTableField.js'); Requirements::javascript(CMS_DIR . "/javascript/MemberTableField_popup.js"); - // construct the filter and sort - if(isset($_REQUEST['MemberOrderByField'])) { - $this->sourceSort = '"' . Convert::raw2sql($_REQUEST['MemberOrderByField']) . '"' . Convert::raw2sql( $_REQUEST['MemberOrderByOrder'] ); - } - - $SNG_member = singleton('Member'); + $SNG_member = singleton($this->stat('data_class')); // search $SQL_search = isset($_REQUEST['MemberSearch']) ? Convert::raw2sql($_REQUEST['MemberSearch']) : null; @@ -129,11 +123,6 @@ class MemberTableField extends ComplexTableField { $this->setFieldListCsv( $csvFieldList ); } - /** - * Overridden functions - */ - - function sourceID() { return $this->group->ID; } @@ -145,46 +134,21 @@ class MemberTableField extends ComplexTableField { function SearchForm() { $searchFields = new FieldGroup( new TextField('MemberSearch', _t('MemberTableField.SEARCH', 'Search')), - new HiddenField("ctf[ID]",'',$this->group->ID), - new HiddenField('MemberFieldName','',$this->name), - new HiddenField('MemberDontShowPassword','',$this->hidePassword) + new HiddenField("ctf[ID]", '', $this->group->ID), + new HiddenField('MemberFieldName', '', $this->name), + new HiddenField('MemberDontShowPassword', '', $this->hidePassword) ); - $orderByFields = new FieldGroup( - new LabelField('OrderByLabel',_t('MemberTableField.ORDERBY', 'Order by')), - new FieldSet( - new DropdownField('MemberOrderByField','', array( - 'FirstName' => _t('MemberTableField.FIRSTNAME', 'FirstName'), - 'Surname' => _t('MemberTableField.SURNAME', 'Surname'), - 'Email' => _t('MemberTableField.EMAIL', 'Email') - )), - new DropdownField('MemberOrderByOrder','',array( - 'ASC' => _t('MemberTableField.ASC', 'Ascending'), - 'DESC' => _t('MemberTableField.DESC', 'Descending') - )) - ) - ); - - $groups = DataObject::get('Group'); - $groupArray = array('' => _t('MemberTableField.ANYGROUP', 'Any group')); - foreach( $groups as $group ) { - $groupArray[$group->ID] = $group->Title; - } - $groupFields = new DropdownField('MemberGroup', _t('MemberTableField.FILTERBYGROUP', 'Filter by group'),$groupArray ); - $actionFields = new LiteralField('MemberFilterButton',''); $fieldContainer = new FieldGroup( - $searchFields, - // $orderByFields, - // $groupFields, - $actionFields + $searchFields, + $actionFields ); return $fieldContainer->FieldHolder(); } - /** * Add existing member to group rather than creating a new member */ @@ -239,8 +203,6 @@ class MemberTableField extends ComplexTableField { } - - /** * ################################# * Utility Functions @@ -254,7 +216,6 @@ class MemberTableField extends ComplexTableField { return 'GroupID'; } - /** * ################################# * Custom Functions @@ -271,6 +232,7 @@ class MemberTableField extends ComplexTableField { function setGroup($group) { $this->group = $group; } + function setController($controller) { $this->controller = $controller; } @@ -284,17 +246,25 @@ class MemberTableField extends ComplexTableField { */ function AddRecordForm() { $fields = new FieldSet(); - foreach($this->FieldList() as $fieldName=>$fieldTitle) { + foreach($this->FieldList() as $fieldName => $fieldTitle) { $fields->push(new TextField($fieldName)); } $fields->push(new HiddenField('ctf[ID]', null, $this->group->ID)); - return new TabularStyle(new NestedForm(new Form($this, 'AddRecordForm', - $fields, - new FieldSet( - new FormAction('addtogroup', _t('MemberTableField.ADD','Add')) + $actions = new FieldSet( + new FormAction('addtogroup', _t('MemberTableField.ADD','Add')) + ); + + return new TabularStyle( + new NestedForm( + new Form( + $this, + 'AddRecordForm', + $fields, + $actions + ) ) - ))); + ); } /** @@ -331,7 +301,7 @@ class MemberTableField extends ComplexTableField { * * This includes getting inherited groups, such as groups under groups. */ - function sourceItems(){ + function sourceItems() { // Caching. if($this->sourceItems) { return $this->sourceItems; @@ -343,20 +313,21 @@ class MemberTableField extends ComplexTableField { $limitClause = ($_REQUEST['ctf'][$this->Name()]['start']) . ", {$this->pageSize}"; } else { $limitClause = "0, {$this->pageSize}"; - } // We use the group to get the members, as they already have the bulk of the look up functions $start = isset($_REQUEST['ctf'][$this->Name()]['start']) ? $_REQUEST['ctf'][$this->Name()]['start'] : 0; $this->sourceItems = $this->group->Members( - $this->pageSize, // limit - $start, // offset - $this->sourceFilter, - $this->sourceSort - ); - $this->unpagedSourceItems = $this->group->Members( '', '', $this->sourceFilter, $this->sourceSort ); + $this->pageSize, // limit + $start, // offset + $this->sourceFilter, + $this->sourceSort + ); + + $this->unpagedSourceItems = $this->group->Members('', '', $this->sourceFilter, $this->sourceSort); $this->totalCount = ($this->sourceItems) ? $this->sourceItems->TotalItems() : 0; + return $this->sourceItems; } diff --git a/code/ModelAdmin.php b/code/ModelAdmin.php index 6c349abe..79ea1239 100644 --- a/code/ModelAdmin.php +++ b/code/ModelAdmin.php @@ -208,7 +208,7 @@ abstract class ModelAdmin extends LeftAndMain { /** * @return array */ - protected function getManagedModels() { + function getManagedModels() { $models = $this->stat('managed_models'); if(is_string($models)) $models = array($models); if(!count($models)) user_error('ModelAdmin::getManagedModels(): @@ -674,21 +674,23 @@ class ModelAdmin_CollectionController extends Controller { */ public function AddForm() { $newRecord = new $this->modelClass(); - if($newRecord->hasMethod('getCMSAddFormFields')) { - $fields = $newRecord->getCMSAddFormFields(); - } else { - $fields = $newRecord->getCMSFields(); - } + if($newRecord->canCreate()){ + if($newRecord->hasMethod('getCMSAddFormFields')) { + $fields = $newRecord->getCMSAddFormFields(); + } else { + $fields = $newRecord->getCMSFields(); + } - $validator = ($newRecord->hasMethod('getCMSValidator')) ? $newRecord->getCMSValidator() : null; + $validator = ($newRecord->hasMethod('getCMSValidator')) ? $newRecord->getCMSValidator() : null; - $actions = new FieldSet( - new FormAction("doCreate", _t('ModelAdmin.ADDBUTTON', "Add")) - ); + $actions = new FieldSet( + new FormAction("doCreate", _t('ModelAdmin.ADDBUTTON', "Add")) + ); - $form = new Form($this, "AddForm", $fields, $actions, $validator); + $form = new Form($this, "AddForm", $fields, $actions, $validator); - return $form; + return $form; + } } function doCreate($data, $form, $request) { @@ -771,7 +773,11 @@ class ModelAdmin_RecordController extends Controller { $validator = ($this->currentRecord->hasMethod('getCMSValidator')) ? $this->currentRecord->getCMSValidator() : null; $actions = $this->currentRecord->getCMSActions(); - $actions->push(new FormAction("doSave", _t('ModelAdmin.SAVE', "Save"))); + if($this->currentRecord->canEdit(Member::currentUser())){ + $actions->push(new FormAction("doSave", _t('ModelAdmin.SAVE', "Save"))); + }else{ + $fields = $fields->makeReadonly(); + } if($this->currentRecord->canDelete(Member::currentUser())) { $actions->insertFirst($deleteAction = new FormAction('doDelete', _t('ModelAdmin.DELETE', 'Delete'))); diff --git a/css/cms_left.css b/css/cms_left.css index c2c02fb0..46133fc7 100644 --- a/css/cms_left.css +++ b/css/cms_left.css @@ -1,7 +1,11 @@ #left form.actionparams { background: #eee; - padding: 3px 5px; + padding: 0 0 5px 0; + float: left; } + #left form#search_options { + padding-bottom: 8px; + } #left form.actionparams input, #left form.actionparams select { padding: 1px; @@ -14,7 +18,7 @@ #PageType, #ReportSelector_holder select { float: left; - margin-right: 3px; + margin-right: 4px; padding: 1px; } #left form.actionparms input.action { @@ -306,11 +310,17 @@ ul.tree span.a.last.Root span.c, ul.tree span.a.children.Root span.c { margin: 0; } + +ul.tree span.a.Root span.c { + background: url(../../jsparty/tree/images/i-bottom.gif) no-repeat scroll 0 50%; +} + ul#sitetree.tree ul { margin-left: 0; } ul#sitetree.tree ul ul { - margin-left: 16px; + padding-left: 16px; + background: url(../../jsparty/tree/images/i-repeater.gif) repeat-y scroll 0 50%; } @@ -360,7 +370,9 @@ ul.tree span.untranslated a:visited { float: left; } #left form.actionparams #InputSiteTreeFilterDate .calendar { - margin-left: -100px; + margin-left: -96px; + width: 190px; + height: 141px; } /* IE7 fix: */ #left form.actionparams #InputSiteTreeFilterDate table { @@ -383,6 +395,31 @@ ul.tree span.untranslated a:visited { font-style: italic; } +#SortItems { + border-top: 1px solid #cccccc; + padding: 5px 0 0 0; + overflow: hidden; + clear: left; + width: 100%; +} + #SortItems input, #ShowChanged input { + float: left; + margin: 0 3px 0 0; + } + +#versions_actions .versionChoice { + float: left; + display: block; + margin: 0 0 5px 0; +} + +#versions_actions input, #Remember input { + float: left; + display: block; + padding-top: 2px; + margin: 0 3px 0 0; +} + /** * i18n @@ -394,13 +431,3 @@ ul.tree span.untranslated a:visited { border-top: 1px solid #CCCCCC; padding: 3px 0 3px 7px; } - -#SortItems { - border-bottom: 1px solid #cccccc; - background: #eee none repeat scroll 0%; - padding: 3px 0 3px 7px; -} - #SortItems #sortitems { - float: left; - margin-right: 3px; - } \ No newline at end of file diff --git a/css/cms_right.css b/css/cms_right.css index 59711bd8..ee17e049 100644 --- a/css/cms_right.css +++ b/css/cms_right.css @@ -17,6 +17,11 @@ position: relative; } +/* legend tag shows up annoying spacing in IE6/7 */ +.right form legend { + display: none; +} + .right form .field { /*margin: 3px !important;*/ margin: 0; diff --git a/css/layout.css b/css/layout.css index 31c80063..ce1b6aa3 100644 --- a/css/layout.css +++ b/css/layout.css @@ -20,14 +20,14 @@ body { .ajaxActions { position: absolute; bottom: 5px; - right: 15px; + right: 8px; text-align: right; } #TreeActions { - background: #eee; float: left; width: 100%; + padding-bottom: 5px; } #TreeActions li { float: left; @@ -51,8 +51,8 @@ li.action button { width: auto; border-color: #CCCCCC rgb(153, 153, 153) rgb(153, 153, 153) rgb(204, 204, 204); border-style: double; - margin: 1px; - padding: 2px; + margin-right: 2px; + padding: 2px 1px; font-size: 11px; } .ajaxActions input, @@ -329,15 +329,70 @@ body.stillLoading select { overflow-y: auto; overflow-x: hidden; } -#sitetree { - margin-top: 2px; - width: 500px; /* IE's chocking right now */ -} - html>body #sitetree { - width: auto; + + #sitetree_holder #TreeTools { + float: left; + width: inherit; } + #SearchBox { + float: left; + width: 100%; + margin-bottom: 5px; + } + #SearchBox #SiteTreeSearchTerm { + padding: 1px 0 2px 0; + } + #sitetree_ul { + padding: 3px 0 0 3px; + clear: left; + } + #sitetree { + width: 500px; /* IE's chocking right now */ + } + html>body #sitetree { + width: auto; + } + #left #TreeActions, + #left #SortItems { + background: #EEE; + padding: 5px; + float: left; + width: 95%; + } + #left #SortItems { + border-bottom: 1px solid #CCC; + margin-bottom: 5px; + } +#TreeTools label { + display: block; + padding-top: 2px; + _padding-top: 4px; +} -div.spacer, li.spacer { +#TreeTools #batchactionsforms { + padding: 0 0 7px 1px; + float: left; +} + + #TreeTools div p, #ShowChanged { + margin: 0 0 5px 0; + float: left; + } + #ShowChanged { + width: 100%; + } + #TreeTools div.middleColumn { + margin: 0; + } + #TreeTools #action_publish_selected, + #TreeTools #action_publish_selected { + padding: 2px 1px; + float: left; + } + + +div.spacer, +li.spacer { float: none; clear: both; background-color: transparent; diff --git a/javascript/AssetAdmin.js b/javascript/AssetAdmin.js index 67afd5de..ee3bef77 100755 --- a/javascript/AssetAdmin.js +++ b/javascript/AssetAdmin.js @@ -102,8 +102,10 @@ CheckBoxRange.prototype = { this.form = form; this.field = field; this.eventPossibleCheckHappened = this.possibleCheckHappened.bindAsEventListener(this); - Event.observe(form, "click", this.eventPossibleCheckHappened); - Event.observe(form, "keyup", this.eventPossibleCheckHappened); + if(form) { + Event.observe(form, "click", this.eventPossibleCheckHappened); + Event.observe(form, "keyup", this.eventPossibleCheckHappened); + } }, possibleCheckHappened: function(event) { diff --git a/javascript/LeftAndMain_right.js b/javascript/LeftAndMain_right.js index 2daed8ba..6d7d931c 100755 --- a/javascript/LeftAndMain_right.js +++ b/javascript/LeftAndMain_right.js @@ -451,6 +451,6 @@ window.name = windowName('cms'); * Return a unique window name that contains the URL */ function windowName(suffix) { - var base = document.getElementsByTagName('base')[0].href.replace('http://','').replace(/\//g,'_').replace(/\./g,'_'); + var base = document.getElementsByTagName('base')[0].href.replace('~','').replace('http://','').replace(/\//g,'_').replace(/\./g,'_'); return base + suffix; } \ No newline at end of file diff --git a/javascript/ModelAdmin.js b/javascript/ModelAdmin.js index 7258064c..ca900b73 100644 --- a/javascript/ModelAdmin.js +++ b/javascript/ModelAdmin.js @@ -144,7 +144,7 @@ $(document).ready(function() { * Table record handler for search result record * @todo: Shouldn't this be part of TableListField? */ - $('#right #Form_ResultsForm tbody td a:not(.deletelink)') + $('#right #Form_ResultsForm tbody td a:not(.deletelink,.downloadlink)') .livequery('click', function(){ $(this).parent().parent().addClass('loading'); var el = $(this); diff --git a/javascript/TinyMCEImageEnhancement.js b/javascript/TinyMCEImageEnhancement.js index 6b3e7878..1470c545 100644 --- a/javascript/TinyMCEImageEnhancement.js +++ b/javascript/TinyMCEImageEnhancement.js @@ -242,7 +242,7 @@ TinyMCEImageEnhancement.prototype = { destHeight = imgTag.className.match(/destheight=([0-9.\-]+)([, ]|$)/) ? RegExp.$1 : null; } catch(er) { } - TinyMCE_AdvancedTheme._insertImage(relativeHref, altText, 0, null, null, destWidth, destHeight, null, null, cssClass); + TinyMCE_AdvancedTheme._insertImage(relativeHref, altText, 0, '', '', destWidth, destHeight, '', '', cssClass); }, /** diff --git a/templates/Includes/CMSMain_left.ss b/templates/Includes/CMSMain_left.ss index 8779de5e..dbdc77a2 100755 --- a/templates/Includes/CMSMain_left.ss +++ b/templates/Includes/CMSMain_left.ss @@ -7,65 +7,70 @@ <% _t('SITECONTENT TITLE','Site Content and Structure',PR_HIGH) %>
- - -
- <% control AddPageOptionsForm %> -
- --> -
- -
- - <% end_control %> - + + +
+ +
+
<% else %> class="onelang"<% end_if %>> + Language: $LangSelector
- - -
- -
-
<% else %> class="onelang"<% end_if %>> - Language: $LangSelector
$SiteTreeAsUL