From e5a80242442819460cf0247db9af29fe7349fd48 Mon Sep 17 00:00:00 2001 From: halex Date: Fri, 29 Jun 2007 04:29:28 +0000 Subject: [PATCH] * Fixed a tiny typo by Jonny in r129 - there was a space just before the username in the URL, which causes a 404 if you follow it. * Adds a non-working Preferences dialog to the userbar. * Main interface is now localisable. * Moved search top right, and removed the timezone selector. * New internal userbar layout (the top thing) to fit things we shove there - report any rendering issues. * Link to administration panel if user is logged in as 'admin' * Fixed hrefs in Hawkeye (issue caused by previous patch). Dragonfly must live at the root URL (/dragonfly.html). --- src/www/Bongo.rules | 5 ++ src/www/css/admin.css | 24 ++++----- src/www/css/layout.css | 6 +++ src/www/dragonfly.html | 68 ++++++++++++++++-------- src/www/hawkeye/header.tpl | 20 +++---- src/www/hawkeye/root/login.tpl | 10 ++-- src/www/img/big-info.png | Bin 0 -> 13168 bytes src/www/js/AddressBook.js | 44 ++++++++-------- src/www/js/BongoCalendar.js | 2 +- src/www/js/Calendar.js | 8 +-- src/www/js/CalendarEditor.js | 12 ++--- src/www/js/CalendarView.js | 8 +-- src/www/js/CalendarWidgets.js | 13 +++-- src/www/js/Dragonfly.js | 36 +++++++++++-- src/www/js/Login.js | 18 ++++--- src/www/js/Search.js | 2 +- src/www/js/Summary.js | 17 +++--- src/www/js/Widgets.js | 4 +- src/www/l10n/dragonfly.properties | 7 +++ src/www/l10n/igpay.js | 83 ++++++++++++++++++++++++++++++ 20 files changed, 277 insertions(+), 110 deletions(-) create mode 100644 src/www/img/big-info.png create mode 100644 src/www/l10n/igpay.js diff --git a/src/www/Bongo.rules b/src/www/Bongo.rules index d440200..c7c6401 100644 --- a/src/www/Bongo.rules +++ b/src/www/Bongo.rules @@ -19,8 +19,10 @@ dist_css_DATA := \ src/www/css/interpreter.css \ src/www/css/layout.css \ src/www/css/login.css \ + src/www/css/modal.css \ src/www/css/print.css \ src/www/css/summary.css \ + src/www/css/tabs.css \ src/www/css/widgets.css imgdir = $(htdocsdir)/img @@ -54,6 +56,7 @@ dist_img_DATA := \ src/www/img/cal-selected-stipple.png \ src/www/img/cal-today.png \ src/www/img/cal-today-stipple.png \ + src/www/img/close.gif \ src/www/img/closed-read.png \ src/www/img/closed-unread.png \ src/www/img/contact-16.png \ @@ -77,6 +80,7 @@ dist_img_DATA := \ src/www/img/grad-tab.png \ src/www/img/grad-textarea.png \ src/www/img/grad-toolbar.png \ + src/www/img/big-info.png \ src/www/img/grippy.png \ src/www/img/grippy-h.gif \ src/www/img/grippy-h.png \ @@ -226,6 +230,7 @@ dist_js_DATA := \ src/www/js/Mail.js \ src/www/js/MailListView.js \ src/www/js/MailWidgets.js \ + src/www/js/Modal.js \ src/www/js/OccurrenceEditor.js \ src/www/js/Preferences.js \ src/www/js/Search.js \ diff --git a/src/www/css/admin.css b/src/www/css/admin.css index 19f4bce..65970fc 100644 --- a/src/www/css/admin.css +++ b/src/www/css/admin.css @@ -17,7 +17,7 @@ body { #body-override { color: #2e3436; - background: url('../img/bg.png'); + background: url('/img/bg.png'); background-repeat: repeat-x; background-color: #fff; margin-top: 25px; @@ -40,7 +40,7 @@ body { text-align: center; padding: 0px; - background-image: url('../img/login-pane.png'); + background-image: url('/img/login-pane.png'); /*background-repeat: no-repeat; /* Make sure this doesn't actually happen. */ overflow: none; } @@ -72,15 +72,15 @@ input, select { } .lang { - background-image: url('../img/locale.png'); + background-image: url('/img/locale.png'); } .username { - background-image: url('../img/user.png'); + background-image: url('/img/user.png'); } .password { - background-image: url('../img/locked.png'); + background-image: url('/img/locked.png'); } .password, .username, .lang { @@ -109,7 +109,7 @@ p { } #page { - background: url('../img/cbg.png'); + background: url('/img/cbg.png'); background-repeat: repeat-x; background-color: #eeeeec; /* Tango GREY */ margin-left: 155px; /* Push across width of sidebar, minus 10px, for bg behind round corner */ @@ -144,7 +144,7 @@ p { #sidebar { color: #eeeeec; /* Tango WHITE */ - background: url('../img/sbg.png'); + background: url('/img/sbg.png'); background-repeat: no-repeat; background-color: #2e3436; /* Tango DARK-GREY */ float: left; @@ -170,7 +170,7 @@ p { } .selecteditem { - background-image: url('../img/sel.png'); + background-image: url('/img/sel.png'); width: 175px; background-repeat: no-repeat; color: #2e3436; @@ -272,14 +272,14 @@ ul.nav{ } .error { - background-image: url('../img/dialog-error-32.png'); + background-image: url('/img/dialog-error-32.png'); background-color: #a40000; color: #eeeeec; border: 3px solid #cc0000; } .info { - background-image: url('../img/dialog-information-32.png'); + background-image: url('/img/dialog-information-32.png'); background-color: #3465a4; color: #eeeeec; border: 3px solid #204a85; @@ -320,8 +320,8 @@ a.button, span.button, del.button { a.button, span.button, del.button, a.button span, span.button button, span.button input, del.button span { - background-image:url('../img/form_buttons.png'); - _background-image:url('../img/form_buttons.gif'); + background-image:url('/img/form_buttons.png'); + _background-image:url('/img/form_buttons.gif'); } diff --git a/src/www/css/layout.css b/src/www/css/layout.css index 2ea9a68..e0dda94 100644 --- a/src/www/css/layout.css +++ b/src/www/css/layout.css @@ -1208,3 +1208,9 @@ pre { { padding-top: 25%; } + +#nomail-summary +{ + padding-top: 50%; + text-align: center; +} diff --git a/src/www/dragonfly.html b/src/www/dragonfly.html index 481e630..206bcc5 100644 --- a/src/www/dragonfly.html +++ b/src/www/dragonfly.html @@ -15,6 +15,8 @@ @import url(css/contacts.css); @import url(css/calendar.css); @import url(css/summary.css); + @import url(css/modal.css); + @import url(css/tabs.css); - - + +
Logged in as: admin [logout]
- +
diff --git a/src/www/hawkeye/root/login.tpl b/src/www/hawkeye/root/login.tpl index 8249fcf..d9057f1 100644 --- a/src/www/hawkeye/root/login.tpl +++ b/src/www/hawkeye/root/login.tpl @@ -2,17 +2,17 @@ Bongo Web Administration ยป Login - - + + - + - +
You have specified an invalid username or password.
You have successfully logged out!
diff --git a/src/www/img/big-info.png b/src/www/img/big-info.png new file mode 100644 index 0000000000000000000000000000000000000000..5b9f1d8a58b3587f87fbd75cd19ded99db065c21 GIT binary patch literal 13168 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'); - html.push ('Add Contact'); + html.push ('', _('contactAddLabel'), ''); this.popup = new Dragonfly.AddressBook.ContactPopup(); }; @@ -219,7 +219,7 @@ Dragonfly.AddressBook.ContactPicker.prototype.newContactHandler = function (evt) // The ContactPopup manages the interaction for creating and editing contacts Dragonfly.AddressBook.ContactPopup = function (elem) -{ +{ Dragonfly.PopupBuble.apply (this, arguments); }; @@ -227,14 +227,14 @@ Dragonfly.AddressBook.ContactPopup.prototype = clone (Dragonfly.PopupBuble.proto Dragonfly.AddressBook.ContactPopup.prototype.FieldTypes = { props: ['tel', 'im', 'email', 'url', 'org', 'adr'], - email: {name:'email', label:'Email', prop: 'email', type: 'INTERNET', protocol: 'mailto:'}, - phone: {name:'phone', label:'Phone', prop: 'tel', protocol: 'tel:'}, - fax: {name:'fax', label:'Fax', prop: 'tel', type: 'FAX', protocol: 'tel:'}, - mobile: {name:'mobile', label:'Mobile', prop: 'tel', type: 'CELL', protocol: 'tel:'}, - im: {name:'im', label:'IM', prop: 'im', protocol: 'im:'}, - website: {name:'website', label:'Website', prop: 'url', protocol: 'http:'}, - org: {name:'org', label:'Company', prop: 'org'}, - address: {name:'address', label:'Address', prop: 'adr', longtext:true} + email: {name:'email', label:'contactEmail', prop: 'email', type: 'INTERNET', protocol: 'mailto:'}, + phone: {name:'phone', label:'contactPhone', prop: 'tel', protocol: 'tel:'}, + fax: {name:'fax', label:'contactFax', prop: 'tel', type: 'FAX', protocol: 'tel:'}, + mobile: {name:'mobile', label:'contactMobile', prop: 'tel', type: 'CELL', protocol: 'tel:'}, + im: {name:'im', label:'contactIM', prop: 'im', protocol: 'im:'}, + website: {name:'website', label:'contactWebsite', prop: 'url', protocol: 'http:'}, + org: {name:'org', label:'contactCompany', prop: 'org'}, + address: {name:'address', label:'contactAddress', prop: 'adr', longtext:true} }; Dragonfly.AddressBook.ContactPopup.prototype.Form = [{ @@ -302,9 +302,9 @@ Dragonfly.AddressBook.ContactPopup.prototype.summarize = function (contact, elem var loc = new d.Location ({ tab: 'mail', set:'all', handler:'contacts', contact: contact.bongoId }); html.push (''); + '', _('genericDelete'), '', + '', _('contactShowConversations'), '', + '', _('contactEditLabel'), '
'); html.set (this.contentId); Event.observe (deleteId, 'click', this.delConfirm.bindAsEventListener (this)); @@ -323,7 +323,7 @@ Dragonfly.AddressBook.ContactPopup.prototype.buildTab = function (html, tab) var name = this.getName (field.prop, [tab.type, field.type]); name = this.getFreeField (name, true); - html.push ('
  • '); + html.push ('
  • '); if (field.longtext) { html.push (''); } else { @@ -453,11 +453,11 @@ Dragonfly.AddressBook.ContactPopup.prototype.edit = function (evt, contact, elem var form = [ '

    ', notebook, '
    ']; + '', _('contactSelf'), '', notebook, '']; - var actions = [{ value: "Cancel", onclick: 'dispose'}, { value: "Save", onclick: 'save'}]; + var actions = [{ value: _('genericCancel'), onclick: 'dispose'}, { value: _('genericSave'), onclick: 'save'}]; if (this.contact.bongoId) { // only add delete for pre-existing contacts - actions.unshift ({ value: "Delete", onclick: 'del', secondary: true }); + actions.unshift ({ value: _('genericDelete'), onclick: 'del', secondary: true }); } this.setForm (form, actions); @@ -474,7 +474,7 @@ Dragonfly.AddressBook.ContactPopup.prototype.del = function () if (elem) { elem.parentNode.removeChild(elem); } - Dragonfly.notify ('DELETED!!'); + Dragonfly.notify (_('genericChangesSaved')); return result; }); this.dispose(); @@ -502,7 +502,7 @@ Dragonfly.AddressBook.ContactPopup.prototype.save = function () $(this.elem).scrollIntoView(); } - Dragonfly.notify ('Changes saved.'); + Dragonfly.notify (_('genericChangesSaved')); this.summarize (); this.shouldAutohide = true; callLater (2, bind ('autohide', this)); @@ -515,10 +515,10 @@ Dragonfly.AddressBook.ContactPopup.prototype.delConfirm = function () { this.hide(); var text = [ - '

    Are you sure you want to delete the contact “', - Dragonfly.escapeHTML (this.contact.fn), '”? This cannot be undone.' + '

    ', _('contactConfirmRemovePre'), '“', + Dragonfly.escapeHTML (this.contact.fn), '”', _('contactConfirmRemovePost'), '

    ' ]; - var actions = [{ value: "Cancel", onclick: 'dispose'}, { value: "Delete", onclick: 'del'}]; + var actions = [{ value: _('genericCancel'), onclick: 'dispose'}, { value: _('genericDelete'), onclick: 'del'}]; this.setForm (text, actions); this.show(); }; diff --git a/src/www/js/BongoCalendar.js b/src/www/js/BongoCalendar.js index 6742239..f41960f 100644 --- a/src/www/js/BongoCalendar.js +++ b/src/www/js/BongoCalendar.js @@ -92,7 +92,7 @@ Dragonfly.Calendar.BongoCalendar.prototype.parseJSON = function (jsob) this.type = 'personal'; } - this.subscriptionUrl = "/user/ " + d.userName + "/calendar/" + d.escapeHTML(this.cal.name) + "/events"; + this.subscriptionUrl = "/user/" + d.userName + "/calendar/" + d.escapeHTML(this.cal.name) + "/events"; /* // this should probably trust the server... diff --git a/src/www/js/Calendar.js b/src/www/js/Calendar.js index 06edadd..c80e191 100644 --- a/src/www/js/Calendar.js +++ b/src/www/js/Calendar.js @@ -343,13 +343,13 @@ Dragonfly.Calendar.Events.build = function (loc) Element.setHTML ( 'toolbar', [ '', - 'Day', + '', _('day'), '', ' | ', - 'Upcoming', + '', _('upcoming'), '', ' | ', - 'Week', + '', _('week'), '', ' | ', - 'Month' + '', _('month'), '' ]); Element.show ('toolbar'); } else { diff --git a/src/www/js/CalendarEditor.js b/src/www/js/CalendarEditor.js index 3330f7e..fbbe959 100644 --- a/src/www/js/CalendarEditor.js +++ b/src/www/js/CalendarEditor.js @@ -11,7 +11,7 @@ Dragonfly.Calendar.PersonalProperties = function (parent, calendar, showImport) this.colorId = this.color.id; // sharing bits - this.disclosure = new d.DisclosingLink (null, 'Share this calendar'); + this.disclosure = new d.DisclosingLink (null, _('shareCalendar')); this.publishId = this.disclosure.checkId; this.nb = new d.Notebook(); @@ -805,7 +805,7 @@ Dragonfly.Calendar.NewSubscriptionPopup.prototype.buildHtml = function (html) Dragonfly.PopupBuble.prototype.buildHtml.call ( this, html, '
    Url: ', '
    ', - '', + '', '
    ', '
    '); @@ -910,9 +910,9 @@ Dragonfly.Calendar.CalendarPropsPopup.prototype.edit = function () this.saveId = d.nextId ('calendar-save'); html.push ('
    ', - '', - ' ', - '', + '', + ' ', + '', '
    '); html.set (this.contentId); @@ -948,7 +948,7 @@ Dragonfly.Calendar.CalendarPropsPopup.prototype.summarize = function () var editId = d.nextId ('calendar-edit'); html.push (''); diff --git a/src/www/js/CalendarView.js b/src/www/js/CalendarView.js index e0b26e1..88b7a6e 100644 --- a/src/www/js/CalendarView.js +++ b/src/www/js/CalendarView.js @@ -76,9 +76,9 @@ Dragonfly.Calendar.setToMonthView = function (loc, dateBaseUrl) var html = [ '', - '', + '', '', - '', + '', '
    Prev', _('genericPreviousShort'), '

    ', d.escapeHTML (title), '

    Next', _('genericNext'), '
    ' ]; html.push ('
    ', @@ -249,10 +249,10 @@ Dragonfly.Calendar.setToColumnView = function (loc, numDays, isupcoming, dateBas var reldays = c.getRelativeDays (loc); tmpLoc.day = reldays.prev; - var prev = 'Prev'; + var prev = '' + _('genericPreviousShort') + ''; tmpLoc.day = reldays.next; - var next = 'Next'; + var next = '' + _('genericNext') + ''; var html = new d.HtmlBuilder ('

    ', escapeHTML (title), '

    ', '', diff --git a/src/www/js/CalendarWidgets.js b/src/www/js/CalendarWidgets.js index c131ed4..f342335 100644 --- a/src/www/js/CalendarWidgets.js +++ b/src/www/js/CalendarWidgets.js @@ -155,7 +155,14 @@ Dragonfly.Calendar.MonthWidget.prototype.buildHtml = function (html) '', '', '', - ''); + ''); this.headerRows = 3; var rows = 0; @@ -192,7 +199,7 @@ Dragonfly.Calendar.MonthWidget.prototype.buildHtml = function (html) } html.push (''); } - html.push (''); + html.push (''); html.push ('
    ', this.day.format ('y'), '
    SMTWTFS
    ', _('sunday-s'), + '', _('monday-s'), + '', _('tuesday-s'), + '', _('wednesday-s'), + '', _('thursday-s'), + '', _('friday-s'), + '', _('saturday-s'), + '
    '); html.push ('
    '); @@ -350,7 +357,7 @@ Dragonfly.Calendar.MonthWidget.showPopup = function (evt) { '

    ', this.day.format ('dddd, MMMM d'), '

    ', '
    ', calwidget, '
    ', '

    ', - 'view in calendar' + '', _('viewInCal'), '' ); w.popup.showBelow (); d.requestJSON ('GET', loc).addCallback (function (jsob) { calwidget.layout (jsob); }); diff --git a/src/www/js/Dragonfly.js b/src/www/js/Dragonfly.js index 2cab1e1..8efc2ca 100644 --- a/src/www/js/Dragonfly.js +++ b/src/www/js/Dragonfly.js @@ -813,7 +813,7 @@ Dragonfly.buildSidebar = function () html.set (d.sideBook.appendPage (IMG({ 'class': 'icon calendars', src: '/img/blank.gif' }))); // todo tab of sidebook - // d.sideBook.appendPage (DIV(), IMG({ 'class': 'icon todos', src: '/img/blank.gif' })); + //d.sideBook.appendPage (DIV(), IMG({ 'class': 'icon todos', src: '/img/blank.gif' })); d.HtmlBuilder.buildChild ('sidebox-sidebook', d.sideBook); }; @@ -887,13 +887,41 @@ Dragonfly.observeEvents = function () d.sidebarSelectChanged.bindAsEventListener (null)); }; +Dragonfly.translateElements = function () +{ + // Top bar + Element.setHTML ('admin-text', _('administrationLabel')); + Element.setHTML ('logout-text', _('logoutLabel')); + Element.setHTML ('settings-text', _('preferencesLabel')); + $('bongosearch').value = _('searchButtonLabel'); + Element.setHTML ('sidebar-select-search', _('searchButtonLabel')); + + // Sidebar + Element.setHTML ('summary-tab-label', _('summaryTabLabel')); + Element.setHTML ('summary-tab-label-alt', _('summaryTabLabel')); + document.getElementById('summary-tab-href').title = _('summaryTabHint'); + + Element.setHTML ('mail-tab-label', _('mailTabLabel')); + Element.setHTML ('mail-tab-label-alt', _('mailTabLabel')); + document.getElementById('mail-tab-href').title = _('mailTabHint'); + Element.setHTML ('compose-tab', _('composeMailLabel')); + + Element.setHTML ('calendar-tab-label', _('calendarTabLabel')); + Element.setHTML ('calendar-tab-label-alt', _('calendarTabLabel')); + document.getElementById('calendar-tab-href').title = _('calendarTabHint'); + Element.setHTML ('new-event-href', _('composeEventLabel')); +} + Dragonfly.start = function () { var d = Dragonfly; var p = d.Preferences; var c = d.Calendar; + + d.buildSidebar(); + d.translateElements(); - d.setLoginMessage ('Logged in: loading contacts and calendars...'); + d.setLoginMessage (_('loadingData')); // set current timezone to default and build timezone selector d.curTzid = c.Preferences.getDefaultTimezone(); @@ -905,7 +933,7 @@ Dragonfly.start = function () return def.addCallbacks ( function (res) { var loc = new d.Location (location.hash); - d.setLoginMessage ('Logged in: loading ' + d.escapeHTML (loc.tab) + '...'); + d.setLoginMessage (_('loadingItemPre') + d.escapeHTML (loc.tab) + _('loadingItemPost')); return d.go (loc.user == d.userName ? loc : '#').addErrback ( function (err) { logDebug ('got error on first try:', d.reprError (err), '; trying summary...'); @@ -990,7 +1018,7 @@ Dragonfly.main = function () { Dragonfly.browserDetect(); Dragonfly.initHtmlZones(); - Dragonfly.buildSidebar(); + //Dragonfly.buildSidebar(); Dragonfly.observeLoginEvents (); Dragonfly.login(); }; diff --git a/src/www/js/Login.js b/src/www/js/Login.js index 5b736b6..bbcbbb2 100644 --- a/src/www/js/Login.js +++ b/src/www/js/Login.js @@ -44,7 +44,7 @@ Dragonfly.login = function (user) d.authToken = btoa (user + ':'); } - d.setLoginMessage ('Attempting to log in...'); + d.setLoginMessage (_('loggingInMessage')); d.setLoginDisabled (true); p.load().addCallbacks ( @@ -56,9 +56,9 @@ Dragonfly.login = function (user) d.setLoginMessage (' '); d.showLoginPane(); } else if (err.req) { - d.setLoginMessage ('Incorrect user or password'); + d.setLoginMessage (_('wrongCredentials')); } else { - d.setLoginMessage ('Error logging in (check Logs)'); + d.setLoginMessage (_('genericLoginError')); logError ('login error: ' + d.reprError (err)); } d.setLoginDisabled (false); @@ -90,13 +90,15 @@ Dragonfly.logout = function () } }; -Dragonfly.translateLoginPage = function () +Dragonfly.translateLogin = function () { + // Login screen Element.setHTML ('login-user-label', _('loginNameLabel')); Element.setHTML ('login-password-label', _('loginPasswordLabel')); Element.setHTML ('login-language-label', _('loginLanguageLabel')); Element.setHTML ('login-default-label', _('loginRememberMeLabel')); $('login-button').value = _('loginLoginLabel'); + Dragonfly.logoutMessage = _('loggedOutMessage'); }; Dragonfly.languageChanged = function (evt) @@ -104,12 +106,12 @@ Dragonfly.languageChanged = function (evt) var d = Dragonfly; var g = d.Gettext; - d.setLoginMessage ('Loading language...'); + //d.setLoginMessage ('Loading language...'); d.setLoginDisabled (true); g.setLocale (null, $('login-language').value).addCallbacks ( function (res) { - d.setLoginMessage (' '); - d.translateLoginPage (); + //d.setLoginMessage (' '); + d.translateLogin (); d.setLoginDisabled (false); return res; }, @@ -154,7 +156,7 @@ Dragonfly.showLoginPane = function () addElementClass (document.body, 'login'); if (location.hash == '#LoggedOut') { - Dragonfly.setLoginMessage ('You have successfully logged out'); + Dragonfly.setLoginMessage (Dragonfly.logoutMessage); location.hash = (Dragonfly.isWebkit) ? '' : '#'; $('login-user').focus(); } else { diff --git a/src/www/js/Search.js b/src/www/js/Search.js index 8340be4..738a43c 100644 --- a/src/www/js/Search.js +++ b/src/www/js/Search.js @@ -117,7 +117,7 @@ Dragonfly.Search.Contacts.connectHtml = function (elem) Event.observe ('contacts-search-results', 'click', (function (evt) { var elem = Event.element (evt); - var card = d.findElement (elem, 'DIV', $('contacts-search')); + var card = d.findElement (elem, 'TABLE', $('contacts-search')); var bongoId = card && card.getAttribute ('bongoid'); if (!bongoId) { return; diff --git a/src/www/js/Summary.js b/src/www/js/Summary.js index 9cfc5b0..b7a7f91 100644 --- a/src/www/js/Summary.js +++ b/src/www/js/Summary.js @@ -40,31 +40,34 @@ Dragonfly.Summary.build = function (loc) ' ', ' ', '

    ', '
    ', - '

    Mail To Me

    ', + '

    ', _('mailToMeLabel'), '

    ', '
      ', '
      ', ' ', ' ', - '', + '', ' ', ' ', '
      ', - '

      Invitations

      ', + '

      ', _('invitationsLabel'), '

      ', '
      ', '
      ', '
      ', '
      ', - '

      Upcoming Events

      ', + '

      ', _('upcomingEvents'), '

      ', '
      ', '
      ', ' ', diff --git a/src/www/js/Widgets.js b/src/www/js/Widgets.js index be1e25d..7604971 100644 --- a/src/www/js/Widgets.js +++ b/src/www/js/Widgets.js @@ -693,9 +693,9 @@ Dragonfly.PopupBuble.prototype.showError = function (err) this.hide(); var closeId = Dragonfly.nextId ('popup-close'); var html = new Dragonfly.HtmlBuilder ( - '

      An error occurred:

      ', + '

      ', _('genericError'), '

      ', err.message, '

      ', - '
      ' + '' ); html.set (this.contentId); Event.observe (closeId, 'click', this.disposeAndReload.bindAsEventListener (this)); diff --git a/src/www/l10n/dragonfly.properties b/src/www/l10n/dragonfly.properties index 4809d05..675772d 100644 --- a/src/www/l10n/dragonfly.properties +++ b/src/www/l10n/dragonfly.properties @@ -1,3 +1,10 @@ +########################### +# DO NOT USE ME YET!!!! +########################### + +# Here's some invalid syntax to stop you from trying: +Let's just hope this does actually work! + # Login.js loginNameLabel=Name: loginPasswordLabel=Password: diff --git a/src/www/l10n/igpay.js b/src/www/l10n/igpay.js new file mode 100644 index 0000000..c00af1d --- /dev/null +++ b/src/www/l10n/igpay.js @@ -0,0 +1,83 @@ +{ + "genericError" : "Naay rroreay ashay ccuredoay: ", + "genericErrorOK" : "Ummerbay", + + "loginNameLabel" : "Amenay:", + "loginPasswordLabel" : "Asswordpay:", + "loginLanguageLabel" : "Anguagelay:", + "loginRememberMeLabel" : "Ememberray Emay", + "loginLoginLabel" : "Oglay Niay", + "loggedOutMessage" : "Ouyay avehay uccessfullysay oggedlay utoay.", + "loggingInMessage" : "Ogginglay ouyay niay...", + "wrongCredentials" : "Adbay seruay roay asswordpay.", + "genericLoginError" : "Rroreay ogginglay niay (heckcay Ogslay)", + "loadingData" : "Oggedlay niay: oadinglay ontactscay ndaay alendarscay...", + "loadingItemPre" : "Oggedlay niay: oadinglay ", + "loadingItemPost" : "...", + + "administrationLabel" : "Dministrationaay", + "logoutLabel" : "Oglay utoay", + "preferencesLabel" : "Referencespay", + "searchButtonLabel" : "Earchsay", + + "summaryTabLabel" : "Ummarysay", + "summaryTabHint" : "Ooklay taay naay verviewoay foay ouryay ailmay ndaay ventseay.", + "mailTabLabel" : "Ailmay", + "mailTabHint" : "Eadray ouryay ailmay.", + "calendarTabLabel" : "Alendarcay", + "calendarTabHint" : "Iewvay ouryay alendarcay.", + "composeMailLabel" : "Omposecay Ewnay Ailmay", + "composeEventLabel" : "Reatecay Ewnay Venteay", + + "summaryNoMail" : "Uoyay avehay onay ewnay ailmay.", + "upcomingEvents" : "Pcominguay ventseay", + "showToday" : "Howsay Odaytay", + "viewInCal" : "Iewvay niay alendarcay", + "starredMailLabel" : "Tarredsay Ailmay", + "mailToMeLabel" : "Ailmay otay Emay", + "contactMailLabel" : "Ailmay romfay Ymay Ontactscay", + "listMailLabel" : "Ailmay romfay Ailingmay Istslay", + "invitationsLabel" : "Nvitationsiay", + + "shareCalendar" : "Haresay histay alendarcay", + + "contactAddLabel" : "Ddaay Ontactcay", + "contactShowConversations" : "Howsay Onversationssay", + "contactEditLabel" : "Diteay", + "contactSelf" : "Histey siey Emey", + "contactConfirmRemovePre" : "Reaay ouyay uresay ouyay antway otay eleteday hetay ontactcay ", + "contactConfirmRemovePost" : "? Histay annotcay ebay ndoneuay.", + "contactEmail" : "Maileay", + "contactPhone" : "Honepay", + "contactFax" : "Axfay", + "contactMobile" : "Ellcay", + "contactIM" : "IM", + "contactWebsite" : "Ebsiteway", + "contactCompany" : "Ompanycay", + "contactAddress" : "Ddressaay", + + "genericCancel" : "Ancelcay", + "genericSave" : "Avesay", + "genericDelete" : "Eleteday", + "genericChangesSaved" : "Hangescay avedsay.", + + "monday" : "Ondaymay", + "monday-s" : "O", + "tuesday" : "Uesdaytay", + "tuesday-s" : "U", + "wednesday" : "Ednesdayway", + "wednesday-s" : "E", + "thursday" : "Hursdaytay", + "thursday-s" : "H", + "friday" : "Ridayfay", + "friday-s" : "R", + "saturday" : "Aturdaysay", + "saturday-s" : "A", + "sunday" : "Undaysay", + "sunday-s" : "U", + + "day" : "Ayday", + "upcoming" : "Pcominguay", + "week" : "Eekway", + "month" : "Onthmay" +}