# -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- # ***** BEGIN LICENSE BLOCK ***** # Version: NPL 1.1/GPL 2.0/LGPL 2.1 # # The contents of this file are subject to the Netscape Public License # Version 1.1 (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.mozilla.org/NPL/ # # Software distributed under the License is distributed on an "AS IS" basis, # WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License # for the specific language governing rights and limitations under the # License. # # The Original Code is mozilla.org code. # # The Initial Developer of the Original Code is # Netscape Communications Corporation. # Portions created by the Initial Developer are Copyright (C) 1998 # the Initial Developer. All Rights Reserved. # # Contributor(s): # # Alternatively, the contents of this file may be used under the terms of # either the GNU General Public License Version 2 or later (the "GPL"), or # the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), # in which case the provisions of the GPL or the LGPL are applicable instead # of those above. If you wish to allow use of your version of this file only # under the terms of either the GPL or the LGPL, and not to allow others to # use your version of this file under the terms of the NPL, indicate your # decision by deleting the provisions above and replace them with the notice # and other provisions required by the GPL or the LGPL. If you do not delete # the provisions above, a recipient may use your version of this file under # the terms of any one of the NPL, the GPL or the LGPL. # # ***** END LICENSE BLOCK ***** // This is the RDF Resource we're dealing with. var gResource; // This is the set of fields that are visible in the window. var gFields; // ...and this is a parallel array that contains the RDF properties // that they are associated with. var gProperties; function showDescription() { initServices(); initBMService(); gResource = RDF.GetResource(window.arguments[0]); if (gResource == BMSVC.getBookmarksToolbarFolder()) { var description = BookmarksUtils.getLocaleString("description_PersonalToolbarFolder"); var box = document.getElementById("description-box"); box.hidden = false; var textNode = document.createTextNode(description); document.getElementById("bookmarkDescription").appendChild(textNode); } } function Init() { // This is the set of fields that are visible in the window. gFields = ["name", "url", "shortcut", "description", "webpanel"]; // ...and this is a parallel array that contains the RDF properties // that they are associated with. gProperties = [RDF.GetResource(NC_NS+"Name"), RDF.GetResource(NC_NS+"URL"), RDF.GetResource(NC_NS+"ShortcutURL"), RDF.GetResource(NC_NS+"Description"), RDF.GetResource(NC_NS+"WebPanel")]; var x; // Initialize the properties panel by copying the values from the // RDF graph into the fields on screen. for (var i=0; i= 0) document.getElementById("bookmarkIcon").checked = true; if (method.indexOf("sound") >= 0) document.getElementById("playSound").checked = true; if (method.indexOf("alert") >= 0) document.getElementById("showAlert").checked = true; if (method.indexOf("open") >= 0) document.getElementById("openWindow").checked = true; } } } // if its a container, disable some things var isContainerFlag = RDFCU.IsContainer(BMDS, gResource); if (!isContainerFlag) { // XXX To do: the "RDFCU.IsContainer" call above only works for RDF sequences; // if its not a RDF sequence, we should to more checking to see if // the item in question is really a container of not. A good example // of this is the "File System" container. } var isSeparator = BookmarksUtils.resolveType(gResource) == "BookmarkSeparator"; if (isContainerFlag || isSeparator) { // Hide the "Load in sidebar" checkbox unless it's a bookmark. var webpanelCheckbox = document.getElementById("webpanel"); webpanelCheckbox.hidden = true; // If it is a folder, it has no URL or Keyword document.getElementById("locationrow").setAttribute("hidden", "true"); document.getElementById("shortcutrow").setAttribute("hidden", "true"); if (isSeparator) { document.getElementById("descriptionrow").setAttribute("hidden", "true"); } } var showScheduling = false; var url = BMDS.GetTarget(gResource, gProperties[1], true); if (url) { url = url.QueryInterface(Components.interfaces.nsIRDFLiteral).Value; if (!url || url.substr(0,7).toLowerCase() == "http://" || url.substr(0,8).toLowerCase() == "https://") showScheduling = true; } if (!showScheduling) { // only allow scheduling of http/https URLs document.getElementById("ScheduleTab").setAttribute("hidden", "true"); document.getElementById("NotifyTab").setAttribute("hidden", "true"); } sizeToContent(); // Set up the enabled of controls on the scheduling panels dayRangeChange(document.getElementById("dayRange")); // set initial focus nameNode.focus(); nameNode.select(); } function Commit() { var changed = false; // Grovel through the fields to see if any of the values have // changed. If so, update the RDF graph and force them to be saved // to disk. for (var i=0; i parseInt(endHourRange)) { var temp = startHourRange; startHourRange = endHourRange; endHourRange = temp; } var duration = document.getElementById("duration").value; if (!duration) { alert(BookmarksUtils.getLocaleString("pleaseEnterADuration")); return false; } var methods = []; if (document.getElementById("bookmarkIcon").checked) methods.push("icon"); if (document.getElementById("playSound").checked) methods.push("sound"); if (document.getElementById("showAlert").checked) methods.push("alert"); if (document.getElementById("openWindow").checked) methods.push("open"); if (methods.length == 0) { alert(BookmarksUtils.getLocaleString("pleaseSelectANotification")); return false; } var method = methods.join(); // join string in array with "," newValue = dayRange + "|" + startHourRange + "-" + endHourRange + "|" + duration + "|" + method; } if (newValue) newValue = RDF.GetLiteral(newValue); changed |= updateAttribute(scheduleArc, oldValue, newValue); } if (changed) { var remote = BMDS.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource); if (remote) remote.Flush(); } window.close(); return true; } function updateAttribute(aProperty, aOldValue, aNewValue) { if ((aOldValue || aNewValue) && aOldValue != aNewValue) { if (aOldValue && !aNewValue) BMDS.Unassert(gResource, aProperty, aOldValue); else if (!aOldValue && aNewValue) BMDS.Assert(gResource, aProperty, aNewValue, true); else /* if (aOldValue && aNewValue) */ BMDS.Change(gResource, aProperty, aOldValue, aNewValue); return true; } return false; } function setEndHourRange() { // Get the values of the start-time and end-time as ints var startHourRangeNode = document.getElementById("startHourRange"); var startHourRange = startHourRangeNode.selectedItem.getAttribute("value"); var startHourRangeInt = parseInt(startHourRange); var endHourRangeNode = document.getElementById("endHourRange"); var endHourRange = endHourRangeNode.selectedItem.getAttribute("value"); var endHourRangeInt = parseInt(endHourRange); var endHourItemNode = endHourRangeNode.firstChild.firstChild; // disable all those end-times before the start-time for (var index=0; index= endHourRangeInt) endHourRangeNode.selectedItem = endHourItemNode; // make sure all the end-times after the start-time are enabled for (; index < 24; ++index) { endHourItemNode.removeAttribute("disabled"); endHourItemNode = endHourItemNode.nextSibling; } } function dayRangeChange (aMenuList) { var controls = ["startHourRange", "endHourRange", "duration", "bookmarkIcon", "showAlert", "openWindow", "playSound", "durationSubLabel", "durationLabel", "startHourRangeLabel", "endHourRangeLabel"]; for (var i=0; i