From abfba9833436c7a02589c9e9833c9ea2287bbf72 Mon Sep 17 00:00:00 2001 From: Wojciech Todryk Date: Sun, 26 Jun 2011 21:37:50 +0200 Subject: [PATCH] new olive theme --- arts/logo3.xcf | Bin 338334 -> 334574 bytes config/locales/pl.yml | 6 +- themes/empty/views/layouts/login.html.erb | 12 - .../empty/views/layouts/xapplication.html.erb | 27 - themes/olive/README.olive | 3 + themes/{empty => olive}/images/.gitkeep | 0 themes/olive/images/key.png | Bin 0 -> 612 bytes themes/olive/images/logo_small.png | Bin 0 -> 18309 bytes themes/{empty => olive}/javascripts/.gitkeep | 0 themes/olive/javascripts/contact_choose.js | 52 ++ themes/olive/javascripts/effects2.js | 349 +++++++++++ themes/olive/javascripts/global.js | 216 +++++++ themes/olive/javascripts/global_src.js | 201 +++++++ themes/olive/javascripts/htmlstyle.js | 21 + themes/olive/javascripts/jstrim.pl | 76 +++ themes/olive/javascripts/prototype_src.js | 521 ++++++++++++++++ themes/olive/javascripts/scriptaculous.js | 47 ++ themes/olive/javascripts/slider.js | 258 ++++++++ themes/olive/javascripts/webmail.js | 35 ++ themes/{empty => olive}/stylesheets/.gitkeep | 0 themes/olive/stylesheets/admin.css | 554 ++++++++++++++++++ themes/olive/stylesheets/base.css | 397 +++++++++++++ themes/olive/stylesheets/mailr.css | 68 +++ themes/olive/stylesheets/style.css | 346 +++++++++++ themes/olive/stylesheets/tabs.css | 111 ++++ .../stylesheets/webmail/icon-folder-open.gif | Bin 0 -> 155 bytes themes/olive/stylesheets/webmail/webmail.css | 161 +++++ .../olive/views/contact_groups/edit.html.erb | 24 + .../olive/views/contact_groups/index.html.erb | 26 + .../views/contacts/add_multiple.html.erb | 26 + themes/olive/views/contacts/choose.html.erb | 11 + .../views/contacts/import_preview.html.erb | 43 ++ themes/olive/views/contacts/index.html.erb | 115 ++++ themes/olive/views/contacts/new.html.erb | 73 +++ themes/olive/views/folders/index.html.erb | 48 ++ .../{empty => olive}/views/layouts/.gitkeep | 0 .../views/layouts/chooser.html.erb | 0 themes/olive/views/layouts/login.html.erb | 13 + themes/olive/views/layouts/public.html.erb | 29 + themes/olive/views/login/index.html.erb | 41 ++ themes/olive/views/shared/_folders.html.erb | 9 + themes/olive/views/webmail/_contacts.html.erb | 12 + themes/olive/views/webmail/_expr.html.erb | 18 + themes/olive/views/webmail/_filter.html.erb | 19 + .../olive/views/webmail/_message_row.html.erb | 14 + themes/olive/views/webmail/_search.html.erb | 13 + themes/olive/views/webmail/compose.html.erb | 67 +++ .../views/webmail/error_connection.html.erb | 26 + themes/olive/views/webmail/filter.html.erb | 41 ++ themes/olive/views/webmail/filters.html.erb | 42 ++ themes/olive/views/webmail/folders.html.erb | 29 + themes/olive/views/webmail/mailsent.html.erb | 31 + themes/olive/views/webmail/message.html.erb | 42 ++ themes/olive/views/webmail/messages.html.erb | 80 +++ .../olive/views/webmail/noattachment.html.erb | 1 + themes/olive/views/webmail/prefs.html.erb | 55 ++ .../olive/views/webmail/view_source.html.erb | 13 + themes/original/views/layouts/public.html.erb | 0 58 files changed, 4380 insertions(+), 42 deletions(-) delete mode 100755 themes/empty/views/layouts/login.html.erb delete mode 100755 themes/empty/views/layouts/xapplication.html.erb create mode 100644 themes/olive/README.olive rename themes/{empty => olive}/images/.gitkeep (100%) create mode 100644 themes/olive/images/key.png create mode 100644 themes/olive/images/logo_small.png rename themes/{empty => olive}/javascripts/.gitkeep (100%) create mode 100755 themes/olive/javascripts/contact_choose.js create mode 100755 themes/olive/javascripts/effects2.js create mode 100755 themes/olive/javascripts/global.js create mode 100755 themes/olive/javascripts/global_src.js create mode 100755 themes/olive/javascripts/htmlstyle.js create mode 100755 themes/olive/javascripts/jstrim.pl create mode 100755 themes/olive/javascripts/prototype_src.js create mode 100755 themes/olive/javascripts/scriptaculous.js create mode 100755 themes/olive/javascripts/slider.js create mode 100755 themes/olive/javascripts/webmail.js rename themes/{empty => olive}/stylesheets/.gitkeep (100%) create mode 100755 themes/olive/stylesheets/admin.css create mode 100644 themes/olive/stylesheets/base.css create mode 100755 themes/olive/stylesheets/mailr.css create mode 100644 themes/olive/stylesheets/style.css create mode 100755 themes/olive/stylesheets/tabs.css create mode 100755 themes/olive/stylesheets/webmail/icon-folder-open.gif create mode 100755 themes/olive/stylesheets/webmail/webmail.css create mode 100755 themes/olive/views/contact_groups/edit.html.erb create mode 100755 themes/olive/views/contact_groups/index.html.erb create mode 100755 themes/olive/views/contacts/add_multiple.html.erb create mode 100755 themes/olive/views/contacts/choose.html.erb create mode 100755 themes/olive/views/contacts/import_preview.html.erb create mode 100755 themes/olive/views/contacts/index.html.erb create mode 100755 themes/olive/views/contacts/new.html.erb create mode 100755 themes/olive/views/folders/index.html.erb rename themes/{empty => olive}/views/layouts/.gitkeep (100%) rename themes/{empty => olive}/views/layouts/chooser.html.erb (100%) create mode 100755 themes/olive/views/layouts/login.html.erb create mode 100755 themes/olive/views/layouts/public.html.erb create mode 100644 themes/olive/views/login/index.html.erb create mode 100755 themes/olive/views/shared/_folders.html.erb create mode 100755 themes/olive/views/webmail/_contacts.html.erb create mode 100755 themes/olive/views/webmail/_expr.html.erb create mode 100755 themes/olive/views/webmail/_filter.html.erb create mode 100755 themes/olive/views/webmail/_message_row.html.erb create mode 100755 themes/olive/views/webmail/_search.html.erb create mode 100755 themes/olive/views/webmail/compose.html.erb create mode 100755 themes/olive/views/webmail/error_connection.html.erb create mode 100755 themes/olive/views/webmail/filter.html.erb create mode 100755 themes/olive/views/webmail/filters.html.erb create mode 100755 themes/olive/views/webmail/folders.html.erb create mode 100755 themes/olive/views/webmail/mailsent.html.erb create mode 100755 themes/olive/views/webmail/message.html.erb create mode 100755 themes/olive/views/webmail/messages.html.erb create mode 100755 themes/olive/views/webmail/noattachment.html.erb create mode 100755 themes/olive/views/webmail/prefs.html.erb create mode 100755 themes/olive/views/webmail/view_source.html.erb mode change 100755 => 100644 themes/original/views/layouts/public.html.erb diff --git a/arts/logo3.xcf b/arts/logo3.xcf index 53103569843a38cca93b900ec28bb91212998c72..a941cac454d8c729e6225062ad66d1b7af422d61 100644 GIT binary patch delta 5104 zcma*rdsJ0*7QpfSJLg;lp^yOafkOl&1q3W$X^D|Ml7s>Sl$A7Q!00Hx1}MkJ99{S- zC~}Zc!LR{moWU|hqS8bMnX$03L`(-r38@SmG@w+j<9x4XOaGg**5};cy?39>{{8ko z=ib9x&948cb$u^yNXWY)5A=wf*(@>;D9Wi>R6vTTghEl%t3`8m7VTt)=v!us@z7i` zo~$c=cgRjNS#ECHb{-mGhzxz1Pdb33IEiz-&UQP-E>y%W8to$X=g}`RjN^v6!Uti9 zK?*WOhHn!Y5hXI#L=h^m8}%YDjy=xcEP8Q6#4|(W{!c`_3Q>+-AQ`V?XaiI9vXYb| zJP?2gBp@BxSb;*6V^`^tK*Oyj!7g@;`TE@xu}#){FH1HTxmX2`vu(F0>$6ZKAVehg zw8*q4F&)3bOIU|D@n^h`e~8SRB2ttjvezFI5s#UeFJkUp&Y%Egs22IiPUP4@k<$|p zhcuAP>803!&De<#a1^KU9j=h59Y(?r6A*_qTk59Wf93l3N98dYy!PdxL-MFxyU=*> z@FA%w@^Pp$OKmYCI>%@l0~VomzexXe`oRl$zJkBIAW2CEaYJ=O0Wa9Xhe&ca;b~KfXHPF+~A9F#3B`0$irHc zU;8ajs0jsE4nc#>Rtzofj=f99y2i?%Ta(bRAWDy(28yhQa%Tafj=f99y2i? z_RHB7pv=}2sWq=$O&DpOpxA7;>&4}FO;eh}|AOY#f#tIao z9J_D;$IylzSVj3e!UF+_KmyW{jTI*YAgPRkMOCe7^d=Mzo;p6?G#tgwNt_ngA`;U7i+KyRoI6k zIEnM<7Zqo~6+Q@~DdJ)nq#zTySc6Td!af|qNt{Q&sHY6L!Uti9K?*XFi#6DUD(u4% zoWyzbi<)Y{6+Q@~DW=9C1)0dj8f-!p_TdOl;yn6A#T#&i55f?G6l5Y7Yp@Ab*oPxH ziSy{EoCaLs1N$&`F-WmBg>T)eV71r7zIT;PpRL?fA|cs7GU4)RfqO4OhM&FDm*sAL^3@J1-2 zk&F!FARoo3L=76yj8624O3~p0Z-gQm$uvbu26B*(VpO6A4QNIu`b4GbaDg{M5shSI zAP4y93n7?{X_$>ASdES1t#5vt!5$pO7wEucX06~1uUp@&3r}fV8cc4(ep!l@ zj11AY`f;m10WnAd_qTV%=w&{lmxUn)Dab^w=znSu{e51m&q5y7q69loi$=7F-prEq zG>I|PDu!w2D2AN}0uX@&q$695d-sXq(Iv(>k{K6=H1I!!aZ9lQo3Rrg;3!VxJ6sXN z&kiHuhY5&78s=gtHej=O8-6<(e1M}kjqh-US=(VG{A|mWTDP)H?=3Qaduu7~_|7r> zU*o?T>rspfaK~!fevUB$7l;wK62t{=!#nsGpP?NWab1j{MPdYhi=V^@847od!+1== z43;Zo4uhAm9;ISD`mh)gwP-{OSgwcxF(z5y2493D7OBV*BeGnK$weU9$-7aH<2Z|6 z+z=zm37!Z-BoZ-8Oe1O$0~1B4z;4vzIL@LMH^hi`f+vCyiA2o8BA6&b1$Ltz$8i?D zxFJT26Fd=wNF-vG$!-yBk431!Zq(yA&Y~AL#E5l*CxQ@(M9jh>m?%O8cB3B0aTdL} zK^dLki6BHG5%#m#ErMA`Q&>lt^KR8z+sE|$>;@hMK>>$_r%xT#_!JS)bu z9x>7=#q(c@@gmRX&RjAiu8vVV!OZl)M-&<9(1emfy7@9$|Fltz>r2I=Tg763Ml4RV#WG^5SVjet)V=r> a9>L>y2EWEa`~k1yExcRzOq{Xv#Qy;Md{fN; delta 8494 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 diff --git a/config/locales/pl.yml b/config/locales/pl.yml index 9cf4ef9..857b72d 100755 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -3,7 +3,7 @@ pl: email: E-mail password: Hasło log_in: Zaloguj - wrong_email_or_password: Podano nieprawidłowy login lub hasło. + wrong_email_or_password: Podano nieprawidłowy login lub hasło mailbox: Poczta folders: Foldery folder: Folder @@ -64,9 +64,9 @@ pl: add_folder: Dodaj folder total_messages: Total messages unseen: Unseen - add_edit_folder: Zarządzanie folderami + add_edit_folder: Zarządzaj user_logged_out: Użytkownik został wylogowany please_login: Logowanie add_to_contacts: Dodaj do kontaktów want_to_empty_trash_message: Czy chcesz opróznic kosz? - + site_link: https://github.com/lmanolov/mailr diff --git a/themes/empty/views/layouts/login.html.erb b/themes/empty/views/layouts/login.html.erb deleted file mode 100755 index d55723e..0000000 --- a/themes/empty/views/layouts/login.html.erb +++ /dev/null @@ -1,12 +0,0 @@ - - - - <%=t(:mailr) %> » <%= t(:please_login)%> - <%=stylesheet_link_tag "admin", "mailr" %> - - - <%= yield %> - - diff --git a/themes/empty/views/layouts/xapplication.html.erb b/themes/empty/views/layouts/xapplication.html.erb deleted file mode 100755 index 9aa6bbe..0000000 --- a/themes/empty/views/layouts/xapplication.html.erb +++ /dev/null @@ -1,27 +0,0 @@ - - - - <%= t :mailr %> - - <% @additional_css ||= [] %> - <% @additional_js ||= [] %> - <%=stylesheet_link_tag "admin", "tabs", "mailr", @additional_css %> - <%=javascript_include_tag :defaults, "global", "webmail", @additional_js %> - <%#=(@content_for_scripts ? @content_for_scripts : @additional_scripts )%> - - -
-
- -
<%= yield %>
-
-
-
- - diff --git a/themes/olive/README.olive b/themes/olive/README.olive new file mode 100644 index 0000000..bf812cf --- /dev/null +++ b/themes/olive/README.olive @@ -0,0 +1,3 @@ +Theme based on Web App Theme Olive theme. + +http://pilu.github.com/web-app-theme/#themes/olive diff --git a/themes/empty/images/.gitkeep b/themes/olive/images/.gitkeep similarity index 100% rename from themes/empty/images/.gitkeep rename to themes/olive/images/.gitkeep diff --git a/themes/olive/images/key.png b/themes/olive/images/key.png new file mode 100644 index 0000000000000000000000000000000000000000..4ec1a928140311ff30a0a9120e958096c77f446e GIT binary patch literal 612 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 this.finishOn) { + this.render(this.options.to); + if(this.finish) this.finish(); + if(this.options.afterFinish) this.options.afterFinish(this); + return; + } + pos = (timePos - this.startOn) / (this.finishOn - this.startOn); + frame = Math.round(pos * this.options.fps * this.options.duration); + if(frame > this.currentFrame) { + this.render(pos); + this.currentFrame = frame; + } + this.timeout = setTimeout(this.loop.bind(this), 10); + }, + render: function(pos) { + if(this.options.transition) pos = this.options.transition(pos); + pos = pos * (this.options.to-this.options.from); + pos += this.options.from; + if(this.options.beforeUpdate) this.options.beforeUpdate(this); + if(this.update) this.update(pos); + if(this.options.afterUpdate) this.options.afterUpdate(this); + }, + cancel: function() { + if(this.timeout) clearTimeout(this.timeout); + } + } + + Effect2.Parallel = Class.create(); + Effect2.Parallel.prototype = (new Effect2.Base()).extend({ + initialize: function(effects) { + this.effects = effects || []; + this.start(arguments[1]); + }, + update: function(position) { + for (var i = 0; i < this.effects.length; i++) + this.effects[i].render(position); + }, + finish: function(position) { + for (var i = 0; i < this.effects.length; i++) + if(this.effects[i].finish) this.effects[i].finish(position); + } + }); + + Effect2.Opacity = Class.create(); + Effect2.Opacity.prototype = (new Effect2.Base()).extend({ + initialize: function() { + this.element = $(arguments[0] || document.rootElement); + options = { + from: 0.0, + to: 1.0 + }.extend(arguments[1] || {}); + this.start(options); + }, + update: function(position) { + this.setOpacity(position); + }, + setOpacity: function(opacity) { + opacity = (opacity == 1) ? 0.99999 : opacity; + this.element.style.opacity = opacity; + this.element.style.filter = "alpha(opacity:"+opacity*100+")"; + } + }); + + Effect2.MoveBy = Class.create(); + Effect2.MoveBy.prototype = (new Effect2.Base()).extend({ + initialize: function(element, toTop, toLeft) { + this.element = $(element); + this.originalTop = + this.element.style.top ? parseFloat(this.element.style.top) : 0; + this.originalLeft = + this.element.style.left ? parseFloat(this.element.style.left) : 0; + this.toTop = toTop; + this.toLeft = toLeft; + if(this.element.style.position == "") + this.element.style.position = "relative"; + this.start(arguments[3]); + }, + update: function(position) { + topd = this.toTop * position + this.originalTop; + leftd = this.toLeft * position + this.originalLeft; + this.setPosition(topd, leftd); + }, + setPosition: function(topd, leftd) { + this.element.style.top = topd + "px"; + this.element.style.left = leftd + "px"; + } + }); + + Effect2.Scale = Class.create(); + Effect2.Scale.prototype = (new Effect2.Base()).extend({ + initialize: function(element, percent) { + this.element = $(element) + options = { + scaleX: true, + scaleY: true, + scaleContent: true, + scaleFromCenter: false, + scaleMode: 'box', // 'box' or 'contents' + scaleFrom: 100.0 + }.extend(arguments[2] || {}); + this.originalTop = this.element.offsetTop; + this.originalLeft = this.element.offsetLeft; + if (this.element.style.fontSize=="") this.sizeEm = 1.0; + if (this.element.style.fontSize && this.element.style.fontSize.indexOf("em")>0) + this.sizeEm = parseFloat(this.element.style.fontSize); + this.factor = (percent/100.0) - (options.scaleFrom/100.0); + if(options.scaleMode=='box') { + this.originalHeight = this.element.clientHeight; + this.originalWidth = this.element.clientWidth; + } else + if(options.scaleMode=='contents') { + this.originalHeight = this.element.scrollHeight; + this.originalWidth = this.element.scrollWidth; + } + this.start(options); + }, + + update: function(position) { + currentScale = (this.options.scaleFrom/100.0) + (this.factor * position); + if(this.options.scaleContent && this.sizeEm) + this.element.style.fontSize = this.sizeEm*currentScale + "em"; + this.setDimensions( + this.originalWidth * currentScale, + this.originalHeight * currentScale); + }, + + setDimensions: function(width, height) { + if(this.options.scaleX) this.element.style.width = width + 'px'; + if(this.options.scaleY) this.element.style.height = height + 'px'; + if(this.options.scaleFromCenter) { + topd = (height - this.originalHeight)/2; + leftd = (width - this.originalWidth)/2; + if(this.element.style.position=='absolute') { + if(this.options.scaleY) this.element.style.top = this.originalTop-topd + "px"; + if(this.options.scaleX) this.element.style.left = this.originalLeft-leftd + "px"; + } else { + if(this.options.scaleY) this.element.style.top = -topd + "px"; + if(this.options.scaleX) this.element.style.left = -leftd + "px"; + } + } + } + }); + + /* ------------- prepackaged effects ------------- */ + + Effect2.Fade = function(element) { + options = { + from: 1.0, + to: 0.0, + afterFinish: function(effect) + { Element.hide(effect.element); + effect.setOpacity(1); } + }.extend(arguments[1] || {}); + new Effect2.Opacity(element,options); + } + +Effect2.Appear = function(element) { + options = { + from: 0.0, + to: 1.0, + beforeStart: function(effect) + { effect.setOpacity(0); + Element.show(effect.element); }, + afterUpdate: function(effect) + { Element.show(effect.element); } + }.extend(arguments[1] || {}); + new Effect2.Opacity(element,options); +} + + Effect2.Puff = function(element) { + new Effect2.Parallel( + [ new Effect2.Scale(element, 200, { sync: true, scaleFromCenter: true }), + new Effect2.Opacity(element, { sync: true, to: 0.0, from: 1.0 } ) ], + { duration: 1.0, + afterUpdate: function(effect) + { effect.effects[0].element.style.position = 'absolute'; }, + afterFinish: function(effect) + { Element.hide(effect.effects[0].element); } + } + ); + } + + Effect2.BlindUp = function(element) { + $(element).style.overflow = 'hidden'; + new Effect2.Scale(element, 0, + { scaleContent: false, + scaleX: false, + afterFinish: function(effect) + { Element.hide(effect.element) } + }.extend(arguments[1] || {}) + ); + } + + Effect2.BlindDown = function(element) { + $(element).style.height = '0px'; + $(element).style.overflow = 'hidden'; + Element.show(element); + new Effect2.Scale(element, 100, + { scaleContent: false, + scaleX: false, + scaleMode: 'contents', + scaleFrom: 0 + }.extend(arguments[1] || {}) + ); + } + + Effect2.SwitchOff = function(element) { + new Effect2.Appear(element, + { duration: 0.4, + transition: Effect2.Transitions.flicker, + afterFinish: function(effect) + { effect.element.style.overflow = 'hidden'; + new Effect2.Scale(effect.element, 1, + { duration: 0.3, scaleFromCenter: true, + scaleX: false, scaleContent: false, + afterUpdate: function(effect) { + if(effect.element.style.position=="") + effect.element.style.position = 'relative'; }, + afterFinish: function(effect) { Element.hide(effect.element); } + } ) + } + } ) + } + + Effect2.DropOut = function(element) { + new Effect2.Parallel( + [ new Effect2.MoveBy(element, 100, 0, { sync: true }), + new Effect2.Opacity(element, { sync: true, to: 0.0, from: 1.0 } ) ], + { duration: 0.5, + afterFinish: function(effect) + { Element.hide(effect.effects[0].element); } + }); + } + + Effect2.Shake = function(element) { + new Effect2.MoveBy(element, 0, 20, + { duration: 0.05, afterFinish: function(effect) { + new Effect2.MoveBy(effect.element, 0, -40, + { duration: 0.1, afterFinish: function(effect) { + new Effect2.MoveBy(effect.element, 0, 40, + { duration: 0.1, afterFinish: function(effect) { + new Effect2.MoveBy(effect.element, 0, -40, + { duration: 0.1, afterFinish: function(effect) { + new Effect2.MoveBy(effect.element, 0, 40, + { duration: 0.1, afterFinish: function(effect) { + new Effect2.MoveBy(effect.element, 0, -20, + { duration: 0.05, afterFinish: function(effect) { + }}) }}) }}) }}) }}) }}); + } + + Effect2.SlideDown = function(element) { + $(element).style.height = '0px'; + $(element).style.overflow = 'hidden'; + $(element).firstChild.style.position = 'relative'; + Element.show(element); + new Effect2.Scale(element, 100, + { scaleContent: false, + scaleX: false, + scaleMode: 'contents', + scaleFrom: 0, + afterUpdate: function(effect) + { effect.element.firstChild.style.bottom = + (effect.originalHeight - effect.element.clientHeight) + 'px'; } + }.extend(arguments[1] || {}) + ); + } + + Effect2.SlideUp = function(element) { + $(element).style.overflow = 'hidden'; + $(element).firstChild.style.position = 'relative'; + Element.show(element); + new Effect2.Scale(element, 0, + { scaleContent: false, + scaleX: false, + afterUpdate: function(effect) + { effect.element.firstChild.style.bottom = + (effect.originalHeight - effect.element.clientHeight) + 'px'; }, + afterFinish: function(effect) + { Element.hide(effect.element); } + }.extend(arguments[1] || {}) + ); + } \ No newline at end of file diff --git a/themes/olive/javascripts/global.js b/themes/olive/javascripts/global.js new file mode 100755 index 0000000..1176552 --- /dev/null +++ b/themes/olive/javascripts/global.js @@ -0,0 +1,216 @@ +function changeLoc(loc) { + window.location = loc +} +function getCookie(name) { + var prefix = name + "="; + var cStr = document.cookie; + var start = cStr.indexOf(prefix); + if (start == -1) { + return null; + } + var end = cStr.indexOf(";", start + prefix.length); + if (end == -1) { + end = cStr.length; + } + var value = cStr.substring(start + prefix.length, end); + return unescape(value); +} +function setCookie(name, value, expiration) { + document.cookie = name + "=" + value + "; expires=" + expiration; +} +function toggleCheckbox(checkBox) { + var element = document.getElementById(checkBox.id); + if (element.value == "1" || element.checked) { + element.checked = false; + element.value = "0"; + } else { + element.checked = true; + element.value = "1"; + } +} +function toggleChkbox(checkBox) { + if (checkBox.checked) { + checkBox.checked = true; + } else { + checkBox.checked = false; + } +} +function toggle_list(id) { + ul = "ul_" + id; + img = "img_" + id; + hid = "h_" + id; + ulElement = document.getElementById(ul); + imgElement = document.getElementById(img); + hiddenElement = document.getElementById(hid); + if (ulElement) { + if (ulElement.className == 'closed') { + ulElement.className = "open"; + imgElement.src = "/themes/original/images/list_opened.gif"; + hiddenElement.value = "1" + } else { + ulElement.className = "closed"; + imgElement.src = "/themes/original/images/list_closed.gif"; + hiddenElement.value = "0" + } + } +} +function toggle_layer(id) { + lElement = document.getElementById(id); + imgElement = document.getElementById("img_" + id); + if (lElement) { + if (lElement.className == 'closed') { + lElement.className = "open"; + imgElement.src = "/themes/original/images/list_opened.gif"; + return true; + } else { + lElement.className = "closed"; + imgElement.src = "/themes/original/images/list_closed.gif"; + return false; + } + } + return true; +} +function toggle_layer_status(id) { + lElement = document.getElementById(id); + if (lElement) { + if (lElement.className == 'closed') { + return false; + } else { + return true; + } + } + return true; +} +function toggle_text(id) { + if (document.getElementById) elem = document.getElementById(id); + else if (document.all) elem = eval("document.all." + id); + else return false; + if (!elem) return true; + elemStyle = elem.style; + if (elemStyle.display != "block") { + elemStyle.display = "block" + } else { + elemStyle.display = "none" + } + return true; +} +function getFF(id) { + if (document.getElementById) elem = document.getElementById(id); + else if (document.all) elem = document.eval("document.all." + id); + return elem +} +function setFF(id, value) { + if (getFF(id)) getFF(id).value = value; +} +function setCFF(id) { + if (getFF(id)) getFF(id).checked = true; +} +function updateSUFromC(btnName) { + var suem = getCookie('_cdf_em'); + var sueg = getCookie('_cdf_gr'); + if (suem != "" && suem != null && suem != "undefined") { + setFF('sup_email', suem); + setFF('signup_submit_button', btnName); + } + if (sueg && sueg != "") { + if (sueg.indexOf(",") < 0 && sueg != "") { + gr_id = sueg; + setCFF('supgr_' + gr_id); + } else while ((i = sueg.indexOf(",")) >= 0) { + gr_id = sueg.substring(0, i); + sueg = sueg.substring(i + 1); + setCFF('supgr_' + gr_id); + } + if (sueg.indexOf(",") < 0 && sueg != "") { + gr_id = sueg; + setCFF('supgr_' + gr_id); + } + } +} +function updateLUEfC() { + var suem = getCookie('_cdf_em'); + if (suem != "" && suem != null && suem != "undefined") { + setFF('login_user_email', suem); + } +} +function replaceHRFST(ifrm) { + var o = ifrm; + var w = null; + if (o.contentWindow) { + w = o.contentWindow; + } else if (window.frames && window.frames[o.id].window) { + w = window.frames[o.id]; + } else return; + var doc = w.document; + if (!doc.getElementsByTagName) return; + var anchors = doc.getElementsByTagName("a"); + for (var i = 0; i < anchors.length; i++) { + var anchor = anchors[i]; + if (anchor.getAttribute("href")) anchor.target = "_top"; + } + iHeight = doc.body.scrollHeight; + ifrm.style.height = iHeight + "px" +} +function rs(n, u, w, h, x) { + args = "width=" + w + ",height=" + h + ",resizable=yes,scrollbars=yes,status=0"; + remote = window.open(u, n, args); + if (remote != null && remote.opener == null) remote.opener = self; + if (x == 1) return remote; +} +function wizard_step_onclick(direction, alt_url) { + if (document.forms[0]) { + direction_elem = ''; + if (document.getElementById) { + direction_elem = document.getElementById('wiz_dir'); + } else if (document.all) { + direction_elem = document.eval("document.all.wiz_dir"); + } + if (direction_elem) { + direction_elem.value = direction; + } + if (document.forms[0].onsubmit) { + document.forms[0].onsubmit(); + } + document.forms[0].submit(); + } else { + window.location = alt_url; + } +} +function toggle_adtype(ad_type) { + toggle_text('upload_banner_label'); + toggle_text('upload_banner'); + toggle_text('radio1_label'); + toggle_text('radio1'); + toggle_text('radio2_label'); + toggle_text('radio2'); + toggle_text('adtitle_label'); + toggle_text('adtitle'); + toggle_text('adtext_label'); + toggle_text('adtext'); + toggle_text('banner_size_label'); + toggle_text('banner_size'); +} +function show_date_as_local_time() { + var spans = document.getElementsByTagName('span'); + for (var i = 0; i < spans.length; i++) if (spans[i].className.match(/\bLOCAL_TIME\b/i)) { + system_date = new Date(Date.parse(spans[i].innerHTML)); + if (system_date.getHours() >= 12) { + adds = ' PM'; + h = system_date.getHours() - 12; + } else { + adds = ' AM'; + h = system_date.getHours(); + } + spans[i].innerHTML = h + ":" + (system_date.getMinutes() + "").replace(/\b(\d)\b/g, '0$1') + adds; + } +} +function PopupPic(sPicURL, sWidth, sHeight) { + window.open("/popup.htm?" + sPicURL, "", "resizable=1,HEIGHT=" + sHeight + ",WIDTH=" + sWidth + ",scrollbars=yes"); +} +function open_link(target, location) { + if (target == 'blank') { + window.open(location); + } else { + window.top.location = location; + } +} diff --git a/themes/olive/javascripts/global_src.js b/themes/olive/javascripts/global_src.js new file mode 100755 index 0000000..76b3fb7 --- /dev/null +++ b/themes/olive/javascripts/global_src.js @@ -0,0 +1,201 @@ +function changeLoc(loc) { window.location = loc } +function getCookie(name) { + var prefix = name + "="; + var cStr = document.cookie; + var start = cStr.indexOf(prefix); + if (start==-1) { + return null; + } + + var end = cStr.indexOf(";", start+prefix.length); + if (end==-1) { end=cStr.length; } + + var value=cStr.substring(start+prefix.length, end); + return unescape(value); +} +function setCookie(name, value, expiration) { + document.cookie = name+"="+value+"; expires="+expiration; +} +function toggleCheckbox(checkBox) { + var element = document.getElementById(checkBox.id); + if (element.value == "1" || element.checked) { + element.checked = false; + element.value = "0"; + } else { + element.checked = true; + element.value = "1"; + } +} +function toggleChkbox(checkBox) { + if (checkBox.checked) { + checkBox.checked = true; + } else { + checkBox.checked = false; + } +} +function toggle_list(id){ + ul = "ul_" + id; + img = "img_" + id; + hid = "h_" + id; + ulElement = document.getElementById(ul); + imgElement = document.getElementById(img); + hiddenElement = document.getElementById(hid); + if (ulElement){ + if (ulElement.className == 'closed'){ + ulElement.className = "open"; + imgElement.src = "/themes/original/images/list_opened.gif"; + hiddenElement.value = "1" + }else{ + ulElement.className = "closed"; + imgElement.src = "/themes/original/images/list_closed.gif"; + hiddenElement.value = "0" + } + } +} +function toggle_layer(id) { + lElement = document.getElementById(id); + imgElement = document.getElementById("img_" + id); + if (lElement){ + if (lElement.className == 'closed'){ + lElement.className = "open"; + imgElement.src = "/themes/original/images/list_opened.gif"; + return true; + }else{ + lElement.className = "closed"; + imgElement.src = "/themes/original/images/list_closed.gif"; + return false; + } + } + return true; +} +function toggle_layer_status(id) { + lElement = document.getElementById(id); + if (lElement){ + if (lElement.className == 'closed'){ + return false; + }else{ + return true; + } + } + return true; +} +function toggle_text(id){ + if ( document.getElementById ) + elem = document.getElementById( id ); + else if ( document.all ) + elem = eval( "document.all." + id ); + else + return false; + + if(!elem) return true; + + elemStyle = elem.style; + if ( elemStyle.display != "block" ) { + elemStyle.display = "block" + } else { + elemStyle.display = "none" + } + return true; +} +function getFF(id) { + if ( document.getElementById ) elem = document.getElementById( id ); + else if ( document.all ) elem = document.eval( "document.all." + id ); + return elem +} +function setFF(id, value) {if(getFF(id))getFF(id).value=value;} +function setCFF(id) {if(getFF(id))getFF(id).checked=true;} +function updateSUFromC(btnName) { + var suem = getCookie('_cdf_em');var sueg = getCookie('_cdf_gr'); + if (suem != "" && suem != null && suem != "undefined") { setFF('sup_email', suem); setFF('signup_submit_button',btnName); } + + if (sueg && sueg != "") { + if (sueg.indexOf(",") < 0 && sueg != "") { gr_id = sueg; setCFF('supgr_'+gr_id); + } else while ((i = sueg.indexOf(",")) >= 0) { gr_id = sueg.substring(0,i); sueg = sueg.substring(i+1); setCFF('supgr_'+gr_id); } + if (sueg.indexOf(",") < 0 && sueg != "") { gr_id = sueg; setCFF('supgr_'+gr_id);} + } +} +function updateLUEfC() { + var suem = getCookie('_cdf_em'); + if (suem != "" && suem != null && suem != "undefined") { setFF('login_user_email', suem); } +} +function replaceHRFST(ifrm) { + var o = ifrm; + var w = null; + if (o.contentWindow) { + // For IE5.5 and IE6 + w = o.contentWindow; + } else if (window.frames && window.frames[o.id].window) { + w = window.frames[o.id]; + } else return; + var doc = w.document; + if (!doc.getElementsByTagName) return; + var anchors = doc.getElementsByTagName("a"); + for (var i=0; i= 12) { adds = ' PM'; h = system_date.getHours() - 12; } + else { adds = ' AM'; h = system_date.getHours(); } + spans[i].innerHTML = h + ":" + (system_date.getMinutes()+"").replace(/\b(\d)\b/g, '0$1') + adds; + } +} +function PopupPic(sPicURL,sWidth,sHeight) { + window.open( "/popup.htm?"+sPicURL, "", "resizable=1,HEIGHT="+sHeight+",WIDTH="+sWidth+",scrollbars=yes"); +} + +function open_link(target, location){ + if (target == 'blank'){ + window.open(location); + } else { + window.top.location = location; + } +} diff --git a/themes/olive/javascripts/htmlstyle.js b/themes/olive/javascripts/htmlstyle.js new file mode 100755 index 0000000..ece3392 --- /dev/null +++ b/themes/olive/javascripts/htmlstyle.js @@ -0,0 +1,21 @@ +var config = new HTMLArea.Config(); // create a new configuration object + // having all the default values +config.width = '520px'; +config.pageStyle = + 'body { font-family: verdana,sans-serif; font-size: 12px } '; + +config.toolbar = [ +[ "fontname", "fontsize","formatblock","bold", "italic", "underline", "separator", "insertimage", "createlink"], +["justifyleft", "justifycenter", "justifyright", "justifyfull", "separator", "forecolor", "hilitecolor", "separator", "popupeditor", "htmlmode"] +]; +config.statusBar = false; + +var configView = new HTMLArea.Config(); // create a new configuration object + // having all the default values +configView.width = '670px'; +configView.pageStyle = + 'body { font-family: verdana,sans-serif; font-size: 12px } '; + +configView.toolbar = []; +configView.statusBar = false; +configView.readonly = true; \ No newline at end of file diff --git a/themes/olive/javascripts/jstrim.pl b/themes/olive/javascripts/jstrim.pl new file mode 100755 index 0000000..7829efc --- /dev/null +++ b/themes/olive/javascripts/jstrim.pl @@ -0,0 +1,76 @@ +#! /usr/bin/perl -w + +jsTrim("prototype_src.js", "prototype.js"); +jsTrim("global_src.js", "global.js"); +#jsTrim("jscripts/tiny_mce/themes/simple/editor_template_src.js", "jscripts/tiny_mce/themes/simple/editor_template.js"); +#jsTrim("jscripts/tiny_mce/themes/default/editor_template_src.js", "jscripts/tiny_mce/themes/default/editor_template.js"); +#jsTrim("jscripts/tiny_mce/themes/advanced/editor_template_src.js", "jscripts/tiny_mce/themes/advanced/editor_template.js"); +#jsTrim("jscripts/tiny_mce/plugins/advhr/editor_plugin_src.js", "jscripts/tiny_mce/plugins/advhr/editor_plugin.js"); +#jsTrim("jscripts/tiny_mce/plugins/advimage/editor_plugin_src.js", "jscripts/tiny_mce/plugins/advimage/editor_plugin.js"); +#jsTrim("jscripts/tiny_mce/plugins/advlink/editor_plugin_src.js", "jscripts/tiny_mce/plugins/advlink/editor_plugin.js"); +#jsTrim("jscripts/tiny_mce/plugins/emotions/editor_plugin_src.js", "jscripts/tiny_mce/plugins/emotions/editor_plugin.js"); +#jsTrim("jscripts/tiny_mce/plugins/flash/editor_plugin_src.js", "jscripts/tiny_mce/plugins/flash/editor_plugin.js"); +#jsTrim("jscripts/tiny_mce/plugins/iespell/editor_plugin_src.js", "jscripts/tiny_mce/plugins/iespell/editor_plugin.js"); +#jsTrim("jscripts/tiny_mce/plugins/insertdatetime/editor_plugin_src.js", "jscripts/tiny_mce/plugins/insertdatetime/editor_plugin.js"); +#jsTrim("jscripts/tiny_mce/plugins/preview/editor_plugin_src.js", "jscripts/tiny_mce/plugins/preview/editor_plugin.js"); +#jsTrim("jscripts/tiny_mce/plugins/print/editor_plugin_src.js", "jscripts/tiny_mce/plugins/print/editor_plugin.js"); +#jsTrim("jscripts/tiny_mce/plugins/save/editor_plugin_src.js", "jscripts/tiny_mce/plugins/save/editor_plugin.js"); +#jsTrim("jscripts/tiny_mce/plugins/searchreplace/editor_plugin_src.js", "jscripts/tiny_mce/plugins/searchreplace/editor_plugin.js"); +#jsTrim("jscripts/tiny_mce/plugins/zoom/editor_plugin_src.js", "jscripts/tiny_mce/plugins/zoom/editor_plugin.js"); +#jsTrim("jscripts/tiny_mce/plugins/table/editor_plugin_src.js", "jscripts/tiny_mce/plugins/table/editor_plugin.js"); +#jsTrim("jscripts/tiny_mce/plugins/contextmenu/editor_plugin_src.js", "jscripts/tiny_mce/plugins/contextmenu/editor_plugin.js"); +#jsTrim("jscripts/tiny_mce/plugins/paste/editor_plugin_src.js", "jscripts/tiny_mce/plugins/paste/editor_plugin.js"); +#jsTrim("jscripts/tiny_mce/plugins/fullscreen/editor_plugin_src.js", "jscripts/tiny_mce/plugins/fullscreen/editor_plugin.js"); +#jsTrim("jscripts/tiny_mce/plugins/directionality/editor_plugin_src.js", "jscripts/tiny_mce/plugins/directionality/editor_plugin.js"); + +sub jsTrim { + my $inFile = $_[0]; + my $outFile = $_[1]; + my $comment = ''; + my $content = ''; + + # Load input file + open(FILE, "<$inFile"); + undef $/; + $content = ; + close(FILE); + + if ($content =~ s#^\s*(/\*.*?\*/)##s or $content =~ s#^\s*(//.*?)\n\s*[^/]##s) { + $comment = "$1\n"; + } + + local $^W; + + # removing C/C++ - style comments: + $content =~ s#/\*[^*]*\*+([^/*][^*]*\*+)*/|//[^\n]*|("(\\.|[^"\\])*"|'(\\.|[^'\\])*'|.[^/"'\\]*)#$2#gs; + + # save string literals + my @strings = (); + $content =~ s/("(\\.|[^"\\])*"|'(\\.|[^'\\])*')/push(@strings, "$1");'__CMPRSTR_'.$#strings.'__';/egs; + + # remove C-style comments + $content =~ s#/\*.*?\*/##gs; + # remove C++-style comments + $content =~ s#//.*?\n##gs; + # removing leading/trailing whitespace: + #$content =~ s#(?:(?:^|\n)\s+|\s+(?:$|\n))##gs; + # removing newlines: + #$content =~ s#\r?\n##gs; + + # removing other whitespace (between operators, etc.) (regexp-s stolen from Mike Hall's JS Crunchinator) + $content =~ s/\s+/ /gs; # condensing whitespace + #$content =~ s/^\s(.*)/$1/gs; # condensing whitespace + #$content =~ s/(.*)\s$/$1/gs; # condensing whitespace + $content =~ s/\s([\x21\x25\x26\x28\x29\x2a\x2b\x2c\x2d\x2f\x3a\x3b\x3c\x3d\x3e\x3f\x5b\x5d\x5c\x7b\x7c\x7d\x7e])/$1/gs; + $content =~ s/([\x21\x25\x26\x28\x29\x2a\x2b\x2c\x2d\x2f\x3a\x3b\x3c\x3d\x3e\x3f\x5b\x5d\x5c\x7b\x7c\x7d\x7e])\s/$1/gs; + + # restore string literals + $content =~ s/__CMPRSTR_([0-9]+)__/$strings[$1]/egs; + + # Write to ouput file + open(FILE, ">$outFile"); + flock(FILE, 2); + seek(FILE, 0, 2); + print FILE $comment, $content; + close(FILE); +} diff --git a/themes/olive/javascripts/prototype_src.js b/themes/olive/javascripts/prototype_src.js new file mode 100755 index 0000000..87aa729 --- /dev/null +++ b/themes/olive/javascripts/prototype_src.js @@ -0,0 +1,521 @@ +var Prototype = { + Version: '1.2.1' +}; + +var Class = { + create: function() { + return function() { + this.initialize.apply(this, arguments); + } + } +}; + +var Abstract = new Object(); +Object.prototype.extend = function(object) { + for (property in object) { + this[property] = object[property]; + } + return this; +}; +Function.prototype.bind = function(object) { + var method = this; + return function() { + method.apply(object, arguments); + } +}; + +Function.prototype.bindAsEventListener = function(object) { + var method = this; + return function(event) { + method.call(object, event || window.event); + } +}; + +Number.prototype.toColorPart = function() { + var digits = this.toString(16); + if (this < 16) return '0' + digits; + return digits; +}; + +var Try = { + these: function() { + var returnValue; + + for (var i = 0; i < arguments.length; i++) { + var lambda = arguments[i]; + try { + returnValue = lambda(); + break; + } catch (e) {} + } + + return returnValue; + } +}; + +var PeriodicalExecuter = Class.create(); +PeriodicalExecuter.prototype = { + initialize: function(callback, frequency) { + this.callback = callback; + this.frequency = frequency; + this.currentlyExecuting = false; + + this.registerCallback(); + }, + + registerCallback: function() { + setTimeout(this.onTimerEvent.bind(this), this.frequency * 1000); + }, + + onTimerEvent: function() { + if (!this.currentlyExecuting) { + try { + this.currentlyExecuting = true; + this.callback(); + } finally { + this.currentlyExecuting = false; + } + } + + this.registerCallback(); + } +}; +function $() { + var elements = new Array(); + + for (var i = 0; i < arguments.length; i++) { + var element = arguments[i]; + if (typeof element == 'string') + element = document.getElementById(element); + + if (arguments.length == 1) + return element; + + elements.push(element); + } + + return elements; +}; +if (!Array.prototype.push) { + Array.prototype.push = function() { + var startLength = this.length; + for (var i = 0; i < arguments.length; i++) + this[startLength + i] = arguments[i]; + return this.length; + }; +}; + +if (!Function.prototype.apply) { + // Based on code from http://www.youngpup.net/ + Function.prototype.apply = function(object, parameters) { + var parameterStrings = new Array(); + if (!object) object = window; + if (!parameters) parameters = new Array(); + + for (var i = 0; i < parameters.length; i++) + parameterStrings[i] = 'x[' + i + ']'; + + object.__apply__ = this; + var result = eval('obj.__apply__(' + + parameterStrings[i].join(', ') + ')'); + object.__apply__ = null; + + return result; + }; +}; + +var Ajax = { + getTransport: function() { + return Try.these( + function() {return new ActiveXObject('Msxml2.XMLHTTP')}, + function() {return new ActiveXObject('Microsoft.XMLHTTP')}, + function() {return new XMLHttpRequest()} + ) || false; + }, + + emptyFunction: function() {} +}; + +Ajax.Base = function() {}; +Ajax.Base.prototype = { + setOptions: function(options) { + this.options = { + method: 'post', + asynchronous: true, + parameters: '' + }.extend(options || {}); + } +}; + +Ajax.Request = Class.create(); +Ajax.Request.Events = + ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete']; + +Ajax.Request.prototype = (new Ajax.Base()).extend({ + initialize: function(url, options) { + this.transport = Ajax.getTransport(); + this.setOptions(options); + + try { + if (this.options.method == 'get') + url += '?' + this.options.parameters + '&_='; + + this.transport.open(this.options.method, url, + this.options.asynchronous); + + if (this.options.asynchronous) { + this.transport.onreadystatechange = this.onStateChange.bind(this); + setTimeout((function() {this.respondToReadyState(1)}).bind(this), 10); + } + + this.transport.setRequestHeader('X-Requested-With', 'XMLHttpRequest'); + this.transport.setRequestHeader('X-Prototype-Version', Prototype.Version); + + if (this.options.method == 'post') { + this.transport.setRequestHeader('Connection', 'close'); + this.transport.setRequestHeader('Content-type', + 'application/x-www-form-urlencoded'); + } + + this.transport.send(this.options.method == 'post' ? + this.options.parameters + '&_=' : null); + + } catch (e) { + } + }, + + onStateChange: function() { + var readyState = this.transport.readyState; + if (readyState != 1) + this.respondToReadyState(this.transport.readyState); + }, + + respondToReadyState: function(readyState) { + var event = Ajax.Request.Events[readyState]; + (this.options['on' + event] || Ajax.emptyFunction)(this.transport); + } +}); + +Ajax.Updater = Class.create(); +Ajax.Updater.prototype = (new Ajax.Base()).extend({ + initialize: function(container, url, options) { + this.container = $(container); + this.setOptions(options); + + if (this.options.asynchronous) { + this.onComplete = this.options.onComplete; + this.options.onComplete = this.updateContent.bind(this); + } + + this.request = new Ajax.Request(url, this.options); + + if (!this.options.asynchronous) + this.updateContent(); + }, + + updateContent: function() { + if (this.options.insertion) { + new this.options.insertion(this.container, + this.request.transport.responseText); + } else { + this.container.innerHTML = this.request.transport.responseText; + } + + if (this.onComplete) { + setTimeout((function() {this.onComplete(this.request)}).bind(this), 10); + } + } +}); +var Field = { + clear: function() { + for (var i = 0; i < arguments.length; i++) + $(arguments[i]).value = ''; + }, + + focus: function(element) { + $(element).focus(); + }, + + present: function() { + for (var i = 0; i < arguments.length; i++) + if ($(arguments[i]).value == '') return false; + return true; + }, + + select: function(element) { + $(element).select(); + }, + + activate: function(element) { + $(element).focus(); + $(element).select(); + } +}; +var Form = { + serialize: function(form) { + var elements = Form.getElements($(form)); + var queryComponents = new Array(); + + for (var i = 0; i < elements.length; i++) { + var queryComponent = Form.Element.serialize(elements[i]); + if (queryComponent) + queryComponents.push(queryComponent); + } + + return queryComponents.join('&'); + }, + + getElements: function(form) { + form = $(form); + var elements = new Array(); + + for (tagName in Form.Element.Serializers) { + var tagElements = form.getElementsByTagName(tagName); + for (var j = 0; j < tagElements.length; j++) + elements.push(tagElements[j]); + } + return elements; + }, + + disable: function(form) { + var elements = Form.getElements(form); + for (var i = 0; i < elements.length; i++) { + var element = elements[i]; + element.blur(); + element.disable = 'true'; + } + }, + + focusFirstElement: function(form) { + form = $(form); + var elements = Form.getElements(form); + for (var i = 0; i < elements.length; i++) { + var element = elements[i]; + if (element.type != 'hidden' && !element.disabled) { + Field.activate(element); + break; + } + } + }, + + reset: function(form) { + $(form).reset(); + } +}; + +Form.Element = { + serialize: function(element) { + element = $(element); + var method = element.tagName.toLowerCase(); + var parameter = Form.Element.Serializers[method](element); + + if (parameter) + return encodeURIComponent(parameter[0]) + '=' + + encodeURIComponent(parameter[1]); + }, + + getValue: function(element) { + element = $(element); + var method = element.tagName.toLowerCase(); + var parameter = Form.Element.Serializers[method](element); + + if (parameter) + return parameter[1]; + } +}; + +Form.Element.Serializers = { + input: function(element) { + switch (element.type.toLowerCase()) { + case 'hidden': + case 'password': + case 'text': + return Form.Element.Serializers.textarea(element); + case 'checkbox': + case 'radio': + return Form.Element.Serializers.inputSelector(element); + } + return false; + }, + + inputSelector: function(element) { + if (element.checked) + return [element.name, element.value]; + }, + + textarea: function(element) { + return [element.name, element.value]; + }, + + select: function(element) { + var index = element.selectedIndex; + var value = element.options[index].value || element.options[index].text; + return [element.name, (index >= 0) ? value : '']; + } +}; + +var $F = Form.Element.getValue; + +Abstract.TimedObserver = function() {}; +Abstract.TimedObserver.prototype = { + initialize: function(element, frequency, callback) { + this.frequency = frequency; + this.element = $(element); + this.callback = callback; + + this.lastValue = this.getValue(); + this.registerCallback(); + }, + + registerCallback: function() { + setTimeout(this.onTimerEvent.bind(this), this.frequency * 1000); + }, + + onTimerEvent: function() { + var value = this.getValue(); + if (this.lastValue != value) { + this.callback(this.element, value); + this.lastValue = value; + } + + this.registerCallback(); + } +}; + +Form.Element.Observer = Class.create(); +Form.Element.Observer.prototype = (new Abstract.TimedObserver()).extend({ + getValue: function() { + return Form.Element.getValue(this.element); + } +}); + +Form.Observer = Class.create(); +Form.Observer.prototype = (new Abstract.TimedObserver()).extend({ + getValue: function() { + return Form.serialize(this.element); + } +}); + +document.getElementsByClassName = function(className) { + var children = document.getElementsByTagName('*') || document.all; + var elements = new Array(); + + for (var i = 0; i < children.length; i++) { + var child = children[i]; + var classNames = child.className.split(' '); + for (var j = 0; j < classNames.length; j++) { + if (classNames[j] == className) { + elements.push(child); + break; + } + } + } + + return elements; +}; + +var Element = { + toggle: function() { + for (var i = 0; i < arguments.length; i++) { + var element = $(arguments[i]); + element.style.display = + (element.style.display == 'none' ? '' : 'none'); + } + }, + + hide: function() { + for (var i = 0; i < arguments.length; i++) { + var element = $(arguments[i]); + element.style.display = 'none'; + } + }, + + show: function() { + for (var i = 0; i < arguments.length; i++) { + var element = $(arguments[i]); + element.style.display = ''; + } + }, + + remove: function(element) { + element = $(element); + element.parentNode.removeChild(element); + }, + + getHeight: function(element) { + element = $(element); + return element.offsetHeight; + } +}; + +var Toggle = new Object(); +Toggle.display = Element.toggle; + +Abstract.Insertion = function(adjacency) { + this.adjacency = adjacency; +}; + +Abstract.Insertion.prototype = { + initialize: function(element, content) { + this.element = $(element); + this.content = content; + + if (this.adjacency && this.element.insertAdjacentHTML) { + this.element.insertAdjacentHTML(this.adjacency, this.content); + } else { + this.range = this.element.ownerDocument.createRange(); + if (this.initializeRange) this.initializeRange(); + this.fragment = this.range.createContextualFragment(this.content); + this.insertContent(); + } + } +}; + +var Insertion = new Object(); + +Insertion.Before = Class.create(); +Insertion.Before.prototype = (new Abstract.Insertion('beforeBegin')).extend({ + initializeRange: function() { + this.range.setStartBefore(this.element); + }, + + insertContent: function() { + this.element.parentNode.insertBefore(this.fragment, this.element); + } +}); + +Insertion.Top = Class.create(); +Insertion.Top.prototype = (new Abstract.Insertion('afterBegin')).extend({ + initializeRange: function() { + this.range.selectNodeContents(this.element); + this.range.collapse(true); + }, + + insertContent: function() { + this.element.insertBefore(this.fragment, this.element.firstChild); + } +}); + +Insertion.Bottom = Class.create(); +Insertion.Bottom.prototype = (new Abstract.Insertion('beforeEnd')).extend({ + initializeRange: function() { + this.range.selectNodeContents(this.element); + this.range.collapse(this.element); + }, + + insertContent: function() { + this.element.appendChild(this.fragment); + } +}); + +Insertion.After = Class.create(); +Insertion.After.prototype = (new Abstract.Insertion('afterEnd')).extend({ + initializeRange: function() { + this.range.setStartAfter(this.element); + }, + + insertContent: function() { + this.element.parentNode.insertBefore(this.fragment, + this.element.nextSibling); + } +}); \ No newline at end of file diff --git a/themes/olive/javascripts/scriptaculous.js b/themes/olive/javascripts/scriptaculous.js new file mode 100755 index 0000000..cd0e341 --- /dev/null +++ b/themes/olive/javascripts/scriptaculous.js @@ -0,0 +1,47 @@ +// Copyright (c) 2005 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us) +// +// Permission is hereby granted, free of charge, to any person obtaining +// a copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to +// permit persons to whom the Software is furnished to do so, subject to +// the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +var Scriptaculous = { + Version: '1.5_rc3', + require: function(libraryName) { + // inserting via DOM fails in Safari 2.0, so brute force approach + document.write(''); + }, + load: function() { + if((typeof Prototype=='undefined') || + parseFloat(Prototype.Version.split(".")[0] + "." + + Prototype.Version.split(".")[1]) < 1.4) + throw("script.aculo.us requires the Prototype JavaScript framework >= 1.4.0"); + var scriptTags = document.getElementsByTagName("script"); + for(var i=0;i this.maximum) sliderValue = this.maximum; + if(sliderValue < this.minimum) sliderValue = this.minimum; + var offsetDiff = (sliderValue - (this.value||this.minimum)) * this.increment; + + if(this.isVertical()){ + this.setCurrentTop(offsetDiff + this.currentTop()); + } else { + this.setCurrentLeft(offsetDiff + this.currentLeft()); + } + this.value = sliderValue; + this.updateFinished(); + }, + minimumOffset: function(){ + return(this.isVertical() ? + this.trackTop() + this.alignY : + this.trackLeft() + this.alignX); + }, + maximumOffset: function(){ + return(this.isVertical() ? + this.trackTop() + this.alignY + (this.maximum - this.minimum) * this.increment : + this.trackLeft() + this.alignX + (this.maximum - this.minimum) * this.increment); + }, + isVertical: function(){ + return (this.axis == 'vertical'); + }, + startDrag: function(event) { + if(Event.isLeftClick(event)) { + if(!this.disabled){ + this.active = true; + var pointer = [Event.pointerX(event), Event.pointerY(event)]; + var offsets = Position.cumulativeOffset(this.handle); + this.offsetX = (pointer[0] - offsets[0]); + this.offsetY = (pointer[1] - offsets[1]); + this.originalLeft = this.currentLeft(); + this.originalTop = this.currentTop(); + } + Event.stop(event); + } + }, + update: function(event) { + if(this.active) { + if(!this.dragging) { + var style = this.handle.style; + this.dragging = true; + if(style.position=="") style.position = "relative"; + style.zIndex = this.options.zindex; + } + this.draw(event); + // fix AppleWebKit rendering + if(navigator.appVersion.indexOf('AppleWebKit')>0) window.scrollBy(0,0); + Event.stop(event); + } + }, + draw: function(event) { + var pointer = [Event.pointerX(event), Event.pointerY(event)]; + var offsets = Position.cumulativeOffset(this.handle); + + offsets[0] -= this.currentLeft(); + offsets[1] -= this.currentTop(); + + // Adjust for the pointer's position on the handle + pointer[0] -= this.offsetX; + pointer[1] -= this.offsetY; + var style = this.handle.style; + + if(this.isVertical()){ + if(pointer[1] > this.maximumOffset()) + pointer[1] = this.maximumOffset(); + if(pointer[1] < this.minimumOffset()) + pointer[1] = this.minimumOffset(); + + // Increment by values + if(this.values){ + this.value = this.getNearestValue(Math.round((pointer[1] - this.minimumOffset()) / this.increment) + this.minimum); + pointer[1] = this.trackTop() + this.alignY + (this.value - this.minimum) * this.increment; + } else { + this.value = Math.round((pointer[1] - this.minimumOffset()) / this.increment) + this.minimum; + } + style.top = pointer[1] - offsets[1] + "px"; + } else { + if(pointer[0] > this.maximumOffset()) pointer[0] = this.maximumOffset(); + if(pointer[0] < this.minimumOffset()) pointer[0] = this.minimumOffset(); + // Increment by values + if(this.values){ + this.value = this.getNearestValue(Math.round((pointer[0] - this.minimumOffset()) / this.increment) + this.minimum); + pointer[0] = this.trackLeft() + this.alignX + (this.value - this.minimum) * this.increment; + } else { + this.value = Math.round((pointer[0] - this.minimumOffset()) / this.increment) + this.minimum; + } + style.left = (pointer[0] - offsets[0]) + "px"; + } + if(this.options.onSlide) this.options.onSlide(this.value); + }, + endDrag: function(event) { + if(this.active && this.dragging) { + this.finishDrag(event, true); + Event.stop(event); + } + this.active = false; + this.dragging = false; + }, + finishDrag: function(event, success) { + this.active = false; + this.dragging = false; + this.handle.style.zIndex = this.originalZ; + this.originalLeft = this.currentLeft(); + this.originalTop = this.currentTop(); + this.updateFinished(); + }, + updateFinished: function() { + if(this.options.onChange) this.options.onChange(this.value); + }, + keyPress: function(event) { + if(this.active && !this.disabled) { + switch(event.keyCode) { + case Event.KEY_ESC: + this.finishDrag(event, false); + Event.stop(event); + break; + } + if(navigator.appVersion.indexOf('AppleWebKit')>0) Event.stop(event); + } + } +} diff --git a/themes/olive/javascripts/webmail.js b/themes/olive/javascripts/webmail.js new file mode 100755 index 0000000..3abc2dd --- /dev/null +++ b/themes/olive/javascripts/webmail.js @@ -0,0 +1,35 @@ +function chooseContacts(url) { + rs('', url + '?mode=choose',550,480,0); +} + +function setBulk() { + if (getFormField("mail_bulk").checked) getFormField("set_bulk").value = "set_bulk" + document.forms['composeMail'].submit(); +} + +function getFormField(id) { + if ( document.getElementById ) elem = document.getElementById( id ); + else if ( document.all ) elem = document.eval( "document.all." + id ); + return elem; +} + +function toggle_msg_operations(setc) { + var isOpened = toggle_layer('msgops'); + if (setc) setCookie("_wmlmo", ( isOpened ? "opened" : "closed"), 1000000); +} + +function toggle_msg_search(setc) { + var isOpened = toggle_layer('msg_search'); + if (setc) setCookie("_wmlms", (isOpened ? "opened" : "closed"), 1000000); +} + +function checkAll(theForm) { // check all the checkboxes in the list + for (var i=0;i+|z`)L+!vF*z zGZ7L8!3?o^j5=eR#T^>)O%c!nNlo%4(jx!l&hXA-#6)>L5e<}ZWAqD=`k hs?!fW)8Oc3io2}!S<%=_('Edit/Create Contact Group')%> + <%= + form_tag( + link_save, + 'method' => 'post', + 'class' => 'two_columns' + ) + %> +<%= form_input(:hidden_field, 'contactgroup', 'id') %> +<%= form_input(:hidden_field, 'contactgroup', 'customer_id') %> + + + <%= form_input(:text_field, 'contactgroup', 'name', _('Name'), 'class'=>'two_columns') %> +
+ + + + +
+ + +
+ + <%= end_form_tag %> diff --git a/themes/olive/views/contact_groups/index.html.erb b/themes/olive/views/contact_groups/index.html.erb new file mode 100755 index 0000000..a3dc585 --- /dev/null +++ b/themes/olive/views/contact_groups/index.html.erb @@ -0,0 +1,26 @@ +

<%=_('Contact Groups')%>

+ +<%- form_for @contact_group do |f| %> +<%= hidden_field "contactgroup", "user_id" %> + + + + + +<% + for contactgroup in @contactgroups %> + + + + + + +<% end %> + + + +
<%=_('Name')%> 
<%= contactgroup.name %><%= link_to(_('members'), :controller=>'contact', :action=>'list', :id=>contactgroup.id, :params=>{"mode"=>"groups"}) %><%= link_to(_('edit'), :controller=>'/contacts/contact_group', :action=>'edit', :id=>contactgroup.id) %><%= link_to(_('delete'), {:controller=>'/contacts/contact_group', :action=>'delete', :id=>contactgroup.id}, {:confirm=>sprintf(_('DELETE CONTACT GROUP \'%s\'?'), contactgroup.name)})%>
+ + +
+<%- end %> diff --git a/themes/olive/views/contacts/add_multiple.html.erb b/themes/olive/views/contacts/add_multiple.html.erb new file mode 100755 index 0000000..8ab1494 --- /dev/null +++ b/themes/olive/views/contacts/add_multiple.html.erb @@ -0,0 +1,26 @@ +

<%=t :add_multiple_contacts %>

+<% if flash["errors"] and not flash["errors"].empty?%> + <%= t(:errors)%> +
    + <% flash["errors"].each do |message| %> +
  • <%= message %> + <% end %> +
+<% end %> +
+ <%= radio_button("contact", "file_type", "1")%> <%= t(:csv_file)%> + <%= radio_button("contact", "file_type", "2")%> <%= t(:tab_file)%> + + + + + + + + +
+ + + +
+
diff --git a/themes/olive/views/contacts/choose.html.erb b/themes/olive/views/contacts/choose.html.erb new file mode 100755 index 0000000..65fb2ac --- /dev/null +++ b/themes/olive/views/contacts/choose.html.erb @@ -0,0 +1,11 @@ + \ No newline at end of file diff --git a/themes/olive/views/contacts/import_preview.html.erb b/themes/olive/views/contacts/import_preview.html.erb new file mode 100755 index 0000000..b972081 --- /dev/null +++ b/themes/olive/views/contacts/import_preview.html.erb @@ -0,0 +1,43 @@ +

<%= _('Contacts You Are About To Import')%>

+ +<% if flash["errors"] and not flash["errors"].empty?%> + <%= _('Errors')%> +
    + <% flash["errors"].each do |message| %> +
  • <%= message %> + <% end %> +
+<% end %> + +
+ + + + + + + + + <% + for i in 0...@contacts.length + contact = @contacts[i] + %> + + + + + + + + <% end %> + + + + +
 <%= _('First name')%><%= _('Last name')%><%= _('E-mail')%>
<%=i+1%>
+ + + + +
+
diff --git a/themes/olive/views/contacts/index.html.erb b/themes/olive/views/contacts/index.html.erb new file mode 100755 index 0000000..87e5217 --- /dev/null +++ b/themes/olive/views/contacts/index.html.erb @@ -0,0 +1,115 @@ +

<%= t :contacts %>

+<% unless @mode == "choose" %> + +<% end -%> +
+
+ + <% if flash["alert"] %>
  • <%= flash["alert"] %>
<% end %> +
+ + <% if @group_id and not @group_id.nil? %> + + <% end %> + + + + + + + + <% if @mode == "choose" %> + + + + + + <% for contact in @contacts %> + + + + + + <% end %> + + <% for group in @contactgroups %> + + + + + + <% end %> + + + + <% elsif @mode == "groups"%> + + + + + + <% for contact in @contacts %> + + + + + + + <% end %> + + + + <% else %> + + + + + + <% for contact in @contacts %> + + + + + + <% end %> + <% end %> +
+ <% CDF::CONFIG[:contact_letters].each do |letter| %> + <%= link_to letter, contacts_path(:letter => letter) %> + <% end %> +       + <%= link_to t(:show_all), contacts_path %> +
<%= will_paginate @contacts %>
<%= "#{t :to} #{t :cc} #{t :bcc}" %><%= t :name %><%= t :email %>
+ + <%=contact.full_name%><%=contact.email%>
<%=t(:groups)%>:
+ + <%=group.name%> 
+ + +
<%= t(:name)%><%= t(:email)%>
><%=contact.full_name%><%=contact.email%>
+ + +
<%= t(:name)%><%= t(:email)%> 
<%= link_to(contact.full_name, :controller=>:contacts, :action => "edit", :id => contact.id ) %><%= link_to( contact.email, :controller => :webmail, :action => "compose", :params => { "mail[to]" => contact.email } ) %><%= link_to(t(:delete), {:controller=>:contacts, :action=>'delete', :id=>contact.id}, + {:confirm=>t(:delete_contact_question, :name => contact.show_name, :email => contact.email)})%> +
+
+
+
diff --git a/themes/olive/views/contacts/new.html.erb b/themes/olive/views/contacts/new.html.erb new file mode 100755 index 0000000..dd19e45 --- /dev/null +++ b/themes/olive/views/contacts/new.html.erb @@ -0,0 +1,73 @@ +

<%=t(:edit_create_contact)%>

+ + +
+
+ + + <%= form_tag( contacts_path, 'method' => 'post', 'class' => 'two_columns') do %> + <%= form_input(:hidden_field, 'contact', 'id') %> + <%= form_input(:hidden_field, 'contact', 'customer_id') %> + + + <%= form_input(:text_field, 'contact', 'fname', t(:first_name), 'class'=>'two_columns') %> + <%= form_input(:text_field, 'contact', 'lname', t(:last_name), 'class'=>'two_columns') %> + <%= form_input((@contact.new_record? ? :text_field : :read_only_field), 'contact', 'email', t(:email), 'class'=>'two_columns')%> +
+ + <% for group in @contactgroups %> + + <% end %> + <% if not(@contactgroups.empty?) %> + <%=_('Contact belong to these groups')%>: + + + <% + end + col = 1 + for group in @contactgroups %> + + <% if col%2 == 0 %> + + + <% end + col = col + 1 %> + <% end %> + <% if col%2 == 0 and not(@contactgroups.empty?) %> + + <% end %> + <% if not(@contactgroups.empty?) %> + +
+ > +  <%=group.name %> +
 
+ <% end %> + + + + + +
+ + +
+ <% end %> +
+
diff --git a/themes/olive/views/folders/index.html.erb b/themes/olive/views/folders/index.html.erb new file mode 100755 index 0000000..530e2ab --- /dev/null +++ b/themes/olive/views/folders/index.html.erb @@ -0,0 +1,48 @@ +

<%=t :mailbox %>

+ +
+
+ +<% content_for('sidebar') { %> +
+

<%= t :add_folder %>

+
+ <%= form_tag folders_path, :id => 'new_folder' do %> +
    +
  • +
  • <%= text_field_tag 'folder', '', :size => 18 %>
  • +
  • <%= submit_tag t(:add_folder) %>
  • +
+ <% end %> +
+<% } %> + +
+
+ + + + <% for folder in @folders %> + + + + + <% end %> + +
<%= t :folder %><%= t :total_messages %><%= t :unseen%>
<%=folder_manage_link(folder)%><%= folder.total %><%= folder.unseen > 0 ? "#{folder.unseen}" : "#{folder.unseen}" %>
+
+
+
+
diff --git a/themes/empty/views/layouts/.gitkeep b/themes/olive/views/layouts/.gitkeep similarity index 100% rename from themes/empty/views/layouts/.gitkeep rename to themes/olive/views/layouts/.gitkeep diff --git a/themes/empty/views/layouts/chooser.html.erb b/themes/olive/views/layouts/chooser.html.erb similarity index 100% rename from themes/empty/views/layouts/chooser.html.erb rename to themes/olive/views/layouts/chooser.html.erb diff --git a/themes/olive/views/layouts/login.html.erb b/themes/olive/views/layouts/login.html.erb new file mode 100755 index 0000000..638396d --- /dev/null +++ b/themes/olive/views/layouts/login.html.erb @@ -0,0 +1,13 @@ + + + + <%=t(:mailr) %> - <%= t(:please_login)%> + <%=stylesheet_link_tag current_theme_stylesheet_path('base') %> + <%=stylesheet_link_tag current_theme_stylesheet_path('style') %> + + + <%= yield %> + + diff --git a/themes/olive/views/layouts/public.html.erb b/themes/olive/views/layouts/public.html.erb new file mode 100755 index 0000000..c9c94a1 --- /dev/null +++ b/themes/olive/views/layouts/public.html.erb @@ -0,0 +1,29 @@ + + + + <%= t(:mailr) %> + + + <%=stylesheet_link_tag current_theme_stylesheet_path('base') %> + <%=stylesheet_link_tag current_theme_stylesheet_path('style') %> + <%=javascript_include_tag current_theme_javascript_path('global') %> + <%=javascript_include_tag current_theme_javascript_path('webmail') %> + + <%=javascript_include_tag :defaults %> + + + +
+
+ +
<%= yield %>
+
+
+
+ + diff --git a/themes/olive/views/login/index.html.erb b/themes/olive/views/login/index.html.erb new file mode 100644 index 0000000..6240f03 --- /dev/null +++ b/themes/olive/views/login/index.html.erb @@ -0,0 +1,41 @@ +
+
+ +

<%= t(:please_login) %>

+ +
+
diff --git a/themes/olive/views/shared/_folders.html.erb b/themes/olive/views/shared/_folders.html.erb new file mode 100755 index 0000000..f06e12c --- /dev/null +++ b/themes/olive/views/shared/_folders.html.erb @@ -0,0 +1,9 @@ +
+

<%=t :folders %> <%= link_to t(:add_edit_folder), folders_path %>

+ +
+ diff --git a/themes/olive/views/webmail/_contacts.html.erb b/themes/olive/views/webmail/_contacts.html.erb new file mode 100755 index 0000000..f1b2a63 --- /dev/null +++ b/themes/olive/views/webmail/_contacts.html.erb @@ -0,0 +1,12 @@ +
    + <% for contact in @contacts do -%> +
  • + <%=h contact.fname %> <%= h contact.lname %> + +
  • + <% end -%> +
diff --git a/themes/olive/views/webmail/_expr.html.erb b/themes/olive/views/webmail/_expr.html.erb new file mode 100755 index 0000000..f7fa44c --- /dev/null +++ b/themes/olive/views/webmail/_expr.html.erb @@ -0,0 +1,18 @@ + <% @expression = @expressions[expr_counter] %> + + + + + + + <%= text_field 'expression', 'expr_value', 'index'=>expr_counter %> + + + <%= hidden_field "expression", 'case_sensitive', 'index'=>expr_counter %> + <%= check_box "expression", 'case_sensitive', {'onclick'=>'toggleCheckbox(this)', "index"=>expr_counter } %>  <%= _('case sensitive') %> + + \ No newline at end of file diff --git a/themes/olive/views/webmail/_filter.html.erb b/themes/olive/views/webmail/_filter.html.erb new file mode 100755 index 0000000..f4fbe10 --- /dev/null +++ b/themes/olive/views/webmail/_filter.html.erb @@ -0,0 +1,19 @@ + + <%=h @user.filters[filter_counter].name%> + + <% if filter_counter > 0 %> + <%=link_filter_up(@user.filters[filter_counter].id)%> + <% else %> +   + <% end %> + + + <% if filter_counter < @user.filters.size - 1 %> + <%=link_filter_down(@user.filters[filter_counter].id)%> + <% else %> +   + <% end %> + + <%=link_filter_edit(@user.filters[filter_counter].id)%> + <%=link_filter_delete(@user.filters[filter_counter].id)%> + \ No newline at end of file diff --git a/themes/olive/views/webmail/_message_row.html.erb b/themes/olive/views/webmail/_message_row.html.erb new file mode 100755 index 0000000..9509d13 --- /dev/null +++ b/themes/olive/views/webmail/_message_row.html.erb @@ -0,0 +1,14 @@ + + + <% if @folder_name == CDF::CONFIG[:mail_sent] %> + <%= short_address(message_row.to_addr) %> +<% else %> + <%= short_address(message_row.from_addr) %> +<% end %> +
+ <%= link_to(parse_subject(message_row.subject) << " " , :controller=>'webmail', :action=>'message', :msg_id=>message_row.uid)%> + + <%= message_date(message_row.date) %> + <%= message_size(message_row.size) %> + <%= message_row.content_type == 'multipart' ? image_tag(current_theme_image_path('attachment.png')) : ' ' %> + diff --git a/themes/olive/views/webmail/_search.html.erb b/themes/olive/views/webmail/_search.html.erb new file mode 100755 index 0000000..e967c1d --- /dev/null +++ b/themes/olive/views/webmail/_search.html.erb @@ -0,0 +1,13 @@ + + <%= t :search%>open + + diff --git a/themes/olive/views/webmail/compose.html.erb b/themes/olive/views/webmail/compose.html.erb new file mode 100755 index 0000000..43ea2c9 --- /dev/null +++ b/themes/olive/views/webmail/compose.html.erb @@ -0,0 +1,67 @@ +<% content_for('sidebar') { %> + <%= render :partial => 'shared/folders' %> +<% } %> + +

<%= t :mailbox %>

+
+ +
+
+ +
+ + +
+ + + + + +
<%= text_field_with_auto_complete(:mail, :to, {"size"=>65}, :skip_style => true, :tokens=> ",") %>
<%= text_field_with_auto_complete(:mail, :cc, {"size"=>65}, :skip_style => true, :tokens=> ",") %>
<%= text_field_with_auto_complete(:mail, :bcc, {"size"=>65}, :skip_style => true, :tokens=> ",") %>
<%= text_field('mail', 'subject', {"size"=>65}) %>
+ <%= hidden_field('mail', 'from') %> + <%= hidden_field('mail', 'content_type') %> +
+ +
+ <%= text_area "mail", "body", "rows"=>20, "cols"=>75 %> +
+ +
+ <% if @mail.attachments and @mail.attachments.size > 0%> + + <% i = 0 + @mail.attachments.each { |att| %> + + <% i = i + 1 + }%> +
<%=attachment(att, i)%>
+ <% end %> +
+ <%=%> + +
+
+
+
+ +<% content_for("scripts") { %> +<%= @additional_scripts %> +<% if ['text/html', 'multipart'].include?(@mail.content_type) %> +<%= include_tinymce %> +<% end %> +<% } %> diff --git a/themes/olive/views/webmail/error_connection.html.erb b/themes/olive/views/webmail/error_connection.html.erb new file mode 100755 index 0000000..ee08a7b --- /dev/null +++ b/themes/olive/views/webmail/error_connection.html.erb @@ -0,0 +1,26 @@ +

<%=_('Mailbox')%>

+ +
+
+ +<% content_for('sidebar') { %> +
+ <%=_('Error occured obtaining connection to mail server. Please excuse us!')%> +
+<% } %> +
+
+ +
diff --git a/themes/olive/views/webmail/filter.html.erb b/themes/olive/views/webmail/filter.html.erb new file mode 100755 index 0000000..4bb728c --- /dev/null +++ b/themes/olive/views/webmail/filter.html.erb @@ -0,0 +1,41 @@ +

<%=_('Mailbox')%>

+ +
+
+ +
+
+ <%=hidden_field 'filter', 'id' %> + + + + + + + <%= render_partial_collection "expr", @expressions %> + + + + + + +
<%=text_field 'filter', 'name' %>
<%=_('Messages matching')%>
+ +
+ + +
+ +
+
+
diff --git a/themes/olive/views/webmail/filters.html.erb b/themes/olive/views/webmail/filters.html.erb new file mode 100755 index 0000000..24fbb24 --- /dev/null +++ b/themes/olive/views/webmail/filters.html.erb @@ -0,0 +1,42 @@ +<% content_for('sidebar') { %> + <%= render :partial => 'shared/folders' %> +<% } %> +

<%=_('Mailbox')%>

+ +
+
+ +
+
+<% if @user.filters and @user.filters.size > 0 %> + + + + + + + + + <%= render_partial_collection "filter", @user.filters %> +
<%=_('Filter name')%>    
+<% end %> +
+ <% if flash['error'] %> +
<%= flash['error'] %>
+ <% elsif flash['status'] %> +
<%= flash['status'] %>
+ <% end %> +
+
diff --git a/themes/olive/views/webmail/folders.html.erb b/themes/olive/views/webmail/folders.html.erb new file mode 100755 index 0000000..1b579ea --- /dev/null +++ b/themes/olive/views/webmail/folders.html.erb @@ -0,0 +1,29 @@ +

<%=_('Mailbox')%>

+ +
+
+ + <% content_for('sidebar') { %> + <%= render :partial => 'shared' %> + <% } %> +
+ <% if not(request['msg_id'] == '') %> + <%= render_component(:controller => "webmail/webmail", :action => "message", :params => { 'msg_id' => request['msg_id']})%> + <% else %> + <%= render_component(:controller => "webmail/webmail", :action => "messages") %> + <% end %> +
+ +
diff --git a/themes/olive/views/webmail/mailsent.html.erb b/themes/olive/views/webmail/mailsent.html.erb new file mode 100755 index 0000000..d991b0c --- /dev/null +++ b/themes/olive/views/webmail/mailsent.html.erb @@ -0,0 +1,31 @@ +

<%=t(:mailbox)%>

+ +
+
+ +
+
+
<%=t(:to)%>
<%= CGI.escapeHTML(@mail.to) %>
+ <% if @mail.cc %> +
<%=t(:cc)%>
<%= CGI.escapeHTML(@mail.cc) %>
+ <% end + if @mail.bcc %> +
<%=t(:bcc)%>
<%= CGI.escapeHTML(@mail.bcc) %>
+ <% end %> +
<%=t(:subject)%>
<%= CGI.escapeHTML(@mail.subject) %>
+
+
+
+
diff --git a/themes/olive/views/webmail/message.html.erb b/themes/olive/views/webmail/message.html.erb new file mode 100755 index 0000000..772bc11 --- /dev/null +++ b/themes/olive/views/webmail/message.html.erb @@ -0,0 +1,42 @@ +

<%=t :mailbox %>

+ +
+
+ +<% content_for('sidebar') { %> + <%= render :partial => 'shared/folders' %> +<% } %> +
+ +
+
+
    +
  • + <%= link_to("« #{t :back_to_list}", :controller=>"webmail", :action=>"messages") %> +
  • +
  • <%=link_reply_to_sender(@msg_id)%>
  • +
  • <%=link_forward_message(@msg_id)%>
  • +
  • <%=link_flag_for_deletion(@msg_id)%>
  • +
  • <%=link_view_source(@msg_id)%>
  • +
+
+ + <%= mail2html(@mail, @msg_id) %> +
+ +
+ +
+ diff --git a/themes/olive/views/webmail/messages.html.erb b/themes/olive/views/webmail/messages.html.erb new file mode 100755 index 0000000..b1652e5 --- /dev/null +++ b/themes/olive/views/webmail/messages.html.erb @@ -0,0 +1,80 @@ +

<%= t :mailbox %>

+ +
+
+ +<% content_for :sidebar do %> +<%= render :partial => 'shared/folders' %> +<% end %> + +
+
+

<%= @folder_name %>

+ <%= form_tag({:controller=>'webmail', :action=>'messages'})%> +
+ + + + <%=t :operations%>open + + +
+

<%= t :operations_txt %>

+ + <%= submit_tag(t(:delete), :name=>'op')%> + <%= submit_tag(t(:copy), :name=> 'op')%> + <%= submit_tag(t(:move), :name=>'op')%> + <%= submit_tag(t(:mark_read), :name=>'op')%> + <%= submit_tag(t(:mark_unread), :name=>'op')%> +
+ + <%= t :destination_txt %>  + + +
+ <%= render :partial => "search" %> + <%= page_navigation_webmail @pages if @pages.page_count > 1 %> + + + + + <% if @folder_name == CDF::CONFIG[:mail_sent] %> + + <% else %> + + <% end%> + + + + + + + + <% for message in @messages %> + <%= render :partial => 'message_row', :object => message %> + <% end %> + +
<%= link_to(t(:to), :controller=>:webmail, :action=>:messages, :op=>'SORT', :page=>@page, :scc=>'to_flat')%><%= link_to(t(:from), :controller=>:webmail, :action=>:messages, :op=>'SORT', :page=>@page, :scc=>'from_flat')%><%= link_to(t(:subject), :controller=>:webmail, :action=>:messages, :op=>'SORT', :page=>@page, :scc=>'subject')%><%= link_to(t(:date), :controller=>:webmail, :action=>:messages, :op=>'SORT', :page=>@page, :scc=>'date')%><%= link_to(t(:size), :controller=>:webmail, :action=>:messages, :op=>'SORT', :page=>@page, :scc=>'size')%> 
+ <%= page_navigation_webmail @pages if @pages.page_count > 1 %> + +
+
+ +
+
diff --git a/themes/olive/views/webmail/noattachment.html.erb b/themes/olive/views/webmail/noattachment.html.erb new file mode 100755 index 0000000..3599892 --- /dev/null +++ b/themes/olive/views/webmail/noattachment.html.erb @@ -0,0 +1 @@ +No attachment found! \ No newline at end of file diff --git a/themes/olive/views/webmail/prefs.html.erb b/themes/olive/views/webmail/prefs.html.erb new file mode 100755 index 0000000..a759c42 --- /dev/null +++ b/themes/olive/views/webmail/prefs.html.erb @@ -0,0 +1,55 @@ +<% content_for('sidebar') { %> + <%= render :partial => 'shared/folders' %> +<% } %> +

<%= t :mailbox %>

+ +
+
+
+
+ <%= hidden_field "mailpref", "id" %> + <%= hidden_field "mailpref", "customer_id" %> + + <%= form_input(:text_field, 'customer', 'fname', t(:first_name), 'class'=>'two_columns') %> + <%= form_input(:text_field, 'customer', 'lname', t(:last_name), 'class'=>'two_columns') %> + + + + + + + + + + + + + + + + + + +
+ <%=check_box('mailpref', 'check_external_mail')%> + <%= t :check_external_mail_txt %> +
+ + +
+
+
+
+
diff --git a/themes/olive/views/webmail/view_source.html.erb b/themes/olive/views/webmail/view_source.html.erb new file mode 100755 index 0000000..44e2f6a --- /dev/null +++ b/themes/olive/views/webmail/view_source.html.erb @@ -0,0 +1,13 @@ + + + + <%=_('Mailr')%> + + + +
+ <%=@msg_source%> +
+ + diff --git a/themes/original/views/layouts/public.html.erb b/themes/original/views/layouts/public.html.erb old mode 100755 new mode 100644