Make bookmark property dialog skinnable.

This commit is contained in:
rjc%netscape.com 2000-04-01 08:46:14 +00:00
parent 83f6eb3ae0
commit 69568fa841
4 changed files with 321 additions and 258 deletions

View File

@ -22,9 +22,6 @@
var NC_NAMESPACE_URI = "http://home.netscape.com/NC-rdf#";
// string bundle
var bundle = null;
// XXX MAKE SURE that the "url" field is LAST!
// This is important for what happens if/when the URL itself is changed.
// Ask rjc@netscape.com if you want to know why exactly this is.
@ -50,13 +47,15 @@ var Bookmarks = RDF.GetDataSource("rdf:bookmarks");
// Init() will fill this in.
var bookmark_url = '';
function Init()
{
// initialise the string bundle.
bundle = srGetStrBundle("chrome://bookmarks/locale/bookmark.properties");
bookmark_url = window.arguments[0];
// set up action buttons
doSetOKCancel(Commit, Cancel);
// Initialize the properties panel by copying the values from the
// RDF graph into the fields on screen.
@ -75,6 +74,20 @@ function Init()
if (value) field.value = value;
}
/*
// try and set window title
var nameNode = document.getElementById("name");
if (nameNode)
{
var name = nameNode.value;
if (name && name != "")
{
dump("\n Set window name to '" + name + "'\n");
window.title = name;
}
}
*/
// check bookmark schedule
var value = Bookmarks.GetTarget(RDF.GetResource(bookmark_url),
RDF.GetResource("http://home.netscape.com/WEB-rdf#Schedule"),
@ -93,11 +106,11 @@ function Init()
value = value.substr(sep+1, value.length-1);
var dayNode = document.getElementById("dayRange");
for (var x=0; x < dayNode.options.length; x++)
for (var x=0; x < dayNode.childNodes[0].childNodes.length; x++)
{
if (dayNode.options[x].value == days)
if (dayNode.childNodes[0].childNodes[x].getAttribute("data") == days)
{
dayNode.selectedIndex = x;
dayNode.selectedItem = dayNode.childNodes[0].childNodes[x];
break;
}
}
@ -121,27 +134,27 @@ function Init()
// set start hour
var startHourNode = document.getElementById("startHourRange");
for (var x=0; x < startHourNode.options.length; x++)
for (var x=0; x < startHourNode.childNodes[0].childNodes.length; x++)
{
if (startHourNode.options[x].value == startHour)
if (startHourNode.childNodes[0].childNodes[x].getAttribute("data") == startHour)
{
startHourNode.selectedIndex = x;
startHourNode.selectedItem = startHourNode.childNodes[0].childNodes[x];
break;
}
}
// set end hour
var endHourNode = document.getElementById("endHourRange");
for (var x=0; x < endHourNode.options.length; x++)
for (var x=0; x < endHourNode.childNodes[0].childNodes.length; x++)
{
if (endHourNode.options[x].value == endHour)
if (endHourNode.childNodes[0].childNodes[x].getAttribute("data") == endHour)
{
endHourNode.selectedIndex = x;
endHourNode.selectedItem = endHourNode.childNodes[0].childNodes[x];
break;
}
}
}
// get duration
if ((sep = value.indexOf("|")) > 0)
{
@ -155,26 +168,22 @@ function Init()
// get notification method
if (value.indexOf("icon") >= 0)
{
document.getElementById("bookmarkIcon").setAttribute("checked", "1");
document.getElementById("bookmarkIcon").checked = true;
}
if (value.indexOf("sound") >= 0)
{
document.getElementById("playSound").setAttribute("checked", "1");
document.getElementById("playSound").checked = true;
}
if (value.indexOf("alert") >= 0)
{
document.getElementById("showAlert").setAttribute("checked", "1");
document.getElementById("showAlert").checked = true;
}
if (value.indexOf("open") >= 0)
{
document.getElementById("openWindow").setAttribute("checked", "1");
document.getElementById("openWindow").checked = true;
}
}
// if its a container, disable some things
var isContainerFlag = RDFC.IsContainer(Bookmarks, RDF.GetResource(bookmark_url));
if (!isContainerFlag)
@ -185,33 +194,44 @@ function Init()
// of this is the "File System" container.
}
if (isContainerFlag)
{
// If it is a folder, it has no URL.
dump("disabling url field for folder\n");
document.getElementById("url").disabled = true;
// If it is a folder, it has no Shortcut URL.
dump("disabling shortcut url field for folder\n");
document.getElementById("shortcut").disabled = true;
if (isContainerFlag)
{
// If it is a folder, it has no URL.
var locationBox = document.getElementById("locationBox");
if (locationBox)
{
dump("Hide location box\n");
var parentNode = locationBox.parentNode;
parentNode.removeChild(locationBox);
}
// If it is a folder, no scheduling!
var scheduleSepNode = document.getElementById("scheduleSeparator");
if (scheduleSepNode)
{
var parentNode = scheduleSepNode.parentNode;
parentNode.removeChild(scheduleSepNode);
// If it is a folder, it has no Shortcut URL.
var shortcutBox = document.getElementById("shortcutBox");
if (shortcutBox)
{
dump("Hide shortcut box\n");
var parentNode = shortcutBox.parentNode;
parentNode.removeChild(shortcutBox);
}
}
var scheduleNode = document.getElementById("scheduleInfo");
if (scheduleNode)
if ((bookmark_url.indexOf("http://") != 0) && (bookmark_url.indexOf("https://") != 0))
{
var parentNode = scheduleNode.parentNode;
parentNode.removeChild(scheduleNode);
// only allow scheduling of http/https URLs
var scheduleTab = document.getElementById("ScheduleTab");
if (scheduleTab)
{
dump("Hide schedule tab\n");
var parentNode = scheduleTab.parentNode;
parentNode.removeChild(scheduleTab);
}
}
}
window.sizeToContent();
window.sizeToContent();
}
function Commit()
{
var changed = false;
@ -222,19 +242,29 @@ function Commit()
for (var i = 0; i < Fields.length; ++i)
{
var field = document.getElementById(Fields[i]);
// if the field was removed, just skip it
if (!field) continue;
// Get the new value as a literal, using 'null' if the value is
// empty.
var newvalue = field.value;
dump("field value = " + newvalue + "\n");
// if the field was removed, just skip it
if (!Properties[i]) continue;
var oldvalue = Bookmarks.GetTarget(RDF.GetResource(bookmark_url),
RDF.GetResource(Properties[i]),
true);
if (oldvalue) oldvalue = oldvalue.QueryInterface(Components.interfaces.nsIRDFLiteral);
if ((newvalue) && (i == Fields.length-1))
if ((newvalue) && (Properties[i] == (NC_NAMESPACE_URI + "ShortcutURL")))
{
// shortcuts are always lowercased internally
newvalue = newvalue.toLowerCase();
}
else if ((newvalue) && (Properties[i] == (NC_NAMESPACE_URI + "URL")))
{
// we're dealing with the URL attribute;
// if a scheme isn't specified, use "http://"
@ -251,67 +281,73 @@ function Commit()
}
}
// Update bookmark schedule if necessary
var scheduleRes = "http://home.netscape.com/WEB-rdf#Schedule";
var oldvalue = Bookmarks.GetTarget(RDF.GetResource(bookmark_url),
RDF.GetResource(scheduleRes), true);
var newvalue = "";
var dayRange = "";
var dayRangeNode = document.getElementById("dayRange");
if (dayRangeNode)
// Update bookmark schedule if necessary;
// if the tab was removed, just skip it
var scheduleTab = document.getElementById("ScheduleTab");
if (scheduleTab)
{
dayRange = dayRangeNode.options[dayRangeNode.selectedIndex].value;
}
if (dayRange != "")
{
var startHourRange = "";
var startHourRangeNode = document.getElementById("startHourRange");
if (startHourRangeNode)
{
startHourRange = startHourRangeNode.options[startHourRangeNode.selectedIndex].value;
}
var endHourRange = "";
var endHourRangeNode = document.getElementById("endHourRange");
if (endHourRangeNode)
{
endHourRange = endHourRangeNode.options[endHourRangeNode.selectedIndex].value;
}
var scheduleRes = "http://home.netscape.com/WEB-rdf#Schedule";
var oldvalue = Bookmarks.GetTarget(RDF.GetResource(bookmark_url),
RDF.GetResource(scheduleRes), true);
var newvalue = "";
if (startHourRange > endHourRange)
var dayRange = "";
var dayRangeNode = document.getElementById("dayRange");
if (dayRangeNode)
{
var temp = startHourRange;
startHourRange = endHourRange;
endHourRange = temp;
dayRange = dayRangeNode.selectedItem.getAttribute("data");
}
var duration = document.getElementById("duration").value;
if (duration == "")
if (dayRange != "")
{
alert( bundle.GetStringFromName("pleaseEnterADuration") );
return(false);
var startHourRange = "";
var startHourRangeNode = document.getElementById("startHourRange");
if (startHourRangeNode)
{
startHourRange = startHourRangeNode.selectedItem.getAttribute("data");
}
var endHourRange = "";
var endHourRangeNode = document.getElementById("endHourRange");
if (endHourRangeNode)
{
endHourRange = endHourRangeNode.selectedItem.getAttribute("data");
}
if (startHourRange > endHourRange)
{
var temp = startHourRange;
startHourRange = endHourRange;
endHourRange = temp;
}
var duration = document.getElementById("duration").value;
if (duration == "")
{
var bundle = srGetStrBundle("chrome://bookmarks/locale/bookmark.properties");
alert( bundle.GetStringFromName("pleaseEnterADuration") );
return(false);
}
var method = "";
if (document.getElementById("bookmarkIcon").checked) method += ",icon";
if (document.getElementById("playSound").checked) method += ",sound";
if (document.getElementById("showAlert").checked) method += ",alert";
if (document.getElementById("openWindow").checked) method += ",open";
if (method.length < 1)
{
var bundle = srGetStrBundle("chrome://bookmarks/locale/bookmark.properties");
alert( bundle.GetStringFromName("pleaseSelectANotification") );
return(false);
}
method = method.substr(1, method.length - 1); // trim off the initial comma
dump("dayRange: " + dayRange + "\n");
dump("startHourRange: " + startHourRange + "\n");
dump("endHourRange: " + endHourRange + "\n");
dump("duration: " + duration + "\n");
dump("method: " + method + "\n");
newvalue = dayRange + "|" + startHourRange + "-" + endHourRange + "|" + duration + "|" + method;
}
var method = "";
if (document.getElementById("bookmarkIcon").checked) method += ",icon";
if (document.getElementById("playSound").checked) method += ",sound";
if (document.getElementById("showAlert").checked) method += ",alert";
if (document.getElementById("openWindow").checked) method += ",open";
if (method.length < 1)
{
alert("Please select a notification method.");
return(false);
}
method = method.substr(1, method.length - 1); // trim off the initial comma
dump("dayRange: " + dayRange + "\n");
dump("startHourRange: " + startHourRange + "\n");
dump("endHourRange: " + endHourRange + "\n");
dump("duration: " + duration + "\n");
dump("method: " + method + "\n");
newvalue = dayRange + "|" + startHourRange + "-" + endHourRange + "|" + duration + "|" + method;
}
if (updateAttribute(scheduleRes, oldvalue, newvalue) == true)
@ -319,24 +355,26 @@ function Commit()
changed = true;
}
if (changed == true)
{
dump("re-writing bookmarks.html\n");
var remote = Bookmarks.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource);
if (remote)
{
remote.Flush();
}
}
if (changed == true)
{
dump("re-writing bookmarks.html\n");
var remote = Bookmarks.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource);
if (remote)
{
remote.Flush();
}
}
window.close();
window.close();
}
function updateAttribute(prop, oldvalue, newvalue)
{
var changed = false;
var changed = false;
if (!prop) return(changed)
newvalue = (newvalue != '') ? RDF.GetLiteral(newvalue) : null;
@ -370,8 +408,17 @@ function updateAttribute(prop, oldvalue, newvalue)
}
function Cancel()
{
// Ignore any changes.
window.close();
}
function switchTab( aPageIndex )
{
var deck = document.getElementById( "Deck" );
if (deck) deck.setAttribute( "index", aPageIndex );
}

View File

@ -23,144 +23,158 @@
-->
<?xml-stylesheet href="chrome://bookmarks/skin/" type="text/css"?>
<?xml-stylesheet href="chrome://bookmarks/skin/bm-props.css" type="text/css"?>
<?xul-overlay href="chrome://global/content/dialogOverlay.xul"?>
<!DOCTYPE window SYSTEM "chrome://bookmarks/locale/bm-props.dtd" >
<xul:window
xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
xmlns="http://www.w3.org/TR/REC-html40"
title="&bookmarks.title.label;"
onload="Init();"
class="dialog"
align="vertical">
<script language="JavaScript" src="chrome://global/content/strres.js" />
<script src="bm-props.js" />
<table style="width:100%; margin:1em;">
<tr>
<td colspan="2">
<b>&bookmarks.name.label;</b><br />
<input type="text" id="name" style="width:100%;"/>
</td>
</tr>
<tr>
<td colspan="2">
<b>&bookmarks.location.label;</b><br />
<input type="text" id="url" style="width:100%;"/>
</td>
</tr>
<tr>
<td colspan="2">
<b>&bookmarks.shortcut.label;</b><br />
<input type="text" id="shortcut" style="width:100%;"/>
</td>
</tr>
<tr>
<td colspan="2">
<b>&bookmarks.description.label;</b><br />
<textarea id="description" style="width:100%;" wrap="hard"></textarea>
</td>
</tr>
<tr id="scheduleSeparator">
<td colspan="2">
<hr/>
</td>
</tr>
<tr id="scheduleInfo">
<td valign="top" width="55%" >
<fieldset>
<legend><b>&checkforupdates.legend.label;</b></legend>
&check.label;
<select id="dayRange">
<option value="">&checknever.label;</option>
<option value="0123456">&checkeveryday.label;</option>
<option value="12345">&checkweekdays.label;</option>
<option value="06">&checkweekends.label;</option>
<option value="1">&checkmondays.label;</option>
<option value="2">&checktuesdays.label;</option>
<option value="3">&checkwednesdays.label;</option>
<option value="4">&checkthursdays.label;</option>
<option value="5">&checkfridays.label;</option>
<option value="6">&checksaturdays.label;</option>
<option value="0">&checksundays.label;</option>
</select>
<p/>
&from.label;
<select id="startHourRange">
<option value="0">&midnight.label;</option>
<option value="1">&AMone.label;</option>
<option value="2">&AMtwo.label;</option>
<option value="3">&AMthree.label;</option>
<option value="4">&AMfour.label;</option>
<option value="5">&AMfive.label;</option>
<option value="6">&AMsix.label;</option>
<option value="7">&AMseven.label;</option>
<option value="8">&AMeight.label;</option>
<option value="9">&AMnine.label;</option>
<option value="10">&AMten.label;</option>
<option value="11">&AMeleven.label;</option>
<option value="12">&noon.label;</option>
<option value="13">&PMone.label;</option>
<option value="14">&PMtwo.label;</option>
<option value="15">&PMthree.label;</option>
<option value="16">&PMfour.label;</option>
<option value="17">&PMfive.label;</option>
<option value="18">&PMsix.label;</option>
<option value="19">&PMseven.label;</option>
<option value="20">&PMeight.label;</option>
<option value="21">&PMnine.label;</option>
<option value="22">&PMten.label;</option>
<option value="23">&PMeleven.label;</option>
</select>
&to.label;
<select id="endHourRange">
<option value="1">&AMone.label;</option>
<option value="2">&AMtwo.label;</option>
<option value="3">&AMthree.label;</option>
<option value="4">&AMfour.label;</option>
<option value="5">&AMfive.label;</option>
<option value="6">&AMsix.label;</option>
<option value="7">&AMseven.label;</option>
<option value="8">&AMeight.label;</option>
<option value="9">&AMnine.label;</option>
<option value="10">&AMten.label;</option>
<option value="11">&AMeleven.label;</option>
<option value="12">&noon.label;</option>
<option value="13">&PMone.label;</option>
<option value="14">&PMtwo.label;</option>
<option value="15">&PMthree.label;</option>
<option value="16">&PMfour.label;</option>
<option value="17">&PMfive.label;</option>
<option value="18">&PMsix.label;</option>
<option value="19">&PMseven.label;</option>
<option value="20">&PMeight.label;</option>
<option value="21">&PMnine.label;</option>
<option value="22">&PMten.label;</option>
<option value="23">&PMeleven.label;</option>
<option value="24">&midnight.label;</option>
</select>
<br/>
&every.label;<input id="duration" size="4" value="60" />&minutes.label;
</fieldset>
</td>
<td>
<fieldset>
<legend><b>&notifications.legend.label;</b></legend>
<label><input id="bookmarkIcon" type="checkbox" />&notification.icon.label;</label><br/>
<label><input id="playSound" type="checkbox" disabled="true" />&notification.sound.label;</label><br/>
<label><input id="showAlert" type="checkbox" />&notification.alert.label;</label><br/>
<label><input id="openWindow" type="checkbox" />&notification.window.label;</label><br/>
</fieldset>
</td>
</tr>
<tr>
<td colspan="2" align="right">
<xul:titledbutton class="dialog push" onclick="Cancel();" value="&bookmarks.cancel.label;"/>
<xul:titledbutton class="dialog push" onclick="Commit();" value="&bookmarks.ok.label;"/>
</td>
</tr>
</table>
</xul:window>
<window
xmlns:html="http://www.w3.org/TR/REC-html40"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
title="&bookmarks.windowtitle.label;"
onload="Init()"
class="dialog" align="vertical">
<html:script language="Javascript" src="chrome://global/content/globalOverlay.js"/>
<html:script language="JavaScript" src="chrome://global/content/strres.js" />
<html:script language="JavaScript" src="chrome://bookmarks/content/bm-props.js" />
<box id="Tabs" align="horizontal">
<titledbutton class="push" value="General Information" onclick="return switchTab(0)" />
<titledbutton id="ScheduleTab" class="push" value="Schedule" onclick="return switchTab(1)" />
</box>
<deck id="Deck">
<titledbox orient="vertical" class="deckouterbox">
<title><text value="&bookmarks.information.label;" /></title>
<box id="nameBox" align="vertical">
<text value="&bookmarks.name.label;" />
<html:input id="name" />
</box>
<box id="locationBox" align="vertical">
<text value="&bookmarks.location.label;" />
<html:input id="url" />
</box>
<box id="shortcutBox" align="vertical">
<text value="&bookmarks.shortcut.label;" />
<html:input id="shortcut" />
</box>
<box id="descriptionBox" align="vertical">
<text value="&bookmarks.description.label;" />
<html:textarea id="description" />
</box>
</titledbox>
<titledbox orient="vertical" class="deckouterbox">
<title><text value="&checkforupdates.legend.label;" /></title>
<box align="horizontal">
<text value="&when.label;" />
<menulist id="dayRange">
<menupopup>
<menuitem data="" value="&checknever.label;"/>
<menuseparator />
<menuitem data="0123456" value="&checkeveryday.label;"/>
<menuitem data="12345" value="&checkweekdays.label;"/>
<menuitem data="06" value="&checkweekends.label;"/>
<menuitem data="1" value="&checkmondays.label;"/>
<menuitem data="2" value="&checktuesdays.label;"/>
<menuitem data="3" value="&checkwednesdays.label;"/>
<menuitem data="4" value="&checkthursdays.label;"/>
<menuitem data="5" value="&checkfridays.label;"/>
<menuitem data="6" value="&checksaturdays.label;"/>
<menuitem data="0" value="&checksundays.label;"/>
</menupopup>
</menulist>
<spring align="horizontal" flex="1" />
<text value="&from.label;" />
<menulist id="startHourRange">
<menupopup>
<menuitem data="0" value="&midnight.label;"/>
<menuitem data="1" value="&AMone.label;"/>
<menuitem data="2" value="&AMtwo.label;"/>
<menuitem data="3" value="&AMthree.label;"/>
<menuitem data="4" value="&AMfour.label;"/>
<menuitem data="5" value="&AMfive.label;"/>
<menuitem data="6" value="&AMsix.label;"/>
<menuitem data="7" value="&AMseven.label;"/>
<menuitem data="8" value="&AMeight.label;"/>
<menuitem data="9" value="&AMnine.label;"/>
<menuitem data="10" value="&AMten.label;"/>
<menuitem data="11" value="&AMeleven.label;"/>
<menuitem data="12" value="&noon.label;"/>
<menuitem data="13" value="&PMone.label;"/>
<menuitem data="14" value="&PMtwo.label;"/>
<menuitem data="15" value="&PMthree.label;"/>
<menuitem data="16" value="&PMfour.label;"/>
<menuitem data="17" value="&PMfive.label;"/>
<menuitem data="18" value="&PMsix.label;"/>
<menuitem data="19" value="&PMseven.label;"/>
<menuitem data="20" value="&PMeight.label;"/>
<menuitem data="21" value="&PMnine.label;"/>
<menuitem data="22" value="&PMten.label;"/>
<menuitem data="23" value="&PMeleven.label;"/>
</menupopup>
</menulist>
</box>
<box align="horizontal">
<spring align="horizontal" flex="1" />
<text value="&to.label;" />
<menulist id="endHourRange">
<menupopup>
<menuitem data="1" value="&AMone.label;"/>
<menuitem data="2" value="&AMtwo.label;"/>
<menuitem data="3" value="&AMthree.label;"/>
<menuitem data="4" value="&AMfour.label;"/>
<menuitem data="5" value="&AMfive.label;"/>
<menuitem data="6" value="&AMsix.label;"/>
<menuitem data="7" value="&AMseven.label;"/>
<menuitem data="8" value="&AMeight.label;"/>
<menuitem data="9" value="&AMnine.label;"/>
<menuitem data="10" value="&AMten.label;"/>
<menuitem data="11" value="&AMeleven.label;"/>
<menuitem data="12" value="&noon.label;"/>
<menuitem data="13" value="&PMone.label;"/>
<menuitem data="14" value="&PMtwo.label;"/>
<menuitem data="15" value="&PMthree.label;"/>
<menuitem data="16" value="&PMfour.label;"/>
<menuitem data="17" value="&PMfive.label;"/>
<menuitem data="18" value="&PMsix.label;"/>
<menuitem data="19" value="&PMseven.label;"/>
<menuitem data="20" value="&PMeight.label;"/>
<menuitem data="21" value="&PMnine.label;"/>
<menuitem data="22" value="&PMten.label;"/>
<menuitem data="23" value="&PMeleven.label;"/>
<menuitem data="24" value="&midnight.label;"/>
</menupopup>
</menulist>
</box>
<box align="horizontal">
<spring align="horizontal" flex="1" />
<text value="&every.label;" />
<html:input id="duration" size="4" value="60" />
<text value="&minutes.label;" />
</box>
<titledbox orient="vertical">
<title><text value="&notifications.legend.label;" /></title>
<checkbox id="bookmarkIcon" value="&notification.icon.label;" />
<checkbox id="showAlert" value="&notification.alert.label;" />
<checkbox id="openWindow" value="&notification.window.label;" />
<checkbox id="playSound" disabled="true" value="&notification.sound.label;" />
</titledbox>
</titledbox>
</deck>
<box autostretch="never">
<spring flex="1"/>
<box id="okCancelButtons"/>
</box>
</window>

View File

@ -16,25 +16,24 @@
- Corp. are Copyright (C) 1999 Netscape Communications Corp. All
- Rights Reserved.
-
- Contributor(s): Stephen Lamm <slamm@netscape.com>
- Contributor(s): Stephen Lamm <slamm@netscape.com>
- Robert John Churchill <rjc@netscape.com>
-->
<!-- extracted from ./bm-props.xul -->
<!ENTITY bookmarks.windowtitle.label "Properties">
<!ENTITY bookmarks.title.label "Bookmark Properties">
<!ENTITY bookmarks.information.label "Information:">
<!ENTITY bookmarks.name.label "Name:">
<!ENTITY bookmarks.location.label "Location:">
<!ENTITY bookmarks.shortcut.label "Custom Keyword:">
<!ENTITY bookmarks.description.label "Description:">
<!ENTITY bookmarks.ok.label "OK">
<!ENTITY bookmarks.cancel.label "Cancel">
<!ENTITY checkforupdates.legend.label "Check web page for updates:">
<!ENTITY check.label "Check: ">
<!ENTITY every.label "every ">
<!ENTITY from.label "from ">
<!ENTITY to.label " to ">
<!ENTITY minutes.label " minute(s)">
<!ENTITY checkforupdates.legend.label "Check URL for updates:">
<!ENTITY when.label "When:">
<!ENTITY from.label "from:">
<!ENTITY to.label "to: ">
<!ENTITY every.label "every">
<!ENTITY minutes.label "minute(s)">
<!ENTITY notifications.legend.label "Notification:">
<!ENTITY checknever.label "Never">

View File

@ -53,3 +53,6 @@ WebPageAskDisplay = Would you like to display it?
WebPageAskStopOption = Stop checking for updates on this web page
pleaseEnterALocation = Please enter a location
pleaseEnterADuration = Please enter a duration.
pleaseSelectANotification = Please enter at least one notification method.