From c2a52382e97132b122198c3bd59ccc34887c4eb0 Mon Sep 17 00:00:00 2001 From: Manson Wang Date: Tue, 11 Feb 2014 14:42:12 +0800 Subject: [PATCH] ntu_ga --- app/assets/images/social-share-button.png | Bin 0 -> 7549 bytes .../lib/social-share-button.coffee | 33 +++ app/assets/javascripts/member-selection.js | 7 +- app/assets/javascripts/orbit-bar-search.js | 10 + app/assets/stylesheets/member_select.css | 230 ++++++++++++++++++ .../stylesheets/social-share-button.css | 90 +++++++ app/controllers/sessions_controller.rb | 40 +++ app/helpers/application_helper.rb | 9 +- .../member_selects/_modal_select.html.erb | 2 + .../member_selects/_promoter_front.html.erb | 14 ++ .../member_selects/_selection_box.html.erb | 16 ++ app/views/devise/sessions/new.html.erb | 7 +- app/views/layouts/_right_menu.html.erb | 18 +- built_in_extensions.rb | 12 +- config/locales/en.yml | 1 + config/locales/ntu.en.yml | 17 ++ config/locales/ntu.zh_tw.yml | 17 ++ config/locales/zh_tw.yml | 1 + config/routes.rb | 5 + 19 files changed, 518 insertions(+), 11 deletions(-) create mode 100644 app/assets/images/social-share-button.png create mode 100644 app/assets/javascripts/lib/social-share-button.coffee create mode 100644 app/assets/javascripts/orbit-bar-search.js create mode 100644 app/assets/stylesheets/member_select.css create mode 100644 app/assets/stylesheets/social-share-button.css create mode 100644 app/controllers/sessions_controller.rb create mode 100644 app/views/admin/member_selects/_promoter_front.html.erb create mode 100644 app/views/admin/member_selects/_selection_box.html.erb create mode 100644 config/locales/ntu.en.yml create mode 100644 config/locales/ntu.zh_tw.yml diff --git a/app/assets/images/social-share-button.png b/app/assets/images/social-share-button.png new file mode 100644 index 0000000000000000000000000000000000000000..3507161c70537db2d5dc99583d1a4992f7d5ecbd GIT binary patch literal 7549 zcmaKRby$?&*7h)THv$qv4h=(t<|<(Lv7$VWh4mZUcAWvHFYQ z@pW-~WCH*a(!Oq1Hcl`E$Qowv;3~;@*wW4jaw9W^ML94Y3SMb zIoXKWGD=HPdkcWBN zcsRHr9N?~?zlv7Ya4&=;KJTzR;SmkZ1l@ekMbf4PGHmHW38T-+Wl%fmbzykWMA z9&i`Xzd{yw`0u_z{;S@!l_;{j@mE~pid>5)rv3B0n`1>Og0ik(li6CNaqSU9_vM9$$ z{n-?9*~POEn3a#2QIe*%#8Ep=O&ljj4JK|FkcWe@EM$NR3j-Lj*!w%fzvSkjq7p2S zGK2;^z0kKSX)!l!Gd#Ro)+V<)iLHQy6>z=FC(A=k$65m`5N&*uV!<*_OP{FDI5n;; z7KIZ90mn7Ja5N1@rtq{QYm0cw2SxX5*1yc)M@r(^PKY+!8UVx&ph|G?u?7ZDGXdK!^ZE7?A973 z-0DPLv}^Rm_@QB67Z!w6w7xftY3%6$+lOQ3hwwCyCb9n!t&QP z^F2bdK0jmc7Q|kC2M@6kLU!(=yuQ2~WL?$LFDpe;RIMabPM+iFwrh}}!xbz6`nRcu zRCs(;LQzeZerOL7fSDe`HmQ13jH@J!!&XJm$*Vdx8Jj*ez*cT} z=@@!vu=*xLCgdg6pM4zA+#3KHO8&8pS=+>qEY00xV!05*tsS?|rFC~;XW=>d30rNM7^-c{JZY#&c{Cy@zuTIM8Nm% zb{Ly1fC+%`w^90*6t)OMm+SUh(Pc_Wf~OCM*K!%T_3dV@z6&SPpB1omG(w7l$e2aS zHDxJ?I+2_$xJ?&w(#{y@jq9qS`v8Nzjq}fIQcPb|<;Q=>(&&Sk8){KP&(V?J z)9(h1We+V~Oc`Fw-++DSJl->wqzB`Wk)!tXhFCoP@#f}89T^g|W7zH-RqR?&A(k9h zbQ!1&5U80>=?-l>U82YPS^aEitGql9R!CTRev{-#P>nYhxi~voN~RCktVLm*yOgp( zlqO5FHf(==z)rc&{KUK$i-+P0^n7calq!x!3g43T>6LGa#aY!QQF}n)9vZC2j@o&u zjH7(oh4Q-m5)*vqR+F6ML|S)}NPnpLC2xeiu)ok!#*mhdzVNyBXZlK?D?X=G;u{Uj zWA`L_*@6#3P87|a3_Neu4_iquGP}kjD)0026!CIC-Eh9;OBZAXbcRl(nrARybebl# zxVN7Hf}5-aw3K8-y{Hp^B*?vS4yo~wSQSj1Ewg2e(35lQHdy_YB70gxT<7o={i^#k zcecff1+%hM^J>vKnI9zh3-aMj|$_d_Y4$-EMj^g$i^UsXK?%XccG+{}4X&2A;tHqlBK5%TXq>O(h z2e2?naF!{2Kc6mTK<^41YaNeIB_YuA-25J(P+!%R#q`UFW)V7wp4TU8(35E-J^>sQ z5TbOLOaj;rQQJb_vXBw%bjH7biN()W3~T1YUo{VV8$2^eU-*`Y1n^|Uc~{v*i}v2! zlbu5Etc0i@CDOPZH2Pw65u@h{CL@=IF{TFCL+|e1T@hw#kBgYM;r6|bLeoo%yJ_y$ z%z<{iAE!92_sqTBHYfC^@p2lkD&XI`xEcL{2K|+527p{|F*3^Pl3p7-9&5PxESk>b z3Vtt$jN9Itk&GVngO|78*u$-;De$w zc-fLMGk!^OmW|TU61&*krvGjJ{6ul7wm`-X!zO~iLw{tV;vmu$_rX{ll?B^FC2Y5m*gmpr2p9zLaS@0C3W9$!g zKX^8gq+Hu|SSOCWo>|AWlpK%m7c8rsF_&am?s=Ip!-q*^JQ`EwM21+uY`PrGfNSky zC)3ylExyI{X&cYS=A(X>rn4~Eg6J%b93swKV(0v<1XzHlBns8gbDYzAXNAKjP^qMpwcZnUF=lWzNytt_j zE{x|s)c>4u#kYy6&e=}%%aoN+&yQ3_4(-qOEI~u#|l>LehbM{ z-{Paj6~E({p6?##F1>eMc*p;J{m*6RrMkdTq(NS5&dXZWcwhLQA2c29p3Xo;b!L#w z=QBBfC0L7R6`YM{@7d_=PmFnYkO8E0Q11EiI<8DQ+FM}!x(`jlgl$1Ul1iPd-Zf93 zEDGBUr*P)rN z$w?&cQ}-QgxA<-Q8ld?RX;?9y9 zbk4{Z!-i*_VKZI9K2gy;Ofqh7H>GR*=bBErdQ^LLV*&*grTFaYjA&QQ}z%DI^svbE+ot36C z%eOpz!@-^3v~!X^l|inVwNj*yA;}!ZoinD}juoX8eF653%f-n|C!6j1LE)c5uLxLrJER%SyGv#Lu1)vY zc%#igcFseqx)wW9#x%1QlI!l@O>Eqit5hx4zu~UP1~tOu?_c1L!V0bZS5EJE!i~ETdj^aA=>=`6B2> zGCJ1aZ_K^GmOlXZr{DF6T0T52!XihlW8mo!8sNQw4m!veQoBm=&9R7rA{@Kc+zUJ+ zs9$-ZxK0qI%#V~)8{L(bZM#_1+?~n_tI$Tdx-Fo*qH)5oF9)m9TO!*JHMMbtpAVpB zd>jZ(9^k8ar{7O`?Lqr3NRa%4uKc3FP<-|Cw#%assLG#o;&^mwUFNqcx1VJLIh~QOmVZ`(}I{;_0rtXjxho9jI2N&>ia@ID?>+Iu7i;_*R)n%U~_IwG;5Hb1) zQsh`yTs3lkHCYU(m$Q-Aw?>BAW-Q|z3uk_)SAE~h2%LQ0chj@3C&3b3W|9K+4SQvd^UTP#*84r5 ze)be0LCUP&R2PMmX1IynZBO1_ofxup@a5h~a!LE%LNw@q1t4iEQG7~R^3shlpB8Tx zr;_G^f^VTPfteQ6@lDjZFBEaQC;ZiOKCCao7J`bha6`<_&Z+=JOxZXd_}JG!a@}eJ z@}yrS=&7q>CIGI@umk>xJ&~6wT)Cp{`N0)fh;&4*%e)eEtBQg4OUa0j-(RANaS?K2 zx>HjmD&!F6u^s)O`@qN56Vo*;6=3qqpmD-4lNqm(`gproxT@OQ`g;4jo4#m6t z444u?H)MIr_aHBsrq^r|PGLT((#d32#pZoe_p!4dU2E+Ksc|?mx*c&-yBkXW<4xsV zZkrPzt6vkmZ;bWgX?5B!)j%WPv4s5SuonUtD}9-@#d8n#CO!GTME^W%Jn}c40p_+7 z;*|z9N&>4c1r)fX%hAcv)Fh%3ctj!@nd`lReRt!_n`h~lG&gQ=3X>BuvT{O-OKFUB zYNiR;_y-`WZ0^@n!=;%l1PIoYj33-oxRrt^5=Y-%CH!mvq?oW@=T=J)FC|0D@)S*i z&enA+>Y};?MfgD{HFjh@7mQx{Yl=6Pg8<~3`xRd7vHM`4Oh55`3#@bDcV<7D#17pz zD3pjY+(!dUs=Pj`>#G$mF%c0>2lU%GS@Bs^X3d-CFla4NtgdiV8a`Bm=-w7uE|+7t zlGsT)V%SwsYR&B_tXObN-RN#LL&N+++I#4u_ySK+P8b^hr4Ov`x_CTh#R5=mCAkmoD;M}$1!)Of|dCSia&{$!JmtY z&v?E?zx)jq`@PYS99@)aHT^3m-waaZL;ZC=o*SBz{VcR7Jv6&fnzodK-6L2ca%u^B zg~ZtBi%1!=TN?0GiZZGTua>Wj)yUZhq{OPP5{N)i(=y=>`_WXh9)LXTPmo^bMh|Ab zk&+o2W>OOf@(J|Ce<8^+#r9m@;jZKfM&@CxfKpo&H&Gfp4 zY6EP@Pw2tO+ojPSqLA+W=1@J!P>++>7ZJJmbm~wL+RCx9KQ>BrfmA%cCos{8y=2T>z_S$MrVAcXO^j1DO<7-VrZZ>qu3eX4XMuI+{4#Hx$F#_rbTDi2|$+E zcwM@cQGw0uj~3XUY+MLgMhnCor=n|oQdJTWwzY5VAn zV#ZvbYkFdsvFYBq#LE$>Bvu{*tncSgV$WKVcPJ+1`#z}qGdJ8I4SDQjk)xsUkaHpI zZ2|uDT4gs2SBJnp5ES*6n3{|ho1h_AvHC&KJ5{G?$+pu4jCWkg$GwRvZ_}Lou%c$Q zGVF3=waWI*NZAZh787Zb=D7$^CQ^_^ z=D0Z<$U(SHD9#TNs4jUKUp-PqU|dJvIknUoi6vuge@>j*X&-ET5L+L}9173xCl-=@ zC(M`&Zx2&GCF_2nemYO^0CY__T(FHj<~u08Q+=W|yAF}TZ? z?Fk2fePUSeH2LV&r?8v3e&^w(5fxJR$V?|=PeWP~&B>wlex5xZDmIdQ{!BnIs3w6vr|!z(d8mI*`zd13S|LuX*vJdL@oBhtRAR zC%enBz;UYVBt5$+qp;`JpiG_K(f;hyeO0k84Em3Maf5EtgNMi{Vhh4=uu<9ld?>8qIuisK${ap~7>Xt= zo`mGtY-S3qx6*wPGoRCAtx4GnWei@rb z(tCJMgpIc2mTVe;^N4*zqHh^^fBau5S%^@3Oe+hSR*!ClZ}jg4Uj)g|+#61jSbzA; z`TPB=h`uH^N>J3v3B?7}#YOj)|H2RR4=|KsRnIUF)W`y9R=7d*_F{C#QdGl5AFdu<z}vmC#3B+%r|!c`XN!|F**fo>tXg z=#rHsp?_E|a|~q)jdtiRk+t@i7zW&50dJd?)t9N6Q@0EJj?{`1^`E&DeD7Q4md-67a!Uk#(pO%uwn#tZ?IvmO z3DK_P+FwbeVh#`T+;D5u&==Qt;C#aiQWMTW_Zz&Fe7TNA65)5m)^N~PdO+lQ>-#ej dYxM!05+DE)N;w1z8~?o!RaVfDuYp>I{U80w_Y434 literal 0 HcmV?d00001 diff --git a/app/assets/javascripts/lib/social-share-button.coffee b/app/assets/javascripts/lib/social-share-button.coffee new file mode 100644 index 0000000..cec9fcb --- /dev/null +++ b/app/assets/javascripts/lib/social-share-button.coffee @@ -0,0 +1,33 @@ +window.SocialShareButton = + openUrl : (url) -> + window.open(url) + false + + share : (el) -> + site = $(el).data('site') + title = encodeURIComponent($(el).parent().data('title')) + img = encodeURIComponent($(el).parent().data("img")) + fb_url = encodeURIComponent($(el).parent().data("fb_url")) + url = encodeURIComponent(location.href) + switch site + when "weibo" + SocialShareButton.openUrl("http://v.t.sina.com.cn/share/share.php?url=#{url}&pic=#{img}&title=#{title}&content=utf-8") + when "twitter" + SocialShareButton.openUrl("https://twitter.com/home?status=#{title}: #{url}") + when "douban" + SocialShareButton.openUrl("http://www.douban.com/recommend/?url=#{url}&title=#{title}&image=#{img}") + when "facebook" + SocialShareButton.openUrl("http://www.facebook.com/sharer.php?t=#{title}&u=#{fb_url}") + when "qq" + SocialShareButton.openUrl("http://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?url=#{url}&title=#{title}&pics=#{img}") + when "tqq" + SocialShareButton.openUrl("http://share.v.t.qq.com/index.php?c=share&a=index&url=#{url}&title=#{title}&pic=#{img}") + when "baidu" + SocialShareButton.openUrl("http://apps.hi.baidu.com/share/?url=#{url}&title=#{title}&content=") + when "kaixin001" + SocialShareButton.openUrl("http://www.kaixin001.com/rest/records.php?url=#{url}&content=#{title}&style=11&pic=#{img}") + when "renren" + SocialShareButton.openUrl("http://widget.renren.com/dialog/share?resourceUrl=#{url}&title=#{title}&description=") + when "google_plus" + SocialShareButton.openUrl("https://plus.google.com/share?url=#{url}&t=#{title}") + false \ No newline at end of file diff --git a/app/assets/javascripts/member-selection.js b/app/assets/javascripts/member-selection.js index 276b48b..cf783d0 100644 --- a/app/assets/javascripts/member-selection.js +++ b/app/assets/javascripts/member-selection.js @@ -10,7 +10,7 @@ $(document).ready(function() { type: 'GET', url: $(this).attr("rel"), dataType: 'script', - data: {ids: ids}, + data: {field: $(this).attr("field"), ids: ids}, success: function (msg) { $("#member-filter").modal('show'); }, error: function(){ @@ -20,6 +20,11 @@ $(document).ready(function() { }); return false; }); + + $(document).on('click', ".remove_user", function(){ + $(this).parent().remove(); + }); + $("#remove_users").on('click', function(){ var ids = []; var users = $('.selected_user input[type="checkbox"]:checked'); diff --git a/app/assets/javascripts/orbit-bar-search.js b/app/assets/javascripts/orbit-bar-search.js new file mode 100644 index 0000000..e0d9bf9 --- /dev/null +++ b/app/assets/javascripts/orbit-bar-search.js @@ -0,0 +1,10 @@ +$(document).ajaxStop(function() { + $('.nav').find('.dropdown').on({ + mouseleave: function() { + $(this).removeClass("open"); + }, + mouseenter: function() { + $(this).addClass("open") + } + }); +}); \ No newline at end of file diff --git a/app/assets/stylesheets/member_select.css b/app/assets/stylesheets/member_select.css new file mode 100644 index 0000000..891a4f3 --- /dev/null +++ b/app/assets/stylesheets/member_select.css @@ -0,0 +1,230 @@ +/* Member Filter */ +#select_user #select_user_modal.modal { + width: 80%; + margin-left: -40%; +} +#select_user #select_user_modal .modal-body { + max-height: 425px; +} +#select_user #select_user_modal .modal-body form { + margin-bottom: 0px; +} +#select_user #select_user_modal .modal-body form fieldset { + min-height: 360px; +} +#select_user #select_user_modal .modal-body .radio.inline, +#select_user #select_user_modal .modal-body .checkbox.inline { + display: inline-block; + padding-top: 5px; + margin-bottom: 0; + vertical-align: middle; + min-width: 100px; + margin-left: 0; +} +#select_user #select_user_modal .modal-body .form-actions { + margin: 20px 0 0; + padding: 10px 0 0; + background-color: transparent; + text-align: right; +} +#select_user #select_user_modal .modal-body .tabs-left > .nano { + width: 160px; + min-height: 425px; + float: left; +} +#select_user #select_user_modal .modal-body .tabs-left > .nano .pane { + right: 6px; +} +#select_user #select_user_modal .modal-body .tabs-left > .nano > .content > .nav-tabs { + width: 140px; + float: left; + margin-bottom: 0; + margin-right: 0; + border-right: 1px solid #ddd; + border-bottom: none; +} +#select_user #select_user_modal .modal-body .tabs-left > .nano > .content > .nav-tabs > li { + float: none; +} +#select_user #select_user_modal .modal-body .tabs-left > .nano > .content > .nav-tabs > li > a { + min-width: 74px; + margin-right: 0; + margin-bottom: 3px; +} +#select_user #select_user_modal .modal-body .tabs-left > .nano > .content > .nav-tabs > li > a { + margin-right: -1px; + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} +#select_user #select_user_modal .modal-body .tabs-left > .nano > .content > .nav-tabs > li > a:hover { + border-color: #eeeeee #dddddd #eeeeee #eeeeee; +} +#select_user #select_user_modal .modal-body .tabs-left > .nano > .content > .nav-tabs .active > a, +#select_user #select_user_modal .modal-body .tabs-left > .nano > .content > .nav-tabs .active > a:hover { + border-color: #ddd transparent #ddd #ddd; + *border-right-color: #ffffff; +} +#select_user #select_user_modal .member-filter-options { + float: left; + display: inline-block; + width: 175px; + min-height: 425px; + margin-right: 10px; + padding: 0 10px 0 0; +} +#select_user #select_user_modal .member-filter-options select { + width: 165px; +} +#select_user #select_user_modal .member-filter-options .btn { + display: block; +} +#select_user #select_user_modal .member-filter-result { + padding-left: 15px; + min-height: 360px; + width: auto; +} + + +/* Check Box Card */ +.checkbox-card { + margin: 0; +} +.checkbox-card li { + position: relative; + list-style: none; + color: #FFFFFF; + width: 180px; + height: 40px; + margin: 0 10px 10px 0; + float: left; + display: inline-block; + background-color: #cccccc; + overflow: hidden; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + -webkit-transition: all .2s linear; + -moz-transition: all .2s linear; + -o-transition: all .2s linear; + transition: all .2s linear; +} +.checkbox-card li.mark { + width: 0; + height: 0; + padding: 0; + margin: 0; + -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; + filter: alpha(opacity=0); + opacity: 0; + visibility: hidden; +} +.checkbox-card li:hover { + background-color: #0088cc; +} +.checkbox-card li:after { + content: ""; + display: block; + clear: both; + height: 0; + visibility: hidden; +} +.checkbox-card li.active:before { + -webkit-text-size-adjust : none; + font-family: FontAwesome; + font-weight: normal; + font-style: normal; + color: #FFF; + text-decoration: inherit; + content: "\f00c"; + position: absolute; + right: 0px; + top: 0px; + line-height: 14px; + text-indent: 10px; + font-size: 10px; + width: 0px; + height: 0px; + border-style: solid; + border-width: 0 22px 22px 0; + border-color: transparent #51a351 transparent transparent; +} +.checkbox-card li.active label { +} +.checkbox-card li label { + margin-bottom: 0px; + overflow: hidden; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} +.checkbox-card li input { + opacity: 0; + width: 100%; + height: 100%; + position: absolute; + top: 0; + left: 0; + margin: 0; + z-index: 10; +} +.checkbox-card li label span { + -webkit-text-size-adjust : none; + font-size: 10px; + display: block; + width: 130px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + color: #666666; + margin-top: -3px; +} +.checkbox-card li:hover label span, +.checkbox-card li:hover label span.user-name { + color: #FFFFFF; +} +.checkbox-card li label span.user-name { + font-size: 12px; + color: #363636; + padding: 2px 0 0; + margin-top: 0; +} +.checkbox-card li .user-pic { + float: left; + margin-right: 5px; + width: 40px; + height: 40px; +} +#selected_users .selected_user { + display: block; + margin-bottom: 5px; +} +#selected_users .selected_user .remove_user { + font-size: 15px; +} +/* +.promoter { + border-color: #CCCCCC; + border-style: solid; + border-width: 0 1px; + padding: 0 10px 5px 10px; +} +.promoter > div { + border-bottom: 1px solid #CCCCCC; +} +.promoter > div:after { + content: ""; + clear: both; + display: block; + visibility: hidden; +} +.promoter > div > span { + display: block; + margin-left: 70px; + padding-bottom: 5px; +} +.promoter p { + width: 70px; + float: left; + text-align:right; +}*/ \ No newline at end of file diff --git a/app/assets/stylesheets/social-share-button.css b/app/assets/stylesheets/social-share-button.css new file mode 100644 index 0000000..1acc138 --- /dev/null +++ b/app/assets/stylesheets/social-share-button.css @@ -0,0 +1,90 @@ +.social-share-button-baidu { + display:inline-block; + width:16px; + height:16px; + background:url("/assets/social-share-button.png") 0px 0px no-repeat; +} +.social-share-button-delicious { + display:inline-block; + width:16px; + height:16px; + background:url("/assets/social-share-button.png") -16px 0px no-repeat; +} +.social-share-button-douban { + display:inline-block; + width:16px; + height:16px; + background:url("/assets/social-share-button.png") 0px -16px no-repeat; +} +.social-share-button-email { + display:inline-block; + width:16px; + height:16px; + background:url("/assets/social-share-button.png") -16px -16px no-repeat; +} +.social-share-button-facebook { + display:inline-block; + width:16px; + height:16px; + background:url("/assets/social-share-button.png") -32px 0px no-repeat; +} +.social-share-button-flickr { + display:inline-block; + width:16px; + height:16px; + background:url("/assets/social-share-button.png") -32px -16px no-repeat; +} +.social-share-button-google { + display:inline-block; + width:16px; + height:16px; + background:url("/assets/social-share-button.png") 0px -32px no-repeat; +} +.social-share-button-google_plus { + display:inline-block; + width:16px; + height:16px; + background:url("/assets/social-share-button.png") -16px -32px no-repeat; +} +.social-share-button-kaixin001 { + display:inline-block; + width:16px; + height:16px; + background:url("/assets/social-share-button.png") -32px -32px no-repeat; +} +.social-share-button-qq { + display:inline-block; + width:16px; + height:16px; + background:url("/assets/social-share-button.png") -48px 0px no-repeat; +} +.social-share-button-renren { + display:inline-block; + width:16px; + height:16px; + background:url("/assets/social-share-button.png") -48px -16px no-repeat; +} +.social-share-button-tqq { + display:inline-block; + width:16px; + height:16px; + background:url("/assets/social-share-button.png") -48px -32px no-repeat; +} +.social-share-button-twitter { + display:inline-block; + width:16px; + height:16px; + background:url("/assets/social-share-button.png") 0px -48px no-repeat; +} +.social-share-button-weibo { + display:inline-block; + width:16px; + height:16px; + background:url("/assets/social-share-button.png") -16px -48px no-repeat; +} +.social-share-button-rss { + display:inline-block; + width:16px; + height:16px; + background:url("/assets/social-share-button.png") -32px -48px no-repeat; +} \ No newline at end of file diff --git a/app/controllers/sessions_controller.rb b/app/controllers/sessions_controller.rb new file mode 100644 index 0000000..927719b --- /dev/null +++ b/app/controllers/sessions_controller.rb @@ -0,0 +1,40 @@ +# encoding: utf-8 + +class SessionsController < Devise::SessionsController + prepend_before_filter :require_no_authentication, :only => [ :new, :create ] + + + def create + @site = Site.first + + private_key = OpenSSL::PKey::RSA.new(@site.private_key) + wresult = private_key.private_decrypt(request.params['wresult']) + + @ids = wresult.split("@") + + login_uid = @ids[0] + + resource = User.first(conditions:{user_id: login_uid}) + + if !resource.blank? + resource_name = resource.class.to_s.downcase + sign_in(resource_name, resource) + session[:user_id_type] = "myntu" + redirect_to after_sign_in_path_for(resource) + else + flash[:error] = "很抱歉,您無此權限或帳號登入本站,請洽本站管理員
Sorry, you don't have the account or authority to login. Please contact the website administrator." + redirect_to :root + end + end + + def destroy + @user_id_type = session[:user_id_type] + sign_out + if @user_id_type == "myntu" + redirect_to "https://adfs.ntu.edu.tw/adfs/ls/?wa=wsignout1.0&wreply=https://galogin.ntu.edu.tw" + else + redirect_to root_path + end + end + +end \ No newline at end of file diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index a1a81c4..d31cd5f 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -194,7 +194,8 @@ module ApplicationHelper stylesheets << "\n" stylesheets << "\n" if page.design.css_reset # stylesheets << "\n" - # stylesheets << "\n" + # stylesheets << "\n" + stylesheets << "\n" stylesheets << "\n" if page.design.css_default theme = page.design.themes.detect{ |d| d.id == page.theme_id } stylesheets << "\n" if theme @@ -203,8 +204,12 @@ module ApplicationHelper def page_javascripts(page, edit=nil) javascripts = '' + unless edit + javascripts << "\n" + end # javascripts << "\n" # javascripts << "\n" + javascripts << "\n" page.design.javascripts.each do |js| javascripts << "" end @@ -301,7 +306,7 @@ module ApplicationHelper # NTU link def get_link(site_number) - "http://#{request.host}:2#{site_number}00" + "http://#{site_number}.#{request.domain(3)}" end def sortable(column, title = nil, options = {}) diff --git a/app/views/admin/member_selects/_modal_select.html.erb b/app/views/admin/member_selects/_modal_select.html.erb index becc199..99f4f02 100644 --- a/app/views/admin/member_selects/_modal_select.html.erb +++ b/app/views/admin/member_selects/_modal_select.html.erb @@ -28,6 +28,7 @@
<%= submit_tag t(:submit), class: "btn btn-primary" %> + <%= hidden_field_tag field, @field %>
<% end %> @@ -53,6 +54,7 @@
<%= submit_tag t(:submit), class: "btn btn-primary" %> + <%= hidden_field_tag field, @field %>
<% end %> diff --git a/app/views/admin/member_selects/_promoter_front.html.erb b/app/views/admin/member_selects/_promoter_front.html.erb new file mode 100644 index 0000000..f8bec0f --- /dev/null +++ b/app/views/admin/member_selects/_promoter_front.html.erb @@ -0,0 +1,14 @@ +<% unless users.blank? %> +
+

<%= t(:promoter) %>:

+
    + <% users.each do |user| %> +
  • +

    + <%= link_to user.name, "mailto:#{user.email}", class: "promoter-name" %> / <%= user.office_tel %> +

    +
  • + <% end %> +
+
+<% end %> \ No newline at end of file diff --git a/app/views/admin/member_selects/_selection_box.html.erb b/app/views/admin/member_selects/_selection_box.html.erb new file mode 100644 index 0000000..c54929a --- /dev/null +++ b/app/views/admin/member_selects/_selection_box.html.erb @@ -0,0 +1,16 @@ +<% content_for :page_specific_javascript do -%> + <%= javascript_include_tag "member-selection" %> + <%= javascript_include_tag "lib/jquery.nanoscroller" %> + <%= javascript_include_tag "lib/checkbox.card" %> +<% end -%> +<% content_for :page_specific_css do -%> + <%= stylesheet_link_tag "member_select" %> +<% end %> + +
+
+ <%= render partial: 'admin/member_selects/user', collection: users, locals: {field: field} %> + <%= hidden_field_tag field %> +
+ <%= link_to t(:add), '#', class: 'btn btn-primary btn-small select_user_modal', rel: select_members_admin_member_selects_path, field: field %> +
\ No newline at end of file diff --git a/app/views/devise/sessions/new.html.erb b/app/views/devise/sessions/new.html.erb index 1b77fce..476b61f 100644 --- a/app/views/devise/sessions/new.html.erb +++ b/app/views/devise/sessions/new.html.erb @@ -12,10 +12,11 @@ - +
diff --git a/app/views/layouts/_right_menu.html.erb b/app/views/layouts/_right_menu.html.erb index b4efb30..89ca7ad 100644 --- a/app/views/layouts/_right_menu.html.erb +++ b/app/views/layouts/_right_menu.html.erb @@ -13,6 +13,16 @@
+ + +
  • <%= link_to content_tag(:i, nil, class: 'icons-screen') + ' ' + t(:desktop), desktop_path, tabindex: '-1' %>
  • <% end %> -
  • <%= link_to content_tag(:i, nil, class: 'icons-logout') + ' ' + t(:logout), destroy_user_session_path, tabindex: '-1' %>
  • +
  • <%= link_to content_tag(:i, nil, class: 'icons-logout') + ' ' + t(:logout), user_logout_path, tabindex: '-1' %>
  • <%= t(:help) %>
  • @@ -56,6 +66,12 @@