+++ /dev/null
-// (c) Benoît PIN 2006-2007
-// http://plinn.org
-// Licence GPL
-// $Id: generic_header_script.js 1315 2008-07-29 15:36:15Z pin $
-// $URL: http://svn.cri.ensmp.fr/svn/Plinn/branches/CMF-2.1/skins/ajax_scripts/generic_header_script.js $
-
-
-function initHeaderScript() {
- var toggleButton = document.getElementById("ToggleFormButton");
- if (!toggleButton) return;
- var ob_url = absolute_url();
- var metadataInspector = new InspectorPalette(portal_url(),
- document.getElementById("ToggleFormButton").childNodes[0],
- document.getElementById("HeaderArea"));
-
- metadataInspector.onExpand = function(inspector) {
- var onAfterPopulate = function() {
- // init simple metadata form manager
- var metadataForm = inspector.contentNode.getElementsByTagName('FORM')[0];
- var fm = new FormManager(metadataForm);
- fm.onResponseLoad = function(){inspector.collapse();};
-
- // init event handler to show full metadata form
- var showFullMetadataForm = function(evt) {
- disableDefault(evt);
- disablePropagation(evt);
-
- var initFullMetadataForm = function () {
- var metadataForm = inspector.contentNode.getElementsByTagName('FORM')[0];
- var fm = new FormManager(metadataForm);
- fm.onResponseLoad = function(){inspector.collapse();};
-
- addListener(document.getElementById('showSimpleMetadataForm'),
- 'click',
- function(evt){inspector.expand(); disableDefault(evt); disablePropagation(evt);});
- };
- var fi = new FragmentImporter(absolute_url(), initFullMetadataForm);
- fi.useMacro('header_widgets', 'fullMetadataForm', 'HeaderArea');
- };
- addListener(document.getElementById('showFullMetadataForm'), 'click', showFullMetadataForm);
- };
- var fi = new FragmentImporter(ob_url, onAfterPopulate);
- fi.useMacro('header_widgets', 'titleAndDescForm', 'HeaderArea');
- };
-
- metadataInspector.onCollapse = function(inspector) {
- var fi = new FragmentImporter(ob_url);
- fi.useMacro('header_widgets', 'viewTitleAndDesc', 'HeaderArea');
- };
-}
-
-
-function MetadataDateManager(baseFieldName, defaultDate) {
- var thisManager = this;
- this.baseFieldName = baseFieldName;
- this.defaultDate = defaultDate;
- this._previousDate = new Date();
-
- var calConfig = [];
- // setup js calendar
- calConfig["inputField"] = baseFieldName; // id of the input field
- calConfig["ifFormat"] = "%Y %m %d %H %M"; // format of the input field
- calConfig["date"] = function() { return thisManager.builDateFromInputs(); };
- calConfig["showsTime"] = true; // will display a time selector
- calConfig["button"] = "show_" + baseFieldName + "_cal"; // trigger for the calendar (button ID)
- calConfig["singleClick"] = false; // double-click mode
- calConfig["showOthers"] = true; // show overlapping months
- calConfig["weekNumbers"] = false;
- calConfig["firstDay"] = 1;
- calConfig["onSelect"] = thisManager.splitDate;
-
- Calendar.setup(calConfig);
-
- //init event listener on checkbox
- var cb = document.getElementById(baseFieldName + "_cb");
- if (cb) {
- addListener(cb, 'click', function(){thisManager.toggleDisplay();});
- if ( this.builDateFromInputs().valueOf() == this.defaultDate.valueOf() ) {
- document.getElementById(baseFieldName + "_fields").style.display = "none";
- cb.checked = true;
- }
- }
-}
-
-MetadataDateManager.prototype.builDateFromInputs = function() {
- var baseFieldName = this.baseFieldName;
- var year = document.getElementById(baseFieldName + "_year").value;
- var month = document.getElementById(baseFieldName + "_month").value;
- var day = document.getElementById(baseFieldName + "_day").value;
- var hour = document.getElementById(baseFieldName + "_hour").value;
- var minute = document.getElementById(baseFieldName + "_minute").value;
-
- if ( (year && month && day && hour && minute) != "" ) {
- var dateStr = month + "/" + day + "/" + year + " " + hour + ":" + minute + ":00";
- return new Date(dateStr) ;
- }
- else
- return new Date();
-};
-
-MetadataDateManager.prototype.splitDate = function(calendar, date) {
- var inputId = (typeof calendar == "string") ? this.baseFieldName : calendar.params['inputField'].id;
-
- var tokens;
- if (typeof date == "object") {
- tokens = new Array(5);
- tokens[0] = String( date.getFullYear() );
- var month = date.getMonth() +1;
- tokens[1] = (month <10) ? "0" + String(month) : String(month);
- var day = date.getDate()
- tokens[2] = (day < 10) ? "0" + String(day) : String(day);
- var hours = date.getHours();
- tokens[3] = (hours < 10) ? "0" + String(hours) : String(hours);
- var minutes = date.getMinutes();
- tokens[4] = (minutes < 10) ? "0" + String(minutes) : String(minutes);
- }
- else
- tokens = date.split(" ");
-
- document.getElementById(inputId + "_year").value = tokens[0];
- document.getElementById(inputId + "_month").value = tokens[1];
- document.getElementById(inputId + "_day").value = tokens[2];
- document.getElementById(inputId + "_hour").value = tokens[3];
- document.getElementById(inputId + "_minute").value = tokens[4];
-};
-
-
-MetadataDateManager.prototype.toggleDisplay = function() {
- var cb = document.getElementById(this.baseFieldName + '_cb');
- var fields = document.getElementById(this.baseFieldName + '_fields');
- if (cb.checked) {
- fields.style.display = "none";
- this._previousDate = this.builDateFromInputs();
- this.splitDate('', this.defaultDate)
- }
- else {
- this.splitDate('', this._previousDate);
- fields.style.display = "block";
- }
-};
\ No newline at end of file