/* Base kss resource for Archetypes */ /* XXX Note you can't use comma separation for selectors! */ input.blurrable:blur { action-server: kssValidateField; kssValidateField-fieldname: kssAttr('atfieldname', true); kssValidateField-value: currentFormVar(); kssValidateField-uid: kssAttr('atuid', true); } select.blurrable:blur { action-server: kssValidateField; kssValidateField-fieldname: kssAttr('atfieldname', true); kssValidateField-value: currentFormVar(); kssValidateField-uid: kssAttr('atuid', true); } textarea.blurrable:blur { action-server: kssValidateField; kssValidateField-fieldname: kssAttr('atfieldname', true); kssValidateField-value: currentFormVar(); kssValidateField-uid: kssAttr('atuid', true); } form[action=criterion_edit_form] input.blurrable:blur { action-cancel: kssValidateField; } form[action=criterion_edit_form] select.blurrable:blur { action-cancel: kssValidateField; } form[action=criterion_edit_form] textarea.blurrable:blur { action-cancel: kssValidateField; } .inlineEditable:dblclick { evt-dblclick-allowbubbling: true; action-server: replaceField; replaceField-fieldname: kssAttr('atfieldname', true); replaceField-macro: kssAttr('macro', true); replaceField-templateId: kssAttr('templateId', true); replaceField-uid: kssAttr('atuid', true); replaceField-target: kssAttr('target', true); replaceField-edit: true; action-client: log; } form.inlineForm input[name=kss-save]:click { evt-click-preventdefault: true; action-server: saveField; saveField-fieldname: kssAttr('atfieldname', true); saveField-kssSubmitForm: currentForm(); saveField-macro: kssAttr('macro', true); saveField-templateId: kssAttr('templateId', true); saveField-uid: kssAttr('atuid', true); saveField-target: kssAttr('target', true); } /* XXX Note you can't use comma separation for selectors! */ form.inlineForm input[name=kss-cancel]:click { evt-click-preventdefault: true; action-server: replaceWithView; replaceWithView-fieldname: kssAttr('atfieldname', true); replaceWithView-macro: kssAttr('macro', true); replaceWithView-templateId: kssAttr('templateId', true); replaceWithView-uid: kssAttr('atuid', true); replaceWithView-target: kssAttr('target', true); replaceWithView-edit: true; } /* XXX Note you can't use comma separation for selectors! */ form.inlineForm input.blurrable:keypress(inlineescape) { evt-keypress-keycodes: '27'; action-server: replaceWithView; replaceWithView-fieldname: kssAttr('atfieldname', true); replaceWithView-macro: kssAttr('macro', true); replaceWithView-templateId: kssAttr('templateId', true); replaceWithView-uid: kssAttr('atuid', true); replaceWithView-target: kssAttr('target', true); replaceWithView-edit: true; } form.inlineForm select.blurrable:keypress(inlineescape) { evt-keypress-keycodes: '27'; action-server: replaceWithView; replaceWithView-fieldname: kssAttr('atfieldname', true); replaceWithView-macro: kssAttr('macro', true); replaceWithView-templateId: kssAttr('templateId', true); replaceWithView-uid: kssAttr('atuid', true); replaceWithView-target: kssAttr('target', true); replaceWithView-edit: true; } form.inlineForm textarea.blurrable:keypress(inlineescape) { evt-keypress-keycodes: '27'; action-server: replaceWithView; replaceWithView-fieldname: kssAttr('atfieldname', true); replaceWithView-macro: kssAttr('macro', true); replaceWithView-templateId: kssAttr('templateId', true); replaceWithView-uid: kssAttr('atuid', true); replaceWithView-target: kssAttr('target', true); replaceWithView-edit: true; } form.inlineForm input[type="text"].blurrable:keydown { evt-keydown-preventdefault: true; evt-keydown-keycodes: 13; action-client: log; } /* Since some browsers (mainly, some version of Safari) do a little bit of fireworks with the events (yeah, cause it fires them up all together) we disable the default on all of them */ form.inlineForm input[type="text"].blurrable:keypress { evt-keypress-preventdefault: true; evt-keypress-keycodes: 13; action-client: log; } form.inlineForm input[type="text"].blurrable:keyup { evt-keyup-preventdefault: true; evt-keyup-keycodes: 13; action-client: log; action-server: saveField; saveField-fieldname: kssAttr('atfieldname', true); saveField-kssSubmitForm: currentForm(); saveField-macro: kssAttr('macro', true); saveField-templateId: kssAttr('templateId', true); saveField-uid: kssAttr('atuid', true); saveField-target: kssAttr('target', true); } .inlineEditable a:click { evt-click-preventbubbling: true; } .toggleArea .EVcheckAll:click { evt-click-preventdefault: true; action-client: setAttribute; setAttribute-kssSelector: parentnodecss('.toggleArea|.TGtogglecheck'); setAttribute-name: checked; setAttribute-value: true; action-client: toggleClass; toggleClass-kssSelector: parentnodecss('.toggleArea|.ASelect'); toggleClass-value: hideme; } .toggleArea .EVuncheckAll:click { evt-click-preventdefault: true; action-client: setAttribute; setAttribute-kssSelector: parentnodecss('.toggleArea|.TGtogglecheck'); setAttribute-name: checked; setAttribute-value: false; action-client: toggleClass; toggleClass-kssSelector: parentnodecss('.toggleArea|.ASelect'); toggleClass-value: hideme; } .EVtoggle:click { evt-click-preventdefault:false; action-client: toggleClass; toggleClass-kssSelector: parentnodecss('.toggleArea|.TGtoggle'); toggleClass-value: hideme; } #front-page-content:load { action-client: setAttribute; setAttribute-kssSelector: css('#front-page-content a'); setAttribute-name: target; setAttribute-value: '_blank'; } .front_page_view:timeout { evt-timeout-delay: 600000; action-server: redirctContextUrl; } #project_list:load { action-client: setAttribute; setAttribute-kssSelector: css('#project_list a'); setAttribute-name: target; setAttribute-value: '_blank'; } #siteMenuActions:load { action-client: setAttribute; setAttribute-kssSelector: css('#siteMenuActions a'); setAttribute-name: target; setAttribute-value: ''; } /* */ /* The above trick to let this file not be cached does not work, unless this file is renamed to have a kss.dtml extension. */ /* General stylesheet for Plone AJAX */ /* Add class to body to allow conditional styling when kss is available */ body:load { action-client: addClass; addClass-value: kssActive; } /* Load the kupu editor. The editor is also loaded from the page, so we give the initial=false, otherwise that should be left out if we do that too. */ iframe.kupu-editor-iframe:load { action-client: plone-initKupu; } /* #region-content:load { evt-load-initial: false; action-client: initializeCollapsible; } */ /* This loads the external links markers each time an element marked inlineEditable is reloaded (needed to make it work with inlineEditable). However, this isn't the best, client-performance wise. TODO: Find a better way to "bind just once" or just bind the effectively reloaded links, and not rebind everything #region-content .inlineEditable:load { evt-load-initial: false; action-client: bindExternalLinks; } */ /* Spinner */ #kss-spinner:spinneron { action-client: setStyle; setStyle-name: display; setStyle-value: block; } #kss-spinner:spinneroff { action-client: setStyle; setStyle-name: display; setStyle-value: none; } /* Temporarily disabled because it acts foul with queryFormLeave. This is realy an overwrite of the rule in at.kss !!! */ /* input[name="form_submit"]:click { evt-click-preventdefault: false; action-cancel: kssValidateForm; } */ /* kupu stuff */ #kupu-save-button:load { action-client: setStyle; setStyle-name: display; setStyle-value: inline; } button.kupu-save:click { action-server: savekupu; savekupu-text: currentFormVarFromKssAttr("atfieldname", true); savekupu-fieldname: kssAttr("atfieldname", true); } /* kupu stuff */ #kupu-save-button:load { action-client: setStyle; setStyle-name: display; setStyle-value: inline; } div.kupu-save-message:timeout { evt-timeout-delay: 2000; evt-timeout-repeat: ''; action-client: deleteNode; } #portal-message:timeout { evt-timeout-delay: 2000; evt-timeout-repeat: ''; action-client: deleteNode; }