MINOR Documentation for CMSMain.js and LeftAndMain.js

git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/cms/trunk@92633 467b73ca-7a2a-4603-9d3b-597d59a354a9
This commit is contained in:
Ingo Schommer 2009-11-21 02:37:41 +00:00
parent 5173dc42e5
commit c5895ca834
2 changed files with 99 additions and 54 deletions

View File

@ -5,10 +5,19 @@
var ss_MainLayout; var ss_MainLayout;
(function($) { (function($) {
$('body.CMSMain').concrete('ss', function($){return{
/**
* @class Layout handling for the main CMS interface,
* with tree on left and main edit form on the right.
* @name ss.CMSMain
*/
$('body.CMSMain').concrete('ss', function($){return
/** @lends ss.CMSMain */
{
/** /**
* Reference to jQuery.layout element * Reference to jQuery.layout element
* @type Object
*/ */
MainLayout: null, MainLayout: null,
@ -107,9 +116,12 @@ var ss_MainLayout;
}}); }});
/** /**
* CMS-specific form behaviour * @class CMS-specific form behaviour
* @name ss.EditForm
*/ */
$('#Form_EditForm').concrete('ss', function($){return{ $('#Form_EditForm').concrete('ss', function($){return
/** @lends ss.EditForm */
{
onmatch: function() { onmatch: function() {
// Alert the user on change of page-type - this might have implications // Alert the user on change of page-type - this might have implications
// on the available form fields etc. // on the available form fields etc.
@ -124,10 +136,13 @@ var ss_MainLayout;
}}); }});
/** /**
* ParentType / ParentID field combination - mostly toggling between * @class ParentID field combination - mostly toggling between
* the two radiobuttons and setting the hidden "ParentID" field * the two radiobuttons and setting the hidden "ParentID" field
* @name ss.EditForm.ParentType
*/ */
$('#Form_EditForm_ParentType').concrete('ss', function($){return{ $('#Form_EditForm_ParentType').concrete('ss', function($){return
/** @lends ss.EditForm.ParentType */
{
onmatch : function() { onmatch : function() {
var parentTypeRootEl = $('#Form_EditForm_ParentType_root'); var parentTypeRootEl = $('#Form_EditForm_ParentType_root');
var parentTypeSubpageEl = $('#Form_EditForm_ParentType_subpage'); var parentTypeSubpageEl = $('#Form_EditForm_ParentType_subpage');
@ -156,10 +171,13 @@ var ss_MainLayout;
}}); }});
/** /**
* Email containing the link to the archived version of the page. * @class Email containing the link to the archived version of the page.
* Visible on readonly older versions of a specific page at the moment. * Visible on readonly older versions of a specific page at the moment.
* @name ss.Form_EditForm_action_email
*/ */
$('#Form_EditForm .Actions #Form_EditForm_action_email').concrete('ss', function($){return{ $('#Form_EditForm .Actions #Form_EditForm_action_email').concrete('ss', function($){return
/** @lends ss.Form_EditForm_action_email */
{
onclick: function(e) { onclick: function(e) {
window.open( window.open(
'mailto:?subject=' 'mailto:?subject='
@ -174,10 +192,13 @@ var ss_MainLayout;
}}); }});
/** /**
* Open a printable representation of the form in a new window. * @class Open a printable representation of the form in a new window.
* Used for readonly older versions of a specific page. * Used for readonly older versions of a specific page.
* @name ss.Form_EditForm_action_print
*/ */
$('#Form_EditForm .Actions #Form_EditForm_action_print').concrete('ss', function($){return{ $('#Form_EditForm .Actions #Form_EditForm_action_print').concrete('ss', function($){return
/** @lends ss.Form_EditForm_action_print */
{
onclick: function(e) { onclick: function(e) {
var printURL = $(this[0].form).attr('action').replace(/\?.*$/,'') var printURL = $(this[0].form).attr('action').replace(/\?.*$/,'')
+ '/printable/' + '/printable/'
@ -191,9 +212,12 @@ var ss_MainLayout;
}}); }});
/** /**
* A "rollback" to a specific version needs user confirmation. * @class A "rollback" to a specific version needs user confirmation.
* @name ss.Form_EditForm_action_rollback
*/ */
$('#Form_EditForm .Actions #Form_EditForm_action_rollback').concrete('ss', function($){return{ $('#Form_EditForm .Actions #Form_EditForm_action_rollback').concrete('ss', function($){return
/** @lends ss.Form_EditForm_action_rollback */
{
onclick: function(e) { onclick: function(e) {
// @todo i18n // @todo i18n
return confirm("Do you really want to copy the published content to the stage site?"); return confirm("Do you really want to copy the published content to the stage site?");
@ -201,9 +225,12 @@ var ss_MainLayout;
}}); }});
/** /**
* All forms in the right content panel should have closeable jQuery UI style titles. * @class All forms in the right content panel should have closeable jQuery UI style titles.
* @name ss.contentPanel.form
*/ */
$('#contentPanel form').concrete('ss', function($){return{ $('#contentPanel form').concrete('ss', function($){return
/** @lends ss.contentPanel.form */
{
onmatch: function() { onmatch: function() {
// Style as title bar // Style as title bar
this.find(':header:first').titlebar({ this.find(':header:first').titlebar({
@ -219,11 +246,14 @@ var ss_MainLayout;
}}); }});
/** /**
* Control the site tree filter. * @class Control the site tree filter.
* Toggles search form fields based on a dropdown selection, * Toggles search form fields based on a dropdown selection,
* similar to "Smart Search" criteria in iTunes. * similar to "Smart Search" criteria in iTunes.
* @name ss.Form_SeachTreeForm
*/ */
$('#Form_SearchTreeForm').concrete('ss', function($) {return{ $('#Form_SearchTreeForm').concrete('ss', function($) {return
/** @lends ss.Form_SeachTreeForm */
{
/** /**
* @type DOMElement * @type DOMElement
@ -268,6 +298,9 @@ var ss_MainLayout;
}); });
}, },
/**
* Filter tree based on selected criteria.
*/
_submitForm: function(e) { _submitForm: function(e) {
var self = this; var self = this;
var data = []; var data = [];

View File

@ -1,19 +1,22 @@
(function($) { (function($) {
/** /**
* Main LeftAndMain interface with some control * Available Custom Events:
* panel and an edit form. * <ul>
* <li>ajaxsubmit</li>
* <li>validate</li>
* <li>loadnewpage</li>
* *
* Events: * @class Main LeftAndMain interface with some control
* - beforeSave * panel and an edit form.
* - afterSave * @name ss.LeftAndMain
* - beforeValidate
* - afterValidate
*/ */
$('.LeftAndMain').concrete('ss', function($){return{ $('.LeftAndMain').concrete('ss', function($){return
/** @lends ss.EditMemberProfile */
{
/** /**
* * @type Number
*/ */
PingIntervalSeconds: 5*60, PingIntervalSeconds: 5*60,
@ -76,26 +79,19 @@
}}); }});
/** /**
* Base edit form, provides ajaxified saving * @class Base edit form, provides ajaxified saving
* and reloading itself through the ajax return values. * and reloading itself through the ajax return values.
* Takes care of resizing tabsets within the layout container. * Takes care of resizing tabsets within the layout container.
* @name ss.Form_EditForm
*/ */
$('#Form_EditForm').concrete('ss',function($){return{ $('#Form_EditForm').concrete('ss',function($){return
onmatch: function() { /** @lends ss.Form_EditForm */
var self = this; {
// artificially delay the resize event 200ms /**
// to avoid overlapping height changes in different onresize() methods * @type String HTML text to show when the form has been deleted.
$(window).resize(function () { */
var timerID = "timerLeftAndMainResize"; RemoveHtml: null,
if (window[timerID]) clearTimeout(window[timerID]);
window[timerID] = setTimeout(function() {self._resizeChildren();}, 200);
});
// trigger resize whenever new tabs are shown
// @todo This is called multiple times when tabs are loaded
this.find('.ss-tabset').bind('tabsshow', function() {self._resizeChildren();});
},
/** /**
* Suppress submission unless it is handled through ajaxSubmit() * Suppress submission unless it is handled through ajaxSubmit()
@ -158,7 +154,9 @@
* Hook in (optional) validation routines. * Hook in (optional) validation routines.
* Currently clientside validation is not supported out of the box in the CMS. * Currently clientside validation is not supported out of the box in the CMS.
* *
* @return boolean * @todo Placeholder implementation
*
* @return {boolean}
*/ */
validate: function() { validate: function() {
this.trigger('beforeValidate'); this.trigger('beforeValidate');
@ -194,30 +192,41 @@
Behaviour.apply(); // refreshes ComplexTableField Behaviour.apply(); // refreshes ComplexTableField
// If there's a title field and it's got a "new XX" value, focus/select that first // focus input on first form element
// This is really a little too CMS-specific (as opposed to LeftAndMain), but the cleanup can happen after jQuery refactoring this.find(':input:visible:first').focus();
if($('input#Form_EditForm_Title') && $('input#Form_EditForm_Title').value.match(/^new/i)) {
$('input#Form_EditForm_Title').select(); this.trigger('loadnewpage', {response: response});
}
} }
}}); }});
/** /**
* All buttons in the right CMS form go through here by default. * @class All buttons in the right CMS form go through here by default.
* We need this onclick overloading because we can't get to the * We need this onclick overloading because we can't get to the
* clicked button from a form.onsubmit event. * clicked button from a form.onsubmit event.
* @name ss.Form_EditForm.Actions.submit
*/ */
$('#Form_EditForm .Actions :submit').concrete('ss', function($){return{ $('#Form_EditForm .Actions :submit').concrete('ss', function($){return
/** @lends ss.Form_EditForm.Actions.submit */
{
onclick: function(e) { onclick: function(e) {
$(this[0].form).ajaxSubmit(this); $(this[0].form).ajaxSubmit(this);
return false; return false;
} }
}}); }});
$('#TreeActions').concrete('ss', function($){return{ /**
* @class Container for tree actions like "create", "search", etc.
* @name ss.TreeActions
*/
$('#TreeActions').concrete('ss', function($){return
/** @lends ss.TreeActions */
{
/**
* Setup "create", "search", "batch actions" layers above tree.
* All tab contents are closed by default.
*/
onmatch: function() { onmatch: function() {
// Setup "create", "search", "batch actions" layers above tree.
// All tab contents are closed by default.
this.tabs({ this.tabs({
collapsible: true, collapsible: true,
selected: parseInt(jQuery.cookie('ui-tabs-TreeActions')) || null, selected: parseInt(jQuery.cookie('ui-tabs-TreeActions')) || null,
@ -227,10 +236,13 @@
}}); }});
/** /**
* Link for editing the profile for a logged-in member * @class Link for editing the profile for a logged-in member
* through a modal dialog. * through a modal dialog.
* @name ss.EditMemberProfile
*/ */
$('a#EditMemberProfile').concrete('ss', function($){return{ $('a#EditMemberProfile').concrete('ss', function($){return
/** @lends ss.EditMemberProfile */
{
onmatch: function() { onmatch: function() {
var self = this; var self = this;