From 9b55d8b527c8c2a398af116c3d572c861949b465 Mon Sep 17 00:00:00 2001 From: txz Date: Tue, 10 May 2016 14:06:34 +0800 Subject: [PATCH 001/668] =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E7=89=88=E6=A0=87?= =?UTF-8?q?=E9=A2=98=E6=98=BE=E7=A4=BA=E4=B8=8D=E5=AE=8C=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/blogs/_article.html.erb | 4 ++-- app/views/files/_org_subfield_list.html.erb | 2 +- app/views/files/_project_list.html.erb | 2 +- app/views/files/_resource_detail.html.erb | 2 +- app/views/issues/_issue_replies.html.erb | 2 +- app/views/memos/show.html.erb | 2 +- app/views/organizations/_org_course_create.html.erb | 2 +- app/views/organizations/_org_course_homework.html.erb | 2 +- app/views/organizations/_org_course_message.html.erb | 4 ++-- app/views/organizations/_org_course_news.html.erb | 4 ++-- app/views/organizations/_org_course_poll.html.erb | 2 +- app/views/organizations/_org_project_issue.html.erb | 4 ++-- app/views/organizations/_org_subfield_message.html.erb | 4 ++-- app/views/organizations/_org_subfield_news.html.erb | 4 ++-- app/views/organizations/_project_create.html.erb | 2 +- app/views/organizations/_project_message.html.erb | 4 ++-- app/views/projects/_attachment_acts.html.erb | 2 +- app/views/projects/_project_create.html.erb | 2 +- app/views/projects/_project_news.html.erb | 4 ++-- app/views/users/_course_attachment.html.erb | 2 +- app/views/users/_course_create.html.erb | 2 +- app/views/users/_course_homework.html.erb | 2 +- app/views/users/_course_journalsformessage.html.erb | 2 +- app/views/users/_course_message.html.erb | 4 ++-- app/views/users/_course_news.html.erb | 4 ++-- app/views/users/_course_poll.html.erb | 2 +- app/views/users/_project_attachment.html.erb | 2 +- app/views/users/_project_create.html.erb | 2 +- app/views/users/_project_document.html.erb | 2 +- app/views/users/_project_issue.html.erb | 2 +- app/views/users/_project_issue_reply.html.erb | 2 +- app/views/users/_project_journal.html.erb | 2 +- app/views/users/_project_message.html.erb | 4 ++-- app/views/users/_project_news.html.erb | 4 ++-- app/views/users/_user_blog.html.erb | 4 ++-- app/views/users/_user_homework_detail.html.erb | 2 +- app/views/users/user_system_messages.html.erb | 2 +- 37 files changed, 50 insertions(+), 50 deletions(-) diff --git a/app/views/blogs/_article.html.erb b/app/views/blogs/_article.html.erb index edbce26d3..afeefd299 100644 --- a/app/views/blogs/_article.html.erb +++ b/app/views/blogs/_article.html.erb @@ -47,7 +47,7 @@ <%end%> -
+
<% if activity.try(:author).try(:realname) == ' ' %> <%= link_to activity.try(:author), user_path(activity.author_id,:host=>Setting.host_user), :class => "newsBlue mr15" %> <% else %> @@ -161,7 +161,7 @@ <%= link_to image_tag(url_to_avatar(reply.author), :width => "33", :height => "33"), user_path(reply.author_id,:host=>Setting.host_user), :alt => "用户头像" %>
-
+
<% if reply.try(:author).try(:realname) == ' ' %> <%= link_to reply.try(:author), user_path(reply.author_id,:host=>Setting.host_user), :class => "newsBlue mr10 f14" %> <% else %> diff --git a/app/views/files/_org_subfield_list.html.erb b/app/views/files/_org_subfield_list.html.erb index ad3ce7a3e..66b68e895 100644 --- a/app/views/files/_org_subfield_list.html.erb +++ b/app/views/files/_org_subfield_list.html.erb @@ -8,7 +8,7 @@ <%= link_to image_tag(url_to_avatar(file.author), :width => 50, :height => 50), user_path(file.author) %>
-
+
<%# 如果有历史版本则提供历史版本下载 %> <% if file.attachment_histories.count == 0 %> <%= link_to file.is_public? ? truncate(file.filename, length: 45) : truncate(file.filename,length: 35, omission: '...'), diff --git a/app/views/files/_project_list.html.erb b/app/views/files/_project_list.html.erb index 2ee726d77..831dc0e68 100644 --- a/app/views/files/_project_list.html.erb +++ b/app/views/files/_project_list.html.erb @@ -7,7 +7,7 @@ <%= link_to image_tag(url_to_avatar(file.author), :width => 50, :height => 50), user_path(file.author) %>
-
+
<%# 如果有历史版本则提供历史版本下载 %> <% if file.attachment_histories.count == 0 %> <%= link_to truncate(file.filename,length: 35, omission: '...'), diff --git a/app/views/files/_resource_detail.html.erb b/app/views/files/_resource_detail.html.erb index 20ffb1e50..2a03723ca 100644 --- a/app/views/files/_resource_detail.html.erb +++ b/app/views/files/_resource_detail.html.erb @@ -5,7 +5,7 @@ <%= link_to image_tag(url_to_avatar(file.author), :width => 50, :height => 50), user_path(file.author) %>
-
+
<%# 如果有历史版本则提供历史版本下载 %> <% if file.attachment_histories.count == 0 %> <%= link_to truncate(file.filename,length: 35, omission: '...'), diff --git a/app/views/issues/_issue_replies.html.erb b/app/views/issues/_issue_replies.html.erb index 4c8dfa1d9..aaf9c132f 100644 --- a/app/views/issues/_issue_replies.html.erb +++ b/app/views/issues/_issue_replies.html.erb @@ -11,7 +11,7 @@ <%= link_to image_tag(url_to_avatar(reply.user), :width => "33", :height => "33"), user_path(reply.user_id), :alt => "用户头像" %>
-
+
<% if reply.try(:user).try(:realname) == ' ' %> <%= link_to reply.try(:user), user_path(reply.user_id), :class => "newsBlue mr10 f14" %> <% else %> diff --git a/app/views/memos/show.html.erb b/app/views/memos/show.html.erb index 83b90dc93..aeaf3f423 100644 --- a/app/views/memos/show.html.erb +++ b/app/views/memos/show.html.erb @@ -94,7 +94,7 @@ <%= link_to image_tag(url_to_avatar(reply.author), :width => 33,:height => 33), user_path(reply.author) %>
-
<%= reply.author.name%><%= format_date(reply.created_at) %>
+
<%= reply.author.name%><%= format_date(reply.created_at) %>
<%= reply.content.html_safe%>
+ + + \ No newline at end of file diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/darkX.css b/public/plugin_assets/redmine_code_review/stylesheets/window_js/darkX.css index 2f83cfd46..e3df3e0a4 100644 --- a/public/plugin_assets/redmine_code_review/stylesheets/window_js/darkX.css +++ b/public/plugin_assets/redmine_code_review/stylesheets/window_js/darkX.css @@ -1,121 +1,121 @@ -.overlay_darkX { - background-color: #85BBEF; - filter:alpha(opacity=60); - -moz-opacity: 0.6; - opacity: 0.6; -} - -.darkX_nw { - background: transparent url(darkX/titlebar-left-focused.png) no-repeat 0 0; - width:6px; - height:21px; -} -.darkX_n { - background: transparent url(darkX/titlebar-mid-focused.png) repeat-x 0 0; - height:21px; -} -.darkX_ne { - background: transparent url(darkX/titlebar-right-focused.png) no-repeat 0 0; - width:6px; - height:21px; -} -.darkX_w { - background: transparent url(darkX/frame-left-focused.png) repeat-y top left; - width:3px; -} - -.darkX_e { - background: transparent url(darkX/frame-right-focused.png) repeat-y top right; - width:3px; -} - -.darkX_sw { - background: transparent url(darkX/frame-bottom-left-focused.png) no-repeat 0 0; - width:5px; - height:3px; -} -.darkX_s { - background: transparent url(darkX/frame-bottom-mid-focused.png) repeat-x 0 0; - height:3px; -} -.darkX_se, .darkX_sizer { - background: transparent url(darkX/frame-bottom-right-focused.png) no-repeat 0 0; - width:5px; - height:3px; -} - -.darkX_sizer { - cursor:se-resize; -} - -.darkX_close { - width: 21px; - height: 21px; - background: transparent url(darkX/button-close-focused.png) no-repeat 0 0; - position:absolute; - top:0px; - right:5px; - cursor:pointer; - z-index:1000; -} - -.darkX_minimize { - width: 21px; - height: 21px; - background: transparent url(darkX/button-minimize-focused.png) no-repeat 0 0; - position:absolute; - top:0px; - right:26px; - cursor:pointer; - z-index:1000; -} - -.darkX_maximize { - width: 21px; - height: 21px; - background: transparent url(darkX/button-maximize-focused.png) no-repeat 0 0; - position:absolute; - top:0px; - right:47px; - cursor:pointer; - z-index:1000; -} - - -.darkX_title { - float:left; - height:14px; - font-size:12px; - text-align:center; - margin-top:2px; - width:100%; - color:#FFF; -} - -.darkX_content { - overflow:auto; - color: #E6DF2A; - font-family: Tahoma, Arial, sans-serif; - font-size: 14px; - background:#5E5148; -} - - -/* FOR IE */ -* html .darkX_minimize { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/darkX/button-minimize-focused.png", sizingMethod="crop"); -} - -* html .darkX_maximize { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/darkX/button-maximize-focused.png", sizingMethod="scale"); -} - -* html .darkX_close { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/darkX/button-close-focused.png", sizingMethod="crop"); -} +.overlay_darkX { + background-color: #85BBEF; + filter:alpha(opacity=60); + -moz-opacity: 0.6; + opacity: 0.6; +} + +.darkX_nw { + background: transparent url(darkX/titlebar-left-focused.png) no-repeat 0 0; + width:6px; + height:21px; +} +.darkX_n { + background: transparent url(darkX/titlebar-mid-focused.png) repeat-x 0 0; + height:21px; +} +.darkX_ne { + background: transparent url(darkX/titlebar-right-focused.png) no-repeat 0 0; + width:6px; + height:21px; +} +.darkX_w { + background: transparent url(darkX/frame-left-focused.png) repeat-y top left; + width:3px; +} + +.darkX_e { + background: transparent url(darkX/frame-right-focused.png) repeat-y top right; + width:3px; +} + +.darkX_sw { + background: transparent url(darkX/frame-bottom-left-focused.png) no-repeat 0 0; + width:5px; + height:3px; +} +.darkX_s { + background: transparent url(darkX/frame-bottom-mid-focused.png) repeat-x 0 0; + height:3px; +} +.darkX_se, .darkX_sizer { + background: transparent url(darkX/frame-bottom-right-focused.png) no-repeat 0 0; + width:5px; + height:3px; +} + +.darkX_sizer { + cursor:se-resize; +} + +.darkX_close { + width: 21px; + height: 21px; + background: transparent url(darkX/button-close-focused.png) no-repeat 0 0; + position:absolute; + top:0px; + right:5px; + cursor:pointer; + z-index:1000; +} + +.darkX_minimize { + width: 21px; + height: 21px; + background: transparent url(darkX/button-minimize-focused.png) no-repeat 0 0; + position:absolute; + top:0px; + right:26px; + cursor:pointer; + z-index:1000; +} + +.darkX_maximize { + width: 21px; + height: 21px; + background: transparent url(darkX/button-maximize-focused.png) no-repeat 0 0; + position:absolute; + top:0px; + right:47px; + cursor:pointer; + z-index:1000; +} + + +.darkX_title { + float:left; + height:14px; + font-size:12px; + text-align:center; + margin-top:2px; + width:100%; + color:#FFF; +} + +.darkX_content { + overflow:auto; + color: #E6DF2A; + font-family: Tahoma, Arial, sans-serif; + font-size: 14px; + background:#5E5148; +} + + +/* FOR IE */ +* html .darkX_minimize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/darkX/button-minimize-focused.png", sizingMethod="crop"); +} + +* html .darkX_maximize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/darkX/button-maximize-focused.png", sizingMethod="scale"); +} + +* html .darkX_close { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/darkX/button-close-focused.png", sizingMethod="crop"); +} diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/debug.css b/public/plugin_assets/redmine_code_review/stylesheets/window_js/debug.css index 69e3b7fc2..d7981e9ca 100644 --- a/public/plugin_assets/redmine_code_review/stylesheets/window_js/debug.css +++ b/public/plugin_assets/redmine_code_review/stylesheets/window_js/debug.css @@ -1,25 +1,25 @@ -div.inspector div.inspectable { - padding: 0.25em 0 0.25em 1em; - background-color: Gray; - color: white; - border: outset 2px white; - cursor: pointer; -} - -div.inspector div.child { - margin: 0 0 0 1em; -} - -#debug_window_content { /* DIV container for debug sizing*/ - width:250px; - height:100px; - background-color:#000; -} - -#debug { /* DIV container for debug contents*/ - padding:3px; - color:#0f0; - font-family:monaco, Tahoma, Verdana, Arial, Helvetica, sans-serif; - font-size:10px; -} - +div.inspector div.inspectable { + padding: 0.25em 0 0.25em 1em; + background-color: Gray; + color: white; + border: outset 2px white; + cursor: pointer; +} + +div.inspector div.child { + margin: 0 0 0 1em; +} + +#debug_window_content { /* DIV container for debug sizing*/ + width:250px; + height:100px; + background-color:#000; +} + +#debug { /* DIV container for debug contents*/ + padding:3px; + color:#0f0; + font-family:monaco, Tahoma, Verdana, Arial, Helvetica, sans-serif; + font-size:10px; +} + diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/default.css b/public/plugin_assets/redmine_code_review/stylesheets/window_js/default.css index 6ab13789d..591451723 100644 --- a/public/plugin_assets/redmine_code_review/stylesheets/window_js/default.css +++ b/public/plugin_assets/redmine_code_review/stylesheets/window_js/default.css @@ -1,155 +1,155 @@ -.overlay_dialog { - background-color: #666666; - filter:alpha(opacity=60); - -moz-opacity: 0.6; - opacity: 0.6; -} - -.overlay___invisible__ { - background-color: #666666; - filter:alpha(opacity=0); - -moz-opacity: 0; - opacity: 0; -} - -.dialog_nw { - width: 9px; - height: 23px; - background: transparent url(default/top_left.gif) no-repeat 0 0; -} - -.dialog_n { - background: transparent url(default/top_mid.gif) repeat-x 0 0; - height: 23px; -} - -.dialog_ne { - width: 9px; - height: 23px; - background: transparent url(default/top_right.gif) no-repeat 0 0; -} - -.dialog_e { - width: 2px; - background: transparent url(default/center_right.gif) repeat-y 0 0; -} - -.dialog_w { - width: 2px; - background: transparent url(default/center_left.gif) repeat-y 0 0; -} - -.dialog_sw { - width: 9px; - height: 19px; - background: transparent url(default/bottom_left.gif) no-repeat 0 0; -} - -.dialog_s { - background: transparent url(default/bottom_mid.gif) repeat-x 0 0; - height: 19px; -} - -.dialog_se { - width: 9px; - height: 19px; - background: transparent url(default/bottom_right.gif) no-repeat 0 0; -} - -.dialog_sizer { - width: 9px; - height: 19px; - background: transparent url(default/sizer.gif) no-repeat 0 0; - cursor:se-resize; -} - -.dialog_close { - width: 14px; - height: 14px; - background: transparent url(default/close.gif) no-repeat 0 0; - position:absolute; - top:5px; - left:8px; - cursor:pointer; - z-index:2000; -} - -.dialog_minimize { - width: 14px; - height: 15px; - background: transparent url(default/minimize.gif) no-repeat 0 0; - position:absolute; - top:5px; - left:28px; - cursor:pointer; - z-index:2000; -} - -.dialog_maximize { - width: 14px; - height: 15px; - background: transparent url(default/maximize.gif) no-repeat 0 0; - position:absolute; - top:5px; - left:49px; - cursor:pointer; - z-index:2000; -} - -.dialog_title { - float:left; - height:14px; - font-family: Tahoma, Arial, sans-serif; - font-size:12px; - text-align:center; - width:100%; - color:#000; -} - -.dialog_content { - overflow:auto; - color: #DDD; - font-family: Tahoma, Arial, sans-serif; - font-size: 10px; - background-color:#123; -} - -.top_draggable, .bottom_draggable { - cursor:move; -} - -.status_bar { - font-size:12px; -} -.status_bar input{ - font-size:12px; -} - -.wired_frame { - display: block; - position: absolute; - border: 1px #000 dashed; -} - -/* DO NOT CHANGE THESE VALUES*/ -.dialog { - display: block; - position: absolute; -} - -.dialog table.table_window { - border-collapse: collapse; - border-spacing: 0; - width: 100%; - margin: 0px; - padding:0px; -} - -.dialog table.table_window td , .dialog table.table_window th { - padding: 0; -} - -.dialog .title_window { - -moz-user-select:none; -} - +.overlay_dialog { + background-color: #666666; + filter:alpha(opacity=60); + -moz-opacity: 0.6; + opacity: 0.6; +} + +.overlay___invisible__ { + background-color: #666666; + filter:alpha(opacity=0); + -moz-opacity: 0; + opacity: 0; +} + +.dialog_nw { + width: 9px; + height: 23px; + background: transparent url(default/top_left.gif) no-repeat 0 0; +} + +.dialog_n { + background: transparent url(default/top_mid.gif) repeat-x 0 0; + height: 23px; +} + +.dialog_ne { + width: 9px; + height: 23px; + background: transparent url(default/top_right.gif) no-repeat 0 0; +} + +.dialog_e { + width: 2px; + background: transparent url(default/center_right.gif) repeat-y 0 0; +} + +.dialog_w { + width: 2px; + background: transparent url(default/center_left.gif) repeat-y 0 0; +} + +.dialog_sw { + width: 9px; + height: 19px; + background: transparent url(default/bottom_left.gif) no-repeat 0 0; +} + +.dialog_s { + background: transparent url(default/bottom_mid.gif) repeat-x 0 0; + height: 19px; +} + +.dialog_se { + width: 9px; + height: 19px; + background: transparent url(default/bottom_right.gif) no-repeat 0 0; +} + +.dialog_sizer { + width: 9px; + height: 19px; + background: transparent url(default/sizer.gif) no-repeat 0 0; + cursor:se-resize; +} + +.dialog_close { + width: 14px; + height: 14px; + background: transparent url(default/close.gif) no-repeat 0 0; + position:absolute; + top:5px; + left:8px; + cursor:pointer; + z-index:2000; +} + +.dialog_minimize { + width: 14px; + height: 15px; + background: transparent url(default/minimize.gif) no-repeat 0 0; + position:absolute; + top:5px; + left:28px; + cursor:pointer; + z-index:2000; +} + +.dialog_maximize { + width: 14px; + height: 15px; + background: transparent url(default/maximize.gif) no-repeat 0 0; + position:absolute; + top:5px; + left:49px; + cursor:pointer; + z-index:2000; +} + +.dialog_title { + float:left; + height:14px; + font-family: Tahoma, Arial, sans-serif; + font-size:12px; + text-align:center; + width:100%; + color:#000; +} + +.dialog_content { + overflow:auto; + color: #DDD; + font-family: Tahoma, Arial, sans-serif; + font-size: 10px; + background-color:#123; +} + +.top_draggable, .bottom_draggable { + cursor:move; +} + +.status_bar { + font-size:12px; +} +.status_bar input{ + font-size:12px; +} + +.wired_frame { + display: block; + position: absolute; + border: 1px #000 dashed; +} + +/* DO NOT CHANGE THESE VALUES*/ +.dialog { + display: block; + position: absolute; +} + +.dialog table.table_window { + border-collapse: collapse; + border-spacing: 0; + width: 100%; + margin: 0px; + padding:0px; +} + +.dialog table.table_window td , .dialog table.table_window th { + padding: 0; +} + +.dialog .title_window { + -moz-user-select:none; +} + diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/iefix/iepngfix.css b/public/plugin_assets/redmine_code_review/stylesheets/window_js/iefix/iepngfix.css index 257a1b1e3..249388be5 100644 --- a/public/plugin_assets/redmine_code_review/stylesheets/window_js/iefix/iepngfix.css +++ b/public/plugin_assets/redmine_code_review/stylesheets/window_js/iefix/iepngfix.css @@ -1,3 +1,3 @@ -/* PNG fix for all themes that uses PNG images on IE */ -td, div { behavior: url(../themes/iefix/iepngfix.htc) } - +/* PNG fix for all themes that uses PNG images on IE */ +td, div { behavior: url(../themes/iefix/iepngfix.htc) } + diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/iefix/iepngfix.htc b/public/plugin_assets/redmine_code_review/stylesheets/window_js/iefix/iepngfix.htc index a6c683b9f..9a13f32bf 100644 --- a/public/plugin_assets/redmine_code_review/stylesheets/window_js/iefix/iepngfix.htc +++ b/public/plugin_assets/redmine_code_review/stylesheets/window_js/iefix/iepngfix.htc @@ -1,54 +1,54 @@ - - - - + + + + \ No newline at end of file diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting.css b/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting.css index 95ec287a9..0d955c3d7 100644 --- a/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting.css +++ b/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting.css @@ -1,960 +1,960 @@ -.overlay___invisible__ { - background-color: #666; - filter:alpha(opacity=0); - -moz-opacity: 0; - opacity: 0; -} - -.top_draggable, .bottom_draggable { - cursor:move; -} - -.status_bar { - font-size:12px; -} -.status_bar input{ - font-size:12px; -} - -.wired_frame { - display:block; - position:absolute; - border:1px #000 dashed; -} - - - -.overlay_bluelighting { - background-color:#FFF; - filter:alpha(opacity=60); - -moz-opacity:0.6; - opacity:0.6; -} - -.bluelighting_wired_frame { - background:#FFF; - filter:alpha(opacity=60); - -moz-opacity:0.6; - opacity:0.6; -} - -.bluelighting_nw { - background:transparent url(lighting/top-left-blue.png) no-repeat 0 0; - width:9px; - height:28px; -} - -.bluelighting_n { - background:transparent url(lighting/top-middle-blue.png) repeat-x 0 0; - height:28px; -} - -.bluelighting_ne { - background:transparent url(lighting/top-right-blue.png) no-repeat 0 0; - width:15px; - height:28px; -} - -.bluelighting_w { - background:transparent url(lighting/left-blue.png) repeat-y top left; - width:9px; -} - -.bluelighting_e { - background:transparent url(lighting/right-blue.png) repeat-y top right; - width:15px; -} - -.bluelighting_sw { - background:transparent url(lighting/bottom-left-blue.png) no-repeat 0 0; - width:9px; - height:15px; -} - -.bluelighting_s { - background:transparent url(lighting/bottom-middle-blue.png) repeat-x 0 0; - height:15px; -} - -.bluelighting_se, .bluelighting_sizer { - background:transparent url(lighting/bottom-right-blue.png) no-repeat 0 0; - width:15px; - height:15px; -} - -.bluelighting_sizer { - cursor:se-resize; -} - -.bluelighting_close { - width:15px; - height:9px; - background:transparent url(lighting/button-close-blue.png) no-repeat 0 0; - position:absolute; - top:11px; - right:10px; - cursor:pointer; - z-index:1000; -} - -.bluelighting_maximize { - width:15px; - height:9px; - background:transparent url(lighting/button-maximize-blue.png) no-repeat 0 0; - position:absolute; - top:11px; - right:25px; - cursor:pointer; - z-index:1000; -} - -.bluelighting_minimize { - width:15px; - height:9px; - background:transparent url(lighting/button-minimize-blue.png) no-repeat 0 0; - position:absolute; - top:11px; - right:40px; - cursor:pointer; - z-index:1000; -} - -.bluelighting_title { - float:left; - height:14px; - font-size:14px; - font-weight:bold; - font-family:Verdana, Arial, sans-serif; - text-align:center; - margin-top:2px; - width:100%; - color:#17385B; -} - -.bluelighting_content { - overflow:auto; - color:#000; - font-family:Verdana, Arial, sans-serif; - font-size:12px; - background:#BFDBFF; -} - -/* For alert/confirm dialog */ -.bluelighting_window { - border:1px solid #F00; - background:#FFF; - padding:20px; - margin-left:auto; - margin-right:auto; - width:400px; -} - -.bluelighting_message { - font-size:12px; - text-align:center; - width:100%; - padding-bottom:10px; -} - -.bluelighting_buttons { - text-align:center; - width:100%; -} - -.bluelighting_buttons input { - border:1px solid #999; - border-top-color:#CCC; - border-left-color:#CCC; - padding:2px; - background-color:#FFF; - color:#333; - background-image:url(lighting/background_buttons.gif); - background-repeat:repeat-x; - font-family:Verdana, Arial, sans-serif; - font-size:10px; - font-weight:bold; - text-align:center; -} - -.bluelighting_progress { - float:left; - margin:auto; - text-align:center; - width:100%; - height:16px; - background:transparent url('lighting/spinner.gif') no-repeat center center -} - -/* FOR IE */ -* html .bluelighting_nw { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-left-blue.png", sizingMethod="crop"); -} - -* html .bluelighting_n { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-middle-blue.png", sizingMethod="scale"); -} - -* html .bluelighting_ne { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-right-blue.png", sizingMethod="crop"); -} - -* html .bluelighting_w { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/left-blue.png", sizingMethod="scale"); -} - -* html .bluelighting_e { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/right-blue.png", sizingMethod="scale"); -} - -* html .bluelighting_sw { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-left-blue.png", sizingMethod="crop"); -} - -* html .bluelighting_s { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-middle-blue.png", sizingMethod="scale"); -} - -* html .bluelighting_se, * html .bluelighting_sizer { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-right-blue.png", sizingMethod="crop"); -} - -* html .bluelighting_close { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-close-blue.png", sizingMethod="crop"); -} - -* html .bluelighting_minimize { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-minimize-blue.png", sizingMethod="crop"); -} - -* html .bluelighting_maximize { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-maximize-blue.png", sizingMethod="crop"); -} - -* html .bluelighting_content { - background:#B8D7FF; -} - - - -.overlay_greylighting { - background-color:#FFF; - filter:alpha(opacity=60); - -moz-opacity:0.6; - opacity:0.6; -} - -.greylighting_wired_frame { - background:#FFF; - filter:alpha(opacity=60); - -moz-opacity:0.6; - opacity:0.6; -} - -.greylighting_nw { - background:transparent url(lighting/top-left-grey.png) no-repeat 0 0; - width:9px; - height:28px; -} - -.greylighting_n { - background:transparent url(lighting/top-middle-grey.png) repeat-x 0 0; - height:28px; -} - -.greylighting_ne { - background:transparent url(lighting/top-right-grey.png) no-repeat 0 0; - width:15px; - height:28px; -} - -.greylighting_w { - background:transparent url(lighting/left-grey.png) repeat-y top left; - width:9px; -} - -.greylighting_e { - background:transparent url(lighting/right-grey.png) repeat-y top right; - width:15px; -} - -.greylighting_sw { - background:transparent url(lighting/bottom-left-grey.png) no-repeat 0 0; - width:9px; - height:15px; -} - -.greylighting_s { - background:transparent url(lighting/bottom-middle-grey.png) repeat-x 0 0; - height:15px; -} - -.greylighting_se, .greylighting_sizer { - background:transparent url(lighting/bottom-right-grey.png) no-repeat 0 0; - width:15px; - height:15px; -} - -.greylighting_sizer { - cursor:se-resize; -} - -.greylighting_close { - width:15px; - height:9px; - background:transparent url(lighting/button-close-grey.png) no-repeat 0 0; - position:absolute; - top:11px; - right:10px; - cursor:pointer; - z-index:1000; -} - -.greylighting_maximize { - width:15px; - height:9px; - background:transparent url(lighting/button-maximize-grey.png) no-repeat 0 0; - position:absolute; - top:11px; - right:25px; - cursor:pointer; - z-index:1000; -} - -.greylighting_minimize { - width:15px; - height:9px; - background:transparent url(lighting/button-minimize-grey.png) no-repeat 0 0; - position:absolute; - top:11px; - right:40px; - cursor:pointer; - z-index:1000; -} - -.greylighting_title { - float:left; - height:14px; - font-size:14px; - font-weight:bold; - font-family:Verdana, Arial, sans-serif; - text-align:center; - margin-top:2px; - width:100%; - color:#525252; -} - -.greylighting_content { - overflow:auto; - color:#000; - font-family:Verdana, Arial, sans-serif; - font-size:12px; - background:#CDCDCD; -} - -/* For alert/confirm dialog */ -.greylighting_window { - border:1px solid #F00; - background:#FFF; - padding:20px; - margin-left:auto; - margin-right:auto; - width:400px; -} - -.greylighting_message { - font-size:12px; - text-align:center; - width:100%; - padding-bottom:10px; -} - -.greylighting_buttons { - text-align:center; - width:100%; -} - -.greylighting_buttons input { - border:1px solid #999; - border-top-color:#CCC; - border-left-color:#CCC; - padding:2px; - background-color:#FFF; - color:#333; - background-image:url(lighting/background_buttons.gif); - background-repeat:repeat-x; - font-family:Verdana, Arial, sans-serif; - font-size:10px; - font-weight:bold; - text-align:center; -} - -.greylighting_progress { - float:left; - margin:auto; - text-align:center; - width:100%; - height:16px; - background:transparent url('lighting/spinner.gif') no-repeat center center -} - -/* FOR IE */ -* html .greylighting_nw { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-left-grey.png", sizingMethod="crop"); -} - -* html .greylighting_n { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-middle-grey.png", sizingMethod="scale"); -} - -* html .greylighting_ne { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-right-grey.png", sizingMethod="crop"); -} - -* html .greylighting_w { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/left-grey.png", sizingMethod="scale"); -} - -* html .greylighting_e { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/right-grey.png", sizingMethod="scale"); -} - -* html .greylighting_sw { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-left-grey.png", sizingMethod="crop"); -} - -* html .greylighting_s { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-middle-grey.png", sizingMethod="scale"); -} - -* html greylighting_se, * html .greylighting_sizer { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-right-grey.png", sizingMethod="crop"); -} - -* html .greylighting_close { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-close-grey.png", sizingMethod="crop"); -} - -* html .greylighting_minimize { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-minimize-grey.png", sizingMethod="crop"); -} - -* html .greylighting_maximize { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-maximize-grey.png", sizingMethod="crop"); -} - -* html .greylighting_content { - background:#C7C7C7; -} - - - -.overlay_greenlighting { - background-color:#FFF; - filter:alpha(opacity=60); - -moz-opacity:0.6; - opacity:0.6; -} - -.greenlighting_wired_frame { - background:#FFF; - filter:alpha(opacity=60); - -moz-opacity:0.6; - opacity:0.6; -} - -.greenlighting_nw { - background:transparent url(lighting/top-left-green.png) no-repeat 0 0; - width:9px; - height:28px; -} - -.greenlighting_n { - background:transparent url(lighting/top-middle-green.png) repeat-x 0 0; - height:28px; -} - -.greenlighting_ne { - background:transparent url(lighting/top-right-green.png) no-repeat 0 0; - width:15px; - height:28px; -} - -.greenlighting_w { - background:transparent url(lighting/left-green.png) repeat-y top left; - width:9px; -} - -.greenlighting_e { - background:transparent url(lighting/right-green.png) repeat-y top right; - width:15px; -} - -.greenlighting_sw { - background:transparent url(lighting/bottom-left-green.png) no-repeat 0 0; - width:9px; - height:15px; -} - -.greenlighting_s { - background:transparent url(lighting/bottom-middle-green.png) repeat-x 0 0; - height:15px; -} - -.greenlighting_se, .greenlighting_sizer { - background:transparent url(lighting/bottom-right-green.png) no-repeat 0 0; - width:15px; - height:15px; -} - -.greenlighting_sizer { - cursor:se-resize; -} - -.greenlighting_close { - width:15px; - height:9px; - background:transparent url(lighting/button-close-green.png) no-repeat 0 0; - position:absolute; - top:11px; - right:10px; - cursor:pointer; - z-index:1000; -} - -.greenlighting_maximize { - width:15px; - height:9px; - background:transparent url(lighting/button-maximize-green.png) no-repeat 0 0; - position:absolute; - top:11px; - right:25px; - cursor:pointer; - z-index:1000; -} - -.greenlighting_minimize { - width:15px; - height:9px; - background:transparent url(lighting/button-minimize-green.png) no-repeat 0 0; - position:absolute; - top:11px; - right:40px; - cursor:pointer; - z-index:1000; -} - -.greenlighting_title { - float:left; - height:14px; - font-size:14px; - font-weight:bold; - font-family:Verdana, Arial, sans-serif; - text-align:center; - margin-top:2px; - width:100%; - color:#2A6002; -} - -.greenlighting_content { - overflow:auto; - color:#000; - font-family:Verdana, Arial, sans-serif; - font-size:12px; - background:#ACFCAF; -} - -/* For alert/confirm dialog */ -.greenlighting_window { - border:1px solid #F00; - background:#FFF; - padding:20px; - margin-left:auto; - margin-right:auto; - width:400px; -} - -.greenlighting_message { - font-size:12px; - text-align:center; - width:100%; - padding-bottom:10px; -} - -.greenlighting_buttons { - text-align:center; - width:100%; -} - -.greenlighting_buttons input { - border:1px solid #999; - border-top-color:#CCC; - border-left-color:#CCC; - padding:2px; - background-color:#FFF; - color:#333; - background-image:url(lighting/background_buttons.gif); - background-repeat:repeat-x; - font-family:Verdana, Arial, sans-serif; - font-size:10px; - font-weight:bold; - text-align:center; -} - -.greenlighting_progress { - float:left; - margin:auto; - text-align:center; - width:100%; - height:16px; - background:transparent url('lighting/spinner.gif') no-repeat center center -} - -/* FOR IE */ -* html .greenlighting_nw { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-left-green.png", sizingMethod="crop"); -} - -* html .greenlighting_n { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-middle-green.png", sizingMethod="scale"); -} - -* html .greenlighting_ne { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-right-green.png", sizingMethod="crop"); -} - -* html .greenlighting_w { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/left-green.png", sizingMethod="scale"); -} - -* html .greenlighting_e { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/right-green.png", sizingMethod="scale"); -} - -* html .greenlighting_sw { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-left-green.png", sizingMethod="crop"); -} - -* html .greenlighting_s { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-middle-green.png", sizingMethod="scale"); -} - -* html greenlighting_se, * html .greenlighting_sizer { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-right-green.png", sizingMethod="crop"); -} - -* html .greenlighting_close { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-close-green.png", sizingMethod="crop"); -} - -* html .greenlighting_minimize { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-minimize-green.png", sizingMethod="crop"); -} - -* html .greenlighting_maximize { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-maximize-green.png", sizingMethod="crop"); -} - -* html .greenlighting_content { - background:#A4FCA7; -} - - - -.overlay_darkbluelighting { - background-color:#FFF; - filter:alpha(opacity=60); - -moz-opacity:0.6; - opacity:0.6; -} - -.darkbluelighting_wired_frame { - background:#FFF; - filter:alpha(opacity=60); - -moz-opacity:0.6; - opacity:0.6; -} - -.darkbluelighting_nw { - background:transparent url(lighting/top-left-darkblue.png) no-repeat 0 0; - width:9px; - height:28px; -} - -.darkbluelighting_n { - background:transparent url(lighting/top-middle-darkblue.png) repeat-x 0 0; - height:28px; -} - -.darkbluelighting_ne { - background:transparent url(lighting/top-right-darkblue.png) no-repeat 0 0; - width:15px; - height:28px; -} - -.darkbluelighting_w { - background:transparent url(lighting/left-darkblue.png) repeat-y top left; - width:9px; -} - -.darkbluelighting_e { - background:transparent url(lighting/right-darkblue.png) repeat-y top right; - width:15px; -} - -.darkbluelighting_sw { - background:transparent url(lighting/bottom-left-darkblue.png) no-repeat 0 0; - width:9px; - height:15px; -} - -.darkbluelighting_s { - background:transparent url(lighting/bottom-middle-darkblue.png) repeat-x 0 0; - height:15px; -} - -.darkbluelighting_se, .darkbluelighting_sizer { - background:transparent url(lighting/bottom-right-darkblue.png) no-repeat 0 0; - width:15px; - height:15px; -} - -.darkbluelighting_sizer { - cursor:se-resize; -} - -.darkbluelighting_close { - width:15px; - height:9px; - background:transparent url(lighting/button-close-darkblue.png) no-repeat 0 0; - position:absolute; - top:11px; - right:10px; - cursor:pointer; - z-index:1000; -} - -.darkbluelighting_maximize { - width:15px; - height:9px; - background:transparent url(lighting/button-maximize-darkblue.png) no-repeat 0 0; - position:absolute; - top:11px; - right:25px; - cursor:pointer; - z-index:1000; -} - -.darkbluelighting_minimize { - width:15px; - height:9px; - background:transparent url(lighting/button-minimize-darkblue.png) no-repeat 0 0; - position:absolute; - top:11px; - right:40px; - cursor:pointer; - z-index:1000; -} - -.darkbluelighting_title { - float:left; - height:14px; - font-size:14px; - font-weight:bold; - font-family:Verdana, Arial, sans-serif; - text-align:center; - margin-top:2px; - width:100%; - color:#E4EFFD; -} - -.darkbluelighting_content { - overflow:auto; - color:#FFF; - font-family:Verdana, Arial, sans-serif; - font-size:12px; - background:#0413C0; -} - -/* For alert/confirm dialog */ -.darkbluelighting_window { - border:1px solid #F00; - background:#FFF; - padding:20px; - margin-left:auto; - margin-right:auto; - width:400px; -} - -.darkbluelighting_message { - font-size:12px; - text-align:center; - width:100%; - padding-bottom:10px; -} - -.darkbluelighting_buttons { - text-align:center; - width:100%; -} - -.darkbluelighting_buttons input { - border:1px solid #999; - border-top-color:#CCC; - border-left-color:#CCC; - padding:2px; - background-color:#FFF; - color:#333; - background-image:url(lighting/background_buttons.gif); - background-repeat:repeat-x; - font-family:Verdana, Arial, sans-serif; - font-size:10px; - font-weight:bold; - text-align:center; -} - -.darkbluelighting_progress { - float:left; - margin:auto; - text-align:center; - width:100%; - height:16px; - background:transparent url('lighting/spinner.gif') no-repeat center center -} - -/* FOR IE */ -* html .darkbluelighting_nw { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-left-darkblue.png", sizingMethod="crop"); -} - -* html .darkbluelighting_n { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-middle-darkblue.png", sizingMethod="scale"); -} - -* html .darkbluelighting_ne { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-right-darkblue.png", sizingMethod="crop"); -} - -* html .darkbluelighting_w { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/left-darkblue.png", sizingMethod="scale"); -} - -* html .darkbluelighting_e { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/right-darkblue.png", sizingMethod="scale"); -} - -* html .darkbluelighting_sw { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-left-darkblue.png", sizingMethod="crop"); -} - -* html .darkbluelighting_s { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-middle-darkblue.png", sizingMethod="scale"); -} - -* html darkbluelighting_se, * html .darkbluelighting_sizer { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-right-darkblue.png", sizingMethod="crop"); -} - -* html .darkbluelighting_close { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-close-darkblue.png", sizingMethod="crop"); -} - -* html .darkbluelighting_minimize { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-minimize-darkblue.png", sizingMethod="crop"); -} - -* html .darkbluelighting_maximize { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-maximize-darkblue.png", sizingMethod="crop"); -} - -* html .darkbluelighting_content { - background:#020EBA; -} - +.overlay___invisible__ { + background-color: #666; + filter:alpha(opacity=0); + -moz-opacity: 0; + opacity: 0; +} + +.top_draggable, .bottom_draggable { + cursor:move; +} + +.status_bar { + font-size:12px; +} +.status_bar input{ + font-size:12px; +} + +.wired_frame { + display:block; + position:absolute; + border:1px #000 dashed; +} + + + +.overlay_bluelighting { + background-color:#FFF; + filter:alpha(opacity=60); + -moz-opacity:0.6; + opacity:0.6; +} + +.bluelighting_wired_frame { + background:#FFF; + filter:alpha(opacity=60); + -moz-opacity:0.6; + opacity:0.6; +} + +.bluelighting_nw { + background:transparent url(lighting/top-left-blue.png) no-repeat 0 0; + width:9px; + height:28px; +} + +.bluelighting_n { + background:transparent url(lighting/top-middle-blue.png) repeat-x 0 0; + height:28px; +} + +.bluelighting_ne { + background:transparent url(lighting/top-right-blue.png) no-repeat 0 0; + width:15px; + height:28px; +} + +.bluelighting_w { + background:transparent url(lighting/left-blue.png) repeat-y top left; + width:9px; +} + +.bluelighting_e { + background:transparent url(lighting/right-blue.png) repeat-y top right; + width:15px; +} + +.bluelighting_sw { + background:transparent url(lighting/bottom-left-blue.png) no-repeat 0 0; + width:9px; + height:15px; +} + +.bluelighting_s { + background:transparent url(lighting/bottom-middle-blue.png) repeat-x 0 0; + height:15px; +} + +.bluelighting_se, .bluelighting_sizer { + background:transparent url(lighting/bottom-right-blue.png) no-repeat 0 0; + width:15px; + height:15px; +} + +.bluelighting_sizer { + cursor:se-resize; +} + +.bluelighting_close { + width:15px; + height:9px; + background:transparent url(lighting/button-close-blue.png) no-repeat 0 0; + position:absolute; + top:11px; + right:10px; + cursor:pointer; + z-index:1000; +} + +.bluelighting_maximize { + width:15px; + height:9px; + background:transparent url(lighting/button-maximize-blue.png) no-repeat 0 0; + position:absolute; + top:11px; + right:25px; + cursor:pointer; + z-index:1000; +} + +.bluelighting_minimize { + width:15px; + height:9px; + background:transparent url(lighting/button-minimize-blue.png) no-repeat 0 0; + position:absolute; + top:11px; + right:40px; + cursor:pointer; + z-index:1000; +} + +.bluelighting_title { + float:left; + height:14px; + font-size:14px; + font-weight:bold; + font-family:Verdana, Arial, sans-serif; + text-align:center; + margin-top:2px; + width:100%; + color:#17385B; +} + +.bluelighting_content { + overflow:auto; + color:#000; + font-family:Verdana, Arial, sans-serif; + font-size:12px; + background:#BFDBFF; +} + +/* For alert/confirm dialog */ +.bluelighting_window { + border:1px solid #F00; + background:#FFF; + padding:20px; + margin-left:auto; + margin-right:auto; + width:400px; +} + +.bluelighting_message { + font-size:12px; + text-align:center; + width:100%; + padding-bottom:10px; +} + +.bluelighting_buttons { + text-align:center; + width:100%; +} + +.bluelighting_buttons input { + border:1px solid #999; + border-top-color:#CCC; + border-left-color:#CCC; + padding:2px; + background-color:#FFF; + color:#333; + background-image:url(lighting/background_buttons.gif); + background-repeat:repeat-x; + font-family:Verdana, Arial, sans-serif; + font-size:10px; + font-weight:bold; + text-align:center; +} + +.bluelighting_progress { + float:left; + margin:auto; + text-align:center; + width:100%; + height:16px; + background:transparent url('lighting/spinner.gif') no-repeat center center +} + +/* FOR IE */ +* html .bluelighting_nw { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-left-blue.png", sizingMethod="crop"); +} + +* html .bluelighting_n { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-middle-blue.png", sizingMethod="scale"); +} + +* html .bluelighting_ne { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-right-blue.png", sizingMethod="crop"); +} + +* html .bluelighting_w { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/left-blue.png", sizingMethod="scale"); +} + +* html .bluelighting_e { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/right-blue.png", sizingMethod="scale"); +} + +* html .bluelighting_sw { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-left-blue.png", sizingMethod="crop"); +} + +* html .bluelighting_s { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-middle-blue.png", sizingMethod="scale"); +} + +* html .bluelighting_se, * html .bluelighting_sizer { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-right-blue.png", sizingMethod="crop"); +} + +* html .bluelighting_close { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-close-blue.png", sizingMethod="crop"); +} + +* html .bluelighting_minimize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-minimize-blue.png", sizingMethod="crop"); +} + +* html .bluelighting_maximize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-maximize-blue.png", sizingMethod="crop"); +} + +* html .bluelighting_content { + background:#B8D7FF; +} + + + +.overlay_greylighting { + background-color:#FFF; + filter:alpha(opacity=60); + -moz-opacity:0.6; + opacity:0.6; +} + +.greylighting_wired_frame { + background:#FFF; + filter:alpha(opacity=60); + -moz-opacity:0.6; + opacity:0.6; +} + +.greylighting_nw { + background:transparent url(lighting/top-left-grey.png) no-repeat 0 0; + width:9px; + height:28px; +} + +.greylighting_n { + background:transparent url(lighting/top-middle-grey.png) repeat-x 0 0; + height:28px; +} + +.greylighting_ne { + background:transparent url(lighting/top-right-grey.png) no-repeat 0 0; + width:15px; + height:28px; +} + +.greylighting_w { + background:transparent url(lighting/left-grey.png) repeat-y top left; + width:9px; +} + +.greylighting_e { + background:transparent url(lighting/right-grey.png) repeat-y top right; + width:15px; +} + +.greylighting_sw { + background:transparent url(lighting/bottom-left-grey.png) no-repeat 0 0; + width:9px; + height:15px; +} + +.greylighting_s { + background:transparent url(lighting/bottom-middle-grey.png) repeat-x 0 0; + height:15px; +} + +.greylighting_se, .greylighting_sizer { + background:transparent url(lighting/bottom-right-grey.png) no-repeat 0 0; + width:15px; + height:15px; +} + +.greylighting_sizer { + cursor:se-resize; +} + +.greylighting_close { + width:15px; + height:9px; + background:transparent url(lighting/button-close-grey.png) no-repeat 0 0; + position:absolute; + top:11px; + right:10px; + cursor:pointer; + z-index:1000; +} + +.greylighting_maximize { + width:15px; + height:9px; + background:transparent url(lighting/button-maximize-grey.png) no-repeat 0 0; + position:absolute; + top:11px; + right:25px; + cursor:pointer; + z-index:1000; +} + +.greylighting_minimize { + width:15px; + height:9px; + background:transparent url(lighting/button-minimize-grey.png) no-repeat 0 0; + position:absolute; + top:11px; + right:40px; + cursor:pointer; + z-index:1000; +} + +.greylighting_title { + float:left; + height:14px; + font-size:14px; + font-weight:bold; + font-family:Verdana, Arial, sans-serif; + text-align:center; + margin-top:2px; + width:100%; + color:#525252; +} + +.greylighting_content { + overflow:auto; + color:#000; + font-family:Verdana, Arial, sans-serif; + font-size:12px; + background:#CDCDCD; +} + +/* For alert/confirm dialog */ +.greylighting_window { + border:1px solid #F00; + background:#FFF; + padding:20px; + margin-left:auto; + margin-right:auto; + width:400px; +} + +.greylighting_message { + font-size:12px; + text-align:center; + width:100%; + padding-bottom:10px; +} + +.greylighting_buttons { + text-align:center; + width:100%; +} + +.greylighting_buttons input { + border:1px solid #999; + border-top-color:#CCC; + border-left-color:#CCC; + padding:2px; + background-color:#FFF; + color:#333; + background-image:url(lighting/background_buttons.gif); + background-repeat:repeat-x; + font-family:Verdana, Arial, sans-serif; + font-size:10px; + font-weight:bold; + text-align:center; +} + +.greylighting_progress { + float:left; + margin:auto; + text-align:center; + width:100%; + height:16px; + background:transparent url('lighting/spinner.gif') no-repeat center center +} + +/* FOR IE */ +* html .greylighting_nw { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-left-grey.png", sizingMethod="crop"); +} + +* html .greylighting_n { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-middle-grey.png", sizingMethod="scale"); +} + +* html .greylighting_ne { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-right-grey.png", sizingMethod="crop"); +} + +* html .greylighting_w { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/left-grey.png", sizingMethod="scale"); +} + +* html .greylighting_e { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/right-grey.png", sizingMethod="scale"); +} + +* html .greylighting_sw { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-left-grey.png", sizingMethod="crop"); +} + +* html .greylighting_s { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-middle-grey.png", sizingMethod="scale"); +} + +* html greylighting_se, * html .greylighting_sizer { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-right-grey.png", sizingMethod="crop"); +} + +* html .greylighting_close { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-close-grey.png", sizingMethod="crop"); +} + +* html .greylighting_minimize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-minimize-grey.png", sizingMethod="crop"); +} + +* html .greylighting_maximize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-maximize-grey.png", sizingMethod="crop"); +} + +* html .greylighting_content { + background:#C7C7C7; +} + + + +.overlay_greenlighting { + background-color:#FFF; + filter:alpha(opacity=60); + -moz-opacity:0.6; + opacity:0.6; +} + +.greenlighting_wired_frame { + background:#FFF; + filter:alpha(opacity=60); + -moz-opacity:0.6; + opacity:0.6; +} + +.greenlighting_nw { + background:transparent url(lighting/top-left-green.png) no-repeat 0 0; + width:9px; + height:28px; +} + +.greenlighting_n { + background:transparent url(lighting/top-middle-green.png) repeat-x 0 0; + height:28px; +} + +.greenlighting_ne { + background:transparent url(lighting/top-right-green.png) no-repeat 0 0; + width:15px; + height:28px; +} + +.greenlighting_w { + background:transparent url(lighting/left-green.png) repeat-y top left; + width:9px; +} + +.greenlighting_e { + background:transparent url(lighting/right-green.png) repeat-y top right; + width:15px; +} + +.greenlighting_sw { + background:transparent url(lighting/bottom-left-green.png) no-repeat 0 0; + width:9px; + height:15px; +} + +.greenlighting_s { + background:transparent url(lighting/bottom-middle-green.png) repeat-x 0 0; + height:15px; +} + +.greenlighting_se, .greenlighting_sizer { + background:transparent url(lighting/bottom-right-green.png) no-repeat 0 0; + width:15px; + height:15px; +} + +.greenlighting_sizer { + cursor:se-resize; +} + +.greenlighting_close { + width:15px; + height:9px; + background:transparent url(lighting/button-close-green.png) no-repeat 0 0; + position:absolute; + top:11px; + right:10px; + cursor:pointer; + z-index:1000; +} + +.greenlighting_maximize { + width:15px; + height:9px; + background:transparent url(lighting/button-maximize-green.png) no-repeat 0 0; + position:absolute; + top:11px; + right:25px; + cursor:pointer; + z-index:1000; +} + +.greenlighting_minimize { + width:15px; + height:9px; + background:transparent url(lighting/button-minimize-green.png) no-repeat 0 0; + position:absolute; + top:11px; + right:40px; + cursor:pointer; + z-index:1000; +} + +.greenlighting_title { + float:left; + height:14px; + font-size:14px; + font-weight:bold; + font-family:Verdana, Arial, sans-serif; + text-align:center; + margin-top:2px; + width:100%; + color:#2A6002; +} + +.greenlighting_content { + overflow:auto; + color:#000; + font-family:Verdana, Arial, sans-serif; + font-size:12px; + background:#ACFCAF; +} + +/* For alert/confirm dialog */ +.greenlighting_window { + border:1px solid #F00; + background:#FFF; + padding:20px; + margin-left:auto; + margin-right:auto; + width:400px; +} + +.greenlighting_message { + font-size:12px; + text-align:center; + width:100%; + padding-bottom:10px; +} + +.greenlighting_buttons { + text-align:center; + width:100%; +} + +.greenlighting_buttons input { + border:1px solid #999; + border-top-color:#CCC; + border-left-color:#CCC; + padding:2px; + background-color:#FFF; + color:#333; + background-image:url(lighting/background_buttons.gif); + background-repeat:repeat-x; + font-family:Verdana, Arial, sans-serif; + font-size:10px; + font-weight:bold; + text-align:center; +} + +.greenlighting_progress { + float:left; + margin:auto; + text-align:center; + width:100%; + height:16px; + background:transparent url('lighting/spinner.gif') no-repeat center center +} + +/* FOR IE */ +* html .greenlighting_nw { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-left-green.png", sizingMethod="crop"); +} + +* html .greenlighting_n { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-middle-green.png", sizingMethod="scale"); +} + +* html .greenlighting_ne { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-right-green.png", sizingMethod="crop"); +} + +* html .greenlighting_w { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/left-green.png", sizingMethod="scale"); +} + +* html .greenlighting_e { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/right-green.png", sizingMethod="scale"); +} + +* html .greenlighting_sw { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-left-green.png", sizingMethod="crop"); +} + +* html .greenlighting_s { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-middle-green.png", sizingMethod="scale"); +} + +* html greenlighting_se, * html .greenlighting_sizer { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-right-green.png", sizingMethod="crop"); +} + +* html .greenlighting_close { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-close-green.png", sizingMethod="crop"); +} + +* html .greenlighting_minimize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-minimize-green.png", sizingMethod="crop"); +} + +* html .greenlighting_maximize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-maximize-green.png", sizingMethod="crop"); +} + +* html .greenlighting_content { + background:#A4FCA7; +} + + + +.overlay_darkbluelighting { + background-color:#FFF; + filter:alpha(opacity=60); + -moz-opacity:0.6; + opacity:0.6; +} + +.darkbluelighting_wired_frame { + background:#FFF; + filter:alpha(opacity=60); + -moz-opacity:0.6; + opacity:0.6; +} + +.darkbluelighting_nw { + background:transparent url(lighting/top-left-darkblue.png) no-repeat 0 0; + width:9px; + height:28px; +} + +.darkbluelighting_n { + background:transparent url(lighting/top-middle-darkblue.png) repeat-x 0 0; + height:28px; +} + +.darkbluelighting_ne { + background:transparent url(lighting/top-right-darkblue.png) no-repeat 0 0; + width:15px; + height:28px; +} + +.darkbluelighting_w { + background:transparent url(lighting/left-darkblue.png) repeat-y top left; + width:9px; +} + +.darkbluelighting_e { + background:transparent url(lighting/right-darkblue.png) repeat-y top right; + width:15px; +} + +.darkbluelighting_sw { + background:transparent url(lighting/bottom-left-darkblue.png) no-repeat 0 0; + width:9px; + height:15px; +} + +.darkbluelighting_s { + background:transparent url(lighting/bottom-middle-darkblue.png) repeat-x 0 0; + height:15px; +} + +.darkbluelighting_se, .darkbluelighting_sizer { + background:transparent url(lighting/bottom-right-darkblue.png) no-repeat 0 0; + width:15px; + height:15px; +} + +.darkbluelighting_sizer { + cursor:se-resize; +} + +.darkbluelighting_close { + width:15px; + height:9px; + background:transparent url(lighting/button-close-darkblue.png) no-repeat 0 0; + position:absolute; + top:11px; + right:10px; + cursor:pointer; + z-index:1000; +} + +.darkbluelighting_maximize { + width:15px; + height:9px; + background:transparent url(lighting/button-maximize-darkblue.png) no-repeat 0 0; + position:absolute; + top:11px; + right:25px; + cursor:pointer; + z-index:1000; +} + +.darkbluelighting_minimize { + width:15px; + height:9px; + background:transparent url(lighting/button-minimize-darkblue.png) no-repeat 0 0; + position:absolute; + top:11px; + right:40px; + cursor:pointer; + z-index:1000; +} + +.darkbluelighting_title { + float:left; + height:14px; + font-size:14px; + font-weight:bold; + font-family:Verdana, Arial, sans-serif; + text-align:center; + margin-top:2px; + width:100%; + color:#E4EFFD; +} + +.darkbluelighting_content { + overflow:auto; + color:#FFF; + font-family:Verdana, Arial, sans-serif; + font-size:12px; + background:#0413C0; +} + +/* For alert/confirm dialog */ +.darkbluelighting_window { + border:1px solid #F00; + background:#FFF; + padding:20px; + margin-left:auto; + margin-right:auto; + width:400px; +} + +.darkbluelighting_message { + font-size:12px; + text-align:center; + width:100%; + padding-bottom:10px; +} + +.darkbluelighting_buttons { + text-align:center; + width:100%; +} + +.darkbluelighting_buttons input { + border:1px solid #999; + border-top-color:#CCC; + border-left-color:#CCC; + padding:2px; + background-color:#FFF; + color:#333; + background-image:url(lighting/background_buttons.gif); + background-repeat:repeat-x; + font-family:Verdana, Arial, sans-serif; + font-size:10px; + font-weight:bold; + text-align:center; +} + +.darkbluelighting_progress { + float:left; + margin:auto; + text-align:center; + width:100%; + height:16px; + background:transparent url('lighting/spinner.gif') no-repeat center center +} + +/* FOR IE */ +* html .darkbluelighting_nw { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-left-darkblue.png", sizingMethod="crop"); +} + +* html .darkbluelighting_n { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-middle-darkblue.png", sizingMethod="scale"); +} + +* html .darkbluelighting_ne { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-right-darkblue.png", sizingMethod="crop"); +} + +* html .darkbluelighting_w { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/left-darkblue.png", sizingMethod="scale"); +} + +* html .darkbluelighting_e { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/right-darkblue.png", sizingMethod="scale"); +} + +* html .darkbluelighting_sw { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-left-darkblue.png", sizingMethod="crop"); +} + +* html .darkbluelighting_s { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-middle-darkblue.png", sizingMethod="scale"); +} + +* html darkbluelighting_se, * html .darkbluelighting_sizer { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-right-darkblue.png", sizingMethod="crop"); +} + +* html .darkbluelighting_close { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-close-darkblue.png", sizingMethod="crop"); +} + +* html .darkbluelighting_minimize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-minimize-darkblue.png", sizingMethod="crop"); +} + +* html .darkbluelighting_maximize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-maximize-darkblue.png", sizingMethod="crop"); +} + +* html .darkbluelighting_content { + background:#020EBA; +} + diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/pngbehavior.htc b/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/pngbehavior.htc index 36ea182e7..92248c665 100644 --- a/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/pngbehavior.htc +++ b/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/pngbehavior.htc @@ -1,67 +1,67 @@ - - - -"; + pop_up_box(htmlvalue,580,30,50); $('#test-program-btn').show(); return; } @@ -119,11 +123,11 @@ $(function(){ ).fail(function(xhr, status){ if(status == 'timeout'){ // alert("您的答案超时了, 请检查代码是否存在死循环的错误."); - var htmlvalue = "
您的答案超时了, 请检查代码是否存在死循环的错误!
"; + var htmlvalue = "
您的答案超时了, 请检查代码是否存在死循环的错误!

"; pop_up_box(htmlvalue,580,30,50); } else { // alert("对不起,服务器繁忙请稍后再试!"); - var htmlvalue = "
对不起,服务器繁忙请稍后再试!
"; + var htmlvalue = "
对不起,服务器繁忙请稍后再试!

"; pop_up_box(htmlvalue,580,30,50); } $('#test-program-btn').show(); @@ -142,20 +146,30 @@ $(function(){ return; } if($('.ProResult .ProResultTop').length<=0){ - var r=confirm("测试后才能提交,是否立刻测试?"); - if (r) { +// var r=confirm("测试后才能提交,是否立刻测试?"); +// if (r) { +// test_program(); +// } + + var htmlvalue = "
测试后才能提交,是否立刻测试?

"; + pop_up_box(htmlvalue,580,30,50); + $("#code-test-button").on('click',function(){ test_program(); - } + hideModal(); + }); return; } - if (!tested) { test_program(function(data){ if (data.status!=0) { - var r=confirm("测试不通过,是否强制提交?"); - if (!r) { - return; - } +// var r=confirm("测试不通过,是否强制提交?"); +// if (!r) { +// return; +// } + var htmlvalue = "
测试不通过,是否强制提交?

"; + pop_up_box(htmlvalue,580,30,50); + return; + }; $(".HomeWorkCon form").submit(); }); From 9b6c629d1071b6836a701ba9645d82dfa88bc2ef Mon Sep 17 00:00:00 2001 From: cxt Date: Tue, 17 May 2016 14:18:14 +0800 Subject: [PATCH 014/668] =?UTF-8?q?=E5=AD=A6=E7=94=9F=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=B4=BB=E8=B7=83=E5=BA=A6=E7=9A=84=E7=BB=9F?= =?UTF-8?q?=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/courses_controller.rb | 55 +++++++++++++------ app/views/courses/_new_member_list.html.erb | 35 ++++++++---- .../courses/_show_member_act_score.html.erb | 38 +++++++++++++ app/views/courses/_show_member_score.html.erb | 2 +- app/views/courses/deletegroup.js.erb | 3 +- .../courses/show_member_act_score.js.erb | 7 +++ config/routes.rb | 1 + ..._alter_course_contributor_score_default.rb | 52 ++++++++++++++++++ db/schema.rb | 35 +++++++++--- public/stylesheets/courses.css | 2 + 10 files changed, 192 insertions(+), 38 deletions(-) create mode 100644 app/views/courses/_show_member_act_score.html.erb create mode 100644 app/views/courses/show_member_act_score.js.erb create mode 100644 db/migrate/20160517013659_alter_course_contributor_score_default.rb diff --git a/app/controllers/courses_controller.rb b/app/controllers/courses_controller.rb index 0fd4cc2c9..1478bceae 100644 --- a/app/controllers/courses_controller.rb +++ b/app/controllers/courses_controller.rb @@ -162,6 +162,7 @@ class CoursesController < ApplicationController @subPage_title = l :label_student_list @canShowCode = User.current.allowed_to?(:as_teacher,@course) && params[:role] != '1' # @is_remote = true + @sort_type = 'score' @score_sort_by = "desc" q = "#{params[:name].strip}" if params[:incourse] @@ -185,9 +186,11 @@ class CoursesController < ApplicationController group.course_id = @course.id group.save end + @sort_type = 'score' + @score_sort_by = "desc" @canShowCode = User.current.allowed_to?(:as_teacher,@course) && params[:role] != '1' @is_remote = true - @members = student_homework_score(0,0, 10,"desc") + @members = student_homework_score(0,0, 10,@score_sort_by) @course_groups = @course.course_groups end @@ -196,7 +199,9 @@ class CoursesController < ApplicationController @subPage_title = l :label_student_list @canShowCode = isCourseTeacher(User.current.id,@course) && params[:role] != '1' @is_remote = true - + @sort_type = 'score' + @score_sort_by = "desc" + @members = student_homework_score(0,0, 10,@score_sort_by) @course_groups = @course.course_groups end @@ -281,6 +286,7 @@ class CoursesController < ApplicationController @render_file = 'new_member_list' @canShowCode = isCourseTeacher(User.current.id,@course) && params[:role] != '1' @is_remote = true + @sort_type = 'score' @score_sort_by = "desc" if params[:group_id] && params[:group_id] != "0" @group = CourseGroup.find(params[:group_id]) @@ -298,6 +304,7 @@ class CoursesController < ApplicationController @render_file = 'new_member_list' @score_sort_by = "desc" + @sort_type = "score" @canShowCode = User.current.allowed_to?(:as_teacher,@course) && params[:role] != '1' @role = params[:role].nil? ? '2':params[:role] @is_remote = true @@ -312,7 +319,7 @@ class CoursesController < ApplicationController if @course.open_student == 1 || User.current.member_of_course?(@course) @subPage_title = l :label_student_list page = params[:page].nil? ? 0 : (params['page'].to_i - 1) - @all_members = student_homework_score(0,page, 10,"desc") + @all_members = student_homework_score(0,page, 10,@score_sort_by) @members = @all_members else render_403 @@ -350,28 +357,29 @@ class CoursesController < ApplicationController @subPage_title = l :label_student_list @render_file = 'new_member_list' @is_remote = true + @sort_type = params[:sort_type] if params[:sort_type] @score_sort_by = params[:sort_by] if params[:sort_by] @search_name = params[:search_name] if params[:search_name] group_id = params[:group_id] if !@search_name.nil? if group_id == '0' page = params[:page].nil? ? 0 : (params['page'].to_i - 1) - @results = searchmember_by_name(student_homework_score(0,0,0,@score_sort_by), @search_name) + @results = searchmember_by_name(student_homework_score(0,0,0,@score_sort_by,@sort_type), @search_name) @result_count = @results.count # @results = paginateHelper @results, 10 else @group = CourseGroup.find(group_id) - @results = searchmember_by_name(student_homework_score(group_id, 0, 0,@score_sort_by),@search_name) + @results = searchmember_by_name(student_homework_score(group_id, 0, 0,@score_sort_by,@sort_type),@search_name) @result_count = @results.count # @results = paginateHelper @results, 10 end else if group_id == '0' page = params[:page].nil? ? 0 : (params['page'].to_i - 1) - @results = student_homework_score(0,page, 10,@score_sort_by) + @results = student_homework_score(0,page, 10,@score_sort_by,@sort_type) else @group = CourseGroup.find(group_id) - @results = student_homework_score(group_id, 0, 0,@score_sort_by) + @results = student_homework_score(group_id, 0, 0,@score_sort_by,@sort_type) end end end @@ -384,6 +392,15 @@ class CoursesController < ApplicationController end end + # 显示每个学生的作业评分详情 + def show_member_act_score + @member = Member.find(params[:member_id]) if params[:member_id] + respond_to do |format| + format.html {render :layout => 'course_base'} + format.js + end + end + def handle_course courses, activities course_activity_count_array=activities.values() course_array=[] @@ -1149,7 +1166,7 @@ class CoursesController < ApplicationController end end - def student_homework_score(groupid,start_from, nums, score_sort_by) + def student_homework_score(groupid,start_from, nums, score_sort_by, sort_type = 'score') start_from = start_from * nums sql_select = "" if groupid == 0 @@ -1159,11 +1176,13 @@ class CoursesController < ApplicationController WHERE student_works.homework_common_id = homework_commons.id AND homework_commons.course_id = #{@course.id} AND student_works.user_id = members.user_id - ) AS score + ) AS score,(SELECT (message_num*2 + message_reply_num*1 + news_reply_num*1 + news_num*1 + + resource_num*5 + journal_num*1 + homework_journal_num*1 ) FROM `course_contributor_scores` AS ccs WHERE ccs.course_id = 577 AND ccs.user_id = members.user_id + ) AS act_score FROM members JOIN students_for_courses ON students_for_courses.student_id = members.user_id AND students_for_courses.course_id = members.course_id - WHERE members.course_id = #{@course.id} ORDER BY score #{score_sort_by}" + WHERE members.course_id = #{@course.id} ORDER BY #{sort_type} #{score_sort_by}" else sql_select = "SELECT members.*,( SELECT SUM(student_works.work_score) @@ -1171,11 +1190,13 @@ class CoursesController < ApplicationController WHERE student_works.homework_common_id = homework_commons.id AND homework_commons.course_id = #{@course.id} AND student_works.user_id = members.user_id - ) AS score + ) AS score,(SELECT (message_num*2 + message_reply_num*1 + news_reply_num*1 + news_num*1 + + resource_num*5 + journal_num*1 + homework_journal_num*1 ) FROM `course_contributor_scores` AS ccs WHERE ccs.course_id = 577 AND ccs.user_id = members.user_id + ) AS act_score FROM members JOIN students_for_courses ON students_for_courses.student_id = members.user_id AND students_for_courses.course_id = members.course_id - WHERE members.course_id = #{@course.id} AND members.course_group_id = #{groupid} ORDER BY score #{score_sort_by}" + WHERE members.course_id = #{@course.id} AND members.course_group_id = #{groupid} ORDER BY #{sort_type} #{score_sort_by}" end sql = ActiveRecord::Base.connection() homework_scores = Member.find_by_sql(sql_select) @@ -1225,8 +1246,7 @@ class CoursesController < ApplicationController sheet1[5,i+4] = "第"+(i+1).to_s+"次" end sheet1[5,homeworks.count+4] = "总成绩" - sheet1[5,0] = "排名" - sheet1[5,0] = "排名" + sheet1[5,homeworks.count+5] = "活跃度" count_row = 6 members.each_with_index do |member, i| sheet1[count_row,0]= i+1 @@ -1236,14 +1256,15 @@ class CoursesController < ApplicationController homeworks.each_with_index do |homework, j| student_works = homework.student_works.where("user_id = #{member.user.id}") if student_works.empty? - sheet1[count_row,j+4] = format("%0.2f",0) + sheet1[count_row,j+4] = 0 else final_score = student_works.first.final_score.nil? ? 0 : student_works.first.final_score score = final_score - student_works.first.absence_penalty - student_works.first.late_penalty - sheet1[count_row,j+4] = format("%0.2f",score <0 ? 0:score) + sheet1[count_row,j+4] = score <0 ? 0:score.round(2) end end - sheet1[count_row,homeworks.count+4] = format("%0.2f",member.score.nil? ? 0:member.score.to_s) + sheet1[count_row,homeworks.count+4] = member.score.nil? ? 0:member.score.round(2) + sheet1[count_row,homeworks.count+5] = member.act_score.nil? ? 0:member.act_score count_row += 1 end diff --git a/app/views/courses/_new_member_list.html.erb b/app/views/courses/_new_member_list.html.erb index bf69c3a61..ef8a43d5c 100644 --- a/app/views/courses/_new_member_list.html.erb +++ b/app/views/courses/_new_member_list.html.erb @@ -24,16 +24,24 @@
  • 姓名
  • 学号
  • -
  • 分班
  • -
  • - <%= link_to '作业积分', member_score_sort_course_path(:sort_by => (@score_sort_by == "desc" ? "asc" : "desc"), :group_id => (@group ? @group.id : 0),:search_name => (@search_name ? @search_name : nil)) ,:result => members,method: 'get', remote: true%> - <% if @score_sort_by == 'desc' %> +
  • 分班
  • +
  • + <%= link_to '作业积分', member_score_sort_course_path(:sort_type => 'score', :sort_by => (@score_sort_by == "desc" ? "asc" : "desc"), :group_id => (@group ? @group.id : 0),:search_name => (@search_name ? @search_name : nil)) ,:result => members,method: 'get', remote: true, :class => 'ml25'%> + <% if @sort_type == "score" && @score_sort_by == 'desc' %> - <% else %> + <% elsif @sort_type == "score" && @score_sort_by == 'asc' %> <% end %>
  • -
  • 加入时间
  • +
  • + <%= link_to '活跃度', member_score_sort_course_path(:sort_type => 'act_score', :sort_by => (@score_sort_by == "desc" ? "asc" : "desc"), :group_id => (@group ? @group.id : 0),:search_name => (@search_name ? @search_name : nil)) ,:result => members,method: 'get', remote: true, :class => 'ml35'%> + <% if @sort_type == "act_score" && @score_sort_by == 'desc' %> + + <% elsif @sort_type == "act_score" && @score_sort_by == 'asc' %> + + <% end %> +
  • +
  • 加入时间
@@ -61,21 +69,21 @@ <% if User.current.allowed_to?(:as_teacher, @course) || User.current.admin? %> <% if @course.course_groups.nil? || @group %> -
+
<% else %> <%= form_tag({:controller => 'courses', :action => 'teacher_assign_group', :id => @course.id,:user_id => member.user_id},:remote=>'true', :method => 'post', :id=>"join_group_form_#{member.id}", :class => 'query_form') do %> -
+
<%= select( :name,:group_id, course_group_option(@course), { :include_blank => false,:selected => member.course_group_id}, - {:onchange=>"join_group_function('#join_group_form_#{member.id}');", :id =>"course_group_id", :name => "course_group_id",:class=>"w125 undis class-edit fl", :style => "margin-left: 105px;"}) %> + {:onchange=>"join_group_function('#join_group_form_#{member.id}');", :id =>"course_group_id", :name => "course_group_id",:class=>"w125 undis class-edit fl", :style => "margin-left: 5px;"}) %> <% end %> <% end %> <% else %> -
+
<% end %> @@ -83,7 +91,12 @@ :action => 'show_member_score', :member_id => member.id, :remote => true}, - :class => 'ml25 c_red' %> + :class => 'st_list_score c_red' %> + <%= link_to member.act_score.nil? ? 0 : member.act_score.to_s, { + :action => 'show_member_act_score', + :member_id => member.id, + :remote => true}, + :class => 'st_list_score c_red' %> <%= format_date(member.created_on)%> <%= call_hook(:view_projects_settings_members_table_row, { :course => @course, :member => member}) %>
diff --git a/app/views/courses/_show_member_act_score.html.erb b/app/views/courses/_show_member_act_score.html.erb new file mode 100644 index 000000000..cec17f0b8 --- /dev/null +++ b/app/views/courses/_show_member_act_score.html.erb @@ -0,0 +1,38 @@ + + + +
+ <% act_score = CourseContributorScore.where("user_id = ? and course_id = ?", member.user_id, member.course_id).first %> +

<%= member.user.show_name %> 活跃度计算

+ <% if act_score.nil? %> +
+ 资源发布数 x 5 = 0 x 5 = 0
+ 问答发布数 x 2 = 0 x 2 = 0
+ 通知发布数 x 1 = 0 x 1 = 0
+ 问答回帖数 x 1 = 0 x 1 = 0
+ 作业留言数 x 1 = 0 x 1 = 0
+ 通知留言数 x 1 = 0 x 1 = 0
+ 课程留言数 x 1 = 0 x 1 = 0
+ 总得分:0 +
+ <% else %> + <% total_score = act_score.resource_num.to_i * 5 + act_score.message_num.to_i * 2 + + act_score.message_reply_num.to_i * 1 + act_score.journal_num.to_i * 1 + + + act_score.homework_journal_num.to_i * 1 + act_score.news_reply_num.to_i * 1 + + act_score.news_num.to_i * 1 %> +
+ 资源发布数 x 5 = <%= act_score.resource_num.to_i %> x 5 = <%= act_score.resource_num.to_i * 5 %>
+ 问答发布数 x 2 = <%= act_score.message_num.to_i %> x 2 = <%= act_score.message_num.to_i * 2 %>
+ 通知发布数 x 1 = <%= act_score.news_num.to_i %> x 1 = <%= act_score.news_num.to_i %>
+ 问答回帖数 x 1 = <%= act_score.message_reply_num.to_i %> x 1 = <%= act_score.message_reply_num.to_i %>
+ 作业留言数 x 1 = <%= act_score.homework_journal_num.to_i %> x 1 = <%= act_score.homework_journal_num.to_i %>
+ 通知留言数 x 1 = <%= act_score.news_reply_num.to_i %> x 1 = <%= act_score.news_reply_num.to_i %>
+ 课程留言数 x 1 = <%= act_score.journal_num.to_i %> x 1 = <%= act_score.journal_num.to_i %>
+ 总得分:<%=total_score %> +
+ <% end %> + +
diff --git a/app/views/courses/_show_member_score.html.erb b/app/views/courses/_show_member_score.html.erb index 94d282cec..27b3863b0 100644 --- a/app/views/courses/_show_member_score.html.erb +++ b/app/views/courses/_show_member_score.html.erb @@ -28,7 +28,7 @@ <% end %> -
  • 作业积分(总分)<%= format("%0.2f",(@member_score.student_work_score_sum).first.score) %>
  • +
  • 作业积分(总分)<%= format("%0.2f",(@member_score.student_work_score_sum).first.score.nil? ? 0 : (@member_score.student_work_score_sum).first.score) %>
  • diff --git a/app/views/courses/deletegroup.js.erb b/app/views/courses/deletegroup.js.erb index cb7e1fbb1..f0c0f4be3 100644 --- a/app/views/courses/deletegroup.js.erb +++ b/app/views/courses/deletegroup.js.erb @@ -1 +1,2 @@ -$("#st_groups").html("<%= escape_javascript( render :partial => 'new_groups_name', locals: {:course_groups => @course_groups})%>"); \ No newline at end of file +$("#st_groups").html("<%= escape_javascript( render :partial => 'new_groups_name', locals: {:course_groups => @course_groups})%>"); +$("#member_content").html("<%= escape_javascript( render :partial => 'new_member_list', :locals => {:members => @members})%>"); \ No newline at end of file diff --git a/app/views/courses/show_member_act_score.js.erb b/app/views/courses/show_member_act_score.js.erb new file mode 100644 index 000000000..c6327d164 --- /dev/null +++ b/app/views/courses/show_member_act_score.js.erb @@ -0,0 +1,7 @@ +$('#ajax-modal').html('<%= escape_javascript(render :partial => 'courses/show_member_act_score', :locals => {:member => @member}) %>'); +showModal('ajax-modal', '300px'); +$('#ajax-modal').siblings().remove(); +$('#ajax-modal').before("" + + ""); +$('#ajax-modal').parent().css("top","30%").css("left","40%").css("position","fixed").css("border","3px solid #269ac9"); +$('#ajax-modal').parent().addClass("new-watcher"); \ No newline at end of file diff --git a/config/routes.rb b/config/routes.rb index 0feb60098..451d3e0a7 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1060,6 +1060,7 @@ RedmineApp::Application.routes.draw do match "addgroups", :via => [:post, :get] match 'deletegroup', :via => [:delete] match 'show_member_score', :via => [:get] + match 'show_member_act_score', :via => [:get] match 'valid_ajax', :to => 'courses#valid_ajax', :via => :get post 'join_in/join_group', :to => 'courses#join_group', :as => 'join_group' delete 'join_in/join_group', :to => 'courses#unjoin_group' diff --git a/db/migrate/20160517013659_alter_course_contributor_score_default.rb b/db/migrate/20160517013659_alter_course_contributor_score_default.rb new file mode 100644 index 000000000..488dab848 --- /dev/null +++ b/db/migrate/20160517013659_alter_course_contributor_score_default.rb @@ -0,0 +1,52 @@ +class AlterCourseContributorScoreDefault < ActiveRecord::Migration + def up + change_column :course_contributor_scores, :message_num, :integer, :default => 0 + change_column :course_contributor_scores, :message_reply_num, :integer, :default => 0 + change_column :course_contributor_scores, :news_reply_num, :integer, :default => 0 + change_column :course_contributor_scores, :news_num, :integer, :default => 0 + change_column :course_contributor_scores, :resource_num, :integer, :default => 0 + change_column :course_contributor_scores, :journal_num, :integer, :default => 0 + change_column :course_contributor_scores, :journal_reply_num, :integer, :default => 0 + change_column :course_contributor_scores, :homework_journal_num, :integer, :default => 0 + change_column :course_contributor_scores, :total_score, :integer, :default => 0 + + count = CourseContributorScore.all.count / 30 + 2 + transaction do + for i in 1 ... count do i + CourseContributorScore.page(i).per(30).each do |cs| + if cs.message_num.nil? + cs.message_num = 0 + end + if cs.message_reply_num.nil? + cs.message_reply_num = 0 + end + if cs.news_reply_num.nil? + cs.news_reply_num = 0 + end + if cs.news_num.nil? + cs.news_num = 0 + end + if cs.resource_num.nil? + cs.resource_num = 0 + end + if cs.journal_num.nil? + cs.journal_num = 0 + end + if cs.journal_reply_num.nil? + cs.journal_reply_num = 0 + end + if cs.homework_journal_num.nil? + cs.homework_journal_num = 0 + end + if cs.total_score.nil? + cs.total_score = 0 + end + cs.save + end + end + end + end + + def down + end +end diff --git a/db/schema.rb b/db/schema.rb index d5334c43c..9b317fd9e 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended to check this file into your version control system. -ActiveRecord::Schema.define(:version => 20160511055221) do +ActiveRecord::Schema.define(:version => 20160517013659) do create_table "activities", :force => true do |t| t.integer "act_id", :null => false @@ -450,15 +450,15 @@ ActiveRecord::Schema.define(:version => 20160511055221) do create_table "course_contributor_scores", :force => true do |t| t.integer "course_id" t.integer "user_id" - t.integer "message_num" - t.integer "message_reply_num" - t.integer "news_reply_num" - t.integer "resource_num" - t.integer "journal_num" - t.integer "journal_reply_num" + t.integer "message_num", :default => 0 + t.integer "message_reply_num", :default => 0 + t.integer "news_reply_num", :default => 0 + t.integer "resource_num", :default => 0 + t.integer "journal_num", :default => 0 + t.integer "journal_reply_num", :default => 0 t.datetime "created_at", :null => false t.datetime "updated_at", :null => false - t.integer "total_score" + t.integer "total_score", :default => 0 t.integer "homework_journal_num", :default => 0 t.integer "news_num", :default => 0 end @@ -1107,6 +1107,23 @@ ActiveRecord::Schema.define(:version => 20160511055221) do t.integer "viewed_count", :default => 0 end + create_table "mess", :id => false, :force => true do |t| + t.string "课程名" + t.integer "课程ID", :default => 0, :null => false + t.string "教师姓", :default => "", :null => false + t.string "教师名", :limit => 30, :default => "", :null => false + t.string "主贴名", :default => "", :null => false + t.integer "主贴或回帖ID", :default => 0, :null => false + t.integer "回帖对应主贴ID" + t.integer "帖子点赞数" + t.integer "主贴回复数", :default => 0, :null => false + t.text "主贴或回帖内容" + t.datetime "发帖时间", :null => false + t.integer "发帖或回帖用户ID", :default => 0, :null => false + t.string "发帖或回帖用户姓", :default => "", :null => false + t.string "发帖或回帖用户名", :limit => 30, :default => "", :null => false + end + create_table "message_alls", :force => true do |t| t.integer "user_id" t.integer "message_id" @@ -1328,6 +1345,7 @@ ActiveRecord::Schema.define(:version => 20160511055221) do t.boolean "allow_guest_download", :default => true t.integer "visits", :default => 0 t.integer "show_mode", :default => 0 + t.integer "allow_teacher", :default => 0 end create_table "phone_app_versions", :force => true do |t| @@ -2043,6 +2061,7 @@ ActiveRecord::Schema.define(:version => 20160511055221) do t.string "salt", :limit => 64 t.integer "gid" t.integer "visits", :default => 0 + t.integer "excellent_teacher", :default => 0 end add_index "users", ["auth_source_id"], :name => "index_users_on_auth_source_id" diff --git a/public/stylesheets/courses.css b/public/stylesheets/courses.css index 758e59296..cd9f88651 100644 --- a/public/stylesheets/courses.css +++ b/public/stylesheets/courses.css @@ -560,6 +560,8 @@ a:hover.st_img { border:1px solid #1c9ec7; } a:hover.st_add{ color:#ff8e15;} .classbox_on{ border:1px solid #f8df8c; background:#f6f098; padding:0 3px; float:left; margin-left:15px;} .classbox_on a{ color:#716cad;} +.st_list_score {width:105px; overflow:hidden; white-space: nowrap; text-overflow:ellipsis; float:left; vertical-align:middle; font-size:12px; text-align:center;} + /* 创建课程courses*/ .courses_input{ border:1px solid #64bdd9; height:16px; width:532px; background:#fff; margin-bottom:10px; padding:5px;} .courses_input_w{ width:300px;} From 4c71e525a7d4d28824bcd1dc83a23a2d58932c4e Mon Sep 17 00:00:00 2001 From: huang Date: Tue, 17 May 2016 15:30:10 +0800 Subject: [PATCH 015/668] =?UTF-8?q?=E8=B5=84=E6=BA=90=E6=96=B0=E6=A0=B7?= =?UTF-8?q?=E5=BC=8F=E5=A2=9E=E5=8A=A0=E5=90=8E=EF=BC=8C=E9=87=8D=E5=91=BD?= =?UTF-8?q?=E5=90=8D=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/users/_user_resource_info.html.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/users/_user_resource_info.html.erb b/app/views/users/_user_resource_info.html.erb index 58829386c..950dcd6f5 100644 --- a/app/views/users/_user_resource_info.html.erb +++ b/app/views/users/_user_resource_info.html.erb @@ -212,7 +212,7 @@ document.oncontextmenu = function() {return true;} line.children().css("background-color",'white'); id = line.children().last().html(); - user_id = line.children().eq(5).html(); + user_id = line.children().eq(6).html(); if(user_id === '<%= User.current.id %>') { res_name = line.children().eq(1).children().attr('title'); res_link = line.children().eq(1).html(); From 07678e367e546b94f2e58fdb1b25dbe5906b3f58 Mon Sep 17 00:00:00 2001 From: huang Date: Tue, 17 May 2016 15:32:18 +0800 Subject: [PATCH 016/668] =?UTF-8?q?=E8=B5=84=E6=BA=90=E6=96=B0=E6=A0=B7?= =?UTF-8?q?=E5=BC=8F=E5=88=A0=E9=99=A4=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/users/_resources_list.html.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/users/_resources_list.html.erb b/app/views/users/_resources_list.html.erb index 57cc95c87..004cfee4d 100644 --- a/app/views/users/_resources_list.html.erb +++ b/app/views/users/_resources_list.html.erb @@ -178,7 +178,7 @@ } line.children().css("background-color", 'white'); id = line.children().last().html(); - user_id = line.children().eq(5).html(); + user_id = line.children().eq(6).html(); if(line.children().first().children().data('hasHistory') == 'Y'){ alert('该资源存在历史版本,不能删除'); return; From 55a98d8d6e89805a268774c0fdca6f47dd9fac9d Mon Sep 17 00:00:00 2001 From: cxt Date: Tue, 17 May 2016 15:33:16 +0800 Subject: [PATCH 017/668] =?UTF-8?q?=E4=BD=9C=E4=B8=9A=E4=BA=8C=E7=BA=A7?= =?UTF-8?q?=E5=9B=9E=E5=A4=8D=E7=9A=84=E6=B6=88=E6=81=AF=E9=80=9A=E7=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/journals_for_message.rb | 4 ++++ app/views/users/_user_message_course.html.erb | 8 +++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/app/models/journals_for_message.rb b/app/models/journals_for_message.rb index 4b5ac227f..68b747ab9 100644 --- a/app/models/journals_for_message.rb +++ b/app/models/journals_for_message.rb @@ -260,6 +260,10 @@ class JournalsForMessage < ActiveRecord::Base if self.user_id != self.jour.user_id self.course_messages << CourseMessage.new(:user_id => self.jour.user_id,:course_id => self.jour.course.id, :viewed => false) end + else + if self.user_id != self.parent.user_id + self.course_messages << CourseMessage.new(:user_id => self.parent.user_id,:course_id => self.jour.course.id, :viewed => false) + end end count = ShieldWechatMessage.where("container_type='User' and container_id=#{self.jour.user_id} and shield_type='Course' and shield_id=#{self.jour.course_id}").count if count == 0 diff --git a/app/views/users/_user_message_course.html.erb b/app/views/users/_user_message_course.html.erb index a80a08e42..bab7bb5ec 100644 --- a/app/views/users/_user_message_course.html.erb +++ b/app/views/users/_user_message_course.html.erb @@ -389,7 +389,13 @@ <%= link_to image_tag(url_to_avatar(ma.course_message.user), :width => "30", :height => "30"), user_path(ma.course_message.user), :target => '_blank' %>
  • <%= link_to ma.course_message.user, user_path(ma.course_message.user), :class => "newsBlue homepageNewsPublisher", :target => '_blank' %> - ">回复了您的作业: + "> + <% if ma.course_message.m_parent_id.nil? %> + 回复了您的作业: + <% else %> + 回复了您: + <% end %> +
  • <%= link_to ma.course_message.notes.html_safe, homework_common_index_url_in_org( ma.course_id), From ddafa7983595a4424d85779f29001197a8ad533c Mon Sep 17 00:00:00 2001 From: cxt Date: Tue, 17 May 2016 15:52:24 +0800 Subject: [PATCH 018/668] =?UTF-8?q?=E6=97=A0=E6=B3=95=E5=B1=95=E5=BC=80?= =?UTF-8?q?=E9=9A=90=E8=97=8F=E6=A5=BC=E5=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/users/_comment_reply.html.erb | 2 +- app/views/users/_user_homework_detail.html.erb | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/app/views/users/_comment_reply.html.erb b/app/views/users/_comment_reply.html.erb index ddc654463..895eda8a9 100644 --- a/app/views/users/_comment_reply.html.erb +++ b/app/views/users/_comment_reply.html.erb @@ -1,6 +1,6 @@
    <% unless comment.parent.nil? %> -
    +
    <%=render :partial => 'users/comment_reply', :locals => {:comment => comment.parent} %>
    <% end %> diff --git a/app/views/users/_user_homework_detail.html.erb b/app/views/users/_user_homework_detail.html.erb index b8c5c2017..decaba88c 100644 --- a/app/views/users/_user_homework_detail.html.erb +++ b/app/views/users/_user_homework_detail.html.erb @@ -352,12 +352,16 @@ <% else %>
    -
    +
    <%=render :partial => 'users/comment_reply', :locals => {:comment => parents_rely[length - 1]} %>
    <%=render :partial => 'users/comment_reply_detail', :locals => {:comment => parents_rely[length - 2]} %>
    -
    <%= link_to '点击展开隐藏楼层', show_all_replies_users_path(:comment => comment),:remote=>true %>
    +
    + + + <%= link_to '点击展开隐藏楼层', show_all_replies_users_path(:comment => comment),:remote=>true %> +
    <%=render :partial => 'users/comment_reply_detail', :locals => {:comment => parents_rely[0]} %>
    <% end %> From 0ac7163b0548df08fc21f1df0c321a5a6ef0c015 Mon Sep 17 00:00:00 2001 From: yuanke <249218296@qq.com> Date: Tue, 17 May 2016 15:55:24 +0800 Subject: [PATCH 019/668] =?UTF-8?q?KE=E4=BF=AE=E6=94=B9=E5=B1=85=E4=B8=AD?= =?UTF-8?q?=E6=8D=A2=E8=A1=8C=E5=B1=85=E4=B8=AD=E6=B6=88=E5=A4=B1=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/assets/kindeditor/kindeditor.js | 4 +-- public/javascripts/homework.js | 41 -------------------------- 2 files changed, 2 insertions(+), 43 deletions(-) diff --git a/public/assets/kindeditor/kindeditor.js b/public/assets/kindeditor/kindeditor.js index 9ae1300e7..12db483b8 100644 --- a/public/assets/kindeditor/kindeditor.js +++ b/public/assets/kindeditor/kindeditor.js @@ -249,7 +249,7 @@ K.options = { themeType : 'default', langType : 'zh_CN', urlType : '', - newlineTag : 'p', + newlineTag : 'br', resizeType : 1, syncType : 'form', pasteType : 2, @@ -2539,7 +2539,7 @@ function _nativeCommand(doc, key, val) { function _nativeCommandValue(doc, key) { var val = ''; try { - val = doc.queryCommandValue(key); + val = doc.query_nativeCommand(self.doc, name, val);Value(key); } catch (e) {} if (typeof val !== 'string') { val = ''; diff --git a/public/javascripts/homework.js b/public/javascripts/homework.js index a4b30384a..45d8de48b 100644 --- a/public/javascripts/homework.js +++ b/public/javascripts/homework.js @@ -11,15 +11,12 @@ $(function(){ var title = $('#program-title').val(); if (!src) { -// alert('请输入正确的代码'); - var htmlvalue = "
    请输入正确的代码!

    "; pop_up_box(htmlvalue,580,30,50); return false; } if (!title) { -// alert('请输入标题'); var htmlvalue = "
    请输入标题!

    "; pop_up_box(htmlvalue,580,30,50); return false; @@ -39,31 +36,6 @@ $(function(){ $('#test-program-btn').show(); return; } - /* - $.post( - '/student_work/program_test_ex', - {homework: homework_id, student_work_id: student_work_id, src: src, title: title, is_test: is_test}, - function(data,status){ - tested = true; - console.log(data); - if(data.index <=0){ - data.index = $('.ProResultTop').length+1; - } - - if (typeof cb == 'function') {cb(data); return;} - - var html=bt('t:result-list',data); - $('.ProResult').prepend(html); - - if (data.status==0 && is_test != 'true') { - var r=confirm("答题正确,是否立刻提交?"); - if (r) { - $(".HomeWorkCon form").submit(); - } - } - } - ); - */ //先测试一次并返回测试集个数及结果再判断是否需要继续进行测试 var test_post = function(i, testid){ $.post( @@ -73,7 +45,6 @@ $(function(){ testid: testid}, function(data,status){ if (data.status==-4 || data.status==-5 ){ -// alert("非常抱歉,您的程序引起了后台问题,请在公共贴吧提交您的代码进行意见反馈,谢谢!"); //弹框 var root_path = getRootPath(); var forums_1_path = root_path + "/forums/1" @@ -84,7 +55,6 @@ $(function(){ return; } else if (data.status==-3){ -// alert("对不起,服务器繁忙请稍后再试!"); var htmlvalue = "
    对不起,服务器繁忙请稍后再试!

    "; pop_up_box(htmlvalue,580,30,50); $('#test-program-btn').show(); @@ -122,11 +92,9 @@ $(function(){ } ).fail(function(xhr, status){ if(status == 'timeout'){ -// alert("您的答案超时了, 请检查代码是否存在死循环的错误."); var htmlvalue = "
    您的答案超时了, 请检查代码是否存在死循环的错误!

    "; pop_up_box(htmlvalue,580,30,50); } else { -// alert("对不起,服务器繁忙请稍后再试!"); var htmlvalue = "
    对不起,服务器繁忙请稍后再试!

    "; pop_up_box(htmlvalue,580,30,50); } @@ -146,11 +114,6 @@ $(function(){ return; } if($('.ProResult .ProResultTop').length<=0){ -// var r=confirm("测试后才能提交,是否立刻测试?"); -// if (r) { -// test_program(); -// } - var htmlvalue = "
    测试后才能提交,是否立刻测试?

    "; pop_up_box(htmlvalue,580,30,50); $("#code-test-button").on('click',function(){ @@ -162,10 +125,6 @@ $(function(){ if (!tested) { test_program(function(data){ if (data.status!=0) { -// var r=confirm("测试不通过,是否强制提交?"); -// if (!r) { -// return; -// } var htmlvalue = "
    测试不通过,是否强制提交?

    "; pop_up_box(htmlvalue,580,30,50); return; From 1767e1200d5984f0f751d2a239c23dc776da088c Mon Sep 17 00:00:00 2001 From: guange <8863824@gmail.com> Date: Tue, 17 May 2016 15:56:06 +0800 Subject: [PATCH 020/668] =?UTF-8?q?school=E4=B8=8D=E7=94=A8Base64=E8=A7=A3?= =?UTF-8?q?=E7=A0=81=EF=BC=8C=E4=B8=A4=E8=BE=B9=E9=83=BD=E6=98=AFutf8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/sso.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/sso.rb b/app/models/sso.rb index a58b5e442..c987ff933 100644 --- a/app/models/sso.rb +++ b/app/models/sso.rb @@ -17,7 +17,7 @@ class Sso < ActiveRecord::Base sso.openid = opt["openid"] sso.email = opt["email"] sso.password = opt["password"] - sso.school = Base64.decode64(opt["school"]).force_encoding('utf-8') + sso.school = opt["school"] sso.sex = opt["sex"] From 615d0ddbd26ddd928d40bdf75090ce5a6599efca Mon Sep 17 00:00:00 2001 From: huang Date: Tue, 17 May 2016 16:45:11 +0800 Subject: [PATCH 021/668] =?UTF-8?q?=E5=85=AC=E5=85=B1=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E3=80=81=E7=A7=81=E6=9C=89=E8=B5=84=E6=BA=90=E8=AF=B7=E6=B1=82?= =?UTF-8?q?=E5=88=86=E4=BA=AB=E7=95=8C=E9=9D=A2=E5=8F=8A=E6=A0=B7=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/users/_resources_list.html.erb | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/app/views/users/_resources_list.html.erb b/app/views/users/_resources_list.html.erb index 004cfee4d..ebe111507 100644 --- a/app/views/users/_resources_list.html.erb +++ b/app/views/users/_resources_list.html.erb @@ -11,9 +11,17 @@
  • <%= link_to truncate(attach.filename, :length => 30), download_named_attachment_path(attach.id, attach.filename), :title => attach.filename, :class => 'resourcesBlack resource-list-middle hidden mw280' %> - 私有 + <% if attach.is_public == 0 && @type == "6" %> + 私有 + <% end %> +
  • +
  • + <% if attach.is_public == 0 && @type == "6" %> + 请求分享 + <% else %> + -- + <% end %>
  • -
  • 请求分享
  • <%= format_date(attach.created_on) %>
  • <%= attach.quotes.nil? ? 0 : attach.quotes %>
  • <%= attach.downloads %>
  • From 28edaf2246f38a7807f592fa2f9a12cafc2f737d Mon Sep 17 00:00:00 2001 From: cxt Date: Wed, 18 May 2016 10:57:56 +0800 Subject: [PATCH 022/668] =?UTF-8?q?=E8=AF=BE=E7=A8=8B/=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=E7=95=99=E8=A8=80=EF=BC=9A=E5=BF=AB=E9=80=9F=E7=82=B9=E5=87=BB?= =?UTF-8?q?=E6=8F=90=E4=BA=A4=E6=8C=89=E9=92=AE=E9=87=8D=E5=A4=8D=E4=BA=A7?= =?UTF-8?q?=E7=94=9F=E5=A4=9A=E6=9D=A1=E8=AE=B0=E5=BD=95=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Gemfile | 4 ++-- app/views/courses/_courses_jours.html.erb | 23 +++++++++---------- app/views/projects/_project_jours.html.erb | 23 ++++++++++++------- app/views/words/_new_respond_course.html.erb | 4 ++-- app/views/words/_new_respond_project.html.erb | 3 ++- public/javascripts/init_KindEditor.js | 13 +++++++---- 6 files changed, 41 insertions(+), 29 deletions(-) diff --git a/Gemfile b/Gemfile index 9f31edad1..da3b3b4d7 100644 --- a/Gemfile +++ b/Gemfile @@ -1,12 +1,12 @@ source 'https://rubygems.org/' -### ִbundle config mirror.https://rubygems.org https://gems.ruby-china.org лruby-chinaԴ +### ����ִ��bundle config mirror.https://rubygems.org https://gems.ruby-china.org �л���ruby-chinaԴ unless RUBY_PLATFORM =~ /w32/ # unix-like only gem 'iconv' end -gem 'certified' +#gem 'certified' gem 'wechat',path: 'lib/wechat' gem 'grack', path:'lib/grack' diff --git a/app/views/courses/_courses_jours.html.erb b/app/views/courses/_courses_jours.html.erb index c7e4a7428..1050a59b9 100644 --- a/app/views/courses/_courses_jours.html.erb +++ b/app/views/courses/_courses_jours.html.erb @@ -36,7 +36,7 @@

    取消 - 留言 + 留言 <% end %>
    <% end %> @@ -55,9 +55,6 @@ \ No newline at end of file diff --git a/app/views/users/_resources_list.html.erb b/app/views/users/_resources_list.html.erb index ebe111507..720fed133 100644 --- a/app/views/users/_resources_list.html.erb +++ b/app/views/users/_resources_list.html.erb @@ -11,13 +11,22 @@
  • <%= link_to truncate(attach.filename, :length => 30), download_named_attachment_path(attach.id, attach.filename), :title => attach.filename, :class => 'resourcesBlack resource-list-middle hidden mw280' %> - <% if attach.is_public == 0 && @type == "6" %> + <% if attach.is_public == 0 && @type == "6" && attach.author != User.current %> 私有 <% end %>
  • - <% if attach.is_public == 0 && @type == "6" %> - 请求分享 + <% if attach.is_public == 0 && @type == "6" && attach.author != User.current %> + <% ah = attach.get_status_by_attach(attach.author_id) %> + <% if ah.nil? %> + <%= link_to("请求分享", apply_resource_user_path(User.current.id, :attachment_id => attach.id), :class => 'green_btn_share c_white', :remote => true) %> + <% elsif ah.status == 1 %> + 等待回复 + <% elsif ah.status == 2 %> + 可引用 + <% elsif ah.status == 3 %> + 已拒绝 + <% end %> <% else %> -- <% end %> diff --git a/app/views/users/apply_for_resource.js.erb b/app/views/users/apply_for_resource.js.erb new file mode 100644 index 000000000..c37632810 --- /dev/null +++ b/app/views/users/apply_for_resource.js.erb @@ -0,0 +1,15 @@ +<% if @state == 1 %> +hideModal(); +alert("您还未登录,请先登录"); +<% elsif @state == 2 %> +$("#ajax-modal").html('<%= escape_javascript( render :partial => 'users/apply_for_resource', :locals => {:attachment => @attachment, :state => @state}) %>'); +showModal('ajax-modal', '500px'); +$('#ajax-modal').siblings().remove(); +$('#ajax-modal').before("" + + ""); +$('#ajax-modal').parent().css("top","30%").css("left","50%").css("position","fixed").css("border","3px solid #269ac9"); +$("#homework_apply_status_<%= @attachment.id %>").html("等待回复"); +<% elsif @state == 3 %> +hideModal(); +alert("您已申请过该资源"); +<% end %> \ No newline at end of file diff --git a/app/views/users/apply_resource.js.erb b/app/views/users/apply_resource.js.erb new file mode 100644 index 000000000..62afcfd48 --- /dev/null +++ b/app/views/users/apply_resource.js.erb @@ -0,0 +1,10 @@ +<% if @state == 1 %> +alert("您还未登录"); +<% elsif @state == 2 %> +$("#ajax-modal").html('<%= escape_javascript( render :partial => 'users/apply_resource', :locals => {:attachment => @attachment}) %>'); +showModal('ajax-modal', '500px'); +$('#ajax-modal').siblings().remove(); +$('#ajax-modal').before("" + + ""); +$('#ajax-modal').parent().css("top","30%").css("left","30%").css("position","fixed").css("border","3px solid #269ac9"); +<% end %> \ No newline at end of file diff --git a/app/views/users/user_resource.html.erb b/app/views/users/user_resource.html.erb index 9420fa3ff..f7e239d97 100644 --- a/app/views/users/user_resource.html.erb +++ b/app/views/users/user_resource.html.erb @@ -56,7 +56,7 @@ 我的资源
  • - 私有资源 + 私有资源
  •  
  • diff --git a/config/routes.rb b/config/routes.rb index 6554d1779..85e3198a3 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -561,6 +561,7 @@ RedmineApp::Application.routes.draw do match 'apply_homework', :to => 'users#apply_homework', :via => :get match 'user_homeworks', :to => 'users#user_homeworks', :via => :get match 'student_homeworks', :to => 'users#student_homeworks', :via => :get + get 'apply_resource' get 'user_import_homeworks' get 'user_search_homeworks' get 'choose_user_course' @@ -630,6 +631,7 @@ RedmineApp::Application.routes.draw do get 'user_ref_homework_search' get 'show_homework_detail' post 'apply_for_homework' + post 'apply_for_resource' # end end #resources :blogs diff --git a/db/migrate/20160517091224_create_apply_resources.rb b/db/migrate/20160517091224_create_apply_resources.rb new file mode 100644 index 000000000..8e2516966 --- /dev/null +++ b/db/migrate/20160517091224_create_apply_resources.rb @@ -0,0 +1,11 @@ +class CreateApplyResources < ActiveRecord::Migration + def change + create_table :apply_resources do |t| + t.integer :status + t.integer :user_id + t.integer :attachment_id + + t.timestamps + end + end +end diff --git a/db/migrate/20160518031514_add_column_to_apply_resource.rb b/db/migrate/20160518031514_add_column_to_apply_resource.rb new file mode 100644 index 000000000..164bad7b7 --- /dev/null +++ b/db/migrate/20160518031514_add_column_to_apply_resource.rb @@ -0,0 +1,6 @@ +class AddColumnToApplyResource < ActiveRecord::Migration + def change + add_column :apply_resources, :container_id, :integer + add_column :apply_resources, :container_type, :string + end +end diff --git a/db/migrate/20160518060243_add_column_content_to_apply_resource.rb b/db/migrate/20160518060243_add_column_content_to_apply_resource.rb new file mode 100644 index 000000000..e741527e0 --- /dev/null +++ b/db/migrate/20160518060243_add_column_content_to_apply_resource.rb @@ -0,0 +1,6 @@ +class AddColumnContentToApplyResource < ActiveRecord::Migration + def change + add_column :apply_resources, :content, :text + add_column :apply_resources, :apply_user_id, :integer + end +end diff --git a/db/schema.rb b/db/schema.rb index 092252062..58cb9b8ae 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended to check this file into your version control system. -ActiveRecord::Schema.define(:version => 20160513120002) do +ActiveRecord::Schema.define(:version => 20160518060243) do create_table "activities", :force => true do |t| t.integer "act_id", :null => false @@ -52,6 +52,28 @@ ActiveRecord::Schema.define(:version => 20160513120002) do add_index "api_keys", ["access_token"], :name => "index_api_keys_on_access_token" add_index "api_keys", ["user_id"], :name => "index_api_keys_on_user_id" + create_table "application_settings", :force => true do |t| + t.integer "default_projects_limit" + t.boolean "signup_enabled" + t.boolean "signin_enabled" + t.boolean "gravatar_enabled" + t.text "sign_in_text" + t.datetime "created_at" + t.datetime "updated_at" + t.string "home_page_url" + t.integer "default_branch_protection", :default => 2 + t.boolean "twitter_sharing_enabled", :default => true + t.text "restricted_visibility_levels" + t.boolean "version_check_enabled", :default => true + t.integer "max_attachment_size", :default => 10, :null => false + t.integer "default_project_visibility" + t.integer "default_snippet_visibility" + t.text "restricted_signup_domains" + t.boolean "user_oauth_applications", :default => true + t.string "after_sign_out_path" + t.integer "session_expire_delay", :default => 10080, :null => false + end + create_table "applied_projects", :force => true do |t| t.integer "project_id", :null => false t.integer "user_id", :null => false @@ -77,6 +99,18 @@ ActiveRecord::Schema.define(:version => 20160513120002) do t.datetime "updated_at", :null => false end + create_table "apply_resources", :force => true do |t| + t.integer "status" + t.integer "user_id" + t.integer "attachment_id" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + t.integer "container_id" + t.string "container_type" + t.text "content" + t.integer "apply_user_id" + end + create_table "at_messages", :force => true do |t| t.integer "user_id" t.integer "at_message_id" @@ -144,6 +178,20 @@ ActiveRecord::Schema.define(:version => 20160513120002) do t.string "typeName", :limit => 50 end + create_table "audit_events", :force => true do |t| + t.integer "author_id", :null => false + t.string "type", :null => false + t.integer "entity_id", :null => false + t.string "entity_type", :null => false + t.text "details" + t.datetime "created_at" + t.datetime "updated_at" + end + + add_index "audit_events", ["author_id"], :name => "index_audit_events_on_author_id" + add_index "audit_events", ["entity_id", "entity_type"], :name => "index_audit_events_on_entity_id_and_entity_type" + add_index "audit_events", ["type"], :name => "index_audit_events_on_type" + create_table "auth_sources", :force => true do |t| t.string "type", :limit => 30, :default => "", :null => false t.string "name", :limit => 60, :default => "", :null => false @@ -241,6 +289,17 @@ ActiveRecord::Schema.define(:version => 20160513120002) do add_index "boards", ["last_message_id"], :name => "index_boards_on_last_message_id" add_index "boards", ["project_id"], :name => "boards_project_id" + create_table "broadcast_messages", :force => true do |t| + t.text "message", :null => false + t.datetime "starts_at" + t.datetime "ends_at" + t.integer "alert_type" + t.datetime "created_at" + t.datetime "updated_at" + t.string "color" + t.string "font" + end + create_table "bug_to_osps", :force => true do |t| t.integer "osp_id" t.integer "relative_memo_id" @@ -540,6 +599,10 @@ ActiveRecord::Schema.define(:version => 20160513120002) do t.integer "visits", :default => 0 end + add_index "courses", ["id"], :name => "id", :unique => true + add_index "courses", ["tea_id"], :name => "tea_id" + add_index "courses", ["visits"], :name => "visits" + create_table "custom_fields", :force => true do |t| t.string "type", :limit => 30, :default => "", :null => false t.string "name", :limit => 30, :default => "", :null => false @@ -601,6 +664,15 @@ ActiveRecord::Schema.define(:version => 20160513120002) do add_index "delayed_jobs", ["priority", "run_at"], :name => "delayed_jobs_priority" + create_table "deploy_keys_projects", :force => true do |t| + t.integer "deploy_key_id", :null => false + t.integer "project_id", :null => false + t.datetime "created_at" + t.datetime "updated_at" + end + + add_index "deploy_keys_projects", ["project_id"], :name => "index_deploy_keys_projects_on_project_id" + create_table "discuss_demos", :force => true do |t| t.string "title" t.text "body" @@ -650,6 +722,16 @@ ActiveRecord::Schema.define(:version => 20160513120002) do t.datetime "created_at" end + create_table "emails", :force => true do |t| + t.integer "user_id", :null => false + t.string "email", :null => false + t.datetime "created_at" + t.datetime "updated_at" + end + + add_index "emails", ["email"], :name => "index_emails_on_email", :unique => true + add_index "emails", ["user_id"], :name => "index_emails_on_user_id" + create_table "enabled_modules", :force => true do |t| t.integer "project_id" t.string "name", :null => false @@ -672,6 +754,25 @@ ActiveRecord::Schema.define(:version => 20160513120002) do add_index "enumerations", ["id", "type"], :name => "index_enumerations_on_id_and_type" add_index "enumerations", ["project_id"], :name => "index_enumerations_on_project_id" + create_table "events", :force => true do |t| + t.string "target_type" + t.integer "target_id" + t.string "title" + t.text "data" + t.integer "project_id" + t.datetime "created_at" + t.datetime "updated_at" + t.integer "action" + t.integer "author_id" + end + + add_index "events", ["action"], :name => "index_events_on_action" + add_index "events", ["author_id"], :name => "index_events_on_author_id" + add_index "events", ["created_at"], :name => "index_events_on_created_at" + add_index "events", ["project_id"], :name => "index_events_on_project_id" + add_index "events", ["target_id"], :name => "index_events_on_target_id" + add_index "events", ["target_type"], :name => "index_events_on_target_type" + create_table "exercise_answers", :force => true do |t| t.integer "user_id" t.integer "exercise_question_id" @@ -774,6 +875,15 @@ ActiveRecord::Schema.define(:version => 20160513120002) do add_index "forge_messages", ["forge_message_id", "forge_message_type"], :name => "index_forge_messages_on_forge_message_id_and_forge_message_type" add_index "forge_messages", ["user_id", "project_id", "created_at"], :name => "index_forge_messages_on_user_id_and_project_id_and_created_at" + create_table "forked_project_links", :force => true do |t| + t.integer "forked_to_project_id", :null => false + t.integer "forked_from_project_id", :null => false + t.datetime "created_at" + t.datetime "updated_at" + end + + add_index "forked_project_links", ["forked_to_project_id"], :name => "index_forked_project_links_on_forked_to_project_id", :unique => true + create_table "forums", :force => true do |t| t.string "name", :null => false t.text "description" @@ -903,6 +1013,17 @@ ActiveRecord::Schema.define(:version => 20160513120002) do t.datetime "updated_at", :null => false end + create_table "identities", :force => true do |t| + t.string "extern_uid" + t.string "provider" + t.integer "user_id" + t.datetime "created_at" + t.datetime "updated_at" + end + + add_index "identities", ["created_at", "id"], :name => "index_identities_on_created_at_and_id" + add_index "identities", ["user_id"], :name => "index_identities_on_user_id" + create_table "invite_lists", :force => true do |t| t.integer "project_id" t.integer "user_id" @@ -1046,6 +1167,20 @@ ActiveRecord::Schema.define(:version => 20160513120002) do t.integer "private", :default => 0 end + create_table "keys", :force => true do |t| + t.integer "user_id" + t.datetime "created_at" + t.datetime "updated_at" + t.text "key" + t.string "title" + t.string "type" + t.string "fingerprint" + t.boolean "public", :default => false, :null => false + end + + add_index "keys", ["created_at", "id"], :name => "index_keys_on_created_at_and_id" + add_index "keys", ["user_id"], :name => "index_keys_on_user_id" + create_table "kindeditor_assets", :force => true do |t| t.string "asset" t.integer "file_size" @@ -1057,6 +1192,27 @@ ActiveRecord::Schema.define(:version => 20160513120002) do t.integer "owner_type", :default => 0 end + create_table "label_links", :force => true do |t| + t.integer "label_id" + t.integer "target_id" + t.string "target_type" + t.datetime "created_at" + t.datetime "updated_at" + end + + add_index "label_links", ["label_id"], :name => "index_label_links_on_label_id" + add_index "label_links", ["target_id", "target_type"], :name => "index_label_links_on_target_id_and_target_type" + + create_table "labels", :force => true do |t| + t.string "title" + t.string "color" + t.integer "project_id" + t.datetime "created_at" + t.datetime "updated_at" + end + + add_index "labels", ["project_id"], :name => "index_labels_on_project_id" + create_table "member_roles", :force => true do |t| t.integer "member_id", :null => false t.integer "role_id", :null => false @@ -1107,23 +1263,47 @@ ActiveRecord::Schema.define(:version => 20160513120002) do t.integer "viewed_count", :default => 0 end - create_table "mess", :id => false, :force => true do |t| - t.string "课程名" - t.integer "课程ID", :default => 0, :null => false - t.string "教师姓", :default => "", :null => false - t.string "教师名", :limit => 30, :default => "", :null => false - t.string "主贴名", :default => "", :null => false - t.integer "主贴或回帖ID", :default => 0, :null => false - t.integer "回帖对应主贴ID" - t.integer "帖子点赞数" - t.integer "主贴回复数", :default => 0, :null => false - t.text "主贴或回帖内容" - t.datetime "发帖时间", :null => false - t.integer "发帖或回帖用户ID", :default => 0, :null => false - t.string "发帖或回帖用户姓", :default => "", :null => false - t.string "发帖或回帖用户名", :limit => 30, :default => "", :null => false + create_table "merge_request_diffs", :force => true do |t| + t.string "state" + t.text "st_commits", :limit => 2147483647 + t.text "st_diffs", :limit => 2147483647 + t.integer "merge_request_id", :null => false + t.datetime "created_at" + t.datetime "updated_at" end + add_index "merge_request_diffs", ["merge_request_id"], :name => "index_merge_request_diffs_on_merge_request_id", :unique => true + + create_table "merge_requests", :force => true do |t| + t.string "target_branch", :null => false + t.string "source_branch", :null => false + t.integer "source_project_id", :null => false + t.integer "author_id" + t.integer "assignee_id" + t.string "title" + t.datetime "created_at" + t.datetime "updated_at" + t.integer "milestone_id" + t.string "state" + t.string "merge_status" + t.integer "target_project_id", :null => false + t.integer "iid" + t.text "description" + t.integer "position", :default => 0 + t.datetime "locked_at" + end + + add_index "merge_requests", ["assignee_id"], :name => "index_merge_requests_on_assignee_id" + add_index "merge_requests", ["author_id"], :name => "index_merge_requests_on_author_id" + add_index "merge_requests", ["created_at", "id"], :name => "index_merge_requests_on_created_at_and_id" + add_index "merge_requests", ["created_at"], :name => "index_merge_requests_on_created_at" + add_index "merge_requests", ["milestone_id"], :name => "index_merge_requests_on_milestone_id" + add_index "merge_requests", ["source_branch"], :name => "index_merge_requests_on_source_branch" + add_index "merge_requests", ["source_project_id"], :name => "index_merge_requests_on_source_project_id" + add_index "merge_requests", ["target_branch"], :name => "index_merge_requests_on_target_branch" + add_index "merge_requests", ["target_project_id", "iid"], :name => "index_merge_requests_on_target_project_id_and_iid", :unique => true + add_index "merge_requests", ["title"], :name => "index_merge_requests_on_title" + create_table "message_alls", :force => true do |t| t.integer "user_id" t.integer "message_id" @@ -1158,6 +1338,39 @@ ActiveRecord::Schema.define(:version => 20160513120002) do add_index "messages", ["last_reply_id"], :name => "index_messages_on_last_reply_id" add_index "messages", ["parent_id"], :name => "messages_parent_id" + create_table "milestones", :force => true do |t| + t.string "title", :null => false + t.integer "project_id", :null => false + t.text "description" + t.date "due_date" + t.datetime "created_at" + t.datetime "updated_at" + t.string "state" + t.integer "iid" + end + + add_index "milestones", ["created_at", "id"], :name => "index_milestones_on_created_at_and_id" + add_index "milestones", ["due_date"], :name => "index_milestones_on_due_date" + add_index "milestones", ["project_id", "iid"], :name => "index_milestones_on_project_id_and_iid", :unique => true + add_index "milestones", ["project_id"], :name => "index_milestones_on_project_id" + + create_table "namespaces", :force => true do |t| + t.string "name", :null => false + t.string "path", :null => false + t.integer "owner_id" + t.datetime "created_at" + t.datetime "updated_at" + t.string "type" + t.string "description", :default => "", :null => false + t.string "avatar" + end + + add_index "namespaces", ["created_at", "id"], :name => "index_namespaces_on_created_at_and_id" + add_index "namespaces", ["name"], :name => "index_namespaces_on_name", :unique => true + add_index "namespaces", ["owner_id"], :name => "index_namespaces_on_owner_id" + add_index "namespaces", ["path"], :name => "index_namespaces_on_path", :unique => true + add_index "namespaces", ["type"], :name => "index_namespaces_on_type" + create_table "news", :force => true do |t| t.integer "project_id" t.string "title", :limit => 60, :default => "", :null => false @@ -1183,6 +1396,31 @@ ActiveRecord::Schema.define(:version => 20160513120002) do t.datetime "updated_at", :null => false end + create_table "notes", :force => true do |t| + t.text "note" + t.string "noteable_type" + t.integer "author_id" + t.datetime "created_at" + t.datetime "updated_at" + t.integer "project_id" + t.string "attachment" + t.string "line_code" + t.string "commit_id" + t.integer "noteable_id" + t.boolean "system", :default => false, :null => false + t.text "st_diff", :limit => 2147483647 + end + + add_index "notes", ["author_id"], :name => "index_notes_on_author_id" + add_index "notes", ["commit_id"], :name => "index_notes_on_commit_id" + add_index "notes", ["created_at", "id"], :name => "index_notes_on_created_at_and_id" + add_index "notes", ["created_at"], :name => "index_notes_on_created_at" + add_index "notes", ["noteable_id", "noteable_type"], :name => "index_notes_on_noteable_id_and_noteable_type" + add_index "notes", ["noteable_type"], :name => "index_notes_on_noteable_type" + add_index "notes", ["project_id", "noteable_type"], :name => "index_notes_on_project_id_and_noteable_type" + add_index "notes", ["project_id"], :name => "index_notes_on_project_id" + add_index "notes", ["updated_at"], :name => "index_notes_on_updated_at" + create_table "notificationcomments", :force => true do |t| t.string "notificationcommented_type" t.integer "notificationcommented_id" @@ -1192,6 +1430,49 @@ ActiveRecord::Schema.define(:version => 20160513120002) do t.datetime "updated_at", :null => false end + create_table "oauth_access_grants", :force => true do |t| + t.integer "resource_owner_id", :null => false + t.integer "application_id", :null => false + t.string "token", :null => false + t.integer "expires_in", :null => false + t.text "redirect_uri", :null => false + t.datetime "created_at", :null => false + t.datetime "revoked_at" + t.string "scopes" + end + + add_index "oauth_access_grants", ["token"], :name => "index_oauth_access_grants_on_token", :unique => true + + create_table "oauth_access_tokens", :force => true do |t| + t.integer "resource_owner_id" + t.integer "application_id" + t.string "token", :null => false + t.string "refresh_token" + t.integer "expires_in" + t.datetime "revoked_at" + t.datetime "created_at", :null => false + t.string "scopes" + end + + add_index "oauth_access_tokens", ["refresh_token"], :name => "index_oauth_access_tokens_on_refresh_token", :unique => true + add_index "oauth_access_tokens", ["resource_owner_id"], :name => "index_oauth_access_tokens_on_resource_owner_id" + add_index "oauth_access_tokens", ["token"], :name => "index_oauth_access_tokens_on_token", :unique => true + + create_table "oauth_applications", :force => true do |t| + t.string "name", :null => false + t.string "uid", :null => false + t.string "secret", :null => false + t.text "redirect_uri", :null => false + t.string "scopes", :default => "", :null => false + t.datetime "created_at" + t.datetime "updated_at" + t.integer "owner_id" + t.string "owner_type" + end + + add_index "oauth_applications", ["owner_id", "owner_type"], :name => "index_oauth_applications_on_owner_id_and_owner_type" + add_index "oauth_applications", ["uid"], :name => "index_oauth_applications_on_uid", :unique => true + create_table "onclick_times", :force => true do |t| t.integer "user_id" t.datetime "onclick_time" @@ -1348,6 +1629,23 @@ ActiveRecord::Schema.define(:version => 20160513120002) do t.integer "allow_teacher", :default => 0 end + create_table "permissions", :force => true do |t| + t.string "controller", :limit => 30, :default => "", :null => false + t.string "action", :limit => 30, :default => "", :null => false + t.string "description", :limit => 60, :default => "", :null => false + t.boolean "is_public", :default => false, :null => false + t.integer "sort", :default => 0, :null => false + t.boolean "mail_option", :default => false, :null => false + t.boolean "mail_enabled", :default => false, :null => false + end + + create_table "permissions_roles", :id => false, :force => true do |t| + t.integer "permission_id", :default => 0, :null => false + t.integer "role_id", :default => 0, :null => false + end + + add_index "permissions_roles", ["role_id"], :name => "permissions_roles_role_id" + create_table "phone_app_versions", :force => true do |t| t.string "version" t.text "description" @@ -1430,6 +1728,11 @@ ActiveRecord::Schema.define(:version => 20160513120002) do t.datetime "updated_at", :null => false end + create_table "project_import_data", :force => true do |t| + t.integer "project_id" + t.text "data" + end + create_table "project_infos", :force => true do |t| t.integer "project_id" t.integer "user_id" @@ -1519,6 +1822,16 @@ ActiveRecord::Schema.define(:version => 20160513120002) do add_index "projects_trackers", ["project_id", "tracker_id"], :name => "projects_trackers_unique", :unique => true add_index "projects_trackers", ["project_id"], :name => "projects_trackers_project_id" + create_table "protected_branches", :force => true do |t| + t.integer "project_id", :null => false + t.string "name", :null => false + t.datetime "created_at" + t.datetime "updated_at" + t.boolean "developers_can_push", :default => false, :null => false + end + + add_index "protected_branches", ["project_id"], :name => "index_protected_branches_on_project_id" + create_table "queries", :force => true do |t| t.integer "project_id" t.string "name", :default => "", :null => false @@ -1653,6 +1966,25 @@ ActiveRecord::Schema.define(:version => 20160513120002) do t.integer "is_teacher_score", :default => 0 end + create_table "services", :force => true do |t| + t.string "type" + t.string "title" + t.integer "project_id" + t.datetime "created_at" + t.datetime "updated_at" + t.boolean "active", :default => false, :null => false + t.text "properties" + t.boolean "template", :default => false + t.boolean "push_events", :default => true + t.boolean "issues_events", :default => true + t.boolean "merge_requests_events", :default => true + t.boolean "tag_push_events", :default => true + t.boolean "note_events", :default => true, :null => false + end + + add_index "services", ["created_at", "id"], :name => "index_services_on_created_at_and_id" + add_index "services", ["project_id"], :name => "index_services_on_project_id" + create_table "settings", :force => true do |t| t.string "name", :default => "", :null => false t.text "value" @@ -1691,6 +2023,26 @@ ActiveRecord::Schema.define(:version => 20160513120002) do t.datetime "updated_at", :null => false end + create_table "snippets", :force => true do |t| + t.string "title" + t.text "content", :limit => 2147483647 + t.integer "author_id", :null => false + t.integer "project_id" + t.datetime "created_at" + t.datetime "updated_at" + t.string "file_name" + t.datetime "expires_at" + t.string "type" + t.integer "visibility_level", :default => 0, :null => false + end + + add_index "snippets", ["author_id"], :name => "index_snippets_on_author_id" + add_index "snippets", ["created_at", "id"], :name => "index_snippets_on_created_at_and_id" + add_index "snippets", ["created_at"], :name => "index_snippets_on_created_at" + add_index "snippets", ["expires_at"], :name => "index_snippets_on_expires_at" + add_index "snippets", ["project_id"], :name => "index_snippets_on_project_id" + add_index "snippets", ["visibility_level"], :name => "index_snippets_on_visibility_level" + create_table "softapplications", :force => true do |t| t.string "name" t.text "description" @@ -1763,9 +2115,9 @@ ActiveRecord::Schema.define(:version => 20160513120002) do t.integer "absence_penalty", :default => 0 t.float "system_score", :default => 0.0 t.boolean "is_test", :default => false + t.float "work_score" t.integer "simi_id" t.integer "simi_value" - t.float "work_score" end add_index "student_works", ["homework_common_id", "user_id"], :name => "index_student_works_on_homework_common_id_and_user_id" @@ -1813,13 +2165,13 @@ ActiveRecord::Schema.define(:version => 20160513120002) do create_table "sub_domains", :force => true do |t| t.integer "org_subfield_id" - t.integer "priority", :default => 0 + t.integer "priority" t.string "name" t.string "field_type" - t.integer "hide", :default => 0 - t.integer "status", :default => 0 - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false + t.integer "hide" + t.integer "status" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false end create_table "subfield_subdomain_dirs", :force => true do |t| @@ -1829,6 +2181,17 @@ ActiveRecord::Schema.define(:version => 20160513120002) do t.datetime "updated_at", :null => false end + create_table "subscriptions", :force => true do |t| + t.integer "user_id" + t.integer "subscribable_id" + t.string "subscribable_type" + t.boolean "subscribed" + t.datetime "created_at" + t.datetime "updated_at" + end + + add_index "subscriptions", ["subscribable_id", "subscribable_type", "user_id"], :name => "subscriptions_user_id_and_ref_fields", :unique => true + create_table "system_messages", :force => true do |t| t.integer "user_id" t.string "content" @@ -2068,6 +2431,17 @@ ActiveRecord::Schema.define(:version => 20160513120002) do add_index "users", ["id", "type"], :name => "index_users_on_id_and_type" add_index "users", ["type"], :name => "index_users_on_type" + create_table "users_star_projects", :force => true do |t| + t.integer "project_id", :null => false + t.integer "user_id", :null => false + t.datetime "created_at" + t.datetime "updated_at" + end + + add_index "users_star_projects", ["project_id"], :name => "index_users_star_projects_on_project_id" + add_index "users_star_projects", ["user_id", "project_id"], :name => "index_users_star_projects_on_user_id_and_project_id", :unique => true + add_index "users_star_projects", ["user_id"], :name => "index_users_star_projects_on_user_id" + create_table "versions", :force => true do |t| t.integer "project_id", :default => 0, :null => false t.string "name", :default => "", :null => false @@ -2119,6 +2493,23 @@ ActiveRecord::Schema.define(:version => 20160513120002) do t.datetime "updated_at", :null => false end + create_table "web_hooks", :force => true do |t| + t.string "url" + t.integer "project_id" + t.datetime "created_at" + t.datetime "updated_at" + t.string "type", :default => "ProjectHook" + t.integer "service_id" + t.boolean "push_events", :default => true, :null => false + t.boolean "issues_events", :default => false, :null => false + t.boolean "merge_requests_events", :default => false, :null => false + t.boolean "tag_push_events", :default => false + t.boolean "note_events", :default => false, :null => false + end + + add_index "web_hooks", ["created_at", "id"], :name => "index_web_hooks_on_created_at_and_id" + add_index "web_hooks", ["project_id"], :name => "index_web_hooks_on_project_id" + create_table "wechat_logs", :force => true do |t| t.string "openid", :null => false t.text "request_raw" diff --git a/public/stylesheets/public.css b/public/stylesheets/public.css index fcbd79e0b..8489b0fa1 100644 --- a/public/stylesheets/public.css +++ b/public/stylesheets/public.css @@ -1134,3 +1134,6 @@ a.st_down{ display: block; width:8px; float:left; height:13px; background:url(.. .likeText{color: #7f7f7f} .likeNum{color: #7f7f7f} + +/*弹框*/ +.apply_content{ border:1px solid #ddd;line-height: 16px; height:80px;width:420px; background:#fff; margin-bottom:10px;} \ No newline at end of file diff --git a/spec/factories/apply_resources.rb b/spec/factories/apply_resources.rb new file mode 100644 index 000000000..92e48632b --- /dev/null +++ b/spec/factories/apply_resources.rb @@ -0,0 +1,8 @@ +FactoryGirl.define do + factory :apply_resource do + status 1 +user_id 1 +attachment_id 1 + end + +end diff --git a/spec/models/apply_resource_spec.rb b/spec/models/apply_resource_spec.rb new file mode 100644 index 000000000..a0d4b48b1 --- /dev/null +++ b/spec/models/apply_resource_spec.rb @@ -0,0 +1,5 @@ +require 'rails_helper' + +RSpec.describe ApplyResource, :type => :model do + pending "add some examples to (or delete) #{__FILE__}" +end From 3b3cafbc81e0daba276025233336a58d87f9f4f1 Mon Sep 17 00:00:00 2001 From: cxt Date: Wed, 18 May 2016 14:49:49 +0800 Subject: [PATCH 026/668] =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E6=A8=A1=E6=9D=BF?= =?UTF-8?q?=E6=B6=88=E6=81=AF=E7=9A=84=E8=BF=98=E5=8E=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/homework_common_controller.rb | 6 +++--- app/controllers/student_work_controller.rb | 2 +- app/models/homework_common.rb | 16 ++++++++-------- app/models/message.rb | 4 ++-- app/models/news.rb | 4 ++-- 5 files changed, 16 insertions(+), 16 deletions(-) diff --git a/app/controllers/homework_common_controller.rb b/app/controllers/homework_common_controller.rb index 689ef2bd7..0566d3d98 100644 --- a/app/controllers/homework_common_controller.rb +++ b/app/controllers/homework_common_controller.rb @@ -291,9 +291,9 @@ class HomeworkCommonController < ApplicationController def open_student_works if @homework.is_open == 0 - @homework.update_attribute(:is_open, 1) + @homework.update_column('is_open', 1) else - @homework.update_attribute(:is_open, 0) + @homework.update_column('is_open', 0) end @user_activity_id = params[:user_activity_id] @is_in_course = params[:is_in_course] if params[:is_in_course] @@ -440,7 +440,7 @@ class HomeworkCommonController < ApplicationController puts time s_time = time if format_time(time) > format_time(h.updated_at) - h.update_attribute(:updated_at, s_time) + h.update_column('updated_at', s_time) end end end diff --git a/app/controllers/student_work_controller.rb b/app/controllers/student_work_controller.rb index deab2feb6..c3d7dbbc6 100644 --- a/app/controllers/student_work_controller.rb +++ b/app/controllers/student_work_controller.rb @@ -814,7 +814,7 @@ class StudentWorkController < ApplicationController stu_score = StudentWorksScore.find_by_sql("SELECT AVG(score) AS score FROM (SELECT * FROM (SELECT * FROM student_works_scores WHERE student_work_id = #{@work.id} AND reviewer_role = 3 ORDER BY created_at DESC) AS t GROUP BY user_id) AS a") @work.student_score = stu_score.first.score.try(:round, 2).to_f end - @homework.update_attributes(:updated_at => Time.now) + @homework.update_column('updated_at', Time.now) update_course_activity(@homework.class,@homework.id) update_user_activity(@homework.class,@homework.id) update_org_activity(@homework.class,@homework.id) diff --git a/app/models/homework_common.rb b/app/models/homework_common.rb index f11a48a80..e4426e78f 100644 --- a/app/models/homework_common.rb +++ b/app/models/homework_common.rb @@ -29,8 +29,8 @@ class HomeworkCommon < ActiveRecord::Base :description => :description, :author => :author, :url => Proc.new {|o| {:controller => 'student_work', :action => 'index', :homework => o.id}} - after_create :act_as_activity, :send_mail - after_update :update_activity + after_create :act_as_activity, :send_mail,:act_as_course_message + after_update :update_activity, :wechat_message after_save :act_as_course_activity after_destroy :delete_kindeditor_assets @@ -59,12 +59,12 @@ class HomeworkCommon < ActiveRecord::Base else self.course.members.each do |m| # if m.user_id != self.user_id - self.course_messages << CourseMessage.new(:user_id => m.user_id, :course_id => self.course_id, :viewed => false) - #count = ShieldWechatMessage.where("container_type='User' and container_id=#{m.user_id} and shield_type='Course' and shield_id=#{self.course_id}").count - #if count == 0 - # ws = WechatService.new - # ws.homework_template(m.user_id, "homework", self.id, "#{l(:label_new_homework_template)}", self.course.name, self.name.html_safe, self.end_time.to_s + " 23:59:59") - #end + #self.course_messages << CourseMessage.new(:user_id => m.user_id, :course_id => self.course_id, :viewed => false) + count = ShieldWechatMessage.where("container_type='User' and container_id=#{m.user_id} and shield_type='Course' and shield_id=#{self.course_id}").count + if count == 0 + ws = WechatService.new + ws.homework_template(m.user_id, "homework", self.id, "#{l(:label_new_homework_template)}", self.course.name, self.name.html_safe, self.end_time.to_s + " 23:59:59") + end # end end end diff --git a/app/models/message.rb b/app/models/message.rb index 7bfb9d80e..fdc3c6bdc 100644 --- a/app/models/message.rb +++ b/app/models/message.rb @@ -274,7 +274,7 @@ class Message < ActiveRecord::Base else # 回帖 parent_author_id = Message.find(self.parent_id).author_id if parent_author_id != self.author_id # 只针对主贴回复,回复自己的帖子不发消息 - #self.course_messages << CourseMessage.new(:user_id => parent_author_id, :course_id => self.board.course_id, :viewed => false) + self.course_messages << CourseMessage.new(:user_id => parent_author_id, :course_id => self.board.course_id, :viewed => false) count = ShieldWechatMessage.where("container_type='User' and container_id=#{parent_author_id} and shield_type='Course' and shield_id=#{self.board.course_id}").count if count == 0 content = strip_html self.content.html_safe, 200 @@ -297,7 +297,7 @@ class Message < ActiveRecord::Base else # 回帖 parent_author_id = Message.find(self.parent_id).author_id if parent_author_id != self.author_id # 只针对主贴回复,回复自己的帖子不发消息 - #self.forge_messages << ForgeMessage.new(:user_id => parent_author_id, :project_id => self.board.project_id, :viewed => false) + self.forge_messages << ForgeMessage.new(:user_id => parent_author_id, :project_id => self.board.project_id, :viewed => false) count = ShieldWechatMessage.where("container_type='User' and container_id=#{parent_author_id} and shield_type='Project' and shield_id=#{self.board.project_id}").count if count == 0 content = strip_html self.content.html_safe, 200 diff --git a/app/models/news.rb b/app/models/news.rb index f0457dc81..1544faf61 100644 --- a/app/models/news.rb +++ b/app/models/news.rb @@ -62,7 +62,7 @@ class News < ActiveRecord::Base :author_key => :author_id acts_as_watchable - after_create :act_as_activity,:act_as_forge_activity, :act_as_course_activity, :add_author_as_watcher, :send_mail, :add_news_count, :act_as_student_score + after_create :act_as_activity,:act_as_forge_activity, :act_as_course_activity, :add_author_as_watcher, :send_mail, :add_news_count, :act_as_student_score, :act_as_system_message after_update :update_activity after_destroy :delete_kindeditor_assets, :decrease_news_count, :delete_org_activities, :down_course_score @@ -169,7 +169,7 @@ class News < ActiveRecord::Base if self.course self.course.members.each do |m| if m.user_id != self.author_id - self.course_messages << CourseMessage.new(:user_id => m.user_id, :course_id => self.course_id, :viewed => false) + #self.course_messages << CourseMessage.new(:user_id => m.user_id, :course_id => self.course_id, :viewed => false) count = ShieldWechatMessage.where("container_type='User' and container_id=#{m.user_id} and shield_type='Course' and shield_id=#{self.course_id}").count if count == 0 ws = WechatService.new From 52724bd9ed05b1896b6ca8ac1617fd1211bcd4a5 Mon Sep 17 00:00:00 2001 From: yuanke <249218296@qq.com> Date: Wed, 18 May 2016 15:11:53 +0800 Subject: [PATCH 027/668] =?UTF-8?q?KE=20ol=20ul=E6=A0=87=E7=AD=BE=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0margin-bottom:0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/assets/kindeditor/plugins/code/previewcode.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/assets/kindeditor/plugins/code/previewcode.css b/public/assets/kindeditor/plugins/code/previewcode.css index 15951ce98..65c75d6ea 100644 --- a/public/assets/kindeditor/plugins/code/previewcode.css +++ b/public/assets/kindeditor/plugins/code/previewcode.css @@ -53,4 +53,4 @@ span.at a{color:#269ac9;text-decoration: none;} /*yk*/ .ke-content ol li{list-style-type: decimal;} .ke-content ul li{list-style-type: disc;} -ol,ul{margin-top:0;} \ No newline at end of file +.ke-content ol,.ke-content ul{margin-top:0;margin-bottom: 0;} \ No newline at end of file From 670b2c48c7fc9e90344476dab512d82e58f6cf35 Mon Sep 17 00:00:00 2001 From: cxt Date: Wed, 18 May 2016 16:08:40 +0800 Subject: [PATCH 028/668] =?UTF-8?q?=E7=BC=BA=E9=99=B7=E7=9A=84=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF=E6=B6=88=E6=81=AF=E8=A6=81=E7=BB=86=E5=8C=96=E7=BC=BA?= =?UTF-8?q?=E9=99=B7=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/issue.rb | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/app/models/issue.rb b/app/models/issue.rb index d5d148117..b5e87feea 100644 --- a/app/models/issue.rb +++ b/app/models/issue.rb @@ -164,7 +164,20 @@ class Issue < ActiveRecord::Base count = ShieldWechatMessage.where("container_type='User' and container_id=#{m.user_id} and shield_type='Project' and shield_id=#{self.project_id}").count if m.user_id != self.author_id && count == 0 ws = WechatService.new - content = strip_html self.project.name + " 有新缺陷了:" + self.subject.html_safe, 200 + str = " 有新缺陷了: " + case self.tracker_id + when 1 + str = " 有新缺陷了: " + when 2 + str = " 有新功能了: " + when 3 + str = " 有新支持了: " + when 4 + str = " 有新任务了: " + when 5 + str = " 有新周报了: " + end + content = strip_html self.project.name + str + self.subject.html_safe, 200 ws.message_update_template m.user_id, "issues", self.id, "#{l(:label_new_issue_template)}", content, format_time(self.created_on) end end From c208b79e2dea9d86e45afef7119de891bcba27b3 Mon Sep 17 00:00:00 2001 From: yuanke <249218296@qq.com> Date: Wed, 18 May 2016 16:23:28 +0800 Subject: [PATCH 029/668] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E4=B8=8A=E9=9D=A2=E7=9A=84=E8=AF=AD=E8=A8=80=E5=8F=B3=E8=BE=B9?= =?UTF-8?q?=20=E5=8A=A0=E4=B8=8A=E7=BC=96=E8=AF=91=E5=99=A8=E4=BF=A1?= =?UTF-8?q?=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/users/new_user_commit_homework.html.erb | 9 +++++++++ app/views/users/user_commit_homework.html.erb | 9 +++++++++ 2 files changed, 18 insertions(+) diff --git a/app/views/users/new_user_commit_homework.html.erb b/app/views/users/new_user_commit_homework.html.erb index 4d2a091eb..99789172b 100644 --- a/app/views/users/new_user_commit_homework.html.erb +++ b/app/views/users/new_user_commit_homework.html.erb @@ -92,6 +92,15 @@
    请使用 <%= @homework.language_name %> 语言编写 + <% if @homework.language.to_i == 1 %> + 编译器信息:gcc version "4.4.7" 20120313 (Red Hat 4.4.7-11) (GCC) + <% elsif @homework.language.to_i == 2 %> + 编译器信息:gcc version "4.4.7" 20120313 (Red Hat 4.4.7-11) (GCC) + <% elsif @homework.language.to_i == 3 %> + 编译器信息:Python version "2.6.6" + <% elsif @homework.language.to_i == 4 %> + 编译器信息:java version "1.7.0_85" OpenJDK Runtime Environment + <% end %> style="display-hidden" id="data-language">
    diff --git a/app/views/users/user_commit_homework.html.erb b/app/views/users/user_commit_homework.html.erb index 6df6f2115..043886779 100644 --- a/app/views/users/user_commit_homework.html.erb +++ b/app/views/users/user_commit_homework.html.erb @@ -75,6 +75,15 @@
    请使用 <%= @homework.language_name %> 语言编写 + <% if @homework.language.to_i == 1 %> + 编译器信息:gcc version "4.4.7" 20120313 (Red Hat 4.4.7-11) (GCC) + <% elsif @homework.language.to_i == 2 %> + 编译器信息:gcc version "4.4.7" 20120313 (Red Hat 4.4.7-11) (GCC) + <% elsif @homework.language.to_i == 3 %> + 编译器信息:Python version "2.6.6" + <% elsif @homework.language.to_i == 4 %> + 编译器信息:java version "1.7.0_85" OpenJDK Runtime Environment + <% end %>
    <%= f.text_area :name, id: 'program-title', class:"InputBox W700", placeholder:"请概括你的代码的功能" %> From 31d94dc0528fab9d66497b019ddf0218fd43b710 Mon Sep 17 00:00:00 2001 From: cxt Date: Wed, 18 May 2016 16:28:43 +0800 Subject: [PATCH 030/668] =?UTF-8?q?=E5=8F=91=E5=B8=83=E5=8F=AF=E5=BC=95?= =?UTF-8?q?=E7=94=A8=E7=9A=84=E4=BD=9C=E4=B8=9A=E8=87=B3=E8=AF=BE=E7=A8=8B?= =?UTF-8?q?=EF=BC=8C=E4=BD=9C=E4=B8=9A=E7=9A=84=E5=8E=9F=E4=BD=9C=E8=80=85?= =?UTF-8?q?=E4=B8=8D=E5=BA=94=E6=94=B6=E5=88=B0=E5=BE=AE=E4=BF=A1=E6=B6=88?= =?UTF-8?q?=E6=81=AF=E6=8F=90=E9=86=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/users_controller.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index a81ade3fa..373801963 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -589,7 +589,7 @@ class UsersController < ApplicationController new_homework.homework_detail_programing.save if new_homework.homework_detail_programing new_homework.homework_detail_group.save if new_homework.homework_detail_group end - homework.update_attribute(:quotes, homework.quotes+1) + homework.update_column(:quotes, homework.quotes+1) end @homework = homework respond_to do |format| @@ -862,7 +862,7 @@ class UsersController < ApplicationController student_work.save send_message_to_teacher(student_work) - homework.update_attributes(:updated_at => Time.now) + homework.update_column(:updated_at, Time.now) update_course_activity(homework.class,homework.id) update_user_activity(homework.class,homework.id) update_org_activity(homework.class,homework.id) @@ -950,7 +950,7 @@ class UsersController < ApplicationController homework_detail_group.save if homework_detail_group if params[:quotes] && !params[:quotes].blank? quotes_homework = HomeworkCommon.find params[:quotes].to_i - quotes_homework.update_attribute(:quotes, quotes_homework.quotes+1) + quotes_homework.update_column(:quotes, quotes_homework.quotes+1) end if params[:is_in_course] == "1" redirect_to homework_common_index_path(:course => homework.course_id) From f3f75a57bdad2096e33b521479061efd4b31b39f Mon Sep 17 00:00:00 2001 From: huang Date: Wed, 18 May 2016 17:37:48 +0800 Subject: [PATCH 031/668] =?UTF-8?q?=E7=94=B3=E8=AF=B7=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E6=B6=88=E6=81=AF=E8=B5=84=E6=BA=90=E5=8F=91=E5=B8=83=E8=BF=99?= =?UTF-8?q?=E6=94=B6=E5=88=B0=E6=B6=88=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/users_controller.rb | 101 ++++++++++++++++-- app/models/apply_resource.rb | 3 +- .../_apply_resource_course_message.html.erb | 29 +++++ app/views/users/_resources_list.html.erb | 10 +- app/views/users/_user_message_course.html.erb | 6 ++ .../users/_user_resource_type_filter.html.erb | 2 +- app/views/users/apply_for_resource.js.erb | 2 +- 7 files changed, 136 insertions(+), 17 deletions(-) create mode 100644 app/views/users/_apply_resource_course_message.html.erb diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index dd1d8f876..b6fed88af 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -311,6 +311,30 @@ class UsersController < ApplicationController end end + # 处理资源引用请求 + # status + def deal_with_apply_resource + @msg = CourseMessage.find(params[:msg_id]) + ah = ApplyHomework.where("user_id = ? and homework_common_id = ?",@msg.apply_user_id, @msg.course_message_id) + case params[:agree] + when 'Y' + unless ah.empty? + ah.first.update_column('status', 2) + CourseMessage.create(:user_id => @msg.apply_user_id, :course_id => @msg.course_id, :viewed => false,:content=> @msg.content,:course_message_id=>@msg.course_message_id,:content=>@msg.content,:course_message_type=>'HomeworkCommon',:status=>6,:apply_result=>1) + @msg.update_attributes(:apply_result=>1,:viewed=>1) + end + when 'N' + unless ah.empty? + ah.first.update_column('status', 3) + CourseMessage.create(:user_id => @msg.apply_user_id, :course_id => @msg.course_id, :viewed => false,:content=> @msg.content,:course_message_id=>@msg.course_message_id,:content=>@msg.content,:course_message_type=>'HomeworkCommon',:status=>6,:apply_result=>2) + @msg.update_attributes(:apply_result=>2,:viewed=>1) + end + end + respond_to do |format| + format.js + end + end + #处理引用作业的请求 #status 1 同意 2 拒绝 def dealwith_apply_homework @@ -419,6 +443,19 @@ class UsersController < ApplicationController end # end + # 资源分享请求弹框 + def apply_resource + if User.current.logged? + @attachment = Attachment.find params[:attachment_id] + @state = 2 + else + @state = 1 + end + respond_to do |format| + format.js + end + end + #引用作业请求弹框 def apply_homework if User.current.logged? @@ -432,6 +469,27 @@ class UsersController < ApplicationController end end + # 申请引用资源 + def apply_for_resource + if User.current.logged? + @attachment = Attachment.where("id =?", params[:attachment_id].to_i).first + unless @attachment.nil? + ar = ApplyResource.where("user_id = ? and attachment_id = ?", User.current.id, params[:attacment_id].to_i) + if ar.empty? + ApplyResource.create(:user_id => params[:id].to_i, :attachment_id => params[:attachment_id].to_i, :status => true, :container_id => @attachment.container_id, :container_type => @attachment.container_type, :content => params[:content], :apply_user_id => @attachment.author_id) + @state = 2 + else + @state = 3 + end + end + else + @state = 1 + end + respond_to do |format| + format.js + end + end + #申请引用非公开作业 def apply_for_homework if User.current.logged? @@ -2608,7 +2666,7 @@ class UsersController < ApplicationController # 获取公共资源 def get_public_resources user_course_ids, user_project_ids, order, score - attachments = Attachment.where("(is_publish = 1 and is_public =1 and container_id is not null and container_type in('Project','OrgSubfield','Principal','Course')) ").order("#{order.nil? ? 'created_on' : order} #{score}") + attachments = Attachment.where("(is_publish = 1 and container_id is not null and container_type in('Project','OrgSubfield','Principal','Course')) ").order("#{order.nil? ? 'created_on' : order} #{score}") end # 获取公共资源搜索 @@ -2637,6 +2695,17 @@ class UsersController < ApplicationController and is_publish = 1 and container_id is not null)" ).order("#{order.nil? ? 'created_on' : order} #{score}") end + # 获取我的私有资源分享结果 + def get_my_private_resources apply_ids, resource_type, order, score + attachments = Attachment.where("id in (#{apply_ids.empty? ? '0': apply_ids.join(',')}) and container_type in(#{resource_type})").order("#{order.nil? ? 'created_on' : order} #{score}") + end + + # 获取我的私有资源分享结果 + def get_course_private_resources author_id, user_course_ids, order, score + apply_id = ApplyResource.where("user_id =?", author_id).map{|ar| ar.attachment_id} + attachments = Attachment.where("user_id =? and attachment_id =?") + end + # 获取我的课程资源中搜索结果 def get_course_resources_search author_id, user_course_ids, order, score, search attchments = Attachment.where("((author_id = #{author_id} and is_publish = 1 and container_id is not null and container_type = 'Course')"+ @@ -2646,12 +2715,12 @@ class UsersController < ApplicationController # 获取公共资源中课程资源 def get_course_resources_public user_course_ids, order, score - attchments = Attachment.where("(container_type = 'Course'and container_id is not null and is_publish = 1 and is_public =1)").order("#{order.nil? ? 'created_on' : order} #{score}") + attchments = Attachment.where("(container_type = 'Course'and container_id is not null and is_publish = 1)").order("#{order.nil? ? 'created_on' : order} #{score}") end # 获取公共资源中课程资源搜索结果 def get_course_resources_public_search user_course_ids, order, score, search - attchments = Attachment.where("(container_type = 'Course'and container_id is not null and is_publish = 1 and is_public =1) and (filename like :p)", :p => search ).order("#{order.nil? ? 'created_on' : order} #{score}") + attchments = Attachment.where("(container_type = 'Course'and container_id is not null and is_publish = 1) and (filename like :p)", :p => search ).order("#{order.nil? ? 'created_on' : order} #{score}") end # 获取我的项目资源 @@ -2670,12 +2739,12 @@ class UsersController < ApplicationController # 获取公共资源的项目资源 def get_project_resources_public user_project_ids, order, score - attchments = Attachment.where("container_type = 'Project' and container_id is not null and is_public =1").order("#{order.nil? ? 'created_on' : order} #{score}") + attchments = Attachment.where("container_type = 'Project' and container_id is not null").order("#{order.nil? ? 'created_on' : order} #{score}") end # 获取公共资源的项目资源搜索 def get_project_resources_public_search user_project_ids, order, score, search - attchments = Attachment.where("(container_type = 'Project' and container_id is not null and is_public =1) and (filename like :p)", :p => search ).order("#{order.nil? ? 'created_on' : order} #{score}") + attchments = Attachment.where("(container_type = 'Project' and container_id is not null) and (filename like :p)", :p => search ).order("#{order.nil? ? 'created_on' : order} #{score}") end # 获取我上传的附件 @@ -2693,13 +2762,13 @@ class UsersController < ApplicationController # 获取公共资源中我上传的附件 def get_attch_resources_public order, score attchments = Attachment.where("container_type in('Issue','Document','Message','News','StudentWorkScore','HomewCommon','OrgSubfield','Principal') - and container_id is not null and is_public =1").order("#{order.nil? ? 'created_on' : order} #{score}") + and container_id is not null").order("#{order.nil? ? 'created_on' : order} #{score}") end # 获取公共资源中我上传的附件 def get_attch_resources_public_search order, score, search attchments = Attachment.where("(container_type in('Issue','Document','Message','News','StudentWorkScore','HomewCommon','OrgSubfield','Principal') - and container_id is not null and is_public =1) and (filename like :p)", :p => search).order("#{order.nil? ? 'created_on' : order} #{score}") + and container_id is not null) and (filename like :p)", :p => search).order("#{order.nil? ? 'created_on' : order} #{score}") end # 获取我的用户类型资源 @@ -2714,12 +2783,12 @@ class UsersController < ApplicationController # 获取我的用户类型资源 def get_principal_resources_public order, score - attchments = Attachment.where("container_type = 'Principal'and container_id is not null and is_public =1").order("#{order.nil? ? 'created_on' : order} #{score}") + attchments = Attachment.where("container_type = 'Principal'and container_id is not null").order("#{order.nil? ? 'created_on' : order} #{score}") end # 获取我的用户类型资源 def get_principal_resources_public_search order, score, search - attchments = Attachment.where("(container_type = 'Principal'and container_id is not null and is_public =1) and (filename like :p)", :p => search).order("#{order.nil? ? 'created_on' : order} #{score}") + attchments = Attachment.where("(container_type = 'Principal'and container_id is not null) and (filename like :p)", :p => search).order("#{order.nil? ? 'created_on' : order} #{score}") end # 资源库 分为全部 课程资源 项目资源 附件 @@ -2761,6 +2830,20 @@ class UsersController < ApplicationController # 公共资源库:所有公开资源或者我上传的私有资源 @attachments = get_public_resources(user_course_ids, user_project_ids, params[:order], @score) end + elsif params[:type] == "2" # 私有资源 + apply_ids = ApplyResource.where("user_id =? and status =?", params[:id], 2).map { |ar| ar.attachment_id} + # apply_id = ApplyResource.where("user_id =?", author_id).map{|ar| ar.attachment_id} + if params[:status] == "2" + resource_type = "'Course'" + elsif params[:status] == "3" + resource_type = "'Project'" + elsif params[:status] == "5" + resource_type = "'Principal'" + else + # 公共资源库:所有公开资源或者我上传的私有资源 + resource_type = "'Project','OrgSubfield','Principal','Course'" + end + @attachments = get_my_private_resources(apply_ids, resource_type, @order, @score) end @status = params[:status] @type = params[:type] diff --git a/app/models/apply_resource.rb b/app/models/apply_resource.rb index 50fdeebcb..ac65c0e3d 100644 --- a/app/models/apply_resource.rb +++ b/app/models/apply_resource.rb @@ -1,4 +1,5 @@ class ApplyResource < ActiveRecord::Base + # status:1. 等待回复 2.审核通过 3.已拒绝 attr_accessible :attachment_id, :status, :user_id, :container_type, :container_id, :apply_user_id, :content belongs_to :user belongs_to :attachment @@ -6,7 +7,7 @@ class ApplyResource < ActiveRecord::Base after_create :act_as_apply_resource_message def act_as_apply_resource_message - self.course_messages << CourseMessage.new(:user_id => self.user_id, :course_id => self.container_id, :viewed => false, :status => 5) + self.course_messages << CourseMessage.new(:user_id => self.apply_user_id, :course_id => self.container_id, :viewed => false, :status => 5) # REDO:发送邮件 # Mailer.run.apply_for_resource_request(self.container_id, User.current) end diff --git a/app/views/users/_apply_resource_course_message.html.erb b/app/views/users/_apply_resource_course_message.html.erb new file mode 100644 index 000000000..154ae3172 --- /dev/null +++ b/app/views/users/_apply_resource_course_message.html.erb @@ -0,0 +1,29 @@ +
  • + +
  • +
  • + <%= link_to ma.course_message.user.show_name, user_path(ma.course_message.user), :class => "newsBlue homepageNewsPublisher" %> + ">申请引用资源: +
  • +
  • + <% content = ma.course_message.content.nil? ? '' : ':'+ ma.course_message.content.to_s %> + " class = "<%= ma.viewed == 0 ? "newsBlack" : "newsGrey "%>"> + <%= ma.course_message.user.show_name + "申请引用资源\""+"#{ma.course_message.attachment.try(:name)}"+"\"#{content}" %> + +
  • + +
  • + + <% if ma.apply_result == 0 || ma.apply_result.nil?%> + <%= link_to '同意', dealwith_apply_homework_user_path(User.current,:agree => 'Y', :msg_id => ma.id), :remote => 'true' %> | + <%= link_to '拒绝', dealwith_apply_homework_user_path(User.current, :agree => 'N', :msg_id => ma.id), :remote => 'true' %> + <% elsif ma.apply_result == 1 %> + 您已经同意了该申请 + <% elsif ma.apply_result == 2 %> + 您已经拒绝了该申请 + <%end %> + +
  • +
  • <%= time_tag(ma.created_at).html_safe %>
  • \ No newline at end of file diff --git a/app/views/users/_resources_list.html.erb b/app/views/users/_resources_list.html.erb index 720fed133..18d20cd60 100644 --- a/app/views/users/_resources_list.html.erb +++ b/app/views/users/_resources_list.html.erb @@ -15,16 +15,16 @@ 私有 <% end %> -
  • +
  • <% if attach.is_public == 0 && @type == "6" && attach.author != User.current %> - <% ah = attach.get_status_by_attach(attach.author_id) %> + <% ah = attach.get_status_by_attach(User.current.id) %> <% if ah.nil? %> <%= link_to("请求分享", apply_resource_user_path(User.current.id, :attachment_id => attach.id), :class => 'green_btn_share c_white', :remote => true) %> - <% elsif ah.status == 1 %> + <% elsif ah == 1 %> 等待回复 - <% elsif ah.status == 2 %> + <% elsif ah == 2 %> 可引用 - <% elsif ah.status == 3 %> + <% elsif ah == 3 %> 已拒绝 <% end %> <% else %> diff --git a/app/views/users/_user_message_course.html.erb b/app/views/users/_user_message_course.html.erb index d278c7d74..9befe2b0b 100644 --- a/app/views/users/_user_message_course.html.erb +++ b/app/views/users/_user_message_course.html.erb @@ -234,6 +234,12 @@ <%= render :partial => 'apply_homework_course_message', :locals => {:ma => ma} %> <% end %> + + <% if ma.course_message_type == "ApplyResource" %> +
      + <%= render :partial => 'apply_resource_course_message', :locals => {:ma => ma} %> +
    + <% end %> <% if ma.course_message_type == "HomeworkCommon" && ma.status == 6 %>
    • diff --git a/app/views/users/_user_resource_type_filter.html.erb b/app/views/users/_user_resource_type_filter.html.erb index 6e5ed51c3..d2aa29eed 100644 --- a/app/views/users/_user_resource_type_filter.html.erb +++ b/app/views/users/_user_resource_type_filter.html.erb @@ -17,7 +17,7 @@ <%#= link_to '用户资源' ,user_resource_user_path(:id=>@user.id,:type=>5), id="resource_type_user", :remote=>true,:method => 'get', :class=>'resourcesTypeUser resourcesGrey' %>
      - <% if @type != "6" %> + <% unless (@type == "6" || @type == "2") %>
    • 附件 <%#= link_to '附件' ,user_resource_user_path(:id=>@user.id,:type=>4), id="resource_type_file", :remote=>true,:method => 'get',:class=>'resourcesTypeAtt resourcesGrey' %> diff --git a/app/views/users/apply_for_resource.js.erb b/app/views/users/apply_for_resource.js.erb index c37632810..10dd326e8 100644 --- a/app/views/users/apply_for_resource.js.erb +++ b/app/views/users/apply_for_resource.js.erb @@ -8,7 +8,7 @@ $('#ajax-modal').siblings().remove(); $('#ajax-modal').before("" + ""); $('#ajax-modal').parent().css("top","30%").css("left","50%").css("position","fixed").css("border","3px solid #269ac9"); -$("#homework_apply_status_<%= @attachment.id %>").html("等待回复"); +$("#resource_apply_status_<%= @attachment.id %>").html("等待回复"); <% elsif @state == 3 %> hideModal(); alert("您已申请过该资源"); From 99cbf0b54ef3058c79b1d303374573af0c48ecfd Mon Sep 17 00:00:00 2001 From: huang Date: Thu, 19 May 2016 11:32:58 +0800 Subject: [PATCH 032/668] =?UTF-8?q?=E8=B5=84=E6=BA=90=E5=BC=95=E7=94=A8?= =?UTF-8?q?=E6=B6=88=E6=81=AF=E9=80=9A=E7=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/users_controller.rb | 26 +++++++++---------- app/models/apply_resource.rb | 6 ++++- app/models/course_message.rb | 2 ++ .../_apply_resource_course_message.html.erb | 12 ++++----- ...ply_resource_course_message_reply.html.erb | 21 +++++++++++++++ app/views/users/_user_message_course.html.erb | 10 +++++-- .../users/deal_with_apply_resource.js.erb | 1 + app/views/users/user_resource.html.erb | 2 +- config/routes.rb | 1 + 9 files changed, 57 insertions(+), 24 deletions(-) create mode 100644 app/views/users/_apply_resource_course_message_reply.html.erb create mode 100644 app/views/users/deal_with_apply_resource.js.erb diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index b6fed88af..7542ef3ee 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -315,20 +315,18 @@ class UsersController < ApplicationController # status def deal_with_apply_resource @msg = CourseMessage.find(params[:msg_id]) - ah = ApplyHomework.where("user_id = ? and homework_common_id = ?",@msg.apply_user_id, @msg.course_message_id) - case params[:agree] - when 'Y' - unless ah.empty? - ah.first.update_column('status', 2) - CourseMessage.create(:user_id => @msg.apply_user_id, :course_id => @msg.course_id, :viewed => false,:content=> @msg.content,:course_message_id=>@msg.course_message_id,:content=>@msg.content,:course_message_type=>'HomeworkCommon',:status=>6,:apply_result=>1) - @msg.update_attributes(:apply_result=>1,:viewed=>1) - end - when 'N' - unless ah.empty? - ah.first.update_column('status', 3) - CourseMessage.create(:user_id => @msg.apply_user_id, :course_id => @msg.course_id, :viewed => false,:content=> @msg.content,:course_message_id=>@msg.course_message_id,:content=>@msg.content,:course_message_type=>'HomeworkCommon',:status=>6,:apply_result=>2) - @msg.update_attributes(:apply_result=>2,:viewed=>1) - end + ar = ApplyResource.where("id = ?", @msg.course_message_id).first + unless ar.nil? + case params[:agree] + when 'Y' + ar.update_column('status', 2) + @msg.update_attributes(:apply_result => 1, :viewed => 1) + ar.course_messages << CourseMessage.new(:user_id => ar.user_id, :course_id => -1, :viewed => false, :apply_result => 2, :status => 1) + when 'N' + ar.update_column('status', 3) + @msg.update_attributes(:apply_result => 2, :viewed => 1) + ar.course_messages << CourseMessage.new(:user_id => ar.user_id, :course_id => -1, :viewed => false, :apply_result => 3, :status => 1) + end end respond_to do |format| format.js diff --git a/app/models/apply_resource.rb b/app/models/apply_resource.rb index ac65c0e3d..df646166c 100644 --- a/app/models/apply_resource.rb +++ b/app/models/apply_resource.rb @@ -7,9 +7,13 @@ class ApplyResource < ActiveRecord::Base after_create :act_as_apply_resource_message def act_as_apply_resource_message - self.course_messages << CourseMessage.new(:user_id => self.apply_user_id, :course_id => self.container_id, :viewed => false, :status => 5) + self.course_messages << CourseMessage.new(:user_id => self.apply_user_id, :course_id => -1, :viewed => false, :status => 0, ) # REDO:发送邮件 # Mailer.run.apply_for_resource_request(self.container_id, User.current) end + def find_attachment attachment_id + Attachment.find(attachment_id) + end + end diff --git a/app/models/course_message.rb b/app/models/course_message.rb index 703da936b..59fcfe456 100644 --- a/app/models/course_message.rb +++ b/app/models/course_message.rb @@ -1,5 +1,7 @@ class CourseMessage < ActiveRecord::Base # status说明: status在课程不同的类型,区分不同的功能 status = 9 作品的提交记录 + # ApplyResource status: + # 0: 发送申请 1:回复允许申请 2:拒绝申请消息 # HomeworkCommon:status: # nil:发布了作业; 1:作业截止时间到了提醒!;2:开启匿评; 3:关闭匿评; 4:匿评开始失败; 5:申请引用作业, 6:申请结果 # apply_user_id: 申请者的用户id diff --git a/app/views/users/_apply_resource_course_message.html.erb b/app/views/users/_apply_resource_course_message.html.erb index 154ae3172..55dcb4d22 100644 --- a/app/views/users/_apply_resource_course_message.html.erb +++ b/app/views/users/_apply_resource_course_message.html.erb @@ -9,16 +9,16 @@
    • <% content = ma.course_message.content.nil? ? '' : ':'+ ma.course_message.content.to_s %> - " class = "<%= ma.viewed == 0 ? "newsBlack" : "newsGrey "%>"> - <%= ma.course_message.user.show_name + "申请引用资源\""+"#{ma.course_message.attachment.try(:name)}"+"\"#{content}" %> + " class = "<%= ma.viewed == 0 ? "newsBlack" : "newsGrey "%>"> + <%= ma.course_message.user.show_name + "申请引用资源\""+"#{ma.course_message.user.try(:name)}"+"\"#{content}" %>
    • - - <% if ma.apply_result == 0 || ma.apply_result.nil?%> - <%= link_to '同意', dealwith_apply_homework_user_path(User.current,:agree => 'Y', :msg_id => ma.id), :remote => 'true' %> | - <%= link_to '拒绝', dealwith_apply_homework_user_path(User.current, :agree => 'N', :msg_id => ma.id), :remote => 'true' %> + + <% if ma.apply_result == 0 || ma.apply_result.nil? %> + <%= link_to '同意', deal_with_apply_resource_user_path(User.current, :agree => 'Y', :msg_id => ma.id, :apply_user_id => ma.course_message.apply_user_id), :remote => 'true' %> | + <%= link_to '拒绝', deal_with_apply_resource_user_path(User.current, :agree => 'N', :msg_id => ma.id, :apply_user_id => ma.course_message.apply_user_id), :remote => 'true' %> <% elsif ma.apply_result == 1 %> 您已经同意了该申请 <% elsif ma.apply_result == 2 %> diff --git a/app/views/users/_apply_resource_course_message_reply.html.erb b/app/views/users/_apply_resource_course_message_reply.html.erb new file mode 100644 index 000000000..4869c4393 --- /dev/null +++ b/app/views/users/_apply_resource_course_message_reply.html.erb @@ -0,0 +1,21 @@ + \ No newline at end of file diff --git a/app/views/users/_user_message_course.html.erb b/app/views/users/_user_message_course.html.erb index 9befe2b0b..8e3aa4873 100644 --- a/app/views/users/_user_message_course.html.erb +++ b/app/views/users/_user_message_course.html.erb @@ -235,11 +235,17 @@
    <% end %> - <% if ma.course_message_type == "ApplyResource" %> -
      + <% if ma.course_message_type == "ApplyResource" && ma.status == 0 %> +
        <%= render :partial => 'apply_resource_course_message', :locals => {:ma => ma} %>
      <% end %> + + <% if ma.course_message_type == "ApplyResource" && ma.status == 1 %> +
        + <%= render :partial => 'apply_resource_course_message_reply', :locals => {:ma => ma} %> +
      + <% end %> <% if ma.course_message_type == "HomeworkCommon" && ma.status == 6 %>
      • diff --git a/app/views/users/deal_with_apply_resource.js.erb b/app/views/users/deal_with_apply_resource.js.erb new file mode 100644 index 000000000..dbf07217c --- /dev/null +++ b/app/views/users/deal_with_apply_resource.js.erb @@ -0,0 +1 @@ +$("#apply_resource_message_<%= @msg.id %>").html('<%= escape_javascript(render :partial => 'users/apply_resource_course_message', :locals => {:ma => @msg}) %>'); \ No newline at end of file diff --git a/app/views/users/user_resource.html.erb b/app/views/users/user_resource.html.erb index f7e239d97..0bd5724c1 100644 --- a/app/views/users/user_resource.html.erb +++ b/app/views/users/user_resource.html.erb @@ -56,7 +56,7 @@ 我的资源
      • - 私有资源 + 私有资源
      •  
      • diff --git a/config/routes.rb b/config/routes.rb index 85e3198a3..98d90c753 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -623,6 +623,7 @@ RedmineApp::Application.routes.draw do post 'import_resources_to_homework' get 'dealwith_apply_request' get 'dealwith_apply_homework' + get 'deal_with_apply_resource' get 'store_selected_resource' get 'user_organizations' get 'search_user_orgs' From bddc807057f7cf0de8a570be89b4fa0b85b159be Mon Sep 17 00:00:00 2001 From: huang Date: Thu, 19 May 2016 13:41:32 +0800 Subject: [PATCH 033/668] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=BA=93=E5=BC=B9=E6=A1=86=E4=BD=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/users/apply_for_resource.js.erb | 2 +- app/views/users/apply_resource.js.erb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/views/users/apply_for_resource.js.erb b/app/views/users/apply_for_resource.js.erb index 10dd326e8..7debbcba2 100644 --- a/app/views/users/apply_for_resource.js.erb +++ b/app/views/users/apply_for_resource.js.erb @@ -7,7 +7,7 @@ showModal('ajax-modal', '500px'); $('#ajax-modal').siblings().remove(); $('#ajax-modal').before("" + ""); -$('#ajax-modal').parent().css("top","30%").css("left","50%").css("position","fixed").css("border","3px solid #269ac9"); +$('#ajax-modal').parent().css("top","30%").css("left","37%").css("position","fixed").css("border","3px solid #269ac9"); $("#resource_apply_status_<%= @attachment.id %>").html("等待回复"); <% elsif @state == 3 %> hideModal(); diff --git a/app/views/users/apply_resource.js.erb b/app/views/users/apply_resource.js.erb index 62afcfd48..14a795fe5 100644 --- a/app/views/users/apply_resource.js.erb +++ b/app/views/users/apply_resource.js.erb @@ -6,5 +6,5 @@ showModal('ajax-modal', '500px'); $('#ajax-modal').siblings().remove(); $('#ajax-modal').before("" + ""); -$('#ajax-modal').parent().css("top","30%").css("left","30%").css("position","fixed").css("border","3px solid #269ac9"); +$('#ajax-modal').parent().css("top","30%").css("left","37%").css("position","fixed").css("border","3px solid #269ac9"); <% end %> \ No newline at end of file From 1b3bc38f8e132cfcf1653ddc1e2bf2f675ab81c4 Mon Sep 17 00:00:00 2001 From: txz Date: Thu, 19 May 2016 13:44:03 +0800 Subject: [PATCH 034/668] =?UTF-8?q?=E6=8B=96=E4=BB=A3=E7=A0=81=E6=94=B9?= =?UTF-8?q?=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Gemfile.lock~ | 386 ++++ Gemfile~ | 112 + db/schema.rb | 4 +- lib/wechat/bin/wechat | 0 public/assets/wechat/blog_detail.html | 4 +- .../javascripts/code_review.js | 706 +++--- .../stylesheets/activity.css | 6 +- .../stylesheets/code_review.css | 192 +- .../stylesheets/window_js/MIT-LICENSE | 38 +- .../stylesheets/window_js/alert.css | 238 +- .../stylesheets/window_js/alert_lite.css | 176 +- .../stylesheets/window_js/alphacube.css | 300 +-- .../stylesheets/window_js/behavior.htc | 100 +- .../stylesheets/window_js/darkX.css | 242 +-- .../stylesheets/window_js/debug.css | 50 +- .../stylesheets/window_js/default.css | 310 +-- .../stylesheets/window_js/iefix/iepngfix.css | 6 +- .../stylesheets/window_js/iefix/iepngfix.htc | 106 +- .../stylesheets/window_js/lighting.css | 1920 ++++++++--------- .../window_js/lighting/pngbehavior.htc | 134 +- .../stylesheets/window_js/mac_os_x.css | 666 +++--- .../stylesheets/window_js/mac_os_x_dialog.css | 320 +-- .../stylesheets/window_js/nuncio.css | 328 +-- .../stylesheets/window_js/spread.css | 216 +- 24 files changed, 3530 insertions(+), 3030 deletions(-) create mode 100644 Gemfile.lock~ create mode 100644 Gemfile~ mode change 100644 => 100755 lib/wechat/bin/wechat diff --git a/Gemfile.lock~ b/Gemfile.lock~ new file mode 100644 index 000000000..7d6563465 --- /dev/null +++ b/Gemfile.lock~ @@ -0,0 +1,386 @@ +GIT + remote: http://github.com/guange2015/wechat.git + revision: a18c3d6603cb1aa7bd1fe887b17f67426be01f35 + specs: + wechat (0.7.1) + activerecord (>= 3.2, < 5.1.x) + http (~> 1.0, >= 1.0.1) + nokogiri (>= 1.6.0) + thor + +PATH + remote: lib/gitlab-cli + specs: + gitlab (3.2.0) + httparty + terminal-table + +PATH + remote: lib/grack + specs: + grack (2.0.2) + rack (~> 1.4.5) + +PATH + remote: lib/rails_kindeditor + specs: + rails_kindeditor (0.4.5) + carrierwave + mini_magick + +GEM + remote: https://ruby.taobao.org/ + specs: + actionmailer (3.2.22.2) + actionpack (= 3.2.22.2) + mail (~> 2.5.4) + actionpack (3.2.22.2) + activemodel (= 3.2.22.2) + activesupport (= 3.2.22.2) + builder (~> 3.0.0) + erubis (~> 2.7.0) + journey (~> 1.0.4) + rack (~> 1.4.5) + rack-cache (~> 1.2) + rack-test (~> 0.6.1) + sprockets (~> 2.2.1) + activemodel (3.2.22.2) + activesupport (= 3.2.22.2) + builder (~> 3.0.0) + activerecord (3.2.22.2) + activemodel (= 3.2.22.2) + activesupport (= 3.2.22.2) + arel (~> 3.0.2) + tzinfo (~> 0.3.29) + activeresource (3.2.22.2) + activemodel (= 3.2.22.2) + activesupport (= 3.2.22.2) + activesupport (3.2.22.2) + i18n (~> 0.6, >= 0.6.4) + multi_json (~> 1.0) + acts-as-taggable-on (2.4.1) + rails (>= 3, < 5) + addressable (2.4.0) + ansi (1.5.0) + arel (3.0.3) + axiom-types (0.1.1) + descendants_tracker (~> 0.0.4) + ice_nine (~> 0.11.0) + thread_safe (~> 0.3, >= 0.3.1) + better_errors (1.1.0) + coderay (>= 1.0.0) + erubis (>= 2.6.6) + binding_of_caller (0.7.2) + debug_inspector (>= 0.0.1) + builder (3.0.0) + byebug (8.2.2) + carrierwave (0.10.0) + activemodel (>= 3.2.0) + activesupport (>= 3.2.0) + json (>= 1.7) + mime-types (>= 1.16) + chinese_pinyin (1.0.0) + climate_control (0.0.3) + activesupport (>= 3.0) + cocaine (0.5.8) + climate_control (>= 0.0.3, < 1.0) + coderay (1.1.1) + coercible (1.0.0) + descendants_tracker (~> 0.0.1) + coffee-rails (3.2.2) + coffee-script (>= 2.2.0) + railties (~> 3.2.0) + coffee-script (2.4.1) + coffee-script-source + execjs + coffee-script-source (1.10.0) + daemons (1.2.3) + debug_inspector (0.0.2) + delayed_job (4.1.1) + activesupport (>= 3.0, < 5.0) + delayed_job_active_record (4.1.0) + activerecord (>= 3.0, < 5) + delayed_job (>= 3.0, < 5) + descendants_tracker (0.0.4) + thread_safe (~> 0.3, >= 0.3.1) + diff-lcs (1.2.5) + domain_name (0.5.20160216) + unf (>= 0.0.5, < 1.0.0) + elasticsearch (1.0.15) + elasticsearch-api (= 1.0.15) + elasticsearch-transport (= 1.0.15) + elasticsearch-api (1.0.15) + multi_json + elasticsearch-model (0.1.8) + activesupport (> 3) + elasticsearch (> 0.4) + hashie + elasticsearch-rails (0.1.8) + elasticsearch-transport (1.0.15) + faraday + multi_json + equalizer (0.0.11) + erubis (2.7.0) + execjs (2.6.0) + factory_girl (4.5.0) + activesupport (>= 3.0.0) + factory_girl_rails (4.6.0) + factory_girl (~> 4.5.0) + railties (>= 3.0.0) + faraday (0.9.2) + multipart-post (>= 1.2, < 3) + fastercsv (1.5.5) + grape (0.9.0) + activesupport + builder + hashie (>= 2.1.0) + multi_json (>= 1.3.2) + multi_xml (>= 0.5.2) + rack (>= 1.3.0) + rack-accept + rack-mount + virtus (>= 1.0.0) + grape-entity (0.4.8) + activesupport + multi_json (>= 1.3.2) + grape-swagger (0.10.4) + grape (>= 0.8.0) + grape-entity (< 0.5.0) + hashie (3.4.3) + hike (1.2.3) + htmlentities (4.3.4) + http (1.0.2) + addressable (~> 2.3) + http-cookie (~> 1.0) + http-form_data (~> 1.0.1) + http_parser.rb (~> 0.6.0) + http-cookie (1.0.2) + domain_name (~> 0.5) + http-form_data (1.0.1) + http_parser.rb (0.6.0) + httparty (0.13.7) + json (~> 1.8) + multi_xml (>= 0.5.2) + i18n (0.6.11) + ice_nine (0.11.2) + iconv (1.0.4) + journey (1.0.4) + jquery-rails (2.0.3) + railties (>= 3.1.0, < 5.0) + thor (~> 0.14) + json (1.8.3) + kaminari (0.16.3) + actionpack (>= 3.0.0) + activesupport (>= 3.0.0) + libv8 (3.16.14.13) + mail (2.5.4) + mime-types (~> 1.16) + treetop (~> 1.4.8) + method_source (0.8.2) + mime-types (1.25.1) + mini_magick (4.4.0) + mini_portile2 (2.0.0) + multi_json (1.11.2) + multi_xml (0.5.5) + multipart-post (2.0.0) + mysql2 (0.3.18) + net-ldap (0.3.1) + netrc (0.11.0) + nokogiri (1.6.7.2) + mini_portile2 (~> 2.0.0.rc2) + paperclip (3.5.4) + activemodel (>= 3.0.0) + activesupport (>= 3.0.0) + cocaine (~> 0.5.3) + mime-types + polyglot (0.3.5) + pry (0.10.3) + coderay (~> 1.1.0) + method_source (~> 0.8.1) + slop (~> 3.4) + pry-byebug (3.3.0) + byebug (~> 8.0) + pry (~> 0.10) + pry-rails (0.3.4) + pry (>= 0.9.10) + pry-stack_explorer (0.4.9.2) + binding_of_caller (>= 0.7) + pry (>= 0.9.11) + rack (1.4.7) + rack-accept (0.4.5) + rack (>= 0.4) + rack-cache (1.6.1) + rack (>= 0.4) + rack-cors (0.4.0) + rack-mount (0.8.3) + rack (>= 1.0.0) + rack-openid (1.4.2) + rack (>= 1.1.0) + ruby-openid (>= 2.1.8) + rack-raw-upload (1.1.1) + multi_json + rack-ssl (1.3.4) + rack + rack-test (0.6.3) + rack (>= 1.0) + rails (3.2.22.2) + actionmailer (= 3.2.22.2) + actionpack (= 3.2.22.2) + activerecord (= 3.2.22.2) + activeresource (= 3.2.22.2) + activesupport (= 3.2.22.2) + bundler (~> 1.0) + railties (= 3.2.22.2) + railties (3.2.22.2) + actionpack (= 3.2.22.2) + activesupport (= 3.2.22.2) + rack-ssl (~> 1.3.2) + rake (>= 0.8.7) + rdoc (~> 3.4) + thor (>= 0.14.6, < 2.0) + rake (10.5.0) + rdoc (3.12.2) + json (~> 1.4) + redis (3.2.2) + redis-actionpack (3.2.4) + actionpack (~> 3.2.0) + redis-rack (~> 1.4.4) + redis-store (~> 1.1.4) + redis-activesupport (3.2.5) + activesupport (~> 3.2.0) + redis-store (~> 1.1.0) + redis-rack (1.4.4) + rack (~> 1.4.0) + redis-store (~> 1.1.4) + redis-rails (3.2.4) + redis-actionpack (~> 3.2.4) + redis-activesupport (~> 3.2.4) + redis-store (~> 1.1.4) + redis-store (1.1.7) + redis (>= 2.2) + ref (2.0.0) + rest-client (1.8.0) + http-cookie (>= 1.0.2, < 2.0) + mime-types (>= 1.16, < 3.0) + netrc (~> 0.7) + rich (1.4.6) + jquery-rails + kaminari + mime-types + paperclip + rack-raw-upload + rails (>= 3.2.0) + sass-rails + rspec-core (3.4.3) + rspec-support (~> 3.4.0) + rspec-expectations (3.4.0) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.4.0) + rspec-mocks (3.4.1) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.4.0) + rspec-rails (3.4.2) + actionpack (>= 3.0, < 4.3) + activesupport (>= 3.0, < 4.3) + railties (>= 3.0, < 4.3) + rspec-core (~> 3.4.0) + rspec-expectations (~> 3.4.0) + rspec-mocks (~> 3.4.0) + rspec-support (~> 3.4.0) + rspec-support (3.4.1) + ruby-ole (1.2.12) + ruby-openid (2.1.8) + rubyzip (1.2.0) + sass (3.4.21) + sass-rails (3.2.6) + railties (~> 3.2.0) + sass (>= 3.1.10) + tilt (~> 1.3) + seems_rateable (1.0.13) + jquery-rails + rails + slop (3.6.0) + spreadsheet (1.1.1) + ruby-ole (>= 1.0) + sprockets (2.2.3) + hike (~> 1.2) + multi_json (~> 1.0) + rack (~> 1.0) + tilt (~> 1.1, != 1.3.0) + terminal-table (1.5.2) + therubyracer (0.12.2) + libv8 (~> 3.16.14.0) + ref + thor (0.19.1) + thread_safe (0.3.5) + tilt (1.4.1) + treetop (1.4.15) + polyglot + polyglot (>= 0.3.1) + tzinfo (0.3.46) + uglifier (2.7.2) + execjs (>= 0.3.0) + json (>= 1.8.0) + unf (0.1.4) + unf_ext + unf_ext (0.0.7.2) + virtus (1.0.5) + axiom-types (~> 0.1) + coercible (~> 1.0) + descendants_tracker (~> 0.0, >= 0.0.3) + equalizer (~> 0.0, >= 0.0.9) + +PLATFORMS + ruby + +DEPENDENCIES + acts-as-taggable-on (= 2.4.1) + ansi + better_errors (~> 1.1.0) + binding_of_caller + builder (= 3.0.0) + chinese_pinyin + coderay (~> 1.1.0) + coffee-rails (~> 3.2.1) + daemons + delayed_job_active_record + elasticsearch-model + elasticsearch-rails + factory_girl_rails + fastercsv (~> 1.5.0) + gitlab! + grack! + grape (~> 0.9.0) + grape-entity + grape-swagger + htmlentities + i18n (~> 0.6.0) + iconv + jquery-rails (~> 2.0.2) + kaminari + mysql2 (= 0.3.18) + net-ldap (~> 0.3.1) + paperclip (~> 3.5.4) + pry-byebug + pry-rails + pry-stack_explorer + rack-cors + rack-openid + rails (~> 3.2) + rails_kindeditor! + redis-rails + rest-client + rich (= 1.4.6) + rspec-rails (~> 3.0) + ruby-ole + ruby-openid (~> 2.1.4) + rubyzip + sass-rails (~> 3.2.3) + seems_rateable (~> 1.0.13) + spreadsheet + therubyracer + uglifier (>= 1.0.3) + wechat! + +BUNDLED WITH + 1.10.6 diff --git a/Gemfile~ b/Gemfile~ new file mode 100644 index 000000000..24869e72b --- /dev/null +++ b/Gemfile~ @@ -0,0 +1,112 @@ +source 'http://rubygems.org/' +### ִbundle config mirror.https://rubygems.org https://gems.ruby-china.org лruby-chinaԴ + +unless RUBY_PLATFORM =~ /w32/ + # unix-like only + gem 'iconv' +end + +gem 'certified' + +gem 'wechat',path: 'lib/wechat' +gem 'grack', path:'lib/grack' +gem 'gitlab', path: 'lib/gitlab-cli' +gem 'rest-client' +gem "mysql2", "= 0.3.18" +gem 'redis-rails' +gem 'rubyzip' +gem 'delayed_job_active_record'#, :group => :production +gem 'daemons' +gem 'grape', '~> 0.9.0' +gem 'grape-entity' +gem 'rack-cors', :require => 'rack/cors' +gem 'seems_rateable', '~> 1.0.13' +gem 'rails', '~> 3.2' +gem "jquery-rails", "~> 2.0.2" +gem "i18n", "~> 0.6.0" +gem 'coderay', '~> 1.1.0' +gem "fastercsv", "~> 1.5.0", :platforms => [:mri_18, :mingw_18, :jruby] +gem "builder", "3.0.0" +gem 'acts-as-taggable-on', '2.4.1' +gem 'spreadsheet' +gem 'ruby-ole' +gem 'rails_kindeditor',path:'lib/rails_kindeditor' +#gem "rmagick", ">= 2.0.0" +gem 'binding_of_caller' +gem 'chinese_pinyin' +# gem 'sunspot_rails', '~> 1.3.3' +# gem 'sunspot_solr' +# gem 'sunspot' +# gem 'progress_bar' +gem 'ansi' + +gem 'kaminari' +gem 'elasticsearch-model' +gem 'elasticsearch-rails' + + +### profile +#gem 'oneapm_rpm' + +group :development do + gem 'grape-swagger' + gem 'better_errors', '~> 1.1.0' + # gem "query_reviewer" + # gem 'rack-mini-profiler', '~> 0.9.3' + if RUBY_PLATFORM =~ /w32/ + gem 'win32console' + end +end + +group :development, :test do + unless RUBY_PLATFORM =~ /w32/ + gem 'pry-rails' + if RUBY_VERSION >= '2.0.0' + gem 'pry-byebug' + end + gem 'pry-stack_explorer' + if RUBY_PLATFORM =~ /darwin/ + gem 'puma' + end + end + + gem 'rspec-rails', '~> 3.0' + gem 'factory_girl_rails' +end + +# Gems used only for assets and not required +# in production environments by default. +group :assets do + gem 'sass-rails', '~> 3.2.3' + gem 'coffee-rails', '~> 3.2.1' + + # See https://github.com/sstephenson/execjs#readme for more supported runtimes + gem 'therubyracer', :platforms => :ruby + + gem 'uglifier', '>= 1.0.3' +end + +# Optional gem for LDAP authentication +group :ldap do + gem "net-ldap", "~> 0.3.1" +end + + +# Optional gem for OpenID authentication +group :openid do + gem "ruby-openid", "~> 2.1.4", :require => "openid" + gem "rack-openid" +end + + +database_file = File.join(File.dirname(__FILE__), "config/database.yml") +if File.exist?(database_file) +else + warn("Please configure your config/database.yml first") +end + +# Load plugins' Gemfiles +Dir.glob File.expand_path("../plugins/*/Gemfile", __FILE__) do |file| + puts "Loading #{file} ..." if $DEBUG # `ruby -d` or `bundle -v` + instance_eval File.read(file) +end diff --git a/db/schema.rb b/db/schema.rb index d5334c43c..766348dc8 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended to check this file into your version control system. -ActiveRecord::Schema.define(:version => 20160511055221) do +ActiveRecord::Schema.define(:version => 20160513021204) do create_table "activities", :force => true do |t| t.integer "act_id", :null => false @@ -1328,6 +1328,7 @@ ActiveRecord::Schema.define(:version => 20160511055221) do t.boolean "allow_guest_download", :default => true t.integer "visits", :default => 0 t.integer "show_mode", :default => 0 + t.integer "allow_teacher", :default => 0 end create_table "phone_app_versions", :force => true do |t| @@ -2043,6 +2044,7 @@ ActiveRecord::Schema.define(:version => 20160511055221) do t.string "salt", :limit => 64 t.integer "gid" t.integer "visits", :default => 0 + t.integer "excellent_teacher", :default => 0 end add_index "users", ["auth_source_id"], :name => "index_users_on_auth_source_id" diff --git a/lib/wechat/bin/wechat b/lib/wechat/bin/wechat old mode 100644 new mode 100755 diff --git a/public/assets/wechat/blog_detail.html b/public/assets/wechat/blog_detail.html index c1133f955..0eaa2cda7 100644 --- a/public/assets/wechat/blog_detail.html +++ b/public/assets/wechat/blog_detail.html @@ -3,7 +3,7 @@
        -
        {{blog.title}}
        +
        {{blog.title}}      
        {{blog.user.realname}}发表博客
        @@ -32,7 +32,7 @@
        -
        +
        diff --git a/public/plugin_assets/redmine_code_review/javascripts/code_review.js b/public/plugin_assets/redmine_code_review/javascripts/code_review.js index 4f4d81691..625f376c9 100644 --- a/public/plugin_assets/redmine_code_review/javascripts/code_review.js +++ b/public/plugin_assets/redmine_code_review/javascripts/code_review.js @@ -1,354 +1,354 @@ -/* -# Code Review plugin for Redmine -# Copyright (C) 2009-2013 Haruyuki Iida -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License -# as published by the Free Software Foundation; either version 2 -# of the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ - -var topZindex = 1000; -var action_type = ''; -var rev = ''; -var rev_to = ''; -var path = ''; -var urlprefix = ''; -var review_form_dialog = null; -var add_form_title = null; -var review_dialog_title = null; -var repository_id = null; -var filenames = []; - -var ReviewCount = function(total, open, progress){ - this.total = total; - this.open = open; - this.closed = total - open; - this.progress = progress -}; - -var CodeReview = function(id) { - this.id = id; - this.path = ''; - this.line = 0; - this.url = ''; - this.is_closed = false; -}; - -var review_counts = new Array(); -var code_reviews_map = new Array(); -var code_reviews_dialog_map = new Array(); - -function UpdateRepositoryView(title) { - var header = $("table.changesets thead tr:first"); - var th = $(''); - th.html(title); - header.append(th); - $('tr.changeset td.id a').each(function(i){ - var revision = this.getAttribute("href"); - revision = revision.substr(revision.lastIndexOf("/") + 1); - var review = review_counts['revision_' + revision]; - var td = $('',{ - 'class':'progress' - }); - td.html(review.progress); - $(this.parentNode.parentNode).append(td); - }); - } -//add function $.down -if(! $.fn.down) -(function($) { - $.fn.down = function() { - var el = this[0] && this[0].firstChild; - while (el && el.nodeType != 1) - el = el.nextSibling; - return $(el); - }; -})(jQuery); - -function UpdateRevisionView() { - $('li.change').each(function(){ - var li = $(this); - if (li.hasClass('folder')) return; - - var a = li.down('a'); - if (a.size() == 0) return; - var path = a.attr('href').replace(urlprefix, '').replace(/\?.*$/, ''); - - var reviewlist = code_reviews_map[path]; - if (reviewlist == null) return; - - var ul = $('
          '); - for (var j = 0; j < reviewlist.length; j++) { - var review = reviewlist[j]; - var icon = review.is_closed? 'icon-closed-review': 'icon-review'; - var item = $('
        • ', { - 'class': 'icon ' + icon + ' code_review_summary' - }); - item.html(review.url); - ul.append(item); - } - li.append(ul); - }); -} - -function setAddReviewButton(url, change_id, image_tag, is_readonly, is_diff, attachment_id){ - var filetables = []; - var j = 0; - $('table').each(function(){ - if($(this).hasClass('filecontent')){ - filetables[j++] = this; - } - }); - j = 0; - $('table.filecontent th.filename').each(function(){ - filenames[j] = $.trim($(this).text()); - j++; - }); - addReviewUrl = url + '?change_id=' + change_id + '&action_type=' + action_type + - '&rev=' + rev + '&rev_to=' + rev_to + - '&attachment_id=' + attachment_id + '&repository_id=' + encodeURIComponent(repository_id); - if (path != null && path.length > 0) { - addReviewUrl = addReviewUrl + '&path=' + encodeURIComponent(path); - } - var num = 0; - if (is_diff) { - num = 1; - } - var i, l, tl; - for (i = 0, tl = filetables.length; i < tl; i++) { - var table = filetables[i]; - var trs = table.getElementsByTagName('tr'); - - for (j = 0,l = trs.length; j < l; j++) { - var tr = trs[j]; - var ths = tr.getElementsByTagName('th'); - - var th = ths[num]; - if (th == null) { - continue; - } - - var th_html = th.innerHTML; - - var line = th_html.match(/[0-9]+/); - if (line == null) { - continue; - } - - var span_html = ''; - - if (!is_readonly) { - span_html += image_tag; - } - span_html += ''; - th.innerHTML = th_html + span_html; - - var img = th.getElementsByTagName('img')[0]; - if (img != null ) { - img.id = 'add_revew_img_' + line + '_' + i; - $(img).click(clickPencil); - } - } - } - - -} - -function clickPencil(e) -{ -// alert('$(e.target).attr("id") = ' + $(e.target).attr("id")); - var result = $(e.target).attr("id").match(/([0-9]+)_([0-9]+)/); - var line = result[1]; - var file_count = eval(result[2]); - var url = addReviewUrl + '&line=' + line + '&file_count=' + file_count; - - if (path == null || path.length == 0) { - url = url + '&path=' + encodeURIComponent(filenames[file_count]) + '&diff_all=true'; - } - addReview(url); - formPopup(e.pageX, e.pageY); - e.preventDefault(); -} -var addReviewUrl = null; -var showReviewUrl = null; -var showReviewImageTag = null; -var showClosedReviewImageTag = null; - -function setShowReviewButton(line, review_id, is_closed, file_count) { - //alert('file_count = ' + file_count); - var span = $('#review_span_' + line + '_' + file_count); - if (span.size() == 0) { - return; - } - var innerSpan = $('',{id: 'review_' + review_id}); - span.append(innerSpan); - innerSpan.html(is_closed? showClosedReviewImageTag : showReviewImageTag); - var div = $('
          ', { - 'class':'draggable', - id: 'show_review_' + review_id - }); - $('#code_review').append(div); - innerSpan.down('img').click(function(e) { - var review_id = $(e.target).parent().attr('id').match(/[0-9]+/)[0]; - var span = $('#review_' + review_id); // span element of view review button - var pos = span.offset(); - showReview(showReviewUrl, review_id, pos.left + 10 + 5, pos.top + 25); - }); -} - -function popupReview(review_id) { - var span = $('#review_' + review_id); // span element of view review button - var pos = span.offset(); - $('html,body').animate({ scrollTop: pos.top }, - {duration: 'fast', - complete: function(){showReview(showReviewUrl, review_id, pos.left + 10 + 5, pos.top)}}); - // position and show popup dialog - // create popup dialog - //var win = showReview(showReviewUrl, review_id, pos.left + 10 + 5, pos.top); -// win.toFront(); -} - -function showReview(url, review_id, x, y) { - if (code_reviews_dialog_map[review_id] != null) { - var cur_win = code_reviews_dialog_map[review_id]; - cur_win.hide(); - code_reviews_dialog_map[review_id] = null; - } - $('#show_review_' + review_id).load(url, {review_id: review_id}); - var review = getReviewObjById(review_id); - - var win = $('#show_review_' + review_id).dialog({ - show: {effect:'scale'},// ? 'top-left' - //position: [x, y + 5], - width:640, - zIndex: topZindex, - title: review_dialog_title - }); -// win.getContent().style.color = "#484848"; -// win.getContent().style.background = "#ffffff"; - topZindex++; - code_reviews_dialog_map[review_id] = win; - return win -} - -function getReviewObjById(review_id) { - for (var reviewlist in code_reviews_map) { - for (var i = 0; i < reviewlist.length; i++) { - var review = reviewlist[i]; - if (review.id == review_id) { - return review; - } - } - } - return null; -} - -function formPopup(x, y){ - //@see http://docs.jquery.com/UI/Effects/Scale - var win = $('#review-form-frame').dialog({ - show: {effect:'scale', direction: 'both'},// ? 'top-left' -// position: [x, y + 5], - width:640, - zIndex: topZindex, - title: add_form_title - }); -// win.getContent().style.background = "#ffffff"; - if (review_form_dialog != null) { - review_form_dialog.destroy(); - review_form_dialog = null; - } - review_form_dialog = win; - topZindex += 10; - return false; -} - -function hideForm() { - if (review_form_dialog == null) { - return; - } - review_form_dialog.dialog('close'); - review_form_dialog = null; - $('#review-form').html(''); -} -function addReview(url) { - $('#review-form').load(url); -} - -function deleteReview(review_id) { - $('show_review_' + review_id).remove(); - $('review_' + review_id).remove(); - -} - -function changeImage(review_id, is_closed) { - var span = $('review_' + review_id); - var new_image = null; - var dummy = new Element('span'); - if (is_closed) { - dummy.insert(showClosedReviewImageTag); - } - else { - dummy.insert(showReviewImageTag); - } - new_image = dummy.down().getAttribute('src'); - //alert(new_image); - span.down('img').setAttribute('src', new_image); - -} - -function make_addreview_link(project, link) { - var alist = $('#content p a'); - if (alist == null) { - return; - } - var a = alist[0]; - var p = a.parentNode; - p.innerHTML = p.innerHTML + " | " + link; -} - -function call_update_revisions(url) { - var changeset_ids = ''; - var links = $$('table.changesets tbody tr.changeset td.id a'); - for (var i = 0; i < links.length; i++) { - var link = links[i]; - var href = link.getAttribute('href'); - var id = href.replace(/^.*\/revisions\//, ''); - if (i > 0) { - changeset_ids += ','; - } - changeset_ids += id; - } - new Ajax.Updater('code_review_revisions', url, - { - evalScripts:true, - method:'get', - parameters: 'changeset_ids=' + encodeURI(changeset_ids) - }); -} - -$.fn.serialize2json = function() -{ - var o = {}; - var a = this.serializeArray(); - $.each(a, function() { - if (o[this.name]) { - if (!o[this.name].push) { - o[this.name] = [o[this.name]]; - } - o[this.name].push(this.value || ''); - } else { - o[this.name] = this.value || ''; - } - }); - return o; +/* +# Code Review plugin for Redmine +# Copyright (C) 2009-2013 Haruyuki Iida +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +var topZindex = 1000; +var action_type = ''; +var rev = ''; +var rev_to = ''; +var path = ''; +var urlprefix = ''; +var review_form_dialog = null; +var add_form_title = null; +var review_dialog_title = null; +var repository_id = null; +var filenames = []; + +var ReviewCount = function(total, open, progress){ + this.total = total; + this.open = open; + this.closed = total - open; + this.progress = progress +}; + +var CodeReview = function(id) { + this.id = id; + this.path = ''; + this.line = 0; + this.url = ''; + this.is_closed = false; +}; + +var review_counts = new Array(); +var code_reviews_map = new Array(); +var code_reviews_dialog_map = new Array(); + +function UpdateRepositoryView(title) { + var header = $("table.changesets thead tr:first"); + var th = $(''); + th.html(title); + header.append(th); + $('tr.changeset td.id a').each(function(i){ + var revision = this.getAttribute("href"); + revision = revision.substr(revision.lastIndexOf("/") + 1); + var review = review_counts['revision_' + revision]; + var td = $('',{ + 'class':'progress' + }); + td.html(review.progress); + $(this.parentNode.parentNode).append(td); + }); + } +//add function $.down +if(! $.fn.down) +(function($) { + $.fn.down = function() { + var el = this[0] && this[0].firstChild; + while (el && el.nodeType != 1) + el = el.nextSibling; + return $(el); + }; +})(jQuery); + +function UpdateRevisionView() { + $('li.change').each(function(){ + var li = $(this); + if (li.hasClass('folder')) return; + + var a = li.down('a'); + if (a.size() == 0) return; + var path = a.attr('href').replace(urlprefix, '').replace(/\?.*$/, ''); + + var reviewlist = code_reviews_map[path]; + if (reviewlist == null) return; + + var ul = $('
            '); + for (var j = 0; j < reviewlist.length; j++) { + var review = reviewlist[j]; + var icon = review.is_closed? 'icon-closed-review': 'icon-review'; + var item = $('
          • ', { + 'class': 'icon ' + icon + ' code_review_summary' + }); + item.html(review.url); + ul.append(item); + } + li.append(ul); + }); +} + +function setAddReviewButton(url, change_id, image_tag, is_readonly, is_diff, attachment_id){ + var filetables = []; + var j = 0; + $('table').each(function(){ + if($(this).hasClass('filecontent')){ + filetables[j++] = this; + } + }); + j = 0; + $('table.filecontent th.filename').each(function(){ + filenames[j] = $.trim($(this).text()); + j++; + }); + addReviewUrl = url + '?change_id=' + change_id + '&action_type=' + action_type + + '&rev=' + rev + '&rev_to=' + rev_to + + '&attachment_id=' + attachment_id + '&repository_id=' + encodeURIComponent(repository_id); + if (path != null && path.length > 0) { + addReviewUrl = addReviewUrl + '&path=' + encodeURIComponent(path); + } + var num = 0; + if (is_diff) { + num = 1; + } + var i, l, tl; + for (i = 0, tl = filetables.length; i < tl; i++) { + var table = filetables[i]; + var trs = table.getElementsByTagName('tr'); + + for (j = 0,l = trs.length; j < l; j++) { + var tr = trs[j]; + var ths = tr.getElementsByTagName('th'); + + var th = ths[num]; + if (th == null) { + continue; + } + + var th_html = th.innerHTML; + + var line = th_html.match(/[0-9]+/); + if (line == null) { + continue; + } + + var span_html = ''; + + if (!is_readonly) { + span_html += image_tag; + } + span_html += ''; + th.innerHTML = th_html + span_html; + + var img = th.getElementsByTagName('img')[0]; + if (img != null ) { + img.id = 'add_revew_img_' + line + '_' + i; + $(img).click(clickPencil); + } + } + } + + +} + +function clickPencil(e) +{ +// alert('$(e.target).attr("id") = ' + $(e.target).attr("id")); + var result = $(e.target).attr("id").match(/([0-9]+)_([0-9]+)/); + var line = result[1]; + var file_count = eval(result[2]); + var url = addReviewUrl + '&line=' + line + '&file_count=' + file_count; + + if (path == null || path.length == 0) { + url = url + '&path=' + encodeURIComponent(filenames[file_count]) + '&diff_all=true'; + } + addReview(url); + formPopup(e.pageX, e.pageY); + e.preventDefault(); +} +var addReviewUrl = null; +var showReviewUrl = null; +var showReviewImageTag = null; +var showClosedReviewImageTag = null; + +function setShowReviewButton(line, review_id, is_closed, file_count) { + //alert('file_count = ' + file_count); + var span = $('#review_span_' + line + '_' + file_count); + if (span.size() == 0) { + return; + } + var innerSpan = $('',{id: 'review_' + review_id}); + span.append(innerSpan); + innerSpan.html(is_closed? showClosedReviewImageTag : showReviewImageTag); + var div = $('
            ', { + 'class':'draggable', + id: 'show_review_' + review_id + }); + $('#code_review').append(div); + innerSpan.down('img').click(function(e) { + var review_id = $(e.target).parent().attr('id').match(/[0-9]+/)[0]; + var span = $('#review_' + review_id); // span element of view review button + var pos = span.offset(); + showReview(showReviewUrl, review_id, pos.left + 10 + 5, pos.top + 25); + }); +} + +function popupReview(review_id) { + var span = $('#review_' + review_id); // span element of view review button + var pos = span.offset(); + $('html,body').animate({ scrollTop: pos.top }, + {duration: 'fast', + complete: function(){showReview(showReviewUrl, review_id, pos.left + 10 + 5, pos.top)}}); + // position and show popup dialog + // create popup dialog + //var win = showReview(showReviewUrl, review_id, pos.left + 10 + 5, pos.top); +// win.toFront(); +} + +function showReview(url, review_id, x, y) { + if (code_reviews_dialog_map[review_id] != null) { + var cur_win = code_reviews_dialog_map[review_id]; + cur_win.hide(); + code_reviews_dialog_map[review_id] = null; + } + $('#show_review_' + review_id).load(url, {review_id: review_id}); + var review = getReviewObjById(review_id); + + var win = $('#show_review_' + review_id).dialog({ + show: {effect:'scale'},// ? 'top-left' + //position: [x, y + 5], + width:640, + zIndex: topZindex, + title: review_dialog_title + }); +// win.getContent().style.color = "#484848"; +// win.getContent().style.background = "#ffffff"; + topZindex++; + code_reviews_dialog_map[review_id] = win; + return win +} + +function getReviewObjById(review_id) { + for (var reviewlist in code_reviews_map) { + for (var i = 0; i < reviewlist.length; i++) { + var review = reviewlist[i]; + if (review.id == review_id) { + return review; + } + } + } + return null; +} + +function formPopup(x, y){ + //@see http://docs.jquery.com/UI/Effects/Scale + var win = $('#review-form-frame').dialog({ + show: {effect:'scale', direction: 'both'},// ? 'top-left' +// position: [x, y + 5], + width:640, + zIndex: topZindex, + title: add_form_title + }); +// win.getContent().style.background = "#ffffff"; + if (review_form_dialog != null) { + review_form_dialog.destroy(); + review_form_dialog = null; + } + review_form_dialog = win; + topZindex += 10; + return false; +} + +function hideForm() { + if (review_form_dialog == null) { + return; + } + review_form_dialog.dialog('close'); + review_form_dialog = null; + $('#review-form').html(''); +} +function addReview(url) { + $('#review-form').load(url); +} + +function deleteReview(review_id) { + $('show_review_' + review_id).remove(); + $('review_' + review_id).remove(); + +} + +function changeImage(review_id, is_closed) { + var span = $('review_' + review_id); + var new_image = null; + var dummy = new Element('span'); + if (is_closed) { + dummy.insert(showClosedReviewImageTag); + } + else { + dummy.insert(showReviewImageTag); + } + new_image = dummy.down().getAttribute('src'); + //alert(new_image); + span.down('img').setAttribute('src', new_image); + +} + +function make_addreview_link(project, link) { + var alist = $('#content p a'); + if (alist == null) { + return; + } + var a = alist[0]; + var p = a.parentNode; + p.innerHTML = p.innerHTML + " | " + link; +} + +function call_update_revisions(url) { + var changeset_ids = ''; + var links = $$('table.changesets tbody tr.changeset td.id a'); + for (var i = 0; i < links.length; i++) { + var link = links[i]; + var href = link.getAttribute('href'); + var id = href.replace(/^.*\/revisions\//, ''); + if (i > 0) { + changeset_ids += ','; + } + changeset_ids += id; + } + new Ajax.Updater('code_review_revisions', url, + { + evalScripts:true, + method:'get', + parameters: 'changeset_ids=' + encodeURI(changeset_ids) + }); +} + +$.fn.serialize2json = function() +{ + var o = {}; + var a = this.serializeArray(); + $.each(a, function() { + if (o[this.name]) { + if (!o[this.name].push) { + o[this.name] = [o[this.name]]; + } + o[this.name].push(this.value || ''); + } else { + o[this.name] = this.value || ''; + } + }); + return o; }; \ No newline at end of file diff --git a/public/plugin_assets/redmine_code_review/stylesheets/activity.css b/public/plugin_assets/redmine_code_review/stylesheets/activity.css index 202ed54e3..e3cdc3d55 100644 --- a/public/plugin_assets/redmine_code_review/stylesheets/activity.css +++ b/public/plugin_assets/redmine_code_review/stylesheets/activity.css @@ -1,4 +1,4 @@ - -dt.code_review { - background-image: url(../images/review.png); + +dt.code_review { + background-image: url(../images/review.png); } \ No newline at end of file diff --git a/public/plugin_assets/redmine_code_review/stylesheets/code_review.css b/public/plugin_assets/redmine_code_review/stylesheets/code_review.css index e25dc6d72..11939ae79 100644 --- a/public/plugin_assets/redmine_code_review/stylesheets/code_review.css +++ b/public/plugin_assets/redmine_code_review/stylesheets/code_review.css @@ -1,97 +1,97 @@ -/* -# Code Review plugin for Redmine -# Copyright (C) 2009 Haruyuki Iida -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License -# as published by the Free Software Foundation; either version 2 -# of the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -*/ -#review-form-frame { -height: 100%; -} - -.autoscroll table.filecontent th.line-num { - white-space: nowrap; - vertical-align: bottom; - padding-top: 0; - padding-bottom: 0; - text-align:left; -} - -table.filecontent th.line-num img{ - padding: 0; - margin: 0; - cursor: pointer; -} - - -.code-review-form-title { - background-color: #002059; - color: white; - padding-left: 2px; - padding-right: 2px; - cursor: default; -} - - -.code_review_viewer { - - min-width: 300px; - /* - max-width: 60%; - */ - /* max-height: 400px; */ -} - -.code_review_viewer .issue{ - -} - -.code_review_body { - background-color: white; - - padding:2px; - -} - -#code_review_list table.list td { - text-align: center; -} - -#code_review_list table.list td.path { - text-align: left; -} - -#code_review_list table.list td.subject { - text-align: left; -} - -.icon-review { - background-image: url(../images/review.png); - background-repeat: no-repeat; -} - -.icon-closed-review { - background-image: url(../images/closed_review.png); - background-repeat: no-repeat; -} - -.icon-settings { - background-image: url(../../../images/changeset.png); - background-repeat: no-repeat; -} - - -li.code_review_summary { - list-style-type: none; +/* +# Code Review plugin for Redmine +# Copyright (C) 2009 Haruyuki Iida +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +*/ +#review-form-frame { +height: 100%; +} + +.autoscroll table.filecontent th.line-num { + white-space: nowrap; + vertical-align: bottom; + padding-top: 0; + padding-bottom: 0; + text-align:left; +} + +table.filecontent th.line-num img{ + padding: 0; + margin: 0; + cursor: pointer; +} + + +.code-review-form-title { + background-color: #002059; + color: white; + padding-left: 2px; + padding-right: 2px; + cursor: default; +} + + +.code_review_viewer { + + min-width: 300px; + /* + max-width: 60%; + */ + /* max-height: 400px; */ +} + +.code_review_viewer .issue{ + +} + +.code_review_body { + background-color: white; + + padding:2px; + +} + +#code_review_list table.list td { + text-align: center; +} + +#code_review_list table.list td.path { + text-align: left; +} + +#code_review_list table.list td.subject { + text-align: left; +} + +.icon-review { + background-image: url(../images/review.png); + background-repeat: no-repeat; +} + +.icon-closed-review { + background-image: url(../images/closed_review.png); + background-repeat: no-repeat; +} + +.icon-settings { + background-image: url(../../../images/changeset.png); + background-repeat: no-repeat; +} + + +li.code_review_summary { + list-style-type: none; } \ No newline at end of file diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/MIT-LICENSE b/public/plugin_assets/redmine_code_review/stylesheets/window_js/MIT-LICENSE index 0a7cf9ad1..5bcdad1bd 100644 --- a/public/plugin_assets/redmine_code_review/stylesheets/window_js/MIT-LICENSE +++ b/public/plugin_assets/redmine_code_review/stylesheets/window_js/MIT-LICENSE @@ -1,19 +1,19 @@ -Copyright (c) 2006 Sébastien Gruhier (http://xilinus.com, http://itseb.com) - -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. +Copyright (c) 2006 Sébastien Gruhier (http://xilinus.com, http://itseb.com) + +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. diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/alert.css b/public/plugin_assets/redmine_code_review/stylesheets/window_js/alert.css index 4846e6185..432d14e36 100644 --- a/public/plugin_assets/redmine_code_review/stylesheets/window_js/alert.css +++ b/public/plugin_assets/redmine_code_review/stylesheets/window_js/alert.css @@ -1,119 +1,119 @@ -.overlay_alert { - background-color: #85BBEF; - filter:alpha(opacity=60); - -moz-opacity: 0.6; - opacity: 0.6; -} - -.alert_nw { - width: 5px; - height: 5px; - background: transparent url(alert/top_left.gif) no-repeat bottom left; -} - -.alert_n { - height: 5px; - background: transparent url(alert/top.gif) repeat-x bottom left; -} - -.alert_ne { - width: 5px; - height: 5px; - background: transparent url(alert/top_right.gif) no-repeat bottom left -} - -.alert_e { - width: 5px; - background: transparent url(alert/right.gif) repeat-y 0 0; -} - -.alert_w { - width: 5px; - background: transparent url(alert/left.gif) repeat-y 0 0; -} - -.alert_sw { - width: 5px; - height: 5px; - background: transparent url(alert/bottom_left.gif) no-repeat 0 0; -} - -.alert_s { - height: 5px; - background: transparent url(alert/bottom.gif) repeat-x 0 0; -} - -.alert_se, .alert_sizer { - width: 5px; - height: 5px; - background: transparent url(alert/bottom_right.gif) no-repeat 0 0; -} - -.alert_close { - width:0px; - height:0px; - display:none; -} - -.alert_minimize { - width:0px; - height:0px; - display:none; -} - -.alert_maximize { - width:0px; - height:0px; - display:none; -} - -.alert_title { - float:left; - height:1px; - width:100%; -} - -.alert_content { - overflow:visible; - color: #000; - font-family: Tahoma, Arial, sans-serif; - font: 12px arial; - background: #FFF; -} - -/* For alert/confirm dialog */ -.alert_window { - background: #FFF; - padding:20px; - margin-left:auto; - margin-right:auto; - width:400px; -} - -.alert_message { - font: 12px arial; - width:100%; - color:#F00; - padding-bottom:10px; -} - -.alert_buttons { - text-align:center; - width:100%; -} - -.alert_buttons input { - width:20%; - margin:10px; -} - -.alert_progress { - float:left; - margin:auto; - text-align:center; - width:100%; - height:16px; - background: #FFF url('alert/progress.gif') no-repeat center center -} - - +.overlay_alert { + background-color: #85BBEF; + filter:alpha(opacity=60); + -moz-opacity: 0.6; + opacity: 0.6; +} + +.alert_nw { + width: 5px; + height: 5px; + background: transparent url(alert/top_left.gif) no-repeat bottom left; +} + +.alert_n { + height: 5px; + background: transparent url(alert/top.gif) repeat-x bottom left; +} + +.alert_ne { + width: 5px; + height: 5px; + background: transparent url(alert/top_right.gif) no-repeat bottom left +} + +.alert_e { + width: 5px; + background: transparent url(alert/right.gif) repeat-y 0 0; +} + +.alert_w { + width: 5px; + background: transparent url(alert/left.gif) repeat-y 0 0; +} + +.alert_sw { + width: 5px; + height: 5px; + background: transparent url(alert/bottom_left.gif) no-repeat 0 0; +} + +.alert_s { + height: 5px; + background: transparent url(alert/bottom.gif) repeat-x 0 0; +} + +.alert_se, .alert_sizer { + width: 5px; + height: 5px; + background: transparent url(alert/bottom_right.gif) no-repeat 0 0; +} + +.alert_close { + width:0px; + height:0px; + display:none; +} + +.alert_minimize { + width:0px; + height:0px; + display:none; +} + +.alert_maximize { + width:0px; + height:0px; + display:none; +} + +.alert_title { + float:left; + height:1px; + width:100%; +} + +.alert_content { + overflow:visible; + color: #000; + font-family: Tahoma, Arial, sans-serif; + font: 12px arial; + background: #FFF; +} + +/* For alert/confirm dialog */ +.alert_window { + background: #FFF; + padding:20px; + margin-left:auto; + margin-right:auto; + width:400px; +} + +.alert_message { + font: 12px arial; + width:100%; + color:#F00; + padding-bottom:10px; +} + +.alert_buttons { + text-align:center; + width:100%; +} + +.alert_buttons input { + width:20%; + margin:10px; +} + +.alert_progress { + float:left; + margin:auto; + text-align:center; + width:100%; + height:16px; + background: #FFF url('alert/progress.gif') no-repeat center center +} + + diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/alert_lite.css b/public/plugin_assets/redmine_code_review/stylesheets/window_js/alert_lite.css index a74fc71c3..c2ad538ca 100644 --- a/public/plugin_assets/redmine_code_review/stylesheets/window_js/alert_lite.css +++ b/public/plugin_assets/redmine_code_review/stylesheets/window_js/alert_lite.css @@ -1,88 +1,88 @@ -.overlay_alert_lite { - background-color: #85BBEF; - filter:alpha(opacity=60); - -moz-opacity: 0.6; - opacity: 0.6; -} - -.alert_lite_sizer { - width:0px; - height:0px; - display:none; -} - -.alert_lite_close { - width:0px; - height:0px; - display:none; -} - -.alert_lite_minimize { - width:0px; - height:0px; - display:none; -} - -.alert_lite_maximize { - width:0px; - height:0px; - display:none; -} - -.alert_lite_title { - width:0px; - height:0px; - display:none; -} - -.alert_lite_content { - overflow:auto; - color: #000; - font-family: Tahoma, Arial, sans-serif; - font-size: 10px; - background: #FFF; -} - - -/* For alert/confirm dialog */ -.alert_lite_window { - border:1px solid #F00; - background: #FFF; - padding:20px; - margin-left:auto; - margin-right:auto; - width:400px; -} - -.alert_lite_message { - font-size:16px; - text-align:center; - width:100%; - color:#F00; - padding-bottom:10px; -} - -.alert_lite_buttons { - text-align:center; - width:100%; -} - -.alert_lite_buttons input { - width:20%; - margin:10px; -} - -.alert_lite_progress { - float:left; - margin:auto; - text-align:center; - width:100%; - height:16px; - background: #FFF url('alert/progress.gif') no-repeat center center -} - -table.alert_lite_header { - border:1px solid #F00; - background:#FFF -} - +.overlay_alert_lite { + background-color: #85BBEF; + filter:alpha(opacity=60); + -moz-opacity: 0.6; + opacity: 0.6; +} + +.alert_lite_sizer { + width:0px; + height:0px; + display:none; +} + +.alert_lite_close { + width:0px; + height:0px; + display:none; +} + +.alert_lite_minimize { + width:0px; + height:0px; + display:none; +} + +.alert_lite_maximize { + width:0px; + height:0px; + display:none; +} + +.alert_lite_title { + width:0px; + height:0px; + display:none; +} + +.alert_lite_content { + overflow:auto; + color: #000; + font-family: Tahoma, Arial, sans-serif; + font-size: 10px; + background: #FFF; +} + + +/* For alert/confirm dialog */ +.alert_lite_window { + border:1px solid #F00; + background: #FFF; + padding:20px; + margin-left:auto; + margin-right:auto; + width:400px; +} + +.alert_lite_message { + font-size:16px; + text-align:center; + width:100%; + color:#F00; + padding-bottom:10px; +} + +.alert_lite_buttons { + text-align:center; + width:100%; +} + +.alert_lite_buttons input { + width:20%; + margin:10px; +} + +.alert_lite_progress { + float:left; + margin:auto; + text-align:center; + width:100%; + height:16px; + background: #FFF url('alert/progress.gif') no-repeat center center +} + +table.alert_lite_header { + border:1px solid #F00; + background:#FFF +} + diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/alphacube.css b/public/plugin_assets/redmine_code_review/stylesheets/window_js/alphacube.css index 6d2862c0e..7d2790e75 100644 --- a/public/plugin_assets/redmine_code_review/stylesheets/window_js/alphacube.css +++ b/public/plugin_assets/redmine_code_review/stylesheets/window_js/alphacube.css @@ -1,150 +1,150 @@ -.overlay_alphacube { - background-color: #85BBEF; - filter:alpha(opacity=60); - -moz-opacity: 0.6; - opacity: 0.6; -} - -.alphacube_nw { - background: transparent url(alphacube/left-top.gif) no-repeat 0 0; - width:10px; - height:25px; -} - -.alphacube_n { - background: transparent url(alphacube/top-middle.gif) repeat-x 0 0; - height:25px; -} - -.alphacube_ne { - background: transparent url(alphacube/right-top.gif) no-repeat 0 0; - width:10px; - height:25px; -} - -.alphacube_w { - background: transparent url(alphacube/frame-left.gif) repeat-y top left; - width:7px; -} - -.alphacube_e { - background: transparent url(alphacube/frame-right.gif) repeat-y top right; - width:7px; -} - -.alphacube_sw { - background: transparent url(alphacube/bottom-left-c.gif) no-repeat 0 0; - width:7px; - height:7px; -} - -.alphacube_s { - background: transparent url(alphacube/bottom-middle.gif) repeat-x 0 0; - height:7px; -} - -.alphacube_se, .alphacube_sizer { - background: transparent url(alphacube/bottom-right-c.gif) no-repeat 0 0; - width:7px; - height:7px; -} - -.alphacube_sizer { - cursor:se-resize; -} - -.alphacube_close { - width: 23px; - height: 23px; - background: transparent url(alphacube/button-close-focus.gif) no-repeat 0 0; - position:absolute; - top:0px; - right:11px; - cursor:pointer; - z-index:1000; -} - -.alphacube_minimize { - width: 23px; - height: 23px; - background: transparent url(alphacube/button-min-focus.gif) no-repeat 0 0; - position:absolute; - top:0px; - right:55px; - cursor:pointer; - z-index:1000; -} - -.alphacube_maximize { - width: 23px; - height: 23px; - background: transparent url(alphacube/button-max-focus.gif) no-repeat 0 0; - position:absolute; - top:0px; - right:33px; - cursor:pointer; - z-index:1000; -} - -.alphacube_title { - float:left; - height:14px; - font-size:14px; - text-align:center; - margin-top:2px; - width:100%; - color:#123456; -} - -.alphacube_content { - overflow:auto; - color: #000; - font-family: Tahoma, Arial, sans-serif; - font: 12px arial; - background:#FDFDFD; -} - -/* For alert/confirm dialog */ -.alphacube_window { - border:1px solid #F00; - background: #FFF; - padding:20px; - margin-left:auto; - margin-right:auto; - width:400px; -} - -.alphacube_message { - font: 12px arial; - text-align:center; - width:100%; - padding-bottom:10px; -} - -.alphacube_buttons { - text-align:center; - width:100%; -} - -.alphacube_buttons input { - width:20%; - margin:10px; -} - -.alphacube_progress { - float:left; - margin:auto; - text-align:center; - width:100%; - height:16px; - background: #FFF url('alert/progress.gif') no-repeat center center -} - -.alphacube_wired_frame { - background: #FFF; - filter:alpha(opacity=60); - -moz-opacity: 0.6; - opacity: 0.6; -} - - +.overlay_alphacube { + background-color: #85BBEF; + filter:alpha(opacity=60); + -moz-opacity: 0.6; + opacity: 0.6; +} + +.alphacube_nw { + background: transparent url(alphacube/left-top.gif) no-repeat 0 0; + width:10px; + height:25px; +} + +.alphacube_n { + background: transparent url(alphacube/top-middle.gif) repeat-x 0 0; + height:25px; +} + +.alphacube_ne { + background: transparent url(alphacube/right-top.gif) no-repeat 0 0; + width:10px; + height:25px; +} + +.alphacube_w { + background: transparent url(alphacube/frame-left.gif) repeat-y top left; + width:7px; +} + +.alphacube_e { + background: transparent url(alphacube/frame-right.gif) repeat-y top right; + width:7px; +} + +.alphacube_sw { + background: transparent url(alphacube/bottom-left-c.gif) no-repeat 0 0; + width:7px; + height:7px; +} + +.alphacube_s { + background: transparent url(alphacube/bottom-middle.gif) repeat-x 0 0; + height:7px; +} + +.alphacube_se, .alphacube_sizer { + background: transparent url(alphacube/bottom-right-c.gif) no-repeat 0 0; + width:7px; + height:7px; +} + +.alphacube_sizer { + cursor:se-resize; +} + +.alphacube_close { + width: 23px; + height: 23px; + background: transparent url(alphacube/button-close-focus.gif) no-repeat 0 0; + position:absolute; + top:0px; + right:11px; + cursor:pointer; + z-index:1000; +} + +.alphacube_minimize { + width: 23px; + height: 23px; + background: transparent url(alphacube/button-min-focus.gif) no-repeat 0 0; + position:absolute; + top:0px; + right:55px; + cursor:pointer; + z-index:1000; +} + +.alphacube_maximize { + width: 23px; + height: 23px; + background: transparent url(alphacube/button-max-focus.gif) no-repeat 0 0; + position:absolute; + top:0px; + right:33px; + cursor:pointer; + z-index:1000; +} + +.alphacube_title { + float:left; + height:14px; + font-size:14px; + text-align:center; + margin-top:2px; + width:100%; + color:#123456; +} + +.alphacube_content { + overflow:auto; + color: #000; + font-family: Tahoma, Arial, sans-serif; + font: 12px arial; + background:#FDFDFD; +} + +/* For alert/confirm dialog */ +.alphacube_window { + border:1px solid #F00; + background: #FFF; + padding:20px; + margin-left:auto; + margin-right:auto; + width:400px; +} + +.alphacube_message { + font: 12px arial; + text-align:center; + width:100%; + padding-bottom:10px; +} + +.alphacube_buttons { + text-align:center; + width:100%; +} + +.alphacube_buttons input { + width:20%; + margin:10px; +} + +.alphacube_progress { + float:left; + margin:auto; + text-align:center; + width:100%; + height:16px; + background: #FFF url('alert/progress.gif') no-repeat center center +} + +.alphacube_wired_frame { + background: #FFF; + filter:alpha(opacity=60); + -moz-opacity: 0.6; + opacity: 0.6; +} + + diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/behavior.htc b/public/plugin_assets/redmine_code_review/stylesheets/window_js/behavior.htc index e5c6edc1c..437c5ec92 100644 --- a/public/plugin_assets/redmine_code_review/stylesheets/window_js/behavior.htc +++ b/public/plugin_assets/redmine_code_review/stylesheets/window_js/behavior.htc @@ -1,51 +1,51 @@ - - - + + + \ No newline at end of file diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/darkX.css b/public/plugin_assets/redmine_code_review/stylesheets/window_js/darkX.css index e3df3e0a4..2f83cfd46 100644 --- a/public/plugin_assets/redmine_code_review/stylesheets/window_js/darkX.css +++ b/public/plugin_assets/redmine_code_review/stylesheets/window_js/darkX.css @@ -1,121 +1,121 @@ -.overlay_darkX { - background-color: #85BBEF; - filter:alpha(opacity=60); - -moz-opacity: 0.6; - opacity: 0.6; -} - -.darkX_nw { - background: transparent url(darkX/titlebar-left-focused.png) no-repeat 0 0; - width:6px; - height:21px; -} -.darkX_n { - background: transparent url(darkX/titlebar-mid-focused.png) repeat-x 0 0; - height:21px; -} -.darkX_ne { - background: transparent url(darkX/titlebar-right-focused.png) no-repeat 0 0; - width:6px; - height:21px; -} -.darkX_w { - background: transparent url(darkX/frame-left-focused.png) repeat-y top left; - width:3px; -} - -.darkX_e { - background: transparent url(darkX/frame-right-focused.png) repeat-y top right; - width:3px; -} - -.darkX_sw { - background: transparent url(darkX/frame-bottom-left-focused.png) no-repeat 0 0; - width:5px; - height:3px; -} -.darkX_s { - background: transparent url(darkX/frame-bottom-mid-focused.png) repeat-x 0 0; - height:3px; -} -.darkX_se, .darkX_sizer { - background: transparent url(darkX/frame-bottom-right-focused.png) no-repeat 0 0; - width:5px; - height:3px; -} - -.darkX_sizer { - cursor:se-resize; -} - -.darkX_close { - width: 21px; - height: 21px; - background: transparent url(darkX/button-close-focused.png) no-repeat 0 0; - position:absolute; - top:0px; - right:5px; - cursor:pointer; - z-index:1000; -} - -.darkX_minimize { - width: 21px; - height: 21px; - background: transparent url(darkX/button-minimize-focused.png) no-repeat 0 0; - position:absolute; - top:0px; - right:26px; - cursor:pointer; - z-index:1000; -} - -.darkX_maximize { - width: 21px; - height: 21px; - background: transparent url(darkX/button-maximize-focused.png) no-repeat 0 0; - position:absolute; - top:0px; - right:47px; - cursor:pointer; - z-index:1000; -} - - -.darkX_title { - float:left; - height:14px; - font-size:12px; - text-align:center; - margin-top:2px; - width:100%; - color:#FFF; -} - -.darkX_content { - overflow:auto; - color: #E6DF2A; - font-family: Tahoma, Arial, sans-serif; - font-size: 14px; - background:#5E5148; -} - - -/* FOR IE */ -* html .darkX_minimize { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/darkX/button-minimize-focused.png", sizingMethod="crop"); -} - -* html .darkX_maximize { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/darkX/button-maximize-focused.png", sizingMethod="scale"); -} - -* html .darkX_close { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/darkX/button-close-focused.png", sizingMethod="crop"); -} +.overlay_darkX { + background-color: #85BBEF; + filter:alpha(opacity=60); + -moz-opacity: 0.6; + opacity: 0.6; +} + +.darkX_nw { + background: transparent url(darkX/titlebar-left-focused.png) no-repeat 0 0; + width:6px; + height:21px; +} +.darkX_n { + background: transparent url(darkX/titlebar-mid-focused.png) repeat-x 0 0; + height:21px; +} +.darkX_ne { + background: transparent url(darkX/titlebar-right-focused.png) no-repeat 0 0; + width:6px; + height:21px; +} +.darkX_w { + background: transparent url(darkX/frame-left-focused.png) repeat-y top left; + width:3px; +} + +.darkX_e { + background: transparent url(darkX/frame-right-focused.png) repeat-y top right; + width:3px; +} + +.darkX_sw { + background: transparent url(darkX/frame-bottom-left-focused.png) no-repeat 0 0; + width:5px; + height:3px; +} +.darkX_s { + background: transparent url(darkX/frame-bottom-mid-focused.png) repeat-x 0 0; + height:3px; +} +.darkX_se, .darkX_sizer { + background: transparent url(darkX/frame-bottom-right-focused.png) no-repeat 0 0; + width:5px; + height:3px; +} + +.darkX_sizer { + cursor:se-resize; +} + +.darkX_close { + width: 21px; + height: 21px; + background: transparent url(darkX/button-close-focused.png) no-repeat 0 0; + position:absolute; + top:0px; + right:5px; + cursor:pointer; + z-index:1000; +} + +.darkX_minimize { + width: 21px; + height: 21px; + background: transparent url(darkX/button-minimize-focused.png) no-repeat 0 0; + position:absolute; + top:0px; + right:26px; + cursor:pointer; + z-index:1000; +} + +.darkX_maximize { + width: 21px; + height: 21px; + background: transparent url(darkX/button-maximize-focused.png) no-repeat 0 0; + position:absolute; + top:0px; + right:47px; + cursor:pointer; + z-index:1000; +} + + +.darkX_title { + float:left; + height:14px; + font-size:12px; + text-align:center; + margin-top:2px; + width:100%; + color:#FFF; +} + +.darkX_content { + overflow:auto; + color: #E6DF2A; + font-family: Tahoma, Arial, sans-serif; + font-size: 14px; + background:#5E5148; +} + + +/* FOR IE */ +* html .darkX_minimize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/darkX/button-minimize-focused.png", sizingMethod="crop"); +} + +* html .darkX_maximize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/darkX/button-maximize-focused.png", sizingMethod="scale"); +} + +* html .darkX_close { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/darkX/button-close-focused.png", sizingMethod="crop"); +} diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/debug.css b/public/plugin_assets/redmine_code_review/stylesheets/window_js/debug.css index d7981e9ca..69e3b7fc2 100644 --- a/public/plugin_assets/redmine_code_review/stylesheets/window_js/debug.css +++ b/public/plugin_assets/redmine_code_review/stylesheets/window_js/debug.css @@ -1,25 +1,25 @@ -div.inspector div.inspectable { - padding: 0.25em 0 0.25em 1em; - background-color: Gray; - color: white; - border: outset 2px white; - cursor: pointer; -} - -div.inspector div.child { - margin: 0 0 0 1em; -} - -#debug_window_content { /* DIV container for debug sizing*/ - width:250px; - height:100px; - background-color:#000; -} - -#debug { /* DIV container for debug contents*/ - padding:3px; - color:#0f0; - font-family:monaco, Tahoma, Verdana, Arial, Helvetica, sans-serif; - font-size:10px; -} - +div.inspector div.inspectable { + padding: 0.25em 0 0.25em 1em; + background-color: Gray; + color: white; + border: outset 2px white; + cursor: pointer; +} + +div.inspector div.child { + margin: 0 0 0 1em; +} + +#debug_window_content { /* DIV container for debug sizing*/ + width:250px; + height:100px; + background-color:#000; +} + +#debug { /* DIV container for debug contents*/ + padding:3px; + color:#0f0; + font-family:monaco, Tahoma, Verdana, Arial, Helvetica, sans-serif; + font-size:10px; +} + diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/default.css b/public/plugin_assets/redmine_code_review/stylesheets/window_js/default.css index 591451723..6ab13789d 100644 --- a/public/plugin_assets/redmine_code_review/stylesheets/window_js/default.css +++ b/public/plugin_assets/redmine_code_review/stylesheets/window_js/default.css @@ -1,155 +1,155 @@ -.overlay_dialog { - background-color: #666666; - filter:alpha(opacity=60); - -moz-opacity: 0.6; - opacity: 0.6; -} - -.overlay___invisible__ { - background-color: #666666; - filter:alpha(opacity=0); - -moz-opacity: 0; - opacity: 0; -} - -.dialog_nw { - width: 9px; - height: 23px; - background: transparent url(default/top_left.gif) no-repeat 0 0; -} - -.dialog_n { - background: transparent url(default/top_mid.gif) repeat-x 0 0; - height: 23px; -} - -.dialog_ne { - width: 9px; - height: 23px; - background: transparent url(default/top_right.gif) no-repeat 0 0; -} - -.dialog_e { - width: 2px; - background: transparent url(default/center_right.gif) repeat-y 0 0; -} - -.dialog_w { - width: 2px; - background: transparent url(default/center_left.gif) repeat-y 0 0; -} - -.dialog_sw { - width: 9px; - height: 19px; - background: transparent url(default/bottom_left.gif) no-repeat 0 0; -} - -.dialog_s { - background: transparent url(default/bottom_mid.gif) repeat-x 0 0; - height: 19px; -} - -.dialog_se { - width: 9px; - height: 19px; - background: transparent url(default/bottom_right.gif) no-repeat 0 0; -} - -.dialog_sizer { - width: 9px; - height: 19px; - background: transparent url(default/sizer.gif) no-repeat 0 0; - cursor:se-resize; -} - -.dialog_close { - width: 14px; - height: 14px; - background: transparent url(default/close.gif) no-repeat 0 0; - position:absolute; - top:5px; - left:8px; - cursor:pointer; - z-index:2000; -} - -.dialog_minimize { - width: 14px; - height: 15px; - background: transparent url(default/minimize.gif) no-repeat 0 0; - position:absolute; - top:5px; - left:28px; - cursor:pointer; - z-index:2000; -} - -.dialog_maximize { - width: 14px; - height: 15px; - background: transparent url(default/maximize.gif) no-repeat 0 0; - position:absolute; - top:5px; - left:49px; - cursor:pointer; - z-index:2000; -} - -.dialog_title { - float:left; - height:14px; - font-family: Tahoma, Arial, sans-serif; - font-size:12px; - text-align:center; - width:100%; - color:#000; -} - -.dialog_content { - overflow:auto; - color: #DDD; - font-family: Tahoma, Arial, sans-serif; - font-size: 10px; - background-color:#123; -} - -.top_draggable, .bottom_draggable { - cursor:move; -} - -.status_bar { - font-size:12px; -} -.status_bar input{ - font-size:12px; -} - -.wired_frame { - display: block; - position: absolute; - border: 1px #000 dashed; -} - -/* DO NOT CHANGE THESE VALUES*/ -.dialog { - display: block; - position: absolute; -} - -.dialog table.table_window { - border-collapse: collapse; - border-spacing: 0; - width: 100%; - margin: 0px; - padding:0px; -} - -.dialog table.table_window td , .dialog table.table_window th { - padding: 0; -} - -.dialog .title_window { - -moz-user-select:none; -} - +.overlay_dialog { + background-color: #666666; + filter:alpha(opacity=60); + -moz-opacity: 0.6; + opacity: 0.6; +} + +.overlay___invisible__ { + background-color: #666666; + filter:alpha(opacity=0); + -moz-opacity: 0; + opacity: 0; +} + +.dialog_nw { + width: 9px; + height: 23px; + background: transparent url(default/top_left.gif) no-repeat 0 0; +} + +.dialog_n { + background: transparent url(default/top_mid.gif) repeat-x 0 0; + height: 23px; +} + +.dialog_ne { + width: 9px; + height: 23px; + background: transparent url(default/top_right.gif) no-repeat 0 0; +} + +.dialog_e { + width: 2px; + background: transparent url(default/center_right.gif) repeat-y 0 0; +} + +.dialog_w { + width: 2px; + background: transparent url(default/center_left.gif) repeat-y 0 0; +} + +.dialog_sw { + width: 9px; + height: 19px; + background: transparent url(default/bottom_left.gif) no-repeat 0 0; +} + +.dialog_s { + background: transparent url(default/bottom_mid.gif) repeat-x 0 0; + height: 19px; +} + +.dialog_se { + width: 9px; + height: 19px; + background: transparent url(default/bottom_right.gif) no-repeat 0 0; +} + +.dialog_sizer { + width: 9px; + height: 19px; + background: transparent url(default/sizer.gif) no-repeat 0 0; + cursor:se-resize; +} + +.dialog_close { + width: 14px; + height: 14px; + background: transparent url(default/close.gif) no-repeat 0 0; + position:absolute; + top:5px; + left:8px; + cursor:pointer; + z-index:2000; +} + +.dialog_minimize { + width: 14px; + height: 15px; + background: transparent url(default/minimize.gif) no-repeat 0 0; + position:absolute; + top:5px; + left:28px; + cursor:pointer; + z-index:2000; +} + +.dialog_maximize { + width: 14px; + height: 15px; + background: transparent url(default/maximize.gif) no-repeat 0 0; + position:absolute; + top:5px; + left:49px; + cursor:pointer; + z-index:2000; +} + +.dialog_title { + float:left; + height:14px; + font-family: Tahoma, Arial, sans-serif; + font-size:12px; + text-align:center; + width:100%; + color:#000; +} + +.dialog_content { + overflow:auto; + color: #DDD; + font-family: Tahoma, Arial, sans-serif; + font-size: 10px; + background-color:#123; +} + +.top_draggable, .bottom_draggable { + cursor:move; +} + +.status_bar { + font-size:12px; +} +.status_bar input{ + font-size:12px; +} + +.wired_frame { + display: block; + position: absolute; + border: 1px #000 dashed; +} + +/* DO NOT CHANGE THESE VALUES*/ +.dialog { + display: block; + position: absolute; +} + +.dialog table.table_window { + border-collapse: collapse; + border-spacing: 0; + width: 100%; + margin: 0px; + padding:0px; +} + +.dialog table.table_window td , .dialog table.table_window th { + padding: 0; +} + +.dialog .title_window { + -moz-user-select:none; +} + diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/iefix/iepngfix.css b/public/plugin_assets/redmine_code_review/stylesheets/window_js/iefix/iepngfix.css index 249388be5..257a1b1e3 100644 --- a/public/plugin_assets/redmine_code_review/stylesheets/window_js/iefix/iepngfix.css +++ b/public/plugin_assets/redmine_code_review/stylesheets/window_js/iefix/iepngfix.css @@ -1,3 +1,3 @@ -/* PNG fix for all themes that uses PNG images on IE */ -td, div { behavior: url(../themes/iefix/iepngfix.htc) } - +/* PNG fix for all themes that uses PNG images on IE */ +td, div { behavior: url(../themes/iefix/iepngfix.htc) } + diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/iefix/iepngfix.htc b/public/plugin_assets/redmine_code_review/stylesheets/window_js/iefix/iepngfix.htc index 9a13f32bf..a6c683b9f 100644 --- a/public/plugin_assets/redmine_code_review/stylesheets/window_js/iefix/iepngfix.htc +++ b/public/plugin_assets/redmine_code_review/stylesheets/window_js/iefix/iepngfix.htc @@ -1,54 +1,54 @@ - - - - + + + + \ No newline at end of file diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting.css b/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting.css index 0d955c3d7..95ec287a9 100644 --- a/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting.css +++ b/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting.css @@ -1,960 +1,960 @@ -.overlay___invisible__ { - background-color: #666; - filter:alpha(opacity=0); - -moz-opacity: 0; - opacity: 0; -} - -.top_draggable, .bottom_draggable { - cursor:move; -} - -.status_bar { - font-size:12px; -} -.status_bar input{ - font-size:12px; -} - -.wired_frame { - display:block; - position:absolute; - border:1px #000 dashed; -} - - - -.overlay_bluelighting { - background-color:#FFF; - filter:alpha(opacity=60); - -moz-opacity:0.6; - opacity:0.6; -} - -.bluelighting_wired_frame { - background:#FFF; - filter:alpha(opacity=60); - -moz-opacity:0.6; - opacity:0.6; -} - -.bluelighting_nw { - background:transparent url(lighting/top-left-blue.png) no-repeat 0 0; - width:9px; - height:28px; -} - -.bluelighting_n { - background:transparent url(lighting/top-middle-blue.png) repeat-x 0 0; - height:28px; -} - -.bluelighting_ne { - background:transparent url(lighting/top-right-blue.png) no-repeat 0 0; - width:15px; - height:28px; -} - -.bluelighting_w { - background:transparent url(lighting/left-blue.png) repeat-y top left; - width:9px; -} - -.bluelighting_e { - background:transparent url(lighting/right-blue.png) repeat-y top right; - width:15px; -} - -.bluelighting_sw { - background:transparent url(lighting/bottom-left-blue.png) no-repeat 0 0; - width:9px; - height:15px; -} - -.bluelighting_s { - background:transparent url(lighting/bottom-middle-blue.png) repeat-x 0 0; - height:15px; -} - -.bluelighting_se, .bluelighting_sizer { - background:transparent url(lighting/bottom-right-blue.png) no-repeat 0 0; - width:15px; - height:15px; -} - -.bluelighting_sizer { - cursor:se-resize; -} - -.bluelighting_close { - width:15px; - height:9px; - background:transparent url(lighting/button-close-blue.png) no-repeat 0 0; - position:absolute; - top:11px; - right:10px; - cursor:pointer; - z-index:1000; -} - -.bluelighting_maximize { - width:15px; - height:9px; - background:transparent url(lighting/button-maximize-blue.png) no-repeat 0 0; - position:absolute; - top:11px; - right:25px; - cursor:pointer; - z-index:1000; -} - -.bluelighting_minimize { - width:15px; - height:9px; - background:transparent url(lighting/button-minimize-blue.png) no-repeat 0 0; - position:absolute; - top:11px; - right:40px; - cursor:pointer; - z-index:1000; -} - -.bluelighting_title { - float:left; - height:14px; - font-size:14px; - font-weight:bold; - font-family:Verdana, Arial, sans-serif; - text-align:center; - margin-top:2px; - width:100%; - color:#17385B; -} - -.bluelighting_content { - overflow:auto; - color:#000; - font-family:Verdana, Arial, sans-serif; - font-size:12px; - background:#BFDBFF; -} - -/* For alert/confirm dialog */ -.bluelighting_window { - border:1px solid #F00; - background:#FFF; - padding:20px; - margin-left:auto; - margin-right:auto; - width:400px; -} - -.bluelighting_message { - font-size:12px; - text-align:center; - width:100%; - padding-bottom:10px; -} - -.bluelighting_buttons { - text-align:center; - width:100%; -} - -.bluelighting_buttons input { - border:1px solid #999; - border-top-color:#CCC; - border-left-color:#CCC; - padding:2px; - background-color:#FFF; - color:#333; - background-image:url(lighting/background_buttons.gif); - background-repeat:repeat-x; - font-family:Verdana, Arial, sans-serif; - font-size:10px; - font-weight:bold; - text-align:center; -} - -.bluelighting_progress { - float:left; - margin:auto; - text-align:center; - width:100%; - height:16px; - background:transparent url('lighting/spinner.gif') no-repeat center center -} - -/* FOR IE */ -* html .bluelighting_nw { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-left-blue.png", sizingMethod="crop"); -} - -* html .bluelighting_n { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-middle-blue.png", sizingMethod="scale"); -} - -* html .bluelighting_ne { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-right-blue.png", sizingMethod="crop"); -} - -* html .bluelighting_w { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/left-blue.png", sizingMethod="scale"); -} - -* html .bluelighting_e { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/right-blue.png", sizingMethod="scale"); -} - -* html .bluelighting_sw { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-left-blue.png", sizingMethod="crop"); -} - -* html .bluelighting_s { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-middle-blue.png", sizingMethod="scale"); -} - -* html .bluelighting_se, * html .bluelighting_sizer { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-right-blue.png", sizingMethod="crop"); -} - -* html .bluelighting_close { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-close-blue.png", sizingMethod="crop"); -} - -* html .bluelighting_minimize { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-minimize-blue.png", sizingMethod="crop"); -} - -* html .bluelighting_maximize { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-maximize-blue.png", sizingMethod="crop"); -} - -* html .bluelighting_content { - background:#B8D7FF; -} - - - -.overlay_greylighting { - background-color:#FFF; - filter:alpha(opacity=60); - -moz-opacity:0.6; - opacity:0.6; -} - -.greylighting_wired_frame { - background:#FFF; - filter:alpha(opacity=60); - -moz-opacity:0.6; - opacity:0.6; -} - -.greylighting_nw { - background:transparent url(lighting/top-left-grey.png) no-repeat 0 0; - width:9px; - height:28px; -} - -.greylighting_n { - background:transparent url(lighting/top-middle-grey.png) repeat-x 0 0; - height:28px; -} - -.greylighting_ne { - background:transparent url(lighting/top-right-grey.png) no-repeat 0 0; - width:15px; - height:28px; -} - -.greylighting_w { - background:transparent url(lighting/left-grey.png) repeat-y top left; - width:9px; -} - -.greylighting_e { - background:transparent url(lighting/right-grey.png) repeat-y top right; - width:15px; -} - -.greylighting_sw { - background:transparent url(lighting/bottom-left-grey.png) no-repeat 0 0; - width:9px; - height:15px; -} - -.greylighting_s { - background:transparent url(lighting/bottom-middle-grey.png) repeat-x 0 0; - height:15px; -} - -.greylighting_se, .greylighting_sizer { - background:transparent url(lighting/bottom-right-grey.png) no-repeat 0 0; - width:15px; - height:15px; -} - -.greylighting_sizer { - cursor:se-resize; -} - -.greylighting_close { - width:15px; - height:9px; - background:transparent url(lighting/button-close-grey.png) no-repeat 0 0; - position:absolute; - top:11px; - right:10px; - cursor:pointer; - z-index:1000; -} - -.greylighting_maximize { - width:15px; - height:9px; - background:transparent url(lighting/button-maximize-grey.png) no-repeat 0 0; - position:absolute; - top:11px; - right:25px; - cursor:pointer; - z-index:1000; -} - -.greylighting_minimize { - width:15px; - height:9px; - background:transparent url(lighting/button-minimize-grey.png) no-repeat 0 0; - position:absolute; - top:11px; - right:40px; - cursor:pointer; - z-index:1000; -} - -.greylighting_title { - float:left; - height:14px; - font-size:14px; - font-weight:bold; - font-family:Verdana, Arial, sans-serif; - text-align:center; - margin-top:2px; - width:100%; - color:#525252; -} - -.greylighting_content { - overflow:auto; - color:#000; - font-family:Verdana, Arial, sans-serif; - font-size:12px; - background:#CDCDCD; -} - -/* For alert/confirm dialog */ -.greylighting_window { - border:1px solid #F00; - background:#FFF; - padding:20px; - margin-left:auto; - margin-right:auto; - width:400px; -} - -.greylighting_message { - font-size:12px; - text-align:center; - width:100%; - padding-bottom:10px; -} - -.greylighting_buttons { - text-align:center; - width:100%; -} - -.greylighting_buttons input { - border:1px solid #999; - border-top-color:#CCC; - border-left-color:#CCC; - padding:2px; - background-color:#FFF; - color:#333; - background-image:url(lighting/background_buttons.gif); - background-repeat:repeat-x; - font-family:Verdana, Arial, sans-serif; - font-size:10px; - font-weight:bold; - text-align:center; -} - -.greylighting_progress { - float:left; - margin:auto; - text-align:center; - width:100%; - height:16px; - background:transparent url('lighting/spinner.gif') no-repeat center center -} - -/* FOR IE */ -* html .greylighting_nw { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-left-grey.png", sizingMethod="crop"); -} - -* html .greylighting_n { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-middle-grey.png", sizingMethod="scale"); -} - -* html .greylighting_ne { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-right-grey.png", sizingMethod="crop"); -} - -* html .greylighting_w { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/left-grey.png", sizingMethod="scale"); -} - -* html .greylighting_e { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/right-grey.png", sizingMethod="scale"); -} - -* html .greylighting_sw { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-left-grey.png", sizingMethod="crop"); -} - -* html .greylighting_s { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-middle-grey.png", sizingMethod="scale"); -} - -* html greylighting_se, * html .greylighting_sizer { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-right-grey.png", sizingMethod="crop"); -} - -* html .greylighting_close { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-close-grey.png", sizingMethod="crop"); -} - -* html .greylighting_minimize { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-minimize-grey.png", sizingMethod="crop"); -} - -* html .greylighting_maximize { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-maximize-grey.png", sizingMethod="crop"); -} - -* html .greylighting_content { - background:#C7C7C7; -} - - - -.overlay_greenlighting { - background-color:#FFF; - filter:alpha(opacity=60); - -moz-opacity:0.6; - opacity:0.6; -} - -.greenlighting_wired_frame { - background:#FFF; - filter:alpha(opacity=60); - -moz-opacity:0.6; - opacity:0.6; -} - -.greenlighting_nw { - background:transparent url(lighting/top-left-green.png) no-repeat 0 0; - width:9px; - height:28px; -} - -.greenlighting_n { - background:transparent url(lighting/top-middle-green.png) repeat-x 0 0; - height:28px; -} - -.greenlighting_ne { - background:transparent url(lighting/top-right-green.png) no-repeat 0 0; - width:15px; - height:28px; -} - -.greenlighting_w { - background:transparent url(lighting/left-green.png) repeat-y top left; - width:9px; -} - -.greenlighting_e { - background:transparent url(lighting/right-green.png) repeat-y top right; - width:15px; -} - -.greenlighting_sw { - background:transparent url(lighting/bottom-left-green.png) no-repeat 0 0; - width:9px; - height:15px; -} - -.greenlighting_s { - background:transparent url(lighting/bottom-middle-green.png) repeat-x 0 0; - height:15px; -} - -.greenlighting_se, .greenlighting_sizer { - background:transparent url(lighting/bottom-right-green.png) no-repeat 0 0; - width:15px; - height:15px; -} - -.greenlighting_sizer { - cursor:se-resize; -} - -.greenlighting_close { - width:15px; - height:9px; - background:transparent url(lighting/button-close-green.png) no-repeat 0 0; - position:absolute; - top:11px; - right:10px; - cursor:pointer; - z-index:1000; -} - -.greenlighting_maximize { - width:15px; - height:9px; - background:transparent url(lighting/button-maximize-green.png) no-repeat 0 0; - position:absolute; - top:11px; - right:25px; - cursor:pointer; - z-index:1000; -} - -.greenlighting_minimize { - width:15px; - height:9px; - background:transparent url(lighting/button-minimize-green.png) no-repeat 0 0; - position:absolute; - top:11px; - right:40px; - cursor:pointer; - z-index:1000; -} - -.greenlighting_title { - float:left; - height:14px; - font-size:14px; - font-weight:bold; - font-family:Verdana, Arial, sans-serif; - text-align:center; - margin-top:2px; - width:100%; - color:#2A6002; -} - -.greenlighting_content { - overflow:auto; - color:#000; - font-family:Verdana, Arial, sans-serif; - font-size:12px; - background:#ACFCAF; -} - -/* For alert/confirm dialog */ -.greenlighting_window { - border:1px solid #F00; - background:#FFF; - padding:20px; - margin-left:auto; - margin-right:auto; - width:400px; -} - -.greenlighting_message { - font-size:12px; - text-align:center; - width:100%; - padding-bottom:10px; -} - -.greenlighting_buttons { - text-align:center; - width:100%; -} - -.greenlighting_buttons input { - border:1px solid #999; - border-top-color:#CCC; - border-left-color:#CCC; - padding:2px; - background-color:#FFF; - color:#333; - background-image:url(lighting/background_buttons.gif); - background-repeat:repeat-x; - font-family:Verdana, Arial, sans-serif; - font-size:10px; - font-weight:bold; - text-align:center; -} - -.greenlighting_progress { - float:left; - margin:auto; - text-align:center; - width:100%; - height:16px; - background:transparent url('lighting/spinner.gif') no-repeat center center -} - -/* FOR IE */ -* html .greenlighting_nw { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-left-green.png", sizingMethod="crop"); -} - -* html .greenlighting_n { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-middle-green.png", sizingMethod="scale"); -} - -* html .greenlighting_ne { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-right-green.png", sizingMethod="crop"); -} - -* html .greenlighting_w { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/left-green.png", sizingMethod="scale"); -} - -* html .greenlighting_e { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/right-green.png", sizingMethod="scale"); -} - -* html .greenlighting_sw { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-left-green.png", sizingMethod="crop"); -} - -* html .greenlighting_s { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-middle-green.png", sizingMethod="scale"); -} - -* html greenlighting_se, * html .greenlighting_sizer { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-right-green.png", sizingMethod="crop"); -} - -* html .greenlighting_close { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-close-green.png", sizingMethod="crop"); -} - -* html .greenlighting_minimize { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-minimize-green.png", sizingMethod="crop"); -} - -* html .greenlighting_maximize { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-maximize-green.png", sizingMethod="crop"); -} - -* html .greenlighting_content { - background:#A4FCA7; -} - - - -.overlay_darkbluelighting { - background-color:#FFF; - filter:alpha(opacity=60); - -moz-opacity:0.6; - opacity:0.6; -} - -.darkbluelighting_wired_frame { - background:#FFF; - filter:alpha(opacity=60); - -moz-opacity:0.6; - opacity:0.6; -} - -.darkbluelighting_nw { - background:transparent url(lighting/top-left-darkblue.png) no-repeat 0 0; - width:9px; - height:28px; -} - -.darkbluelighting_n { - background:transparent url(lighting/top-middle-darkblue.png) repeat-x 0 0; - height:28px; -} - -.darkbluelighting_ne { - background:transparent url(lighting/top-right-darkblue.png) no-repeat 0 0; - width:15px; - height:28px; -} - -.darkbluelighting_w { - background:transparent url(lighting/left-darkblue.png) repeat-y top left; - width:9px; -} - -.darkbluelighting_e { - background:transparent url(lighting/right-darkblue.png) repeat-y top right; - width:15px; -} - -.darkbluelighting_sw { - background:transparent url(lighting/bottom-left-darkblue.png) no-repeat 0 0; - width:9px; - height:15px; -} - -.darkbluelighting_s { - background:transparent url(lighting/bottom-middle-darkblue.png) repeat-x 0 0; - height:15px; -} - -.darkbluelighting_se, .darkbluelighting_sizer { - background:transparent url(lighting/bottom-right-darkblue.png) no-repeat 0 0; - width:15px; - height:15px; -} - -.darkbluelighting_sizer { - cursor:se-resize; -} - -.darkbluelighting_close { - width:15px; - height:9px; - background:transparent url(lighting/button-close-darkblue.png) no-repeat 0 0; - position:absolute; - top:11px; - right:10px; - cursor:pointer; - z-index:1000; -} - -.darkbluelighting_maximize { - width:15px; - height:9px; - background:transparent url(lighting/button-maximize-darkblue.png) no-repeat 0 0; - position:absolute; - top:11px; - right:25px; - cursor:pointer; - z-index:1000; -} - -.darkbluelighting_minimize { - width:15px; - height:9px; - background:transparent url(lighting/button-minimize-darkblue.png) no-repeat 0 0; - position:absolute; - top:11px; - right:40px; - cursor:pointer; - z-index:1000; -} - -.darkbluelighting_title { - float:left; - height:14px; - font-size:14px; - font-weight:bold; - font-family:Verdana, Arial, sans-serif; - text-align:center; - margin-top:2px; - width:100%; - color:#E4EFFD; -} - -.darkbluelighting_content { - overflow:auto; - color:#FFF; - font-family:Verdana, Arial, sans-serif; - font-size:12px; - background:#0413C0; -} - -/* For alert/confirm dialog */ -.darkbluelighting_window { - border:1px solid #F00; - background:#FFF; - padding:20px; - margin-left:auto; - margin-right:auto; - width:400px; -} - -.darkbluelighting_message { - font-size:12px; - text-align:center; - width:100%; - padding-bottom:10px; -} - -.darkbluelighting_buttons { - text-align:center; - width:100%; -} - -.darkbluelighting_buttons input { - border:1px solid #999; - border-top-color:#CCC; - border-left-color:#CCC; - padding:2px; - background-color:#FFF; - color:#333; - background-image:url(lighting/background_buttons.gif); - background-repeat:repeat-x; - font-family:Verdana, Arial, sans-serif; - font-size:10px; - font-weight:bold; - text-align:center; -} - -.darkbluelighting_progress { - float:left; - margin:auto; - text-align:center; - width:100%; - height:16px; - background:transparent url('lighting/spinner.gif') no-repeat center center -} - -/* FOR IE */ -* html .darkbluelighting_nw { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-left-darkblue.png", sizingMethod="crop"); -} - -* html .darkbluelighting_n { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-middle-darkblue.png", sizingMethod="scale"); -} - -* html .darkbluelighting_ne { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-right-darkblue.png", sizingMethod="crop"); -} - -* html .darkbluelighting_w { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/left-darkblue.png", sizingMethod="scale"); -} - -* html .darkbluelighting_e { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/right-darkblue.png", sizingMethod="scale"); -} - -* html .darkbluelighting_sw { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-left-darkblue.png", sizingMethod="crop"); -} - -* html .darkbluelighting_s { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-middle-darkblue.png", sizingMethod="scale"); -} - -* html darkbluelighting_se, * html .darkbluelighting_sizer { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-right-darkblue.png", sizingMethod="crop"); -} - -* html .darkbluelighting_close { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-close-darkblue.png", sizingMethod="crop"); -} - -* html .darkbluelighting_minimize { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-minimize-darkblue.png", sizingMethod="crop"); -} - -* html .darkbluelighting_maximize { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-maximize-darkblue.png", sizingMethod="crop"); -} - -* html .darkbluelighting_content { - background:#020EBA; -} - +.overlay___invisible__ { + background-color: #666; + filter:alpha(opacity=0); + -moz-opacity: 0; + opacity: 0; +} + +.top_draggable, .bottom_draggable { + cursor:move; +} + +.status_bar { + font-size:12px; +} +.status_bar input{ + font-size:12px; +} + +.wired_frame { + display:block; + position:absolute; + border:1px #000 dashed; +} + + + +.overlay_bluelighting { + background-color:#FFF; + filter:alpha(opacity=60); + -moz-opacity:0.6; + opacity:0.6; +} + +.bluelighting_wired_frame { + background:#FFF; + filter:alpha(opacity=60); + -moz-opacity:0.6; + opacity:0.6; +} + +.bluelighting_nw { + background:transparent url(lighting/top-left-blue.png) no-repeat 0 0; + width:9px; + height:28px; +} + +.bluelighting_n { + background:transparent url(lighting/top-middle-blue.png) repeat-x 0 0; + height:28px; +} + +.bluelighting_ne { + background:transparent url(lighting/top-right-blue.png) no-repeat 0 0; + width:15px; + height:28px; +} + +.bluelighting_w { + background:transparent url(lighting/left-blue.png) repeat-y top left; + width:9px; +} + +.bluelighting_e { + background:transparent url(lighting/right-blue.png) repeat-y top right; + width:15px; +} + +.bluelighting_sw { + background:transparent url(lighting/bottom-left-blue.png) no-repeat 0 0; + width:9px; + height:15px; +} + +.bluelighting_s { + background:transparent url(lighting/bottom-middle-blue.png) repeat-x 0 0; + height:15px; +} + +.bluelighting_se, .bluelighting_sizer { + background:transparent url(lighting/bottom-right-blue.png) no-repeat 0 0; + width:15px; + height:15px; +} + +.bluelighting_sizer { + cursor:se-resize; +} + +.bluelighting_close { + width:15px; + height:9px; + background:transparent url(lighting/button-close-blue.png) no-repeat 0 0; + position:absolute; + top:11px; + right:10px; + cursor:pointer; + z-index:1000; +} + +.bluelighting_maximize { + width:15px; + height:9px; + background:transparent url(lighting/button-maximize-blue.png) no-repeat 0 0; + position:absolute; + top:11px; + right:25px; + cursor:pointer; + z-index:1000; +} + +.bluelighting_minimize { + width:15px; + height:9px; + background:transparent url(lighting/button-minimize-blue.png) no-repeat 0 0; + position:absolute; + top:11px; + right:40px; + cursor:pointer; + z-index:1000; +} + +.bluelighting_title { + float:left; + height:14px; + font-size:14px; + font-weight:bold; + font-family:Verdana, Arial, sans-serif; + text-align:center; + margin-top:2px; + width:100%; + color:#17385B; +} + +.bluelighting_content { + overflow:auto; + color:#000; + font-family:Verdana, Arial, sans-serif; + font-size:12px; + background:#BFDBFF; +} + +/* For alert/confirm dialog */ +.bluelighting_window { + border:1px solid #F00; + background:#FFF; + padding:20px; + margin-left:auto; + margin-right:auto; + width:400px; +} + +.bluelighting_message { + font-size:12px; + text-align:center; + width:100%; + padding-bottom:10px; +} + +.bluelighting_buttons { + text-align:center; + width:100%; +} + +.bluelighting_buttons input { + border:1px solid #999; + border-top-color:#CCC; + border-left-color:#CCC; + padding:2px; + background-color:#FFF; + color:#333; + background-image:url(lighting/background_buttons.gif); + background-repeat:repeat-x; + font-family:Verdana, Arial, sans-serif; + font-size:10px; + font-weight:bold; + text-align:center; +} + +.bluelighting_progress { + float:left; + margin:auto; + text-align:center; + width:100%; + height:16px; + background:transparent url('lighting/spinner.gif') no-repeat center center +} + +/* FOR IE */ +* html .bluelighting_nw { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-left-blue.png", sizingMethod="crop"); +} + +* html .bluelighting_n { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-middle-blue.png", sizingMethod="scale"); +} + +* html .bluelighting_ne { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-right-blue.png", sizingMethod="crop"); +} + +* html .bluelighting_w { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/left-blue.png", sizingMethod="scale"); +} + +* html .bluelighting_e { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/right-blue.png", sizingMethod="scale"); +} + +* html .bluelighting_sw { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-left-blue.png", sizingMethod="crop"); +} + +* html .bluelighting_s { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-middle-blue.png", sizingMethod="scale"); +} + +* html .bluelighting_se, * html .bluelighting_sizer { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-right-blue.png", sizingMethod="crop"); +} + +* html .bluelighting_close { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-close-blue.png", sizingMethod="crop"); +} + +* html .bluelighting_minimize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-minimize-blue.png", sizingMethod="crop"); +} + +* html .bluelighting_maximize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-maximize-blue.png", sizingMethod="crop"); +} + +* html .bluelighting_content { + background:#B8D7FF; +} + + + +.overlay_greylighting { + background-color:#FFF; + filter:alpha(opacity=60); + -moz-opacity:0.6; + opacity:0.6; +} + +.greylighting_wired_frame { + background:#FFF; + filter:alpha(opacity=60); + -moz-opacity:0.6; + opacity:0.6; +} + +.greylighting_nw { + background:transparent url(lighting/top-left-grey.png) no-repeat 0 0; + width:9px; + height:28px; +} + +.greylighting_n { + background:transparent url(lighting/top-middle-grey.png) repeat-x 0 0; + height:28px; +} + +.greylighting_ne { + background:transparent url(lighting/top-right-grey.png) no-repeat 0 0; + width:15px; + height:28px; +} + +.greylighting_w { + background:transparent url(lighting/left-grey.png) repeat-y top left; + width:9px; +} + +.greylighting_e { + background:transparent url(lighting/right-grey.png) repeat-y top right; + width:15px; +} + +.greylighting_sw { + background:transparent url(lighting/bottom-left-grey.png) no-repeat 0 0; + width:9px; + height:15px; +} + +.greylighting_s { + background:transparent url(lighting/bottom-middle-grey.png) repeat-x 0 0; + height:15px; +} + +.greylighting_se, .greylighting_sizer { + background:transparent url(lighting/bottom-right-grey.png) no-repeat 0 0; + width:15px; + height:15px; +} + +.greylighting_sizer { + cursor:se-resize; +} + +.greylighting_close { + width:15px; + height:9px; + background:transparent url(lighting/button-close-grey.png) no-repeat 0 0; + position:absolute; + top:11px; + right:10px; + cursor:pointer; + z-index:1000; +} + +.greylighting_maximize { + width:15px; + height:9px; + background:transparent url(lighting/button-maximize-grey.png) no-repeat 0 0; + position:absolute; + top:11px; + right:25px; + cursor:pointer; + z-index:1000; +} + +.greylighting_minimize { + width:15px; + height:9px; + background:transparent url(lighting/button-minimize-grey.png) no-repeat 0 0; + position:absolute; + top:11px; + right:40px; + cursor:pointer; + z-index:1000; +} + +.greylighting_title { + float:left; + height:14px; + font-size:14px; + font-weight:bold; + font-family:Verdana, Arial, sans-serif; + text-align:center; + margin-top:2px; + width:100%; + color:#525252; +} + +.greylighting_content { + overflow:auto; + color:#000; + font-family:Verdana, Arial, sans-serif; + font-size:12px; + background:#CDCDCD; +} + +/* For alert/confirm dialog */ +.greylighting_window { + border:1px solid #F00; + background:#FFF; + padding:20px; + margin-left:auto; + margin-right:auto; + width:400px; +} + +.greylighting_message { + font-size:12px; + text-align:center; + width:100%; + padding-bottom:10px; +} + +.greylighting_buttons { + text-align:center; + width:100%; +} + +.greylighting_buttons input { + border:1px solid #999; + border-top-color:#CCC; + border-left-color:#CCC; + padding:2px; + background-color:#FFF; + color:#333; + background-image:url(lighting/background_buttons.gif); + background-repeat:repeat-x; + font-family:Verdana, Arial, sans-serif; + font-size:10px; + font-weight:bold; + text-align:center; +} + +.greylighting_progress { + float:left; + margin:auto; + text-align:center; + width:100%; + height:16px; + background:transparent url('lighting/spinner.gif') no-repeat center center +} + +/* FOR IE */ +* html .greylighting_nw { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-left-grey.png", sizingMethod="crop"); +} + +* html .greylighting_n { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-middle-grey.png", sizingMethod="scale"); +} + +* html .greylighting_ne { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-right-grey.png", sizingMethod="crop"); +} + +* html .greylighting_w { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/left-grey.png", sizingMethod="scale"); +} + +* html .greylighting_e { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/right-grey.png", sizingMethod="scale"); +} + +* html .greylighting_sw { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-left-grey.png", sizingMethod="crop"); +} + +* html .greylighting_s { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-middle-grey.png", sizingMethod="scale"); +} + +* html greylighting_se, * html .greylighting_sizer { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-right-grey.png", sizingMethod="crop"); +} + +* html .greylighting_close { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-close-grey.png", sizingMethod="crop"); +} + +* html .greylighting_minimize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-minimize-grey.png", sizingMethod="crop"); +} + +* html .greylighting_maximize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-maximize-grey.png", sizingMethod="crop"); +} + +* html .greylighting_content { + background:#C7C7C7; +} + + + +.overlay_greenlighting { + background-color:#FFF; + filter:alpha(opacity=60); + -moz-opacity:0.6; + opacity:0.6; +} + +.greenlighting_wired_frame { + background:#FFF; + filter:alpha(opacity=60); + -moz-opacity:0.6; + opacity:0.6; +} + +.greenlighting_nw { + background:transparent url(lighting/top-left-green.png) no-repeat 0 0; + width:9px; + height:28px; +} + +.greenlighting_n { + background:transparent url(lighting/top-middle-green.png) repeat-x 0 0; + height:28px; +} + +.greenlighting_ne { + background:transparent url(lighting/top-right-green.png) no-repeat 0 0; + width:15px; + height:28px; +} + +.greenlighting_w { + background:transparent url(lighting/left-green.png) repeat-y top left; + width:9px; +} + +.greenlighting_e { + background:transparent url(lighting/right-green.png) repeat-y top right; + width:15px; +} + +.greenlighting_sw { + background:transparent url(lighting/bottom-left-green.png) no-repeat 0 0; + width:9px; + height:15px; +} + +.greenlighting_s { + background:transparent url(lighting/bottom-middle-green.png) repeat-x 0 0; + height:15px; +} + +.greenlighting_se, .greenlighting_sizer { + background:transparent url(lighting/bottom-right-green.png) no-repeat 0 0; + width:15px; + height:15px; +} + +.greenlighting_sizer { + cursor:se-resize; +} + +.greenlighting_close { + width:15px; + height:9px; + background:transparent url(lighting/button-close-green.png) no-repeat 0 0; + position:absolute; + top:11px; + right:10px; + cursor:pointer; + z-index:1000; +} + +.greenlighting_maximize { + width:15px; + height:9px; + background:transparent url(lighting/button-maximize-green.png) no-repeat 0 0; + position:absolute; + top:11px; + right:25px; + cursor:pointer; + z-index:1000; +} + +.greenlighting_minimize { + width:15px; + height:9px; + background:transparent url(lighting/button-minimize-green.png) no-repeat 0 0; + position:absolute; + top:11px; + right:40px; + cursor:pointer; + z-index:1000; +} + +.greenlighting_title { + float:left; + height:14px; + font-size:14px; + font-weight:bold; + font-family:Verdana, Arial, sans-serif; + text-align:center; + margin-top:2px; + width:100%; + color:#2A6002; +} + +.greenlighting_content { + overflow:auto; + color:#000; + font-family:Verdana, Arial, sans-serif; + font-size:12px; + background:#ACFCAF; +} + +/* For alert/confirm dialog */ +.greenlighting_window { + border:1px solid #F00; + background:#FFF; + padding:20px; + margin-left:auto; + margin-right:auto; + width:400px; +} + +.greenlighting_message { + font-size:12px; + text-align:center; + width:100%; + padding-bottom:10px; +} + +.greenlighting_buttons { + text-align:center; + width:100%; +} + +.greenlighting_buttons input { + border:1px solid #999; + border-top-color:#CCC; + border-left-color:#CCC; + padding:2px; + background-color:#FFF; + color:#333; + background-image:url(lighting/background_buttons.gif); + background-repeat:repeat-x; + font-family:Verdana, Arial, sans-serif; + font-size:10px; + font-weight:bold; + text-align:center; +} + +.greenlighting_progress { + float:left; + margin:auto; + text-align:center; + width:100%; + height:16px; + background:transparent url('lighting/spinner.gif') no-repeat center center +} + +/* FOR IE */ +* html .greenlighting_nw { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-left-green.png", sizingMethod="crop"); +} + +* html .greenlighting_n { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-middle-green.png", sizingMethod="scale"); +} + +* html .greenlighting_ne { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-right-green.png", sizingMethod="crop"); +} + +* html .greenlighting_w { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/left-green.png", sizingMethod="scale"); +} + +* html .greenlighting_e { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/right-green.png", sizingMethod="scale"); +} + +* html .greenlighting_sw { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-left-green.png", sizingMethod="crop"); +} + +* html .greenlighting_s { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-middle-green.png", sizingMethod="scale"); +} + +* html greenlighting_se, * html .greenlighting_sizer { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-right-green.png", sizingMethod="crop"); +} + +* html .greenlighting_close { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-close-green.png", sizingMethod="crop"); +} + +* html .greenlighting_minimize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-minimize-green.png", sizingMethod="crop"); +} + +* html .greenlighting_maximize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-maximize-green.png", sizingMethod="crop"); +} + +* html .greenlighting_content { + background:#A4FCA7; +} + + + +.overlay_darkbluelighting { + background-color:#FFF; + filter:alpha(opacity=60); + -moz-opacity:0.6; + opacity:0.6; +} + +.darkbluelighting_wired_frame { + background:#FFF; + filter:alpha(opacity=60); + -moz-opacity:0.6; + opacity:0.6; +} + +.darkbluelighting_nw { + background:transparent url(lighting/top-left-darkblue.png) no-repeat 0 0; + width:9px; + height:28px; +} + +.darkbluelighting_n { + background:transparent url(lighting/top-middle-darkblue.png) repeat-x 0 0; + height:28px; +} + +.darkbluelighting_ne { + background:transparent url(lighting/top-right-darkblue.png) no-repeat 0 0; + width:15px; + height:28px; +} + +.darkbluelighting_w { + background:transparent url(lighting/left-darkblue.png) repeat-y top left; + width:9px; +} + +.darkbluelighting_e { + background:transparent url(lighting/right-darkblue.png) repeat-y top right; + width:15px; +} + +.darkbluelighting_sw { + background:transparent url(lighting/bottom-left-darkblue.png) no-repeat 0 0; + width:9px; + height:15px; +} + +.darkbluelighting_s { + background:transparent url(lighting/bottom-middle-darkblue.png) repeat-x 0 0; + height:15px; +} + +.darkbluelighting_se, .darkbluelighting_sizer { + background:transparent url(lighting/bottom-right-darkblue.png) no-repeat 0 0; + width:15px; + height:15px; +} + +.darkbluelighting_sizer { + cursor:se-resize; +} + +.darkbluelighting_close { + width:15px; + height:9px; + background:transparent url(lighting/button-close-darkblue.png) no-repeat 0 0; + position:absolute; + top:11px; + right:10px; + cursor:pointer; + z-index:1000; +} + +.darkbluelighting_maximize { + width:15px; + height:9px; + background:transparent url(lighting/button-maximize-darkblue.png) no-repeat 0 0; + position:absolute; + top:11px; + right:25px; + cursor:pointer; + z-index:1000; +} + +.darkbluelighting_minimize { + width:15px; + height:9px; + background:transparent url(lighting/button-minimize-darkblue.png) no-repeat 0 0; + position:absolute; + top:11px; + right:40px; + cursor:pointer; + z-index:1000; +} + +.darkbluelighting_title { + float:left; + height:14px; + font-size:14px; + font-weight:bold; + font-family:Verdana, Arial, sans-serif; + text-align:center; + margin-top:2px; + width:100%; + color:#E4EFFD; +} + +.darkbluelighting_content { + overflow:auto; + color:#FFF; + font-family:Verdana, Arial, sans-serif; + font-size:12px; + background:#0413C0; +} + +/* For alert/confirm dialog */ +.darkbluelighting_window { + border:1px solid #F00; + background:#FFF; + padding:20px; + margin-left:auto; + margin-right:auto; + width:400px; +} + +.darkbluelighting_message { + font-size:12px; + text-align:center; + width:100%; + padding-bottom:10px; +} + +.darkbluelighting_buttons { + text-align:center; + width:100%; +} + +.darkbluelighting_buttons input { + border:1px solid #999; + border-top-color:#CCC; + border-left-color:#CCC; + padding:2px; + background-color:#FFF; + color:#333; + background-image:url(lighting/background_buttons.gif); + background-repeat:repeat-x; + font-family:Verdana, Arial, sans-serif; + font-size:10px; + font-weight:bold; + text-align:center; +} + +.darkbluelighting_progress { + float:left; + margin:auto; + text-align:center; + width:100%; + height:16px; + background:transparent url('lighting/spinner.gif') no-repeat center center +} + +/* FOR IE */ +* html .darkbluelighting_nw { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-left-darkblue.png", sizingMethod="crop"); +} + +* html .darkbluelighting_n { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-middle-darkblue.png", sizingMethod="scale"); +} + +* html .darkbluelighting_ne { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-right-darkblue.png", sizingMethod="crop"); +} + +* html .darkbluelighting_w { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/left-darkblue.png", sizingMethod="scale"); +} + +* html .darkbluelighting_e { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/right-darkblue.png", sizingMethod="scale"); +} + +* html .darkbluelighting_sw { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-left-darkblue.png", sizingMethod="crop"); +} + +* html .darkbluelighting_s { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-middle-darkblue.png", sizingMethod="scale"); +} + +* html darkbluelighting_se, * html .darkbluelighting_sizer { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-right-darkblue.png", sizingMethod="crop"); +} + +* html .darkbluelighting_close { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-close-darkblue.png", sizingMethod="crop"); +} + +* html .darkbluelighting_minimize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-minimize-darkblue.png", sizingMethod="crop"); +} + +* html .darkbluelighting_maximize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-maximize-darkblue.png", sizingMethod="crop"); +} + +* html .darkbluelighting_content { + background:#020EBA; +} + diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/pngbehavior.htc b/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/pngbehavior.htc index 92248c665..36ea182e7 100644 --- a/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/pngbehavior.htc +++ b/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/pngbehavior.htc @@ -1,67 +1,67 @@ - - - - - <% if user_activity.act_type == "ProjectCreateInfo" %> + <% if user_activity.act_type == "Project" %> <%= render :partial => 'project_create', :locals => {:activity => user_activity,:user_activity_id =>user_activity.id} %> <% else %> <% act= user_activity.act %> @@ -94,7 +94,7 @@ <%# end %> <% when 'Message' %> <%= render :partial => 'project_message', :locals => {:activity => act,:user_activity_id =>user_activity.id,:is_course=>0,:is_board=>0} %> - <% when 'ProjectCreateInfo'%> + <% when 'Project'%> <%# cache (act) do %> <%= render :partial => 'project_create', :locals => {:activity => act,:user_activity_id =>user_activity.id} %> <%# end %> diff --git a/db/migrate/20160519070718_change_user_activities_data.rb b/db/migrate/20160519070718_change_user_activities_data.rb new file mode 100644 index 000000000..1a1bfb827 --- /dev/null +++ b/db/migrate/20160519070718_change_user_activities_data.rb @@ -0,0 +1,9 @@ +class ChangeUserActivitiesData < ActiveRecord::Migration + def up + execute("update user_activities set act_type = 'Project' where act_type = 'ProjectCreateInfo'") + execute("update org_activities set org_act_type = 'Project' where org_act_type = 'ProjectCreateInfo'") + end + + def down + end +end diff --git a/db/schema.rb b/db/schema.rb index 43153fb76..9c4b4b333 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,8 @@ # # It's strongly recommended to check this file into your version control system. -ActiveRecord::Schema.define(:version => 20160511055221) do +ActiveRecord::Schema.define(:version => 20160519070718) do + create_table "activities", :force => true do |t| t.integer "act_id", :null => false t.string "act_type", :null => false From 3ebef0eae239955a499315a859054caeb19b1941 Mon Sep 17 00:00:00 2001 From: cxt Date: Thu, 19 May 2016 15:57:20 +0800 Subject: [PATCH 042/668] =?UTF-8?q?=E6=B6=88=E6=81=AF=E9=80=9A=E7=9F=A5?= =?UTF-8?q?=E4=B8=AD=E7=94=B3=E8=AF=B7=E5=BC=95=E7=94=A8=E4=BD=9C=E4=B8=9A?= =?UTF-8?q?=E7=9A=84=E7=94=A8=E6=88=B7=E7=82=B9=E5=87=BB=E7=94=B3=E8=AF=B7?= =?UTF-8?q?=E7=9A=84=E6=B6=88=E6=81=AF=E6=89=93=E5=BC=80=E6=B2=A1=E6=9C=89?= =?UTF-8?q?=E6=9D=83=E9=99=90=E8=AE=BF=E9=97=AE=E7=9A=84=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/users/_user_message_course.html.erb | 8 ++++++-- public/stylesheets/new_user.css | 1 + 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/app/views/users/_user_message_course.html.erb b/app/views/users/_user_message_course.html.erb index bab7bb5ec..d46c45593 100644 --- a/app/views/users/_user_message_course.html.erb +++ b/app/views/users/_user_message_course.html.erb @@ -240,14 +240,18 @@
          • <%= link_to ma.course_message.user.show_name, user_path(ma.course_message.user), :class => "newsBlue homepageNewsPublisher", :target => '_blank' %> - "><%= ma.apply_result == 1 ? '同意' : '拒绝'%>引用作业: + <%= ma.apply_result == 1 ? '同意' : '拒绝'%>引用作业:
          • <% link_str = ma.apply_result == 1 ? '您申请引用作业"'+HomeworkCommon.find(ma.course_message_id).name+'"的申请已通过' : '您申请引用作业"'+HomeworkCommon.find(ma.course_message_id).name+'"的申请被拒绝' %> - <%= link_to link_str, student_work_index_path(:homework => ma.course_message.id), :title => link_str,:class => "#{ma.viewed == 0 ? "newsBlack" : "newsGrey "}", :target => '_blank' %> + <% if User.current.member_of_course?(ma.course_message.course) || User.current.admin? || ma.course_message.is_open == 1 %> + <%= link_to link_str, student_work_index_path(:homework => ma.course_message.id), :title => link_str,:class => "#{ma.viewed == 0 ? "newsBlack" : "newsGrey "}", :target => '_blank' %> + <% else %> + <%=link_str %> + <% end %> diff --git a/public/stylesheets/new_user.css b/public/stylesheets/new_user.css index 44e64e9ab..89712c89f 100644 --- a/public/stylesheets/new_user.css +++ b/public/stylesheets/new_user.css @@ -637,6 +637,7 @@ a.replyGrey1:hover {color:#4b4b4b;} a.newsBlue {color:#269ac9;} a.newsBlue:hover {color:#297fb8;} a.newsBlack {color:#4b4b4b; font-size:13px; font-weight:bold} +span.newsBlack {color:#4b4b4b; font-size:13px; font-weight:bold} a.menuGrey {color:#808080;} a.menuGrey:hover {color:#fe7d68;} .navSearchTypeBox {width:368px; height:35px; position:absolute; border:1px solid #e1e1e1; background-color:#ffffff; padding-left:10px; display:none; color:#3e3e3e; font-size:14px;} From 984f7067224510d98040d490d78d6cc838a46eb4 Mon Sep 17 00:00:00 2001 From: huang Date: Thu, 19 May 2016 15:59:59 +0800 Subject: [PATCH 043/668] =?UTF-8?q?=E5=8F=AF=E5=8F=91=E9=80=81=E6=9D=83?= =?UTF-8?q?=E9=99=90=E6=8E=A7=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/attachment.rb | 5 ++++ app/views/users/_resources_list.html.erb | 34 +++++++++++++++--------- 2 files changed, 27 insertions(+), 12 deletions(-) diff --git a/app/models/attachment.rb b/app/models/attachment.rb index 72205fdc5..b7ec264fd 100644 --- a/app/models/attachment.rb +++ b/app/models/attachment.rb @@ -140,6 +140,11 @@ class Attachment < ActiveRecord::Base } ) end + + def get_apply_resource_status attachment_id, author_id + ApplyResource.where("attachment_id =? and apply_user_id =?", attachment_id, author_id).first.try(:status) + end + # add by nwb # 公开的项目id列表 def self.public_project_id diff --git a/app/views/users/_resources_list.html.erb b/app/views/users/_resources_list.html.erb index 63ef92667..252798227 100644 --- a/app/views/users/_resources_list.html.erb +++ b/app/views/users/_resources_list.html.erb @@ -16,7 +16,7 @@ <% end %>
          • - <% if attach.is_public == 0 && @type == "6" && attach.author != User.current %> + <% if attach.is_public == 0 && (@type == "6" || @type == "2") && attach.author != User.current %> <% ah = attach.get_status_by_attach(User.current.id) %> <% if ah.nil? %> <%= link_to("请求分享", apply_resource_user_path(User.current.id, :attachment_id => attach.id), :class => 'green_btn_share c_white', :remote => true) %> @@ -39,6 +39,8 @@
          • <%= get_resource_type(attach.container_type)%>
          • +
          • <%= attach.is_public %>
          • +
          • <%= attach.get_apply_resource_status(attach.id, attach.author_id) %>
          • <%= attach.id %>
          @@ -87,19 +89,27 @@ document.oncontextmenu = function() {return true;} line.children().css("background-color",'white'); id = line.children().last().html(); - if (lastSendType === '2'){ //如果已经发送过一次了,那么就应该沿用上次发送的类型。 - $.ajax({ - type: 'get', - url: '<%= search_user_project_user_path(User.current.id) %>' + "?send_id=" + id + "&type=<%= @type %>", - data:{send_type:'file'} - }); + is_public = line.children().eq(11).html(); + user_id = line.children().eq(6).html(); + apply_status = line.children().eq(12).html(); + if(is_public == 0 && user_id != '<%= User.current.id %>' && apply_status != 2){ + alert('您无权发送私有资源') }else{ - $.ajax({ - type: 'get', - url: '<%= search_user_course_user_path(User.current.id)%>' + "?send_id=" + id + "&type=<%= @type %>", - data:{send_type:'file'} - }); + if (lastSendType === '2'){ //如果已经发送过一次了,那么就应该沿用上次发送的类型。 + $.ajax({ + type: 'get', + url: '<%= search_user_project_user_path(User.current.id) %>' + "?send_id=" + id + "&type=<%= @type %>", + data:{send_type:'file'} + }); + }else{ + $.ajax({ + type: 'get', + url: '<%= search_user_course_user_path(User.current.id)%>' + "?send_id=" + id + "&type=<%= @type %>", + data:{send_type:'file'} + }); + } } + } function batch_send(){ From 7da1418069e09e002efd311a7d6e371690f6280f Mon Sep 17 00:00:00 2001 From: yuanke <249218296@qq.com> Date: Thu, 19 May 2016 16:24:57 +0800 Subject: [PATCH 044/668] =?UTF-8?q?=E8=87=AA=E5=8A=A8=E8=AF=86=E5=88=ABURL?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/users/_intro_content.html.erb | 5 ++- public/javascripts/application.js | 54 +++++++++++++++++++++++++ 2 files changed, 58 insertions(+), 1 deletion(-) diff --git a/app/views/users/_intro_content.html.erb b/app/views/users/_intro_content.html.erb index 351f1fdb0..ead3f6713 100644 --- a/app/views/users/_intro_content.html.erb +++ b/app/views/users/_intro_content.html.erb @@ -1,6 +1,6 @@
          - <%= content.to_s.html_safe%> + <%= content.to_s.html_safe %>
          \ No newline at end of file diff --git a/public/javascripts/application.js b/public/javascripts/application.js index d9f532a48..6023542f3 100644 --- a/public/javascripts/application.js +++ b/public/javascripts/application.js @@ -1291,3 +1291,57 @@ function pop_up_box(value,tWidth,tTop,tLeft){ } +//yk 自动识别URL 并加上链接 +var strRegex = '((https|http|ftp|rtsp|mms)?://)' + + '?(([0-9a-z_!~*\'().&=+$%-]+: )?[0-9a-z_!~*\'().&=+$%-]+@)?' //ftp的user@ + + '(([0-9]{1,3}.){3}[0-9]{1,3}' // IP形式的URL- 199.194.52.184 + + '|' // 允许IP和DOMAIN(域名) + + '([0-9a-z_!~*\'()-]+.)*' // 域名- www. + + '([0-9a-z][0-9a-z-]{0,61})?[0-9a-z].' // 二级域名 + + '[a-z]{2,6})' // first level domain- .com or .museum + + '(:[0-9]{1,4})?' // 端口- :80 + + '((/?)|' // a slash isn't required if there is no file name + + '(/[0-9a-z_!~*\'().;?:@&=+$,%#-]+)+/?)'; + +function autoUrl(id){ + if ($("#"+id).children().length > 0 ){ + $("#"+id+" p,#"+ id +" span,#"+id+" em,#"+id+" h1,#"+id+" h2,#"+id+" h3,#"+id+" h4,#"+id+" strong,#"+id+" b,#"+id+" font,#"+id+" i").each(function(){ + if ($(this).children().length == 0){ + var html = $(this).text(); //.replace(/(^\s*)|(\s*$)/g, "") + console.log("html="+html); + var re=new RegExp(strRegex,"g"); + html = html.replace(re,function(full) { + //没有://的都加上http:// + if (full.indexOf("://") >= 0){ + var reStr = ""+full+""; + } + else{ + var reStr = ""+full+""; + } + console.log("reStr="+reStr); + return reStr; + }); + $(this).html(html); + } + }); + } + else{ + var html = $("#"+id).text(); //.replace(/(^\s*)|(\s*$)/g, "") + console.log("html="+html); + var re=new RegExp(strRegex,"g"); + html = html.replace(re,function(full) { + //没有://的都加上http:// + if (full.indexOf("://") >= 0){ + var reStr = ""+full+""; + } + else{ + var reStr = ""+full+""; + } + console.log("reStr="+reStr); + return reStr; + }); + $("#"+id).html(html); + } +} + + From ed58e780656d1e967158b5f236869f5bd8c4862c Mon Sep 17 00:00:00 2001 From: yuanke <249218296@qq.com> Date: Thu, 19 May 2016 16:38:48 +0800 Subject: [PATCH 045/668] =?UTF-8?q?KE=E8=A1=A8=E6=A0=BC=E9=A2=9C=E8=89=B2?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/stylesheets/new_user.css | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/public/stylesheets/new_user.css b/public/stylesheets/new_user.css index f79b3ca02..db2974e01 100644 --- a/public/stylesheets/new_user.css +++ b/public/stylesheets/new_user.css @@ -672,6 +672,7 @@ a.postTypeGrey:hover {color:#269ac9;} .homepagePostDes {float:left; width:655px; margin-left:15px; overflow:hidden;} .homepagePostTo {font-size:14px; color:#484848; margin-bottom:5px;} .homepagePostTitle {font-size:14px; color:#484848; margin-bottom:5px; font-weight:bold;} +.homepagePostTitle td,.homepagePostTitle tr {border: 1px solid; border-color: inherit;} .homepagePostSubmitContainer {height:25px; margin-top: 8px; margin-bottom: 5px;} .homepagePostSubmit {font-size:14px; color:#888888; border:1px solid #dddddd; background-color:#eaeaea; float:left; margin-right:20px; padding:0px 10px;} .homepagePostSubmit:hover {background-color:#d8d8d8;} @@ -681,10 +682,9 @@ a.postTypeGrey:hover {color:#269ac9;} .homepagePostReply {width:720px; margin:0px auto; background-color:#f1f1f1; margin-top:10px;} .homepagePostIntro ol li{list-style-type: decimal;margin-left: 40px;} .homepagePostIntro ul li{list-style-type: disc;margin-left: 40px;} +.homepagePostIntro td,.homepagePostIntro tr {border: 1px solid; border-color: inherit;} .homepagePostReplyBanner {width:718px; height:33px; border:1px solid #e4e4e4; line-height:33px; vertical-align:middle; font-size:12px; color:#888888; position: relative;} - .borderBottomNone {border-bottom:none !important;} -.homepagePostIntro td,.homepagePostIntro tr {border: 1px solid; border-color: inherit;} .homepagePostReplyBanner {width:718px; height:33px; border:1px solid #e4e4e4; line-height:33px; vertical-align:middle; font-size:12px; color:#888888;} .borderBottomNone {border-bottom:none !important;} .topBorder {border-top: 1px solid #e4e4e4;} @@ -721,6 +721,7 @@ a.postOptionLink:hover {color:#ffffff; background-color:#269ac9;} .homepagePostReplyContent {font-size:12px; color:#484848; margin:3px 5px 12px 5px;font: 14px/1.5 "sans serif",tahoma,verdana,helvetica;font-family:"微软雅黑","宋体";} .homepagePostReplyContent ol li{list-style-type: decimal;margin-left: 40px;} .homepagePostReplyContent ul li{list-style-type: disc;margin-left: 40px;} +.homepagePostReplyContent td,.homepagePostReplyContent tr {border: 1px solid; border-color: inherit;} .table_maxWidth table {max-width: 642px;} .homepagePostProjectState {width:52px; height:20px; line-height:20px; border-radius:1px; background-color:#28be6c; color:#ffffff; text-align:center; vertical-align:middle; font-size:12px; display:inline-block; margin-left:5px;} .homepagePostAssignTo {float:left; font-size:14px; color:#269ac9;} @@ -864,7 +865,7 @@ a.sortArrowActiveU {background:url(images/post_image_list.png) -17px -20px no-re .postDetailDes p,div,em{word-break: break-all;word-wrap: break-word;} .postDetailDes ol li{list-style-type: decimal;margin-left: 40px;} .postDetailDes ul li{list-style-type: disc;margin-left: 40px;} -.postDetailDes td,.homepagePostReplyContent tr {border: 1px solid; border-color: inherit;} +.postDetailDes td,.postDetailDes tr {border: 1px solid; border-color: inherit;} .homepagePostIntro p,.homepagePostIntro div,.homepagePostIntro em, .homepagePostIntro span{text-align: justify; text-justify:inter-ideograph; word-break: normal !important; word-wrap: break-word !important; } /*line-height: 18px !important;*/ .postDetailCreater {color:#888888; font-size:12px; float:left; margin-right:25px;} .postDetailDate {color:#888888; font-size:12px; float:left;} From df70c33bcd4c86805cb0b52b65f1028d3200dffe Mon Sep 17 00:00:00 2001 From: cxt Date: Thu, 19 May 2016 16:39:14 +0800 Subject: [PATCH 046/668] =?UTF-8?q?=E5=AD=A6=E7=94=9F=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E6=B4=BB=E8=B7=83=E5=BA=A6=E4=B8=BA0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/courses_controller.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/controllers/courses_controller.rb b/app/controllers/courses_controller.rb index 1478bceae..374e26431 100644 --- a/app/controllers/courses_controller.rb +++ b/app/controllers/courses_controller.rb @@ -1177,7 +1177,7 @@ class CoursesController < ApplicationController AND homework_commons.course_id = #{@course.id} AND student_works.user_id = members.user_id ) AS score,(SELECT (message_num*2 + message_reply_num*1 + news_reply_num*1 + news_num*1 + - resource_num*5 + journal_num*1 + homework_journal_num*1 ) FROM `course_contributor_scores` AS ccs WHERE ccs.course_id = 577 AND ccs.user_id = members.user_id + resource_num*5 + journal_num*1 + homework_journal_num*1 ) FROM `course_contributor_scores` AS ccs WHERE ccs.course_id = #{@course.id} AND ccs.user_id = members.user_id ) AS act_score FROM members JOIN students_for_courses @@ -1191,7 +1191,7 @@ class CoursesController < ApplicationController AND homework_commons.course_id = #{@course.id} AND student_works.user_id = members.user_id ) AS score,(SELECT (message_num*2 + message_reply_num*1 + news_reply_num*1 + news_num*1 + - resource_num*5 + journal_num*1 + homework_journal_num*1 ) FROM `course_contributor_scores` AS ccs WHERE ccs.course_id = 577 AND ccs.user_id = members.user_id + resource_num*5 + journal_num*1 + homework_journal_num*1 ) FROM `course_contributor_scores` AS ccs WHERE ccs.course_id = #{@course.id} AND ccs.user_id = members.user_id ) AS act_score FROM members JOIN students_for_courses From 0dd7aae08c9258f933211c15122ac71b96211d0a Mon Sep 17 00:00:00 2001 From: yuanke <249218296@qq.com> Date: Thu, 19 May 2016 16:39:23 +0800 Subject: [PATCH 047/668] =?UTF-8?q?=E5=85=88=E6=B3=A8=E9=87=8A=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E8=AF=86=E5=88=ABURL?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/users/_intro_content.html.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/users/_intro_content.html.erb b/app/views/users/_intro_content.html.erb index ead3f6713..050720b6c 100644 --- a/app/views/users/_intro_content.html.erb +++ b/app/views/users/_intro_content.html.erb @@ -14,7 +14,7 @@ $(this).html(postContent); }); - autoUrl('intro_content_<%= user_activity_id%>'); +// autoUrl('intro_content_<%#= user_activity_id%>'); description_show_hide(<%=user_activity_id %>); }); From 1402f2076a91b49bd5c71abce7072159cf0ff5d2 Mon Sep 17 00:00:00 2001 From: huang Date: Thu, 19 May 2016 16:53:22 +0800 Subject: [PATCH 048/668] =?UTF-8?q?=E8=B5=84=E6=BA=90=E7=94=B3=E8=AF=B7?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=93=BE=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../users/_apply_resource_course_message.html.erb | 15 ++++++++++++--- .../_apply_resource_course_message_reply.html.erb | 13 +++++++++++++ 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/app/views/users/_apply_resource_course_message.html.erb b/app/views/users/_apply_resource_course_message.html.erb index 4dbec8127..fd493daf2 100644 --- a/app/views/users/_apply_resource_course_message.html.erb +++ b/app/views/users/_apply_resource_course_message.html.erb @@ -9,9 +9,18 @@
        • <% content = ma.course_message.content.nil? ? '' : ':'+ ma.course_message.content.to_s %> - " class = "<%= ma.viewed == 0 ? "newsBlack" : "newsGrey "%>"> - <%= ma.course_message.user.show_name + "申请引用资源\""+"#{ma.course_message.find_attachment(ma.course_message.attachment_id).try(:filename)}"+"\"#{content}" %> - + <% show_content = ma.course_message.user.show_name + "申请引用资源\""+"#{ma.course_message.find_attachment(ma.course_message.attachment_id).try(:filename)}"+"\"#{content}" %> + <% if ma.course_message.container_type == "Course" %> + <%= link_to show_content, course_files_path(ma.course_message.container_id), :title => show_content, :class => " #{ma.viewed == 0 ? "newsBlack" : "newsGrey "}" %> + <% elsif ma.course_message.container_type == "Project" %> + <%= link_to show_content, project_files_path(ma.course_message.container_id), :title => show_content, :class => " #{ma.viewed == 0 ? "newsBlack" : "newsGrey "}" %> + <% elsif ma.course_message.container_type == "OrgSubfield" %> + <%= link_to show_content, org_subfield_files_path(ma.course_message.container_id), :title => show_content, :class => " #{ma.viewed == 0 ? "newsBlack" : "newsGrey "}" %> + <% else %> + "> + <%= show_content %> + + <% end %>
        • diff --git a/app/views/users/_apply_resource_course_message_reply.html.erb b/app/views/users/_apply_resource_course_message_reply.html.erb index 7cf246c53..617ee53c3 100644 --- a/app/views/users/_apply_resource_course_message_reply.html.erb +++ b/app/views/users/_apply_resource_course_message_reply.html.erb @@ -14,6 +14,19 @@ '您申请引用资源"'+ ma.course_message.find_attachment(ma.course_message.attachment_id).try(:filename) + '"的申请已通过' : '您申请引用资源"'+ ma.course_message.find_attachment(ma.course_message.attachment_id).try(:filename) + '"的申请被婉拒' %> + <% if ma.course_message.container_type == "Course" %> + <%= link_to link_str, course_files_path(ma.course_message.container_id), :title => link_str, :class => " #{ma.viewed == 0 ? "newsBlack" : "newsGrey "}" %> + <% elsif ma.course_message.container_type == "Project" %> + <%= link_to link_str, project_files_path(ma.course_message.container_id), :title => link_str, :class => " #{ma.viewed == 0 ? "newsBlack" : "newsGrey "}" %> + <% elsif ma.course_message.container_type == "OrgSubfield" %> + <%= link_to link_str, org_subfield_files_path(ma.course_message.container_id), :title => link_str, :class => " #{ma.viewed == 0 ? "newsBlack" : "newsGrey "}" %> + <% else %> + "> + <%= link_str %> + + <% end %> + + <%= link_to link_str, user_resource_user_path(User.current, :type => 2), :title => link_str,:class => "#{ma.viewed == 0 ? "newsBlack" : "newsGrey "}" %>
        • From e0370e3e32409a0e86c3242994ff973925726fa8 Mon Sep 17 00:00:00 2001 From: huang Date: Thu, 19 May 2016 17:04:46 +0800 Subject: [PATCH 049/668] =?UTF-8?q?=E7=A7=81=E6=9C=89=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E4=B8=AD=E5=8F=91=E9=80=81=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/users_controller.rb | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index b0194a2d8..5148f3318 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -2199,6 +2199,18 @@ class UsersController < ApplicationController # 公共资源库:所有公开资源或者我上传的私有资源 @attachments = get_public_resources(user_course_ids, user_project_ids, params[:order], @score) end + elsif params[:type] == "2" + apply_ids = ApplyResource.where("user_id =? and status =?", params[:id], 2).map { |ar| ar.attachment_id} + if params[:status] == "2" + resource_type = "'Course'" + elsif params[:status] == "3" + resource_type = "'Project'" + elsif params[:status] == "5" + resource_type = "'Principal'" + else + resource_type = "'Project','OrgSubfield','Principal','Course'" + end + @attachments = get_my_private_resources(apply_ids, resource_type, @order, @score) end @status = params[:status] @type = params[:type] From f806dbf587dd20d910b251ed658a7e5d26803b9b Mon Sep 17 00:00:00 2001 From: huang Date: Thu, 19 May 2016 17:12:33 +0800 Subject: [PATCH 050/668] =?UTF-8?q?=E8=B5=84=E6=BA=90=E5=8F=91=E9=80=81?= =?UTF-8?q?=E8=87=B3=E7=BB=84=E7=BB=87=E5=92=8C=E8=AF=BE=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/users_controller.rb | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 5148f3318..d86ce379b 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -2058,6 +2058,18 @@ class UsersController < ApplicationController # 公共资源库:所有公开资源或者我上传的私有资源 @attachments = get_public_resources(user_course_ids, user_project_ids, params[:order], @score) end + elsif params[:type] == "2" + apply_ids = ApplyResource.where("user_id =? and status =?", params[:id], 2).map { |ar| ar.attachment_id} + if params[:status] == "2" + resource_type = "'Course'" + elsif params[:status] == "3" + resource_type = "'Project'" + elsif params[:status] == "5" + resource_type = "'Principal'" + else + resource_type = "'Project','OrgSubfield','Principal','Course'" + end + @attachments = get_my_private_resources(apply_ids, resource_type, @order, @score) end @type = params[:type] @limit = 25 @@ -2340,6 +2352,18 @@ class UsersController < ApplicationController # 公共资源库:所有公开资源或者我上传的私有资源 @attachments = get_public_resources(user_course_ids, user_project_ids, params[:order], @score) end + elsif params[:type] == "2" + apply_ids = ApplyResource.where("user_id =? and status =?", params[:id], 2).map { |ar| ar.attachment_id} + if params[:status] == "2" + resource_type = "'Course'" + elsif params[:status] == "3" + resource_type = "'Project'" + elsif params[:status] == "5" + resource_type = "'Principal'" + else + resource_type = "'Project','OrgSubfield','Principal','Course'" + end + @attachments = get_my_private_resources(apply_ids, resource_type, @order, @score) end @type = params[:type] @limit = 25 From b03b9a3c27feea203d763e41a952e4a1192cd73f Mon Sep 17 00:00:00 2001 From: cxt Date: Fri, 20 May 2016 09:59:41 +0800 Subject: [PATCH 051/668] =?UTF-8?q?=E8=AF=BE=E7=A8=8B=EF=BC=9A=E9=97=AE?= =?UTF-8?q?=E5=8D=B7=E5=AF=BC=E5=85=A5=E6=97=B6=E6=98=BE=E7=A4=BA=E7=9A=84?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=9C=AA=E8=BF=9B=E8=A1=8C=E8=BF=87=E6=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/poll_controller.rb | 10 +++++++--- db/schema.rb | 21 ++++++++------------- 2 files changed, 15 insertions(+), 16 deletions(-) diff --git a/app/controllers/poll_controller.rb b/app/controllers/poll_controller.rb index 1d7b4117d..e4cf31f55 100644 --- a/app/controllers/poll_controller.rb +++ b/app/controllers/poll_controller.rb @@ -423,9 +423,13 @@ class PollController < ApplicationController # 将其他地方的问卷导出来 def other_poll # 查作者是我,或者作者是当前课程的老师,且不在当前课程内的问卷 进行导入 - tea_ids = '(' - tea_ids << Course.find(params[:polls_group_id]).tea_id.to_s << ','<< User.current.id.to_s << ')' - @polls = Poll.where("user_id in #{tea_ids} and polls_type = 'course' and polls_group_id != #{params[:polls_group_id]}") + courses = User.current.courses.select { |course| User.current.allowed_to?(:as_teacher,course)} + course_ids = courses.empty? ? "(-1)" : "(" + courses.map { |course| course.id}.join(',') + ")" + none_courses = User.current.courses.where("is_delete = 1 or #{Course.table_name}.id = #{params[:polls_group_id].to_i}") + none_course_ids = none_courses.empty? ? "(-1)" : "(" + none_courses.map { |course| course.id}.join(',') + ")" + #tea_ids = '(' + #tea_ids << Course.find(params[:polls_group_id]).tea_id.to_s << ','<< User.current.id.to_s << ')' + @polls = Poll.where("(user_id = #{User.current.id} or polls_group_id in #{course_ids}) and polls_type = 'course' and polls_group_id not in #{none_course_ids}") @polls_group_id = params[:polls_group_id] respond_to do |format| format.js diff --git a/db/schema.rb b/db/schema.rb index 02a79aa9b..9c4b4b333 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,12 +11,7 @@ # # It's strongly recommended to check this file into your version control system. -<<<<<<< HEAD - -ActiveRecord::Schema.define(:version => 20160513120002) do -======= -ActiveRecord::Schema.define(:version => 20160513021204) do ->>>>>>> weixin_guange +ActiveRecord::Schema.define(:version => 20160519070718) do create_table "activities", :force => true do |t| t.integer "act_id", :null => false @@ -455,15 +450,15 @@ ActiveRecord::Schema.define(:version => 20160513021204) do create_table "course_contributor_scores", :force => true do |t| t.integer "course_id" t.integer "user_id" - t.integer "message_num" - t.integer "message_reply_num" - t.integer "news_reply_num" - t.integer "resource_num" - t.integer "journal_num" - t.integer "journal_reply_num" + t.integer "message_num", :default => 0 + t.integer "message_reply_num", :default => 0 + t.integer "news_reply_num", :default => 0 + t.integer "resource_num", :default => 0 + t.integer "journal_num", :default => 0 + t.integer "journal_reply_num", :default => 0 t.datetime "created_at", :null => false t.datetime "updated_at", :null => false - t.integer "total_score" + t.integer "total_score", :default => 0 t.integer "homework_journal_num", :default => 0 t.integer "news_num", :default => 0 end From 92f55e0dc159f4be2ce5adfbd7914ddb9f06335f Mon Sep 17 00:00:00 2001 From: huang Date: Fri, 20 May 2016 10:02:59 +0800 Subject: [PATCH 052/668] =?UTF-8?q?=E5=85=AC=E5=85=B1=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=BA=93=EF=BC=8C=E7=82=B9=E5=87=BB=E5=BA=95=E9=83=A8=E4=B8=8D?= =?UTF-8?q?=E8=83=BD=E5=8F=91=E9=80=81=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/users_controller.rb | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index d86ce379b..6c5cbd390 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -1942,7 +1942,7 @@ class UsersController < ApplicationController # 将资源发送到对应的课程,分为发送单个,或者批量发送 def add_exist_file_to_course @flag = true - if params[:send_id].present? + if params[:send_id].present? send_id = params[:send_id] @ori = Attachment.find_by_id(send_id) course_ids = params[:course_ids] @@ -1989,14 +1989,14 @@ class UsersController < ApplicationController end send_ids.each do |send_id| quotes = 0 - ori = Attachment.find_by_id(send_id) + @ori = Attachment.find_by_id(send_id) unless course_ids.nil? course_ids.each do |id| quotes = 0 - next if ori.blank? + next if @ori.blank? @exist = false Course.find(id).attachments.each do |att| #如果课程中包含该资源 - if att.id == ori.id || (!att.copy_from.nil? && !ori.copy_from.nil? && att.copy_from == ori.copy_from) || att.copy_from == ori.id || att.id == ori.copy_from + if att.id == @ori.id || (!att.copy_from.nil? && !@ori.copy_from.nil? && att.copy_from == @ori.copy_from) || att.copy_from == @ori.id || att.id == @ori.copy_from att.created_on = Time.now att.save @exist = true @@ -2004,21 +2004,21 @@ class UsersController < ApplicationController end end next if @exist - attach_copied_obj = ori.copy - attach_copied_obj.tag_list.add(ori.tag_list) # tag关联 + attach_copied_obj = @ori.copy + attach_copied_obj.tag_list.add(@ori.tag_list) # tag关联 attach_copied_obj.container = Course.find(id) attach_copied_obj.created_on = Time.now attach_copied_obj.author_id = User.current.id attach_copied_obj.is_public = 0 - attach_copied_obj.copy_from = ori.copy_from.nil? ? ori.id : ori.copy_from #发送要添加copy_from + attach_copied_obj.copy_from = @ori.copy_from.nil? ? @ori.id : @ori.copy_from #发送要添加copy_from if attach_copied_obj.attachtype == nil attach_copied_obj.attachtype = 4 end if attach_copied_obj.save # 更新引用次数 - quotes = ori.quotes.to_i + 1 - ori.update_attribute(:quotes, quotes) unless ori.nil? - ori.forwards << Forward.new(:to_type => attach_copied_obj.class.name, :to_id => attach_copied_obj.id,:created_at => Time.now) + quotes = @ori.quotes.to_i + 1 + @ori.update_attribute(:quotes, quotes) unless @ori.nil? + @ori.forwards << Forward.new(:to_type => attach_copied_obj.class.name, :to_id => attach_copied_obj.id,:created_at => Time.now) end @save_message = attach_copied_obj.errors.full_messages end From 80f829c0187cb9b0cbe630a7a875ca3a8e5657e0 Mon Sep 17 00:00:00 2001 From: huang Date: Fri, 20 May 2016 10:48:17 +0800 Subject: [PATCH 053/668] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E6=90=9C=E7=B4=A2?= =?UTF-8?q?=E4=B8=8D=E8=83=BD=E7=94=A8=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/organizations_controller.rb | 2 +- app/views/organizations/teachers.html.erb | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/app/controllers/organizations_controller.rb b/app/controllers/organizations_controller.rb index c94f734e1..62876d757 100644 --- a/app/controllers/organizations_controller.rb +++ b/app/controllers/organizations_controller.rb @@ -164,7 +164,7 @@ class OrganizationsController < ApplicationController return end q = params[:search].nil? ? "" : "#{params[:search].strip}" - @field = OrgSubfield.find(params[:org_subfield_id]) + @field = params[:org_subfield_id].nil? ? OrgSubfield.where("organization_id =? and field_type =?", params[:id].to_i, "Comptec").first : OrgSubfield.find(params[:org_subfield_id]) @type = params[:type] if @type == "courses" || @type.nil? @org_teachers = User.find_by_sql("select u.*, ue.technical_title, ue.school_id,(select count(*) from courses where courses.tea_id = u.id) as course_count diff --git a/app/views/organizations/teachers.html.erb b/app/views/organizations/teachers.html.erb index c368adef7..dac36f7a5 100644 --- a/app/views/organizations/teachers.html.erb +++ b/app/views/organizations/teachers.html.erb @@ -9,8 +9,7 @@
      • <% end%> - + <% end %> <% if student_work.homework_common && student_work.homework_common.teacher_priority == 1 && student_work.teacher_score %> @@ -79,7 +77,7 @@ <% else %> <% score = student_work.respond_to?("score") ? student_work.score : (student_work.final_score || 0) - student_work.absence_penalty - student_work.late_penalty%> <% end %> -
      • + <%= score.nil? ? "--" : format("%.1f",score<0 ? 0 : score)%> <% unless score.nil?%>
        @@ -97,9 +95,9 @@  <%= format("%.1f",score<0 ? 0 : score)%> 分。
        <% end%> -
      • - - + + 点击查看详情 +
        @@ -215,5 +216,6 @@ var postContent = $("#message_description_<%= @article.id %>").html(); postContent = postContent.replace(/ /g," "); $("#message_description_<%= @article.id %>").html(postContent); + autoUrl('message_description_<%= @article.id %>'); }); diff --git a/app/views/courses/syllabus.html.erb b/app/views/courses/syllabus.html.erb index 8be245958..66bc8ff9a 100644 --- a/app/views/courses/syllabus.html.erb +++ b/app/views/courses/syllabus.html.erb @@ -120,6 +120,7 @@
        @@ -214,5 +215,6 @@ postContent=postContent.replace(/  /g,"   "); $(this).html(postContent); }); + autoUrl('message_description_<%= @article.id %>'); }); \ No newline at end of file diff --git a/app/views/forums/_show_topics.html.erb b/app/views/forums/_show_topics.html.erb index 08c030f90..ed90453ac 100644 --- a/app/views/forums/_show_topics.html.erb +++ b/app/views/forums/_show_topics.html.erb @@ -1,6 +1,12 @@
        <% if memos.any? %> <% memos.each do |topic| %> +
        @@ -16,7 +22,7 @@ <%= get_praise_num(topic)%>
        -
        <%= topic.content.html_safe%> +
        <%= topic.content.html_safe%>
        <% author = topic.last_reply.try(:author)%> diff --git a/app/views/issues/_detail.html.erb b/app/views/issues/_detail.html.erb index 92021f728..03c420c99 100644 --- a/app/views/issues/_detail.html.erb +++ b/app/views/issues/_detail.html.erb @@ -28,7 +28,7 @@ <%= render :partial => 'action_menu' %>
        <% if @issue.description? || @issue.attachments.any? -%> -
        +
        <% if @issue.description? %> <%#= link_to l(:button_quote), quoted_issue_path(@issue.id), :remote => true, :method => 'post', :class => 'icon icon-comment' if authorize_for('issues', 'edit') %> <%= textAreailizable @issue, :description, :attachments => @issue.attachments %> @@ -43,4 +43,11 @@ <%= render :partial => 'issues/attributes_show' %>
        -
        \ No newline at end of file +
        + + \ No newline at end of file diff --git a/app/views/issues/_issue_replies.html.erb b/app/views/issues/_issue_replies.html.erb index aaf9c132f..197cd9c02 100644 --- a/app/views/issues/_issue_replies.html.erb +++ b/app/views/issues/_issue_replies.html.erb @@ -3,6 +3,7 @@ <% replies_all_i=replies_all_i + 1 %> diff --git a/app/views/memos/show.html.erb b/app/views/memos/show.html.erb index aeaf3f423..3524de0c8 100644 --- a/app/views/memos/show.html.erb +++ b/app/views/memos/show.html.erb @@ -99,7 +99,7 @@
        @@ -147,6 +148,7 @@ postContent=postContent.replace(/  /g,"   "); $(this).html(postContent); }); + autoUrl('activity_description_<%= @memo.id %>'); description_show_hide(<%= @memo.id %>); }); \ No newline at end of file diff --git a/app/views/messages/_course_show.html.erb b/app/views/messages/_course_show.html.erb index 33c9d7f8d..443440455 100644 --- a/app/views/messages/_course_show.html.erb +++ b/app/views/messages/_course_show.html.erb @@ -109,6 +109,7 @@
        @@ -188,5 +189,6 @@ postContent=postContent.replace(/  /g,"   "); $(this).html(postContent); }); + autoUrl('message_description_<%= @topic.id %>'); }); diff --git a/app/views/messages/_org_subfield_show.html.erb b/app/views/messages/_org_subfield_show.html.erb index 4d5af61dd..145afcfd7 100644 --- a/app/views/messages/_org_subfield_show.html.erb +++ b/app/views/messages/_org_subfield_show.html.erb @@ -138,6 +138,7 @@
        @@ -210,5 +211,6 @@ postContent=postContent.replace(/  /g,"   "); $(this).html(postContent); }); + autoUrl('message_description_<%= @topic.id %>'); }); diff --git a/app/views/messages/_project_show.html.erb b/app/views/messages/_project_show.html.erb index 10046bce2..35b3f8a3c 100644 --- a/app/views/messages/_project_show.html.erb +++ b/app/views/messages/_project_show.html.erb @@ -165,6 +165,7 @@
        @@ -245,5 +246,6 @@ postContent=postContent.replace(/  /g,"   "); $(this).html(postContent); }); + autoUrl('message_description_<%= @topic.id %>'); }); diff --git a/app/views/news/_course_show.html.erb b/app/views/news/_course_show.html.erb index 46346eb71..5908c7593 100644 --- a/app/views/news/_course_show.html.erb +++ b/app/views/news/_course_show.html.erb @@ -115,6 +115,7 @@
        @@ -210,5 +211,6 @@ postContent=postContent.replace(/  /g,"   "); $(this).html(postContent); }); + autoUrl('message_description_<%= @news.id %>'); }); diff --git a/app/views/news/_organization_show.html.erb b/app/views/news/_organization_show.html.erb index 640854164..7eecf43ab 100644 --- a/app/views/news/_organization_show.html.erb +++ b/app/views/news/_organization_show.html.erb @@ -97,6 +97,7 @@
        @@ -185,5 +186,6 @@ postContent=postContent.replace(/  /g,"   "); $(this).html(postContent); }); + autoUrl('message_description_<%= @news.id %>'); }); diff --git a/app/views/news/_project_show.html.erb b/app/views/news/_project_show.html.erb index 6b91c98ed..6b3824222 100644 --- a/app/views/news/_project_show.html.erb +++ b/app/views/news/_project_show.html.erb @@ -107,6 +107,7 @@
        @@ -195,5 +196,6 @@ postContent=postContent.replace(/  /g,"   "); $(this).html(postContent); }); + autoUrl('message_description_<%= @news.id %>'); }); diff --git a/app/views/org_document_comments/show.html.erb b/app/views/org_document_comments/show.html.erb index f5b186197..e2967a9ae 100644 --- a/app/views/org_document_comments/show.html.erb +++ b/app/views/org_document_comments/show.html.erb @@ -84,6 +84,7 @@ <% user = User.find(reply.creator_id) %> @@ -158,6 +159,7 @@ postContent=postContent.replace(/  /g,"   "); $(this).html(postContent); }); + autoUrl('intro_content_<%= @document.id %>'); }); function expand_reply(container, btnid) { var target = $(container); diff --git a/app/views/organizations/_org_course_homework.html.erb b/app/views/organizations/_org_course_homework.html.erb index d72600e1e..d3fe36fe3 100644 --- a/app/views/organizations/_org_course_homework.html.erb +++ b/app/views/organizations/_org_course_homework.html.erb @@ -315,6 +315,7 @@ <% replies_all_i = replies_all_i + 1 %> diff --git a/app/views/organizations/_org_course_message.html.erb b/app/views/organizations/_org_course_message.html.erb index e0ec8d5fd..e68745f7a 100644 --- a/app/views/organizations/_org_course_message.html.erb +++ b/app/views/organizations/_org_course_message.html.erb @@ -100,6 +100,7 @@ <% replies_all_i=replies_all_i+1 %> diff --git a/app/views/organizations/_org_course_news.html.erb b/app/views/organizations/_org_course_news.html.erb index 6fa588ec9..acf0f0377 100644 --- a/app/views/organizations/_org_course_news.html.erb +++ b/app/views/organizations/_org_course_news.html.erb @@ -69,6 +69,7 @@ <% replies_all_i = replies_all_i + 1 %> diff --git a/app/views/organizations/_org_project_issue.html.erb b/app/views/organizations/_org_project_issue.html.erb index d19c2cabe..9ca10c91d 100644 --- a/app/views/organizations/_org_project_issue.html.erb +++ b/app/views/organizations/_org_project_issue.html.erb @@ -80,6 +80,7 @@ <% replies_all_i=replies_all_i + 1 %> diff --git a/app/views/organizations/_org_subfield_message.html.erb b/app/views/organizations/_org_subfield_message.html.erb index 315b6d8b4..61bc5bc7f 100644 --- a/app/views/organizations/_org_subfield_message.html.erb +++ b/app/views/organizations/_org_subfield_message.html.erb @@ -105,6 +105,7 @@ <% replies_all_i=replies_all_i+1 %> diff --git a/app/views/organizations/_org_subfield_news.html.erb b/app/views/organizations/_org_subfield_news.html.erb index 314380c20..5d6c38542 100644 --- a/app/views/organizations/_org_subfield_news.html.erb +++ b/app/views/organizations/_org_subfield_news.html.erb @@ -89,6 +89,7 @@ <% replies_all_i = replies_all_i + 1 %> diff --git a/app/views/organizations/_project_message.html.erb b/app/views/organizations/_project_message.html.erb index 63d416f7a..e1b000c70 100644 --- a/app/views/organizations/_project_message.html.erb +++ b/app/views/organizations/_project_message.html.erb @@ -79,6 +79,7 @@ <% replies_all_i=replies_all_i+1 %> diff --git a/app/views/organizations/_show_home_page.html.erb b/app/views/organizations/_show_home_page.html.erb index 63eb1808b..7d8f7963f 100644 --- a/app/views/organizations/_show_home_page.html.erb +++ b/app/views/organizations/_show_home_page.html.erb @@ -59,6 +59,7 @@ postContent=postContent.replace(/  /g,"   "); $(this).html(postContent); }); + autoUrl('intro_content_<%= @document.id %>'); function expand_reply(container, btnid) { var target = $(container); var btn = $(btnid); diff --git a/app/views/organizations/_show_org_document.html.erb b/app/views/organizations/_show_org_document.html.erb index 6012dd0d4..e8f531206 100644 --- a/app/views/organizations/_show_org_document.html.erb +++ b/app/views/organizations/_show_org_document.html.erb @@ -88,6 +88,12 @@
          <% reply_id = 0 %> <% comments_for_doc.each do |comment| %> + <% reply_id += 1 %>
        • <%= link_to image_tag(url_to_avatar(User.find(comment.creator_id)), :width => 33, :height => 33, :alt => "用户头像"), user_url_in_org(comment.creator_id) %>
          @@ -104,7 +110,7 @@
        <% unless comment.content.blank? %> -
        <%= comment.content.html_safe %>
        +
        <%= comment.content.html_safe %>
        <% end %>
        diff --git a/app/views/projects/_project_news.html.erb b/app/views/projects/_project_news.html.erb index 2994d908b..6d97b252d 100644 --- a/app/views/projects/_project_news.html.erb +++ b/app/views/projects/_project_news.html.erb @@ -69,6 +69,7 @@ <% replies_all_i = replies_all_i + 1 %> @@ -125,4 +126,4 @@ $(function(){ user_card_show_hide(); }); - + diff --git a/app/views/sub_document_comments/show.html.erb b/app/views/sub_document_comments/show.html.erb index 3155c178b..fc35d00cb 100644 --- a/app/views/sub_document_comments/show.html.erb +++ b/app/views/sub_document_comments/show.html.erb @@ -97,6 +97,7 @@ <% user = User.find(reply.creator_id) %> @@ -164,6 +165,7 @@ postContent=postContent.replace(/  /g,"   "); $(this).html(postContent); }); + autoUrl('intro_content_<%= @document.id %>'); var replyCount = $(".homepagePostReplyContainer").size(); if (replyCount >3){ for(var i= 3; i < replyCount+1; i++){ diff --git a/app/views/users/_course_homework.html.erb b/app/views/users/_course_homework.html.erb index fe586b28c..3721244ed 100644 --- a/app/views/users/_course_homework.html.erb +++ b/app/views/users/_course_homework.html.erb @@ -321,6 +321,7 @@ <% replies_all_i = replies_all_i + 1 %> diff --git a/app/views/users/_course_journalsformessage.html.erb b/app/views/users/_course_journalsformessage.html.erb index 05e0a67b0..aeb7f5e5d 100644 --- a/app/views/users/_course_journalsformessage.html.erb +++ b/app/views/users/_course_journalsformessage.html.erb @@ -56,6 +56,7 @@ <% replies_all_i = replies_all_i + 1 %> diff --git a/app/views/users/_course_message.html.erb b/app/views/users/_course_message.html.erb index aa2781b95..8b6056309 100644 --- a/app/views/users/_course_message.html.erb +++ b/app/views/users/_course_message.html.erb @@ -117,6 +117,7 @@ <% replies_all_i=replies_all_i+1 %> @@ -179,4 +180,4 @@ $(function(){ user_card_show_hide(); }); - + diff --git a/app/views/users/_course_news.html.erb b/app/views/users/_course_news.html.erb index 3e4bda9f3..19d62b14e 100644 --- a/app/views/users/_course_news.html.erb +++ b/app/views/users/_course_news.html.erb @@ -94,6 +94,7 @@ <% replies_all_i = replies_all_i + 1 %> diff --git a/app/views/users/_intro_content.html.erb b/app/views/users/_intro_content.html.erb index 050720b6c..04babe100 100644 --- a/app/views/users/_intro_content.html.erb +++ b/app/views/users/_intro_content.html.erb @@ -13,9 +13,7 @@ postContent=postContent.replace(/  /g,"   "); $(this).html(postContent); }); - -// autoUrl('intro_content_<%#= user_activity_id%>'); - + autoUrl('intro_content_<%= user_activity_id%>'); description_show_hide(<%=user_activity_id %>); }); \ No newline at end of file diff --git a/app/views/users/_project_issue_reply.html.erb b/app/views/users/_project_issue_reply.html.erb index 671cbeab9..5323b76b6 100644 --- a/app/views/users/_project_issue_reply.html.erb +++ b/app/views/users/_project_issue_reply.html.erb @@ -29,6 +29,7 @@ <% replies_all_i=replies_all_i + 1 %> diff --git a/app/views/users/_project_message.html.erb b/app/views/users/_project_message.html.erb index 468ce3a88..b6e3f9a94 100644 --- a/app/views/users/_project_message.html.erb +++ b/app/views/users/_project_message.html.erb @@ -112,6 +112,7 @@ <% replies_all_i=replies_all_i+1 %> diff --git a/app/views/users/_project_news.html.erb b/app/views/users/_project_news.html.erb index 681493c44..55e2182b5 100644 --- a/app/views/users/_project_news.html.erb +++ b/app/views/users/_project_news.html.erb @@ -91,6 +91,7 @@ <% replies_all_i = replies_all_i + 1 %> diff --git a/app/views/users/_user_blog.html.erb b/app/views/users/_user_blog.html.erb index 904d573bb..de5ffc31f 100644 --- a/app/views/users/_user_blog.html.erb +++ b/app/views/users/_user_blog.html.erb @@ -75,6 +75,7 @@ <% replies_all_i = replies_all_i + 1 %> diff --git a/app/views/users/_user_homework_detail.html.erb b/app/views/users/_user_homework_detail.html.erb index e561c6363..f81fbabf5 100644 --- a/app/views/users/_user_homework_detail.html.erb +++ b/app/views/users/_user_homework_detail.html.erb @@ -331,6 +331,7 @@ <% replies_all_i = replies_all_i + 1 %> diff --git a/app/views/users/_user_journalsformessage.html.erb b/app/views/users/_user_journalsformessage.html.erb index 944477e88..d39cccb11 100644 --- a/app/views/users/_user_journalsformessage.html.erb +++ b/app/views/users/_user_journalsformessage.html.erb @@ -86,6 +86,12 @@
        @@ -100,7 +101,8 @@ is_public = line.children().eq(11).html(); user_id = line.children().eq(6).html(); apply_status = line.children().eq(12).html(); - if(is_public == 0 && user_id != '<%= User.current.id %>' && apply_status != 2){ + allow = line.children().eq(13).html(); + if(is_public == 0 && user_id != '<%= User.current.id %>' && apply_status != 2 && allow == 1){ alert('您无权发送私有资源') }else{ if (lastSendType === '2'){ //如果已经发送过一次了,那么就应该沿用上次发送的类型。 From 8ebe8b0d0c29898b1a47b5254a37084b209e1c4d Mon Sep 17 00:00:00 2001 From: huang Date: Fri, 20 May 2016 18:55:17 +0800 Subject: [PATCH 078/668] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=8F=90=E7=A4=BA?= =?UTF-8?q?=E9=A1=BA=E5=BA=8F=20=E6=B6=88=E6=81=AF=E6=A0=B7=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/users/_resources_list.html.erb | 9 +++++---- public/stylesheets/new_user.css | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/app/views/users/_resources_list.html.erb b/app/views/users/_resources_list.html.erb index fd6c52dba..5dd2495c9 100644 --- a/app/views/users/_resources_list.html.erb +++ b/app/views/users/_resources_list.html.erb @@ -71,14 +71,15 @@ //批量删除 function batch_delete(){ var data = $("#resources_list_form").serialize(); - if($("input[type=checkbox][data-has-history=Y]:checked").length != 0){ - alert("您只能删除没有历史记录的资源,请重新选择后再删除。"); - return; - } if($("input[type=checkbox][data-deleteble=N]:checked").length != 0){ alert("您只能删除自己上传的资源,请重新选择后再删除。"); return; } + if($("input[type=checkbox][data-has-history=Y]:checked").length != 0){ + alert("您只能删除没有历史记录的资源,请重新选择后再删除。"); + return; + } + if(data != "" && confirm('确认要删除这些资源吗?')) { $.post( diff --git a/public/stylesheets/new_user.css b/public/stylesheets/new_user.css index 326d2897b..cfdf12153 100644 --- a/public/stylesheets/new_user.css +++ b/public/stylesheets/new_user.css @@ -609,7 +609,7 @@ a.homepageMenuControl {float:left; width:180px;} .NewsBannerName {font-size:16px; color:#4b4b4b; display:block; width:150px; float:left;} .newsType {width:60px; background-color:#ffffff; float:left; list-style:none; position:absolute; border:1px solid #eaeaea; border-radius:5px; top:15px; padding:5px 10px; left:-40px; font-size:12px; color:#888888; display:none; line-height:2; z-index:9999;} .newsReadSetting {width:700px; background-color:#f6f6f6; border-bottom:1px solid #eeeeee; margin:10px auto; height:39px; line-height:39px; vertical-align:middle; font-size:14px; color:#7a7a7a; padding-left:10px;} -.homepageNewsList {width:710px; height:49px; line-height:49px; vertical-align:middle; border-bottom:1px dashed #eaeaea; margin-left:10px;} +.homepageNewsList {width:710px; height:49px; line-height:49px; vertical-align:middle; border-bottom:1px dashed #eaeaea; } .homepageNewsPortrait {width:40px; display:block; margin-top:7px;} .homepageNewsPublisher { max-width:100px; font-size:12px; color:#269ac9; display:block; padding-left:5px; overflow:hidden; white-space: nowrap; text-overflow:ellipsis; float:left; } .homepageNewsType {padding-left: 5px; font-size:12px; color:#888888; display:block;} From 56a151a7b427878a33c85c27ac389d862d8839be Mon Sep 17 00:00:00 2001 From: cxt Date: Fri, 20 May 2016 19:11:09 +0800 Subject: [PATCH 079/668] =?UTF-8?q?=E5=AD=A6=E7=94=9F=E6=89=93=E5=BC=80?= =?UTF-8?q?=E7=9A=84=E4=BD=9C=E5=93=81=E5=88=97=E8=A1=A8=E4=B8=AD=E4=B8=8D?= =?UTF-8?q?=E5=BA=94=E9=80=9A=E8=BF=87=E4=B8=8B=E6=8B=89=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E8=AE=BF=E9=97=AE=E5=88=B0=E6=8C=82=E8=B5=B7=E7=9A=84=E4=BD=9C?= =?UTF-8?q?=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/student_work/index.html.erb | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/app/views/student_work/index.html.erb b/app/views/student_work/index.html.erb index c321a10fb..96e43af46 100644 --- a/app/views/student_work/index.html.erb +++ b/app/views/student_work/index.html.erb @@ -69,16 +69,21 @@
        + + 删除
        -
        - 发送至 -
        + + +
        选择 0 个资源
        From dd4786d6390da2ed448426b5090878fda93a4ace Mon Sep 17 00:00:00 2001 From: Tim Date: Fri, 20 May 2016 20:44:13 +0800 Subject: [PATCH 089/668] =?UTF-8?q?=E4=BD=9C=E5=93=81=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E6=9F=A5=E7=9C=8B=E8=AF=A6=E6=83=85=E5=AE=9A=E4=BD=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/exercise/_student_table.html.erb | 2 +- app/views/student_work/_evaluation_un_work.html.erb | 2 +- app/views/student_work/_evaluation_work.html.erb | 2 +- public/stylesheets/courses.css | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/views/exercise/_student_table.html.erb b/app/views/exercise/_student_table.html.erb index 5a93c352a..979e711bc 100644 --- a/app/views/exercise/_student_table.html.erb +++ b/app/views/exercise/_student_table.html.erb @@ -65,7 +65,7 @@ <%= exercise.score.nil? ? "--" : format("%.1f",exercise.score)%> - 点击查看详情 +
        <% end%> \ No newline at end of file diff --git a/app/views/student_work/_evaluation_un_work.html.erb b/app/views/student_work/_evaluation_un_work.html.erb index ba91589fa..9cac477ab 100644 --- a/app/views/student_work/_evaluation_un_work.html.erb +++ b/app/views/student_work/_evaluation_un_work.html.erb @@ -96,7 +96,7 @@
        <% end%> - 点击查看详情 +
        + From 2afce9d56380706f57b889b450e5304698a0936b Mon Sep 17 00:00:00 2001 From: cxt Date: Mon, 23 May 2016 14:05:28 +0800 Subject: [PATCH 100/668] =?UTF-8?q?=E9=9A=90=E8=97=8F=E5=AF=BC=E5=85=A5?= =?UTF-8?q?=E4=BD=9C=E4=B8=9A=E7=9A=84=E7=94=B3=E8=AF=B7=E9=A2=98=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/users/_show_user_homeworks.html.erb | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/app/views/users/_show_user_homeworks.html.erb b/app/views/users/_show_user_homeworks.html.erb index 7e9df7f4d..46e075412 100644 --- a/app/views/users/_show_user_homeworks.html.erb +++ b/app/views/users/_show_user_homeworks.html.erb @@ -3,6 +3,8 @@
        公共题库 我的题库 + +
        <%=render :partial=>'homework_search_input', :locals=>{:type => @type,:is_import => 1} %>
        @@ -43,11 +45,18 @@
        From 6586dfaf916fc57cfd080080043555b82452d9df Mon Sep 17 00:00:00 2001 From: cxt Date: Mon, 23 May 2016 14:47:10 +0800 Subject: [PATCH 101/668] =?UTF-8?q?=E4=BD=9C=E5=93=81=E6=90=9C=E7=B4=A2?= =?UTF-8?q?=E6=97=B6=EF=BC=8C=E5=A4=8D=E5=88=B6=E7=9A=84=E5=A7=93=E5=90=8D?= =?UTF-8?q?=E6=88=96=E5=AD=A6=E5=8F=B7=E6=88=96=E9=82=AE=E7=AE=B1=E5=9B=A0?= =?UTF-8?q?=E4=B8=BA=E5=8C=85=E5=90=AB=E7=A9=BA=E6=A0=BC=EF=BC=8C=E8=80=8C?= =?UTF-8?q?=E6=90=9C=E7=B4=A2=E4=B8=8D=E5=88=B0=E7=9B=B8=E5=85=B3=E7=BB=93?= =?UTF-8?q?=E6=9E=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/student_work_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/student_work_controller.rb b/app/controllers/student_work_controller.rb index f518f81da..dd178a1ce 100644 --- a/app/controllers/student_work_controller.rb +++ b/app/controllers/student_work_controller.rb @@ -374,7 +374,7 @@ class StudentWorkController < ApplicationController end end ################################################################################################################## - @order,@b_sort,@name,@group = params[:order] || "score",params[:sort] || "desc",params[:name] || "",params[:group] + @order,@b_sort,@name,@group = params[:order] || "score",params[:sort] || "desc",params[:name].to_s.strip || "",params[:group] @homework_commons = @course.homework_commons.where("publish_time <= ?",Time.now.strftime("%Y-%m-%d")).order("created_at desc") @all_homework_commons = @course.homework_commons.order("created_at desc") @is_teacher = User.current.allowed_to?(:as_teacher,@course) || User.current.admin? From d70f42b4137d51b8c46d0d71052bb3e134868a76 Mon Sep 17 00:00:00 2001 From: huang Date: Mon, 23 May 2016 15:03:22 +0800 Subject: [PATCH 102/668] =?UTF-8?q?=E5=8F=91=E5=B8=83=E8=AF=BE=E7=A8=8B?= =?UTF-8?q?=E9=80=9A=E7=9F=A5=E6=B6=88=E6=81=AF=E5=BC=82=E6=AD=A5=E5=8F=91?= =?UTF-8?q?=E9=80=81=EF=BC=88=E6=B5=8B=E8=AF=95=E7=89=88=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/news.rb | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/app/models/news.rb b/app/models/news.rb index a411ccaca..7131969a4 100644 --- a/app/models/news.rb +++ b/app/models/news.rb @@ -163,13 +163,13 @@ class News < ActiveRecord::Base end end - #课程/项目通知 消息发送 - #消息发送原则:除了消息的发布者,课程的其它成员都能收到消息提醒 + # 课程/项目通知 消息发送 + # 消息发送原则:除了消息的发布者,课程的其它成员都能收到消息提醒 def act_as_system_message if self.course self.course.members.each do |m| if m.user_id != self.author_id - #self.course_messages << CourseMessage.new(:user_id => m.user_id, :course_id => self.course_id, :viewed => false) + self.delay.send_message(m.user_id, self.course_id) count = ShieldWechatMessage.where("container_type='User' and container_id=#{m.user_id} and shield_type='Course' and shield_id=#{self.course_id}").count if count == 0 ws = WechatService.new @@ -189,6 +189,10 @@ class News < ActiveRecord::Base end end + def send_message user_id, course_id + self.course_messages << CourseMessage.new(:user_id => user_id, :course_id => course_id, :viewed => false) + end + # Time 2015-03-31 13:50:54 # Author lizanle # Description 删除news后删除对应的资源 From 5eff3db9e877e874589d6c936089937cb2950c85 Mon Sep 17 00:00:00 2001 From: yuanke <249218296@qq.com> Date: Mon, 23 May 2016 15:58:32 +0800 Subject: [PATCH 103/668] =?UTF-8?q?1.=E9=97=AE=E7=AD=94=E5=8C=BA=E6=97=B6?= =?UTF-8?q?=E9=97=B4=E6=8E=92=E5=BA=8FBUG=E4=BF=AE=E5=A4=8D=E3=80=81?= =?UTF-8?q?=E5=8F=AA=E6=98=BE=E7=A4=BA=E6=9B=B4=E6=96=B0=E6=97=B6=E9=97=B4?= =?UTF-8?q?=E3=80=81=E5=8F=91=E8=B4=B4=E4=BA=BA=E6=94=BE=E5=B7=A6=E4=B8=8B?= =?UTF-8?q?=E8=A7=92=E3=80=81=E5=86=85=E5=AE=B9=E6=88=AA=E6=96=AD=E4=B8=80?= =?UTF-8?q?=E7=82=B9=202.KE=E7=BC=96=E8=BE=91=E5=99=A8=E8=BE=93=E5=85=A5?= =?UTF-8?q?=E5=86=85=E5=AE=B9=E6=97=B6=E9=9C=80=E6=9C=89=E4=B8=80=E7=82=B9?= =?UTF-8?q?=E4=B8=8B=E8=BE=B9=E8=B7=9D=203.KE=E4=B8=AD=E7=BC=96=E8=BE=91?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=E6=AE=B5=E8=90=BD=E6=98=BE=E7=A4=BA=E6=97=B6?= =?UTF-8?q?=E6=9C=89=E9=A2=9C=E8=89=B2=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../_org_subfield_leftMD.html.erb | 20 +++++++++---------- app/views/users/_course_boardlist.html.erb | 11 +++++----- app/views/users/_course_newslist.html.erb | 9 ++++----- app/views/users/_intro_content_ex.html.erb | 5 +++++ app/views/users/_project_boardlist.html.erb | 11 +++++----- app/views/users/_user_course_list.html.erb | 2 +- public/javascripts/create_kindeditor.js | 2 +- public/stylesheets/public.css | 8 ++++---- public/stylesheets/public_new.css | 6 +++--- 9 files changed, 38 insertions(+), 36 deletions(-) diff --git a/app/views/organizations/_org_subfield_leftMD.html.erb b/app/views/organizations/_org_subfield_leftMD.html.erb index d0439439a..afa7d0716 100644 --- a/app/views/organizations/_org_subfield_leftMD.html.erb +++ b/app/views/organizations/_org_subfield_leftMD.html.erb @@ -28,7 +28,7 @@ <%= link_to activity.name.to_s, student_work_index_url_in_org(activity.id), :target => '_blank', :class => "resources-title sn-hidden" %>
        - <%=render :partial =>"users/intro_content_ex", :locals=>{:user_activity_id => activity.id, :content=> activity.description, :maxheight=>54, :maxwordsnum => 28} %> + <%=render :partial =>"users/intro_content_ex", :locals=>{:user_activity_id => activity.id, :content=> activity.description, :maxheight=>54, :maxwordsnum => 28, :maxwidth=>0} %> <%#= link_to activity.description.to_s.html_safe, student_work_index_url_in_org(activity.id), :target => '_blank', :class => "resources-tag" %>
        <%#= link_to "更多", student_work_index_url_in_org(activity.id), :class => "more-btn", :target => "_blank" %> @@ -50,7 +50,7 @@ <% end %>
        - <%=render :partial =>"users/intro_content_ex", :locals=>{:user_activity_id => activity.id, :content=> activity.content, :maxheight=>54, :maxwordsnum => 28} %> + <%=render :partial =>"users/intro_content_ex", :locals=>{:user_activity_id => activity.id, :content=> activity.content, :maxheight=>54, :maxwordsnum => 28, :maxwidth=>0} %> <%#= link_to activity.content.to_s.html_safe, board_message_url_in_org(activity.board_id, activity.id), :target => '_blank', :class => "resources-tag" %>
        @@ -67,7 +67,7 @@ <%= link_to activity.title.to_s, news_url_in_org(activity.id), :target => '_blank', :class => "resources-title sn-hidden" %>
        - <%=render :partial =>"users/intro_content_ex", :locals=>{:user_activity_id => activity.id, :content=> activity.description, :maxheight=>54, :maxwordsnum => 28} %> + <%=render :partial =>"users/intro_content_ex", :locals=>{:user_activity_id => activity.id, :content=> activity.description, :maxheight=>54, :maxwordsnum => 28, :maxwidth=>0} %> <%#= link_to activity.description.to_s.html_safe, news_url_in_org(activity.id), :target => '_blank', :class => "resources-tag" %>
        <%#= link_to "更多", news_url_in_org(activity.id), :class => "more-btn", :target => "_blank" %> @@ -130,7 +130,7 @@ <%= link_to activity.subject.to_s, issue_url_in_org(activity.id), :target => '_blank', :class => "resources-title sn-hidden" %>
        - <%=render :partial =>"users/intro_content_ex", :locals=>{:user_activity_id => activity.id, :content=> activity.description, :maxheight=>54, :maxwordsnum => 28} %> + <%=render :partial =>"users/intro_content_ex", :locals=>{:user_activity_id => activity.id, :content=> activity.description, :maxheight=>54, :maxwordsnum => 28, :maxwidth=>0} %> <%#= link_to activity.description.to_s.html_safe, issue_url_in_org(activity.id), :target => '_blank', :class => "resources-tag" %>
        @@ -151,7 +151,7 @@ <% end %>
        - <%=render :partial =>"users/intro_content_ex", :locals=>{:user_activity_id => activity.id, :content=> activity.content, :maxheight=>54, :maxwordsnum => 28} %> + <%=render :partial =>"users/intro_content_ex", :locals=>{:user_activity_id => activity.id, :content=> activity.content, :maxheight=>54, :maxwordsnum => 28, :maxwidth=>0} %> <%#= link_to activity.content.to_s.html_safe, board_message_url_in_org(activity.board_id, activity.id), :target => '_blank', :class => "resources-tag" %>
        @@ -168,7 +168,7 @@ <%= link_to activity.description.to_s.html_safe, news_url_in_org(activity.id), :target => '_blank', :class => "resources-title sn-hidden" %>
        - <%=render :partial =>"users/intro_content_ex", :locals=>{:user_activity_id => activity.id, :content=> activity.description, :maxheight=>54, :maxwordsnum => 28} %> + <%=render :partial =>"users/intro_content_ex", :locals=>{:user_activity_id => activity.id, :content=> activity.description, :maxheight=>54, :maxwordsnum => 28, :maxwidth=>0} %> <%#= link_to activity.content.to_s.html_safe, news_url_in_org(activity.id), :target => '_blank', :class => "resources-tag" %>
        <%#= link_to "更多", news_url_in_org(activity.id), :class => "more-btn", :target => "_blank" %> @@ -214,7 +214,7 @@ <%= link_to document.title, org_document_comment_path(:id => document.id, :organization_id => document.organization.id), :target => '_blank', :class => "resources-title sn-hidden" %>
        - <%=render :partial =>"users/intro_content_ex", :locals=>{:user_activity_id => document.id, :content=> document.content, :maxheight=>54, :maxwordsnum => 28} %> + <%=render :partial =>"users/intro_content_ex", :locals=>{:user_activity_id => document.id, :content=> document.content, :maxheight=>54, :maxwordsnum => 28, :maxwidth=>0} %> <%#= link_to document.content.to_s.html_safe, org_document_comment_path(:id => document.id, :organization_id => document.organization.id), :target => '_blank', :class => "resources-tag" %>
        <%#= link_to "更多", org_document_comment_path(:id => document.id, :organization_id => document.organization.id), :class => "more-btn", :target => "_blank" %> @@ -244,7 +244,7 @@ <% end %>
        - <%= render :partial =>"users/intro_content_ex", :locals=>{:user_activity_id => message.id, :content=> content, :maxheight=>54, :maxwordsnum => 28} %> + <%= render :partial =>"users/intro_content_ex", :locals=>{:user_activity_id => message.id, :content=> content, :maxheight=>54, :maxwordsnum => 28, :maxwidth=>0} %> <%#= link_to content.to_s.html_safe, board_message_url_in_org(activity.board_id, activity.id), :target => '_blank', :class => "resources-tag" %>
        <%#= link_to "更多", board_message_url_in_org(message.board.id,message.id), :class => "more-btn", :target => "_blank" %> @@ -264,7 +264,7 @@ <% end %>
        - <%= render :partial =>"users/intro_content_ex", :locals=>{:user_activity_id => message.id, :content=> content, :maxheight=>54, :maxwordsnum => 28} %> + <%= render :partial =>"users/intro_content_ex", :locals=>{:user_activity_id => message.id, :content=> content, :maxheight=>54, :maxwordsnum => 28, :maxwidth=>0} %> <%#= link_to content.to_s.html_safe, board_message_path(message.board,activity), :target => '_blank', :class => "resources-tag" %>
        <%#= link_to "更多", board_message_path(message.board,activity), :class => "more-btn", :target => "_blank" %> @@ -285,7 +285,7 @@
        <%#= link_to news.description.to_s.html_safe, news_path(news), :target => '_blank', :class => "resources-tag" %> - <%= render :partial =>"users/intro_content_ex", :locals=>{:user_activity_id => news.id, :content=> news.description, :maxheight=>54, :maxwordsnum => 28, :maxwordsnum => 28} %> + <%= render :partial =>"users/intro_content_ex", :locals=>{:user_activity_id => news.id, :content=> news.description, :maxheight=>54, :maxwordsnum => 28, :maxwordsnum => 28, :maxwidth=>0} %>
        <%#= link_to "更多", news_path(news), :class => "more-btn", :target => "_blank" %>
        diff --git a/app/views/users/_course_boardlist.html.erb b/app/views/users/_course_boardlist.html.erb index bf23d9a97..5cb2c27a7 100644 --- a/app/views/users/_course_boardlist.html.erb +++ b/app/views/users/_course_boardlist.html.erb @@ -31,9 +31,6 @@ <% end %> <% u = User.where("id=?",activity.author_id).first%> - - 发帖人: <%=(u.try(:realname) != " " ? u.lastname + u.firstname : u.try(:login)) %> -
        @@ -42,11 +39,13 @@ <% else %> <% content = activity.parent.content %> <% end %> -

        <%=render :partial =>"users/intro_content_ex", :locals=>{:user_activity_id =>activity.id, :content=>content, :maxheight=>54, :maxwordsnum=>100} %>

        +

        <%=render :partial =>"users/intro_content_ex", :locals=>{:user_activity_id =>activity.id, :content=>content, :maxheight=>54, :maxwordsnum=>75, :maxwidth=>563} %>

        - 发帖:<%= format_time(activity.created_on) %> - 更新:<%= format_time(CourseActivity.where("course_act_type='#{activity.class}' and course_act_id =#{activity.id}").first.updated_at) %> + + 发帖人: <%=(u.try(:realname) != " " ? u.lastname + u.firstname : u.try(:login)) %> + + 更新:<%= format_time(activity.children.any? ? activity.children.last[:created_on] : activity[:created_on] ) %> <% count=0 %> <% if activity.parent %> <% count=activity.parent.children.count%> diff --git a/app/views/users/_course_newslist.html.erb b/app/views/users/_course_newslist.html.erb index 0e5805112..87dbe6b95 100644 --- a/app/views/users/_course_newslist.html.erb +++ b/app/views/users/_course_newslist.html.erb @@ -24,16 +24,15 @@ <% end%> <% u = User.where("id=?",activity.author_id).first%> - - 发布者: <%=(u.try(:realname) != " " ? u.lastname + u.firstname : u.try(:login)) %> -
        -

        <%=render :partial =>"users/intro_content_ex", :locals=>{:user_activity_id =>activity.id, :content=>activity.description, :maxheight=>54, :maxwordsnum=>100} %>

        +

        <%=render :partial =>"users/intro_content_ex", :locals=>{:user_activity_id =>activity.id, :content=>activity.description, :maxheight=>54, :maxwordsnum=>100, :maxwidth=>563} %>

        - 发布:<%= format_time(activity.created_on) %> + + 发布者: <%=(u.try(:realname) != " " ? u.lastname + u.firstname : u.try(:login)) %> + 更新:<%= format_time(CourseActivity.where("course_act_type='#{activity.class}' and course_act_id =#{activity.id}").first.updated_at) %> <% count=0 %> <% count=activity.comments.count %> diff --git a/app/views/users/_intro_content_ex.html.erb b/app/views/users/_intro_content_ex.html.erb index e3baf3fe2..082d0cb94 100644 --- a/app/views/users/_intro_content_ex.html.erb +++ b/app/views/users/_intro_content_ex.html.erb @@ -12,6 +12,11 @@ $("#activity_description_<%= user_activity_id%>").css("max-height", heightType + "px"); } + var maxWidth = <%= maxwidth %> + if (maxWidth > 0) { + $("#intro_content_<%= user_activity_id%>").css("max-width", maxWidth + "px"); + } + description_showwords_ellipsis(<%=user_activity_id %>,<%= maxwordsnum %>); }); \ No newline at end of file diff --git a/app/views/users/_project_boardlist.html.erb b/app/views/users/_project_boardlist.html.erb index 25fd675fb..fe7bc03f2 100644 --- a/app/views/users/_project_boardlist.html.erb +++ b/app/views/users/_project_boardlist.html.erb @@ -31,9 +31,6 @@ <% end %> <% u = User.where("id=?",activity.author_id).first%> - - 发帖人:<%=(u.try(:realname) != " " ? u.lastname + u.firstname : u.try(:login)) %> -
        @@ -42,11 +39,13 @@ <% else %> <% content = activity.parent.content %> <% end %> -

        <%=render :partial =>"users/intro_content_ex", :locals=>{:user_activity_id =>activity.id, :content=>content, :maxheight=>54, :maxwordsnum=>100} %>

        +

        <%=render :partial =>"users/intro_content_ex", :locals=>{:user_activity_id =>activity.id, :content=>content, :maxheight=>54, :maxwordsnum=>75, :maxwidth=>563} %>

        - 发帖:<%= format_time(activity.created_on) %> - 更新:<%= format_time(ForgeActivity.where("forge_act_type='#{activity.class}' and forge_act_id =#{activity.id}").first.updated_at) %> + + 发帖人:<%=(u.try(:realname) != " " ? u.lastname + u.firstname : u.try(:login)) %> + + 更新:<%= format_time(activity.children.any? ? activity.children.last[:created_on] : activity[:created_on] ) %> <% count=0 %> <% if activity.parent %> <% count=activity.parent.children.count%> diff --git a/app/views/users/_user_course_list.html.erb b/app/views/users/_user_course_list.html.erb index 5e3f48963..ea8f3fc40 100644 --- a/app/views/users/_user_course_list.html.erb +++ b/app/views/users/_user_course_list.html.erb @@ -24,7 +24,7 @@ <% teacher = User.where("id=?",course.tea_id).first%> <%='主讲老师:'+(teacher.try(:realname) != " " ? teacher.lastname + teacher.firstname : teacher.try(:login)) %> - +
      • diff --git a/public/javascripts/create_kindeditor.js b/public/javascripts/create_kindeditor.js index 2ff5336e1..d6fc52a8d 100644 --- a/public/javascripts/create_kindeditor.js +++ b/public/javascripts/create_kindeditor.js @@ -25,7 +25,7 @@ function sd_create_editor(params){ var edit = this.edit; var body = edit.doc.body; edit.iframe.height(paramsHeight); - this.resize(null, Math.max((params.kindutil.IE ? body.scrollHeight : (params.kindutil.GECKO ? body.offsetHeight+26:body.offsetHeight)) , paramsHeight)); + this.resize(null, Math.max((params.kindutil.IE ? body.scrollHeight : (params.kindutil.GECKO ? body.offsetHeight+26:body.offsetHeight+7)) , paramsHeight)); }, afterBlur:function(){ //params.toolbar_container.hide(); diff --git a/public/stylesheets/public.css b/public/stylesheets/public.css index 2ca221d5c..c7fa7d60c 100644 --- a/public/stylesheets/public.css +++ b/public/stylesheets/public.css @@ -24,9 +24,9 @@ table{ background:#fff;} a.btn_message_free{ background:#ff5722; display:block; text-align:center; color:#fff; padding:3px 0; width:80px; margin-bottom:10px;} .db {display:block;} /* font & color */ -h2{ font-size:18px; color:#15bccf;} -h3{ font-size:14px; color:#e8770d;} -h4{ font-size:14px; color:#3b3b3b;} +h2{ font-size:18px; } +h3{ font-size:14px; } +h4{ font-size:14px; } .f12{font-size:12px; font-weight:normal;} .f14{font-size:14px;} .f16{font-size:16px;} @@ -1139,4 +1139,4 @@ a.st_down{ display: block; width:8px; float:left; height:13px; background:url(.. .likeNum{color: #7f7f7f} /*弹框*/ -.apply_content{ border:1px solid #ddd;line-height: 16px; height:80px;width:420px; background:#fff; margin-bottom:10px;} +.apply_content{ border:1px solid #ddd;line-height: 16px; height:80px;width:420px; background:#fff; margin-bottom:10px;} diff --git a/public/stylesheets/public_new.css b/public/stylesheets/public_new.css index 56c867829..ec0290918 100644 --- a/public/stylesheets/public_new.css +++ b/public/stylesheets/public_new.css @@ -22,9 +22,9 @@ table{ background:#fff;} .none{display: none;} /* font & color */ -h2{ font-size:18px; color:#15bccf;} -h3{ font-size:14px; color:#e8770d;} -h4{ font-size:14px; color:#3b3b3b;} +h2{ font-size:18px; } +h3{ font-size:14px; } +h4{ font-size:14px; } .f12{font-size:12px; font-weight:normal;} .f14{font-size:14px;} .f16{font-size:16px;} From a3abf098419e77605be9b5f152553d2fef30b6f9 Mon Sep 17 00:00:00 2001 From: huang Date: Mon, 23 May 2016 16:04:06 +0800 Subject: [PATCH 104/668] =?UTF-8?q?delayjob=E5=B0=81=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/news.rb | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/app/models/news.rb b/app/models/news.rb index 7131969a4..beb58799f 100644 --- a/app/models/news.rb +++ b/app/models/news.rb @@ -167,17 +167,7 @@ class News < ActiveRecord::Base # 消息发送原则:除了消息的发布者,课程的其它成员都能收到消息提醒 def act_as_system_message if self.course - self.course.members.each do |m| - if m.user_id != self.author_id - self.delay.send_message(m.user_id, self.course_id) - count = ShieldWechatMessage.where("container_type='User' and container_id=#{m.user_id} and shield_type='Course' and shield_id=#{self.course_id}").count - if count == 0 - ws = WechatService.new - content = strip_html self.author.try(:realname) + " 发布了通知:" + self.title.html_safe, 200 - ws.message_update_template m.user_id, "course_notice", self.id, "#{l(:label_new_notice_template)}", content, format_time(self.created_on) - end - end - end + self.delay.send_message else if !self.project.nil? self.project.members.each do |m| @@ -189,8 +179,19 @@ class News < ActiveRecord::Base end end - def send_message user_id, course_id - self.course_messages << CourseMessage.new(:user_id => user_id, :course_id => course_id, :viewed => false) + def send_message + self.course.members.each do |m| + if m.user_id != self.author_id + self.course_messages << CourseMessage.new(:user_id => user_id, :course_id => container_id, :viewed => false) + # 微信相关 + count = ShieldWechatMessage.where("container_type='User' and container_id=#{m.user_id} and shield_type='Course' and shield_id=#{self.course_id}").count + if count == 0 + ws = WechatService.new + content = strip_html self.author.try(:realname) + " 发布了通知:" + self.title.html_safe, 200 + ws.message_update_template m.user_id, "course_notice", self.id, "#{l(:label_new_notice_template)}", content, format_time(self.created_on) + end + end + end end # Time 2015-03-31 13:50:54 From 0e03798f6e8f2075fae224089f3f39bdade47b56 Mon Sep 17 00:00:00 2001 From: huang Date: Mon, 23 May 2016 16:24:32 +0800 Subject: [PATCH 105/668] =?UTF-8?q?=E7=BB=84=E7=BB=87=E6=A1=86=E6=9E=B6?= =?UTF-8?q?=E7=BB=93=E6=9E=84=EF=BC=88yeild=EF=BC=89=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/organizations_controller.rb | 2 +- app/views/layouts/base_org2.html.erb | 38 +----- app/views/organizations/_show_type2.html.erb | 33 +++++ app/views/organizations/show.html.erb | 122 ++++++++++--------- 4 files changed, 102 insertions(+), 93 deletions(-) create mode 100644 app/views/organizations/_show_type2.html.erb diff --git a/app/controllers/organizations_controller.rb b/app/controllers/organizations_controller.rb index 3ab62bbea..2ab724728 100644 --- a/app/controllers/organizations_controller.rb +++ b/app/controllers/organizations_controller.rb @@ -76,7 +76,7 @@ class OrganizationsController < ApplicationController def show # 组织新类型 show_mode:判断标准 1为新类型,0为旧 - if @organization.show_mode.to_i == 1 && params[:org_subfield_id].nil? && params[:list] .nil? + if @organization.switch_type && params[:org_subfield_id].nil? && params[:list] .nil? if @organization.is_public? || User.current.admin? || User.current.member_of_org?(@organization) # REDO:时间紧,暂时先这样 @org_logo_attchment = Attachment.find_by_sql("SELECT * from attachments WHERE container_id = #{@organization.id} and container_type = 'Organization' and attachtype = 0 and filename REGEXP '(.jpg|.png|.bmp|.gif|.jpeg)' ORDER BY created_on desc limit 1").first diff --git a/app/views/layouts/base_org2.html.erb b/app/views/layouts/base_org2.html.erb index 799aaa42b..e51a62e24 100644 --- a/app/views/layouts/base_org2.html.erb +++ b/app/views/layouts/base_org2.html.erb @@ -14,7 +14,7 @@ <%= javascript_include_tag 'attachments' %> <%#= call_hook :view_layouts_base_html_head %> - <%#= yield :header_tags -%> + <%= yield :header_tags -%> - <% act = OrgActivity.where("org_act_type = 'OrgDocumentComment' and org_act_id =?", @organization.home_id).first %> - <%= render :partial => 'show_home_page', :locals => {:document => OrgDocumentComment.find(@organization.home_id), :home_id => @organization.home_id, :act => act} %> -<% end %> -<% if @org_activities %> - <%= render :partial => 'organizations/org_activities', - :locals => {:org_activities => @org_activities, - :page=> @page, - :org => @organization, - :org_act_count=> @org_activities.count} %> + <% end %> +
      • + <% end %> + <% if !@organization.home_id.nil? and OrgDocumentComment.where("id = ?", @organization.home_id).count > 0 and params[:org_subfield_id].nil? %> + + <% act = OrgActivity.where("org_act_type = 'OrgDocumentComment' and org_act_id =?", @organization.home_id).first %> + <%= render :partial => 'show_home_page', :locals => {:document => OrgDocumentComment.find(@organization.home_id), :home_id => @organization.home_id, :act => act} %> + <% end %> + <% if @org_activities %> + <%= render :partial => 'organizations/org_activities', + :locals => {:org_activities => @org_activities, + :page=> @page, + :org => @organization, + :org_act_count=> @org_activities.count} %> + <% end %> <% end %> @@ -70,3 +75,4 @@ + From e62a4cc64632a8985bc73c84679a4210aa8cdfbc Mon Sep 17 00:00:00 2001 From: cxt Date: Mon, 23 May 2016 16:29:38 +0800 Subject: [PATCH 106/668] =?UTF-8?q?=E7=BB=91=E5=AE=9A=E6=96=B0=E7=9A=84?= =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E5=85=AC=E4=BC=97=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/wechat_service.rb | 12 ++++++------ config/menu.yml | 2 +- config/wechat.yml | 4 ++-- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/app/services/wechat_service.rb b/app/services/wechat_service.rb index 1dcd147d4..ee45c99dc 100644 --- a/app/services/wechat_service.rb +++ b/app/services/wechat_service.rb @@ -5,7 +5,7 @@ class WechatService data = { touser:openid, template_id:template_id, - url:"https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxc09454f171153c2d&redirect_uri=https://www.trustie.net/assets/wechat/app.html#/#{type}/#{id}?response_type=code&scope=snsapi_base&state=123#wechat_redirect", + url:"https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx8e1ab05163a28e37&redirect_uri=https://www.trustie.net/assets/wechat/app.html#/#{type}/#{id}?response_type=code&scope=snsapi_base&state=123#wechat_redirect", topcolor:"#FF0000", data:{ first: { @@ -44,7 +44,7 @@ class WechatService end Rails.logger.info "send over. #{req}" end - Rails.logger.info "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxc09454f171153c2d&redirect_uri=https://www.trustie.net/assets/wechat/app.html#/#{type}/#{id}?response_type=code&scope=snsapi_base&state=123#wechat_redirect" + Rails.logger.info "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx8e1ab05163a28e37&redirect_uri=https://www.trustie.net/assets/wechat/app.html#/#{type}/#{id}?response_type=code&scope=snsapi_base&state=123#wechat_redirect" end def topic_publish_template(user_id, type, id, first, key1, key2, key3, remark="") @@ -59,7 +59,7 @@ class WechatService end Rails.logger.info "send over. #{req}" end - Rails.logger.info "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxc09454f171153c2d&redirect_uri=https://www.trustie.net/assets/wechat/app.html#/#{type}/#{id}?response_type=code&scope=snsapi_base&state=123#wechat_redirect" + Rails.logger.info "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx8e1ab05163a28e37&redirect_uri=https://www.trustie.net/assets/wechat/app.html#/#{type}/#{id}?response_type=code&scope=snsapi_base&state=123#wechat_redirect" end def comment_template(user_id,type, id, first, key1, key2, key3, remark="") @@ -74,7 +74,7 @@ class WechatService end Rails.logger.info "send over. #{req}" end - Rails.logger.info "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxc09454f171153c2d&redirect_uri=https://www.trustie.net/assets/wechat/app.html#/#{type}/#{id}?response_type=code&scope=snsapi_base&state=123#wechat_redirect" + Rails.logger.info "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx8e1ab05163a28e37&redirect_uri=https://www.trustie.net/assets/wechat/app.html#/#{type}/#{id}?response_type=code&scope=snsapi_base&state=123#wechat_redirect" end def message_update_template(user_id, type, id, first, key1, key2, remark="") @@ -83,7 +83,7 @@ class WechatService data = { touser:uw.openid, template_id:"YTyNPZnQD8uZFBFq-Q6cCOWaq5LA9vL6RFlF2JuD5Cg", - url:"https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxc09454f171153c2d&redirect_uri=https://www.trustie.net/assets/wechat/app.html#/#{type}/#{id}?response_type=code&scope=snsapi_base&state=123#wechat_redirect", + url:"https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx8e1ab05163a28e37&redirect_uri=https://www.trustie.net/assets/wechat/app.html#/#{type}/#{id}?response_type=code&scope=snsapi_base&state=123#wechat_redirect", topcolor:"#FF0000", data:{ first: { @@ -112,6 +112,6 @@ class WechatService end Rails.logger.info "send over. #{req}" end - Rails.logger.info "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxc09454f171153c2d&redirect_uri=https://www.trustie.net/assets/wechat/app.html#/#{type}/#{id}?response_type=code&scope=snsapi_base&state=123#wechat_redirect" + Rails.logger.info "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx8e1ab05163a28e37&redirect_uri=https://www.trustie.net/assets/wechat/app.html#/#{type}/#{id}?response_type=code&scope=snsapi_base&state=123#wechat_redirect" end end \ No newline at end of file diff --git a/config/menu.yml b/config/menu.yml index 3951f836b..0c0e5c17d 100644 --- a/config/menu.yml +++ b/config/menu.yml @@ -2,7 +2,7 @@ button: - type: "view" name: "最新动态" - url: "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxc09454f171153c2d&redirect_uri=https://www.trustie.net/assets/wechat/app.html#/activities?response_type=code&scope=snsapi_base&state=123#wechat_redirect" + url: "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx8e1ab05163a28e37&redirect_uri=https://www.trustie.net/assets/wechat/app.html#/activities?response_type=code&scope=snsapi_base&state=123#wechat_redirect" - type: "click" name: "意见反馈" diff --git a/config/wechat.yml b/config/wechat.yml index 5b528487b..53141df40 100644 --- a/config/wechat.yml +++ b/config/wechat.yml @@ -3,8 +3,8 @@ default: &default # corpsecret: "corpsecret" # agentid: 1 # Or if using public account, only need above two line - appid: "wxc09454f171153c2d" - secret: "dff5b606e34dcafe24163ec82c2715f8" + appid: "wx8e1ab05163a28e37" + secret: "beb4d3bc4b32b3557811680835357841" token: "123456" access_token: "1234567" encrypt_mode: false # if true must fill encoding_aes_key From b1c70db28a83d9147bfabd3bcab148a2fd7ab7e8 Mon Sep 17 00:00:00 2001 From: huang Date: Mon, 23 May 2016 16:34:31 +0800 Subject: [PATCH 107/668] =?UTF-8?q?=E4=B8=8A=E7=BA=BF=E6=9A=82=E6=97=B6?= =?UTF-8?q?=E8=BF=98=E5=8E=9F=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/news.rb | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/models/news.rb b/app/models/news.rb index 7131969a4..877d799bf 100644 --- a/app/models/news.rb +++ b/app/models/news.rb @@ -169,7 +169,7 @@ class News < ActiveRecord::Base if self.course self.course.members.each do |m| if m.user_id != self.author_id - self.delay.send_message(m.user_id, self.course_id) + # self.delay.send_message(m.user_id, self.course_id) count = ShieldWechatMessage.where("container_type='User' and container_id=#{m.user_id} and shield_type='Course' and shield_id=#{self.course_id}").count if count == 0 ws = WechatService.new @@ -189,9 +189,9 @@ class News < ActiveRecord::Base end end - def send_message user_id, course_id - self.course_messages << CourseMessage.new(:user_id => user_id, :course_id => course_id, :viewed => false) - end + # def send_message user_id, course_id + # self.course_messages << CourseMessage.new(:user_id => user_id, :course_id => course_id, :viewed => false) + # end # Time 2015-03-31 13:50:54 # Author lizanle From e7d20c2b985ddbc1339e3eb7765d2e70b980f664 Mon Sep 17 00:00:00 2001 From: yuanke <249218296@qq.com> Date: Tue, 24 May 2016 09:11:50 +0800 Subject: [PATCH 108/668] =?UTF-8?q?1.=E9=A1=B9=E7=9B=AE=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E5=8F=8D=E9=A6=88=E3=80=81=E8=AF=BE=E7=A8=8B=E7=95=99=E8=A8=80?= =?UTF-8?q?=E5=8C=BA=E5=A2=9E=E5=8A=A0=E8=87=AA=E5=8A=A8=E8=AF=86=E5=88=AB?= =?UTF-8?q?URL=E5=8A=9F=E8=83=BD=202.=E6=89=80=E6=9C=89=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E8=AF=86=E5=88=ABURL=E5=8C=BA=E5=9F=9F=E7=9A=84=E9=93=BE?= =?UTF-8?q?=E6=8E=A5=E9=A2=9C=E8=89=B2=E9=83=BD=E6=94=B9=E4=B8=BA#15bccf?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/blog_comments/show.html.erb | 3 +++ app/views/courses/_history.html.erb | 14 +++++++++++--- app/views/projects/_history.html.erb | 10 +++++++++- app/views/words/_journal_reply_items.html.erb | 17 ++++++++++++----- public/stylesheets/courses.css | 8 ++++++-- public/stylesheets/css.css | 2 +- public/stylesheets/new_user.css | 4 ++++ public/stylesheets/project.css | 5 ++++- public/stylesheets/public.css | 2 ++ 9 files changed, 52 insertions(+), 13 deletions(-) diff --git a/app/views/blog_comments/show.html.erb b/app/views/blog_comments/show.html.erb index d3763abf3..72c5dce1e 100644 --- a/app/views/blog_comments/show.html.erb +++ b/app/views/blog_comments/show.html.erb @@ -215,6 +215,9 @@ $(function(){ var postContent = $("#message_description_<%= @article.id %>").html(); postContent = postContent.replace(/ /g," "); + postContent= postContent.replace(/ {2}/g,"  "); + postContent=postContent.replace(/   /g,"   "); + postContent=postContent.replace(/  /g,"   "); $("#message_description_<%= @article.id %>").html(postContent); autoUrl('message_description_<%= @article.id %>'); }); diff --git a/app/views/courses/_history.html.erb b/app/views/courses/_history.html.erb index 864509546..b93cbc3c6 100644 --- a/app/views/courses/_history.html.erb +++ b/app/views/courses/_history.html.erb @@ -15,9 +15,11 @@ <%= format_time(journal.created_on) %>
        -

        - <%= journal.notes.html_safe %> -

        +
        +

        + <%= journal.notes.html_safe %> +

        +
        @@ -49,6 +51,12 @@
        + <% end %> <% end %> diff --git a/app/views/projects/_history.html.erb b/app/views/projects/_history.html.erb index b31445fdc..e8d08de3d 100644 --- a/app/views/projects/_history.html.erb +++ b/app/views/projects/_history.html.erb @@ -10,7 +10,9 @@ <%= format_time(journal.created_on) %>
        -

        <%=journal.notes.html_safe%> +

        +

        <%=journal.notes.html_safe%>

        +
        <% ids = 'project_respond_form_'+ journal.id.to_s%> @@ -42,6 +44,12 @@
        + <% end %> <% end %> diff --git a/app/views/words/_journal_reply_items.html.erb b/app/views/words/_journal_reply_items.html.erb index db848d2cd..e0d52479d 100644 --- a/app/views/words/_journal_reply_items.html.erb +++ b/app/views/words/_journal_reply_items.html.erb @@ -20,10 +20,11 @@ <% else %> <%= l(:label_anonymous) %> <% end %> - -

        - <%= reply.notes.html_safe %> -

        +
        +

        + <%= reply.notes.html_safe %> +

        +
        <%= format_time reply.created_on %> @@ -52,4 +53,10 @@
        -<% end %> \ No newline at end of file +<% end %> + \ No newline at end of file diff --git a/public/stylesheets/courses.css b/public/stylesheets/courses.css index 08981ae54..7e64a27c2 100644 --- a/public/stylesheets/courses.css +++ b/public/stylesheets/courses.css @@ -139,6 +139,7 @@ a.postTypeGrey:hover {color:#269ac9;} .homepagePostTo {font-size:14px; color:#484848; margin-bottom:5px;} .homepagePostTitle {font-size:14px; color:#484848; margin-bottom:5px; font-weight:bold;} .homepagePostTitle td,.homepagePostTitle tr {border: 1px solid; border-color: inherit;} +.homepagePostTitle a{color: #15bccf;} .homepagePostSubmitContainer {height:25px; margin-top: 8px; margin-bottom: 5px;} .homepagePostSubmit {font-size:14px; color:#888888; border:1px solid #dddddd; background-color:#eaeaea; float:left; margin-right:20px; padding:0px 10px;} .homepagePostSubmit:hover {background-color:#d8d8d8;} @@ -146,7 +147,7 @@ a.postTypeGrey:hover {color:#269ac9;} .homepagePostIntro ol li{list-style-type: decimal;margin-left: 40px;} .homepagePostIntro ul li{list-style-type: disc;margin-left: 40px;} .homepagePostIntro td,.homepagePostIntro tr {border: 1px solid; border-color: inherit;} - +.homepagePostIntro a{color: #15bccf;} .homepagePostDeadline {font-size:12px; color:#888888; float:left; margin-top: 2px;} .homepagePostDate {font-size:12px; color:#888888;margin-bottom: 5px;} .homepagePostReply {width:710px; margin:0px auto; background-color:#f1f1f1; margin-top:10px;} @@ -188,6 +189,7 @@ a.postOptionLink2:hover {color:#ffffff; background-color:#269ac9;} .homepagePostReplyContent ol li{list-style-type: decimal;margin-left: 20px;} .homepagePostReplyContent ul li{list-style-type: disc;margin-left: 20px;} .homepagePostReplyContent td,.homepagePostReplyContent tr {border: 1px solid; border-color: inherit;} +.homepagePostReplyContent a{color: #15bccf;} .table_maxWidth table {max-width: 642px;} .homepagePostProjectState {width:52px; height:20px; line-height:20px; border-radius:1px; background-color:#28be6c; color:#ffffff; text-align:center; vertical-align:middle; font-size:12px; display:inline-block; margin-left:5px;} .homepagePostAssignTo {float:left; font-size:14px; color:#269ac9;} @@ -435,6 +437,7 @@ a:hover.ping_sub{ background:#14a8b9;} .ping_dispic a{ display:block; height:46px; width:46px; border:1px solid #CCC; padding:1px; float:left;} .ping_dispic a:hover{border:1px solid #15bccf;} .ping_discon{ float:left; width:610px; margin-left:10px; } +.ping_journal a{color: #15bccf;} /*.ping_distop span{ float:left;}*/ .ping_distop p{ color:#5f5f5f;word-break: break-all;word-wrap: break-word;} .ping_disfoot a{ float:right; color: #6883b6; margin-left:5px; margin-bottom:5px;} @@ -1131,7 +1134,8 @@ a.link_file_a2{ background:url(../images/pic_file.png) 0 -15px no-repeat; paddin .postDetailDes p,div,em{word-break: break-all;word-wrap: break-word;} .postDetailDes ol li{list-style-type: decimal;margin-left: 40px;} .postDetailDes ul li{list-style-type: disc;margin-left: 40px;} -.postDetailDes td,.homepagePostReplyContent tr {border: 1px solid; border-color: inherit;} +.postDetailDes td,.postDetailDes tr {border: 1px solid; border-color: inherit;} +.postDetailDes a{color: #15bccf;} .homepagePostIntro p,.homepagePostIntro div,.homepagePostIntro em, .homepagePostIntro span{text-align: justify; text-justify:inter-ideograph; word-break: normal !important; word-wrap: break-word !important; } .postDetailCreater {color:#888888; font-size:12px; float:left; margin-right:25px;} .postDetailDate {color:#888888; font-size:12px; float:left;} diff --git a/public/stylesheets/css.css b/public/stylesheets/css.css index 3e21a5fda..74a9d9aaf 100644 --- a/public/stylesheets/css.css +++ b/public/stylesheets/css.css @@ -123,7 +123,7 @@ a:hover.ping_sub{ background:#14a8b9;} .list_style ol li{list-style-type: decimal;margin-left: 40px;} .list_style ul li{list-style-type: disc;margin-left: 40px;} .ping_distop span a{ float:right; /*width:20px;*/ height:20px; background:url(images/star.png) -24px 0 no-repeat; margin-right:3px;} - +.ping_journal a{color: #15bccf;} /* 创建作业 */ .Newwork{ width:940px; border:1px solid #c3c3c3;} diff --git a/public/stylesheets/new_user.css b/public/stylesheets/new_user.css index 326d2897b..ba3afd79b 100644 --- a/public/stylesheets/new_user.css +++ b/public/stylesheets/new_user.css @@ -673,6 +673,7 @@ a.postTypeGrey:hover {color:#269ac9;} .homepagePostTo {font-size:14px; color:#484848; margin-bottom:5px;} .homepagePostTitle {font-size:14px; color:#484848; margin-bottom:5px; font-weight:bold;} .homepagePostTitle td,.homepagePostTitle tr {border: 1px solid; border-color: inherit;} +.homepagePostTitle a{color: #15bccf;} .homepagePostSubmitContainer {height:25px; margin-top: 8px; margin-bottom: 5px;} .homepagePostSubmit {font-size:14px; color:#888888; border:1px solid #dddddd; background-color:#eaeaea; float:left; margin-right:20px; padding:0px 10px;} .homepagePostSubmit:hover {background-color:#d8d8d8;} @@ -683,6 +684,7 @@ a.postTypeGrey:hover {color:#269ac9;} .homepagePostIntro ol li{list-style-type: decimal;margin-left: 40px;} .homepagePostIntro ul li{list-style-type: disc;margin-left: 40px;} .homepagePostIntro td,.homepagePostIntro tr {border: 1px solid; border-color: inherit;} +.homepagePostIntro a{color: #15bccf;} .homepagePostReplyBanner {width:718px; height:33px; border:1px solid #e4e4e4; line-height:33px; vertical-align:middle; font-size:12px; color:#888888; position: relative;} .borderBottomNone {border-bottom:none !important;} .homepagePostReplyBanner {width:718px; height:33px; border:1px solid #e4e4e4; line-height:33px; vertical-align:middle; font-size:12px; color:#888888;} @@ -722,6 +724,7 @@ a.postOptionLink:hover {color:#ffffff; background-color:#269ac9;} .homepagePostReplyContent ol li{list-style-type: decimal;margin-left: 40px;} .homepagePostReplyContent ul li{list-style-type: disc;margin-left: 40px;} .homepagePostReplyContent td,.homepagePostReplyContent tr {border: 1px solid; border-color: inherit;} +.homepagePostReplyContent a{color: #15bccf;} .table_maxWidth table {max-width: 642px;} .homepagePostProjectState {width:52px; height:20px; line-height:20px; border-radius:1px; background-color:#28be6c; color:#ffffff; text-align:center; vertical-align:middle; font-size:12px; display:inline-block; margin-left:5px;} .homepagePostAssignTo {float:left; font-size:14px; color:#269ac9;} @@ -866,6 +869,7 @@ a.sortArrowActiveU {background:url(images/post_image_list.png) -17px -20px no-re .postDetailDes ol li{list-style-type: decimal;margin-left: 40px;} .postDetailDes ul li{list-style-type: disc;margin-left: 40px;} .postDetailDes td,.postDetailDes tr {border: 1px solid; border-color: inherit;} +.postDetailDes a{color: #15bccf;} .homepagePostIntro p,.homepagePostIntro div,.homepagePostIntro em, .homepagePostIntro span{text-align: justify; text-justify:inter-ideograph; word-break: normal !important; word-wrap: break-word !important; } /*line-height: 18px !important;*/ .postDetailCreater {color:#888888; font-size:12px; float:left; margin-right:25px;} .postDetailDate {color:#888888; font-size:12px; float:left;} diff --git a/public/stylesheets/project.css b/public/stylesheets/project.css index 09f7075f7..6baf0386d 100644 --- a/public/stylesheets/project.css +++ b/public/stylesheets/project.css @@ -332,6 +332,7 @@ a:hover.ping_sub{ background:#14a8b9;} /*.ping_distop span{ float:left;}*/ .ping_distop p{ color:#5f5f5f;word-break: break-all;word-wrap: break-word;} .ping_disfoot a{ float:right; color: #6883b6; margin-left:5px; margin-bottom:5px;} +.ping_journal a{color: #15bccf;} /*.ping_distop span a{ float:right; width:20px; height:20px; background:url(images/star.png) -24px 0 no-repeat; margin-right:3px;}*/ .list_style ol li{list-style-type: decimal;margin-left: 40px;} .list_style ul li{list-style-type: disc;margin-left: 40px;} @@ -974,6 +975,7 @@ a:hover.Reply_pic{border:1px solid #64bdd9;} .homepagePostIntro ol li{list-style-type: decimal;margin-left: 40px;} .homepagePostIntro ul li{list-style-type: disc;margin-left: 40px;} .homepagePostIntro td,.homepagePostIntro tr {border: 1px solid; border-color: inherit;} +.homepagePostIntro a{color: #15bccf;} .topBorder { border-top: 1px solid #E4E4E4; } @@ -1114,7 +1116,8 @@ a:hover.BlueCirBtnMini{ background:#269ac9; color:#fff;} .postDetailDes p,div,em{word-break: break-all;word-wrap: break-word;} .postDetailDes ol li{list-style-type: decimal;margin-left: 40px;} .postDetailDes ul li{list-style-type: disc;margin-left: 40px;} -.postDetailDes td,.homepagePostReplyContent tr {border: 1px solid; border-color: inherit;} +.postDetailDes td,.postDetailDes tr {border: 1px solid; border-color: inherit;} +.postDetailDes a{color: #15bccf;} .homepagePostIntro p,.homepagePostIntro div,.homepagePostIntro em, .homepagePostIntro span{text-align: justify; text-justify:inter-ideograph; word-break: normal !important; word-wrap: break-word !important;} .postDetailCreater {color:#888888; font-size:12px; float:left; margin-right:25px;} .postDetailDate {color:#888888; font-size:12px; float:left;} diff --git a/public/stylesheets/public.css b/public/stylesheets/public.css index c7fa7d60c..98fa11b99 100644 --- a/public/stylesheets/public.css +++ b/public/stylesheets/public.css @@ -611,6 +611,7 @@ a.postTypeGrey:hover {color:#269ac9;} .homepagePostIntro ol li{list-style-type: decimal;margin-left: 40px;} .homepagePostIntro ul li{list-style-type: disc;margin-left: 40px;} .homepagePostIntro td,.homepagePostIntro tr {border: 1px solid; border-color: inherit;} +.homepagePostIntro a{color: #15bccf;} .homepagePostDeadline {font-size:12px; color:#888888; float:left; margin-top: 2px;} .homepagePostDate {font-size:12px; color:#888888;margin-bottom: 5px;} .homepagePostReplyBanner {width:708px; height:33px; border:1px solid #e4e4e4; line-height:33px; vertical-align:middle; font-size:12px; color:#888888; position: relative;} @@ -647,6 +648,7 @@ a.postReplyCancel:hover {color:#ffffff;} .homepagePostReplyContent ol li{list-style-type: decimal;margin-left: 40px;} .homepagePostReplyContent ul li{list-style-type: disc;margin-left: 40px;} .homepagePostReplyContent td,.homepagePostReplyContent tr {border: 1px solid; border-color: inherit;} +.homepagePostReplyContent a{color: #15bccf;} .table_maxWidth table {max-width: 642px;} .homepagePostProjectState {width:42px; height:20px; line-height:20px; border-radius:1px; background-color:#28be6c; color:#ffffff; text-align:center; vertical-align:middle; font-size:12px; display:inline-block; margin-left:5px;} .homepagePostAssignTo {float:left; font-size:14px; color:#15bccf;} From 2a0b35a1b393252ba1ad45df76f55b959b3d1312 Mon Sep 17 00:00:00 2001 From: txz Date: Tue, 24 May 2016 09:38:49 +0800 Subject: [PATCH 109/668] =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E5=9B=9E=E5=A4=8D?= =?UTF-8?q?=E6=A1=86=E9=AB=98=E5=BA=A6=E9=9A=8F=E6=96=87=E5=AD=97=E5=A2=9E?= =?UTF-8?q?=E5=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 1234567 | 2 +- public/assets/wechat/blog_detail.html | 3 ++- public/assets/wechat/course_discussion.html | 3 ++- public/assets/wechat/course_notice.html | 3 ++- public/assets/wechat/homework_detail.html | 3 ++- public/assets/wechat/issue_detail.html | 3 ++- public/assets/wechat/jour_message_detail.html | 3 ++- public/assets/wechat/project_discussion.html | 3 ++- public/javascripts/wechat/app.js | 19 ++++++++++++++++++- public/stylesheets/weui/weixin.css | 3 ++- 10 files changed, 35 insertions(+), 10 deletions(-) diff --git a/1234567 b/1234567 index 3d4e13b55..f2f064de8 100644 --- a/1234567 +++ b/1234567 @@ -1 +1 @@ -{"access_token":"xAp1rQu0Xpv8CrlooZydXiyAQIqavONhB6FXnCl1Rw_nM-fyjUz-9foxqgkH2rPMwr5f1THUkzqxshoF3CZHjJM4CautpSlQ5e7MgkjF5-a8GB5gYCxtcdb5C1H2jyMgIOOcCGAPVV","expires_in":7200,"got_token_at":1463640239} \ No newline at end of file +{"access_token":"gRbIMUYYKFdANxpBGhYc8iauelCeSy3x7wODnZd1crF9upNiANKAdGaMKFLcgPz_0-oJvRtb7Ai0G1WnL_AnVV-tdRlzlCPpgpO9Z9k9EqrGz2iSLCAbQ35qk0f75KWlRRDfCEAVVH","expires_in":7200,"got_token_at":1464053170} \ No newline at end of file diff --git a/public/assets/wechat/blog_detail.html b/public/assets/wechat/blog_detail.html index 9f229699e..8473b1446 100644 --- a/public/assets/wechat/blog_detail.html +++ b/public/assets/wechat/blog_detail.html @@ -36,7 +36,8 @@
        - + +
        diff --git a/public/assets/wechat/course_discussion.html b/public/assets/wechat/course_discussion.html index 6466e12b8..c790fd5cf 100644 --- a/public/assets/wechat/course_discussion.html +++ b/public/assets/wechat/course_discussion.html @@ -42,7 +42,8 @@
        - + +
        diff --git a/public/assets/wechat/course_notice.html b/public/assets/wechat/course_notice.html index c426f2794..18f62be1e 100644 --- a/public/assets/wechat/course_notice.html +++ b/public/assets/wechat/course_notice.html @@ -42,7 +42,8 @@
        - + +
        diff --git a/public/assets/wechat/homework_detail.html b/public/assets/wechat/homework_detail.html index 1af5e185d..5efa7c54d 100644 --- a/public/assets/wechat/homework_detail.html +++ b/public/assets/wechat/homework_detail.html @@ -48,7 +48,8 @@
        - + +
        diff --git a/public/assets/wechat/issue_detail.html b/public/assets/wechat/issue_detail.html index 950cbe18e..20c35c664 100644 --- a/public/assets/wechat/issue_detail.html +++ b/public/assets/wechat/issue_detail.html @@ -46,7 +46,8 @@
        - + +
        diff --git a/public/assets/wechat/jour_message_detail.html b/public/assets/wechat/jour_message_detail.html index 29660e4fd..f9aebd632 100644 --- a/public/assets/wechat/jour_message_detail.html +++ b/public/assets/wechat/jour_message_detail.html @@ -34,7 +34,8 @@
        - + +
        diff --git a/public/assets/wechat/project_discussion.html b/public/assets/wechat/project_discussion.html index 03fda04e5..0c3f9aad3 100644 --- a/public/assets/wechat/project_discussion.html +++ b/public/assets/wechat/project_discussion.html @@ -42,7 +42,8 @@
        - + +
        diff --git a/public/javascripts/wechat/app.js b/public/javascripts/wechat/app.js index 7737a46dc..4c9ea260a 100644 --- a/public/javascripts/wechat/app.js +++ b/public/javascripts/wechat/app.js @@ -128,6 +128,7 @@ app.factory('common', function($http, auth, $routeParams){ openid: auth.openid() }; + //回复按钮禁用 data.disabled = true; $http({ @@ -136,6 +137,7 @@ app.factory('common', function($http, auth, $routeParams){ data: userInfo }).then(function successCallback(response) { alert("提交成功"); + //数据提交完成,回复按钮启用 data.disabled = false; if(typeof cb === 'function'){ cb(); @@ -402,6 +404,21 @@ app.directive('textAutoHeight', function($timeout){ } }); +app.directive('inputAuto',function(){ + return{ + restrict: 'A', + scope: {}, + link: function(scope, element){ + var copyContainer = element.parent().children().eq(0); + element.on('input',function(){ + copyContainer.html(element[0].value); + var textHeight = copyContainer[0].scrollHeight; + element.css('height', textHeight + 'px'); + }); + } + } +}); + app.directive('loadingSpinner', function ($http) { return { restrict: 'A', @@ -459,7 +476,7 @@ app.config(['$routeProvider',"$httpProvider",function ($routeProvider, $httpProv redirectTo: '/activities' }); - //监听异步请求 + //监听异步请求,实现加载中显隐标记 $httpProvider.interceptors.push(function ($q, $rootScope) { if ($rootScope.activeCalls == undefined) { $rootScope.activeCalls = 0; diff --git a/public/stylesheets/weui/weixin.css b/public/stylesheets/weui/weixin.css index 47610d4c5..64598e381 100644 --- a/public/stylesheets/weui/weixin.css +++ b/public/stylesheets/weui/weixin.css @@ -66,7 +66,8 @@ a.underline {text-decoration:underline;} .post-reply-content img {max-width:100%;} .post-reply-date, .post-reply-trigger {font-size:13px;} .post-input-container {padding-right:2px;} -.post-reply-input {width:100%; height:28px; line-height:28px; border:1px solid #e6e6e6; outline:none; padding:0; margin:0; border-radius:3px;} +.copy-input {width:100%; height:28px; line-height:28px; border-radius:3px; position:absolute; left:-9999em;} +.post-reply-input {width:100%; height:28px; max-height:84px; line-height:28px; border:1px solid #e6e6e6; outline:none; padding:0; margin:0; border-radius:3px; overflow-y:hidden; resize:none;} .post-reply-submit {font-size:13px; padding:3px 8px; color:#fff; background-color:#269ac9; outline:none; border:none; display:inline-block;} .reply-icon {background:url(/images/wechat/wechat_icon.png) -100px 1px no-repeat; width:20px; height:18px; display:inline-block; vertical-align:middle;} .praise-icon {background:url(/images/wechat/wechat_icon.png) -100px -38px no-repeat; width:20px; height:18px; display:inline-block; vertical-align:middle;} From ed7c6cbcfe62d37513f567eb517760f97e4a3b47 Mon Sep 17 00:00:00 2001 From: huang Date: Tue, 24 May 2016 09:40:16 +0800 Subject: [PATCH 110/668] =?UTF-8?q?=E7=BB=84=E7=BB=87=E6=96=B0=E5=BB=BA?= =?UTF-8?q?=E5=B8=96=E5=AD=90=E5=A2=9E=E5=87=8Fstatus=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org_document_comments_controller.rb | 1 + app/models/org_document_comment.rb | 3 +- .../org_document_comments/_form.html.erb | 34 ++ app/views/org_document_comments/edit.html.erb | 29 -- app/views/org_document_comments/new.html.erb | 31 +- app/views/organizations/show.html.erb | 4 +- db/schema.rb | 436 +++++++++++++++++- 7 files changed, 454 insertions(+), 84 deletions(-) create mode 100644 app/views/org_document_comments/_form.html.erb diff --git a/app/controllers/org_document_comments_controller.rb b/app/controllers/org_document_comments_controller.rb index 82062d3dd..b012ba901 100644 --- a/app/controllers/org_document_comments_controller.rb +++ b/app/controllers/org_document_comments_controller.rb @@ -12,6 +12,7 @@ class OrgDocumentCommentsController < ApplicationController @org_document_comment = OrgDocumentComment.new(:organization_id => @organization.id, :creator_id => User.current.id) @org_document_comment.title = params[:org_document_comment][:title] @org_document_comment.content = params[:org_document_comment][:content] + @org_document_comment.status = params[:org_document_comment][:status] == "on" ? 1 : 0 @org_document_comment.save_attachments(params[:attachments]) if params[:field_id] @org_document_comment.org_subfield_id = params[:field_id].to_i diff --git a/app/models/org_document_comment.rb b/app/models/org_document_comment.rb index 5aa3c1dab..dd070c825 100644 --- a/app/models/org_document_comment.rb +++ b/app/models/org_document_comment.rb @@ -1,5 +1,6 @@ class OrgDocumentComment < ActiveRecord::Base - attr_accessible :content, :creator_id, :organization_id, :parent_id, :reply_id, :title,:sticky,:locked + # status: 1 模式二中置顶 0:模式二中正常显示 + attr_accessible :content, :creator_id, :organization_id, :parent_id, :reply_id, :title, :sticky, :locked, :status include Redmine::SafeAttributes include ApplicationHelper belongs_to :organization diff --git a/app/views/org_document_comments/_form.html.erb b/app/views/org_document_comments/_form.html.erb new file mode 100644 index 000000000..502da97ad --- /dev/null +++ b/app/views/org_document_comments/_form.html.erb @@ -0,0 +1,34 @@ +
        + +
        +
        +
        +
        +
        +
        + + <%#= kindeditor_tag 'org_document_comment[content]','', :editor_id => 'org_document_description_editor', :height => "150px" %> +
        +
        +

        +

        +

        +
        +
        置顶显示 : + (仅限模式二) +
        +
        +
        +
        + <%= render :partial => 'org_document_comments/attachment', :locals => {:container => nil} %> +
        +
        +
        + +
        + 确定 + + 取消 +
        +
        +
        \ No newline at end of file diff --git a/app/views/org_document_comments/edit.html.erb b/app/views/org_document_comments/edit.html.erb index 5997482fb..a36397677 100644 --- a/app/views/org_document_comments/edit.html.erb +++ b/app/views/org_document_comments/edit.html.erb @@ -28,36 +28,7 @@
        <%= form_tag url_for(:controller => 'org_document_comments',:action => 'update', :id => @org_document.id, :flag => @flag, :org_subfield_id => params[:org_subfield_id]),:method => 'put', :id => 'new_org_document_form' do |f| %> -
        - -
        -
        -
        -
        -
        - - <%#= kindeditor_tag 'org_document_comment[content]','', :editor_id => 'org_document_description_editor', :height => "150px" %> -
        -
        -

        -

        -

        -
        - -
        -
        - <%= render :partial => 'org_document_comments/attachment', :locals => {:container => @org_document} %> -
        -
        -
        -
        - 确定 - - 取消 -
        -
        -
        <% end %>
        \ No newline at end of file diff --git a/app/views/org_document_comments/new.html.erb b/app/views/org_document_comments/new.html.erb index cf4ffddcf..ed327dece 100644 --- a/app/views/org_document_comments/new.html.erb +++ b/app/views/org_document_comments/new.html.erb @@ -37,35 +37,6 @@
        <%= form_tag organization_org_document_comments_path(:organization_id => @organization.id, :field_id => params[:field_id]), :id => 'new_org_document_form' do |f| %> -
        - -
        -
        -
        -
        -
        -
        - - <%#= kindeditor_tag 'org_document_comment[content]','', :editor_id => 'org_document_description_editor', :height => "150px" %> -
        -
        -

        -

        -

        -
        -
        -
        - <%= render :partial => 'org_document_comments/attachment', :locals => {:container => nil} %> -
        -
        -
        - -
        - 确定 - - 取消 -
        -
        -
        + <%= render :partial => "form" %> <% end %>
        diff --git a/app/views/organizations/show.html.erb b/app/views/organizations/show.html.erb index db3849de9..c490efb85 100644 --- a/app/views/organizations/show.html.erb +++ b/app/views/organizations/show.html.erb @@ -1,5 +1,5 @@ -<%# 区分两种模式 %> -<% if @organization.switch_type %> +<%# 区分两种模式 params[:org_subfield_id] 不为空的时候则跳到栏目%> +<% if @organization.switch_type && params[:org_subfield_id].nil? %> <%= render :partial => 'show_type2' %> <% else %> <%= javascript_include_tag "jquery.infinitescroll.js" %> diff --git a/db/schema.rb b/db/schema.rb index 9c4b4b333..7462c304e 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended to check this file into your version control system. -ActiveRecord::Schema.define(:version => 20160519070718) do +ActiveRecord::Schema.define(:version => 20160523085440) do create_table "activities", :force => true do |t| t.integer "act_id", :null => false @@ -52,6 +52,28 @@ ActiveRecord::Schema.define(:version => 20160519070718) do add_index "api_keys", ["access_token"], :name => "index_api_keys_on_access_token" add_index "api_keys", ["user_id"], :name => "index_api_keys_on_user_id" + create_table "application_settings", :force => true do |t| + t.integer "default_projects_limit" + t.boolean "signup_enabled" + t.boolean "signin_enabled" + t.boolean "gravatar_enabled" + t.text "sign_in_text" + t.datetime "created_at" + t.datetime "updated_at" + t.string "home_page_url" + t.integer "default_branch_protection", :default => 2 + t.boolean "twitter_sharing_enabled", :default => true + t.text "restricted_visibility_levels" + t.boolean "version_check_enabled", :default => true + t.integer "max_attachment_size", :default => 10, :null => false + t.integer "default_project_visibility" + t.integer "default_snippet_visibility" + t.text "restricted_signup_domains" + t.boolean "user_oauth_applications", :default => true + t.string "after_sign_out_path" + t.integer "session_expire_delay", :default => 10080, :null => false + end + create_table "applied_projects", :force => true do |t| t.integer "project_id", :null => false t.integer "user_id", :null => false @@ -77,6 +99,18 @@ ActiveRecord::Schema.define(:version => 20160519070718) do t.datetime "updated_at", :null => false end + create_table "apply_resources", :force => true do |t| + t.integer "status" + t.integer "user_id" + t.integer "attachment_id" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + t.integer "container_id" + t.string "container_type" + t.text "content" + t.integer "apply_user_id" + end + create_table "at_messages", :force => true do |t| t.integer "user_id" t.integer "at_message_id" @@ -144,6 +178,20 @@ ActiveRecord::Schema.define(:version => 20160519070718) do t.string "typeName", :limit => 50 end + create_table "audit_events", :force => true do |t| + t.integer "author_id", :null => false + t.string "type", :null => false + t.integer "entity_id", :null => false + t.string "entity_type", :null => false + t.text "details" + t.datetime "created_at" + t.datetime "updated_at" + end + + add_index "audit_events", ["author_id"], :name => "index_audit_events_on_author_id" + add_index "audit_events", ["entity_id", "entity_type"], :name => "index_audit_events_on_entity_id_and_entity_type" + add_index "audit_events", ["type"], :name => "index_audit_events_on_type" + create_table "auth_sources", :force => true do |t| t.string "type", :limit => 30, :default => "", :null => false t.string "name", :limit => 60, :default => "", :null => false @@ -241,6 +289,17 @@ ActiveRecord::Schema.define(:version => 20160519070718) do add_index "boards", ["last_message_id"], :name => "index_boards_on_last_message_id" add_index "boards", ["project_id"], :name => "boards_project_id" + create_table "broadcast_messages", :force => true do |t| + t.text "message", :null => false + t.datetime "starts_at" + t.datetime "ends_at" + t.integer "alert_type" + t.datetime "created_at" + t.datetime "updated_at" + t.string "color" + t.string "font" + end + create_table "bug_to_osps", :force => true do |t| t.integer "osp_id" t.integer "relative_memo_id" @@ -540,6 +599,10 @@ ActiveRecord::Schema.define(:version => 20160519070718) do t.integer "visits", :default => 0 end + add_index "courses", ["id"], :name => "id", :unique => true + add_index "courses", ["tea_id"], :name => "tea_id" + add_index "courses", ["visits"], :name => "visits" + create_table "custom_fields", :force => true do |t| t.string "type", :limit => 30, :default => "", :null => false t.string "name", :limit => 30, :default => "", :null => false @@ -601,6 +664,15 @@ ActiveRecord::Schema.define(:version => 20160519070718) do add_index "delayed_jobs", ["priority", "run_at"], :name => "delayed_jobs_priority" + create_table "deploy_keys_projects", :force => true do |t| + t.integer "deploy_key_id", :null => false + t.integer "project_id", :null => false + t.datetime "created_at" + t.datetime "updated_at" + end + + add_index "deploy_keys_projects", ["project_id"], :name => "index_deploy_keys_projects_on_project_id" + create_table "discuss_demos", :force => true do |t| t.string "title" t.text "body" @@ -650,6 +722,16 @@ ActiveRecord::Schema.define(:version => 20160519070718) do t.datetime "created_at" end + create_table "emails", :force => true do |t| + t.integer "user_id", :null => false + t.string "email", :null => false + t.datetime "created_at" + t.datetime "updated_at" + end + + add_index "emails", ["email"], :name => "index_emails_on_email", :unique => true + add_index "emails", ["user_id"], :name => "index_emails_on_user_id" + create_table "enabled_modules", :force => true do |t| t.integer "project_id" t.string "name", :null => false @@ -672,6 +754,25 @@ ActiveRecord::Schema.define(:version => 20160519070718) do add_index "enumerations", ["id", "type"], :name => "index_enumerations_on_id_and_type" add_index "enumerations", ["project_id"], :name => "index_enumerations_on_project_id" + create_table "events", :force => true do |t| + t.string "target_type" + t.integer "target_id" + t.string "title" + t.text "data" + t.integer "project_id" + t.datetime "created_at" + t.datetime "updated_at" + t.integer "action" + t.integer "author_id" + end + + add_index "events", ["action"], :name => "index_events_on_action" + add_index "events", ["author_id"], :name => "index_events_on_author_id" + add_index "events", ["created_at"], :name => "index_events_on_created_at" + add_index "events", ["project_id"], :name => "index_events_on_project_id" + add_index "events", ["target_id"], :name => "index_events_on_target_id" + add_index "events", ["target_type"], :name => "index_events_on_target_type" + create_table "exercise_answers", :force => true do |t| t.integer "user_id" t.integer "exercise_question_id" @@ -774,6 +875,15 @@ ActiveRecord::Schema.define(:version => 20160519070718) do add_index "forge_messages", ["forge_message_id", "forge_message_type"], :name => "index_forge_messages_on_forge_message_id_and_forge_message_type" add_index "forge_messages", ["user_id", "project_id", "created_at"], :name => "index_forge_messages_on_user_id_and_project_id_and_created_at" + create_table "forked_project_links", :force => true do |t| + t.integer "forked_to_project_id", :null => false + t.integer "forked_from_project_id", :null => false + t.datetime "created_at" + t.datetime "updated_at" + end + + add_index "forked_project_links", ["forked_to_project_id"], :name => "index_forked_project_links_on_forked_to_project_id", :unique => true + create_table "forums", :force => true do |t| t.string "name", :null => false t.text "description" @@ -903,6 +1013,17 @@ ActiveRecord::Schema.define(:version => 20160519070718) do t.datetime "updated_at", :null => false end + create_table "identities", :force => true do |t| + t.string "extern_uid" + t.string "provider" + t.integer "user_id" + t.datetime "created_at" + t.datetime "updated_at" + end + + add_index "identities", ["created_at", "id"], :name => "index_identities_on_created_at_and_id" + add_index "identities", ["user_id"], :name => "index_identities_on_user_id" + create_table "invite_lists", :force => true do |t| t.integer "project_id" t.integer "user_id" @@ -1046,6 +1167,20 @@ ActiveRecord::Schema.define(:version => 20160519070718) do t.integer "private", :default => 0 end + create_table "keys", :force => true do |t| + t.integer "user_id" + t.datetime "created_at" + t.datetime "updated_at" + t.text "key" + t.string "title" + t.string "type" + t.string "fingerprint" + t.boolean "public", :default => false, :null => false + end + + add_index "keys", ["created_at", "id"], :name => "index_keys_on_created_at_and_id" + add_index "keys", ["user_id"], :name => "index_keys_on_user_id" + create_table "kindeditor_assets", :force => true do |t| t.string "asset" t.integer "file_size" @@ -1057,6 +1192,27 @@ ActiveRecord::Schema.define(:version => 20160519070718) do t.integer "owner_type", :default => 0 end + create_table "label_links", :force => true do |t| + t.integer "label_id" + t.integer "target_id" + t.string "target_type" + t.datetime "created_at" + t.datetime "updated_at" + end + + add_index "label_links", ["label_id"], :name => "index_label_links_on_label_id" + add_index "label_links", ["target_id", "target_type"], :name => "index_label_links_on_target_id_and_target_type" + + create_table "labels", :force => true do |t| + t.string "title" + t.string "color" + t.integer "project_id" + t.datetime "created_at" + t.datetime "updated_at" + end + + add_index "labels", ["project_id"], :name => "index_labels_on_project_id" + create_table "member_roles", :force => true do |t| t.integer "member_id", :null => false t.integer "role_id", :null => false @@ -1107,23 +1263,47 @@ ActiveRecord::Schema.define(:version => 20160519070718) do t.integer "viewed_count", :default => 0 end - create_table "mess", :id => false, :force => true do |t| - t.string "课程名" - t.integer "课程ID", :default => 0, :null => false - t.string "教师姓", :default => "", :null => false - t.string "教师名", :limit => 30, :default => "", :null => false - t.string "主贴名", :default => "", :null => false - t.integer "主贴或回帖ID", :default => 0, :null => false - t.integer "回帖对应主贴ID" - t.integer "帖子点赞数" - t.integer "主贴回复数", :default => 0, :null => false - t.text "主贴或回帖内容" - t.datetime "发帖时间", :null => false - t.integer "发帖或回帖用户ID", :default => 0, :null => false - t.string "发帖或回帖用户姓", :default => "", :null => false - t.string "发帖或回帖用户名", :limit => 30, :default => "", :null => false + create_table "merge_request_diffs", :force => true do |t| + t.string "state" + t.text "st_commits", :limit => 2147483647 + t.text "st_diffs", :limit => 2147483647 + t.integer "merge_request_id", :null => false + t.datetime "created_at" + t.datetime "updated_at" end + add_index "merge_request_diffs", ["merge_request_id"], :name => "index_merge_request_diffs_on_merge_request_id", :unique => true + + create_table "merge_requests", :force => true do |t| + t.string "target_branch", :null => false + t.string "source_branch", :null => false + t.integer "source_project_id", :null => false + t.integer "author_id" + t.integer "assignee_id" + t.string "title" + t.datetime "created_at" + t.datetime "updated_at" + t.integer "milestone_id" + t.string "state" + t.string "merge_status" + t.integer "target_project_id", :null => false + t.integer "iid" + t.text "description" + t.integer "position", :default => 0 + t.datetime "locked_at" + end + + add_index "merge_requests", ["assignee_id"], :name => "index_merge_requests_on_assignee_id" + add_index "merge_requests", ["author_id"], :name => "index_merge_requests_on_author_id" + add_index "merge_requests", ["created_at", "id"], :name => "index_merge_requests_on_created_at_and_id" + add_index "merge_requests", ["created_at"], :name => "index_merge_requests_on_created_at" + add_index "merge_requests", ["milestone_id"], :name => "index_merge_requests_on_milestone_id" + add_index "merge_requests", ["source_branch"], :name => "index_merge_requests_on_source_branch" + add_index "merge_requests", ["source_project_id"], :name => "index_merge_requests_on_source_project_id" + add_index "merge_requests", ["target_branch"], :name => "index_merge_requests_on_target_branch" + add_index "merge_requests", ["target_project_id", "iid"], :name => "index_merge_requests_on_target_project_id_and_iid", :unique => true + add_index "merge_requests", ["title"], :name => "index_merge_requests_on_title" + create_table "message_alls", :force => true do |t| t.integer "user_id" t.integer "message_id" @@ -1158,6 +1338,39 @@ ActiveRecord::Schema.define(:version => 20160519070718) do add_index "messages", ["last_reply_id"], :name => "index_messages_on_last_reply_id" add_index "messages", ["parent_id"], :name => "messages_parent_id" + create_table "milestones", :force => true do |t| + t.string "title", :null => false + t.integer "project_id", :null => false + t.text "description" + t.date "due_date" + t.datetime "created_at" + t.datetime "updated_at" + t.string "state" + t.integer "iid" + end + + add_index "milestones", ["created_at", "id"], :name => "index_milestones_on_created_at_and_id" + add_index "milestones", ["due_date"], :name => "index_milestones_on_due_date" + add_index "milestones", ["project_id", "iid"], :name => "index_milestones_on_project_id_and_iid", :unique => true + add_index "milestones", ["project_id"], :name => "index_milestones_on_project_id" + + create_table "namespaces", :force => true do |t| + t.string "name", :null => false + t.string "path", :null => false + t.integer "owner_id" + t.datetime "created_at" + t.datetime "updated_at" + t.string "type" + t.string "description", :default => "", :null => false + t.string "avatar" + end + + add_index "namespaces", ["created_at", "id"], :name => "index_namespaces_on_created_at_and_id" + add_index "namespaces", ["name"], :name => "index_namespaces_on_name", :unique => true + add_index "namespaces", ["owner_id"], :name => "index_namespaces_on_owner_id" + add_index "namespaces", ["path"], :name => "index_namespaces_on_path", :unique => true + add_index "namespaces", ["type"], :name => "index_namespaces_on_type" + create_table "news", :force => true do |t| t.integer "project_id" t.string "title", :limit => 60, :default => "", :null => false @@ -1183,6 +1396,31 @@ ActiveRecord::Schema.define(:version => 20160519070718) do t.datetime "updated_at", :null => false end + create_table "notes", :force => true do |t| + t.text "note" + t.string "noteable_type" + t.integer "author_id" + t.datetime "created_at" + t.datetime "updated_at" + t.integer "project_id" + t.string "attachment" + t.string "line_code" + t.string "commit_id" + t.integer "noteable_id" + t.boolean "system", :default => false, :null => false + t.text "st_diff", :limit => 2147483647 + end + + add_index "notes", ["author_id"], :name => "index_notes_on_author_id" + add_index "notes", ["commit_id"], :name => "index_notes_on_commit_id" + add_index "notes", ["created_at", "id"], :name => "index_notes_on_created_at_and_id" + add_index "notes", ["created_at"], :name => "index_notes_on_created_at" + add_index "notes", ["noteable_id", "noteable_type"], :name => "index_notes_on_noteable_id_and_noteable_type" + add_index "notes", ["noteable_type"], :name => "index_notes_on_noteable_type" + add_index "notes", ["project_id", "noteable_type"], :name => "index_notes_on_project_id_and_noteable_type" + add_index "notes", ["project_id"], :name => "index_notes_on_project_id" + add_index "notes", ["updated_at"], :name => "index_notes_on_updated_at" + create_table "notificationcomments", :force => true do |t| t.string "notificationcommented_type" t.integer "notificationcommented_id" @@ -1192,6 +1430,49 @@ ActiveRecord::Schema.define(:version => 20160519070718) do t.datetime "updated_at", :null => false end + create_table "oauth_access_grants", :force => true do |t| + t.integer "resource_owner_id", :null => false + t.integer "application_id", :null => false + t.string "token", :null => false + t.integer "expires_in", :null => false + t.text "redirect_uri", :null => false + t.datetime "created_at", :null => false + t.datetime "revoked_at" + t.string "scopes" + end + + add_index "oauth_access_grants", ["token"], :name => "index_oauth_access_grants_on_token", :unique => true + + create_table "oauth_access_tokens", :force => true do |t| + t.integer "resource_owner_id" + t.integer "application_id" + t.string "token", :null => false + t.string "refresh_token" + t.integer "expires_in" + t.datetime "revoked_at" + t.datetime "created_at", :null => false + t.string "scopes" + end + + add_index "oauth_access_tokens", ["refresh_token"], :name => "index_oauth_access_tokens_on_refresh_token", :unique => true + add_index "oauth_access_tokens", ["resource_owner_id"], :name => "index_oauth_access_tokens_on_resource_owner_id" + add_index "oauth_access_tokens", ["token"], :name => "index_oauth_access_tokens_on_token", :unique => true + + create_table "oauth_applications", :force => true do |t| + t.string "name", :null => false + t.string "uid", :null => false + t.string "secret", :null => false + t.text "redirect_uri", :null => false + t.string "scopes", :default => "", :null => false + t.datetime "created_at" + t.datetime "updated_at" + t.integer "owner_id" + t.string "owner_type" + end + + add_index "oauth_applications", ["owner_id", "owner_type"], :name => "index_oauth_applications_on_owner_id_and_owner_type" + add_index "oauth_applications", ["uid"], :name => "index_oauth_applications_on_uid", :unique => true + create_table "onclick_times", :force => true do |t| t.integer "user_id" t.datetime "onclick_time" @@ -1282,6 +1563,7 @@ ActiveRecord::Schema.define(:version => 20160519070718) do t.boolean "locked", :default => false t.integer "sticky", :default => 0 t.integer "org_subfield_id" + t.integer "status", :default => 0 end create_table "org_member_roles", :force => true do |t| @@ -1348,6 +1630,23 @@ ActiveRecord::Schema.define(:version => 20160519070718) do t.integer "allow_teacher", :default => 0 end + create_table "permissions", :force => true do |t| + t.string "controller", :limit => 30, :default => "", :null => false + t.string "action", :limit => 30, :default => "", :null => false + t.string "description", :limit => 60, :default => "", :null => false + t.boolean "is_public", :default => false, :null => false + t.integer "sort", :default => 0, :null => false + t.boolean "mail_option", :default => false, :null => false + t.boolean "mail_enabled", :default => false, :null => false + end + + create_table "permissions_roles", :id => false, :force => true do |t| + t.integer "permission_id", :default => 0, :null => false + t.integer "role_id", :default => 0, :null => false + end + + add_index "permissions_roles", ["role_id"], :name => "permissions_roles_role_id" + create_table "phone_app_versions", :force => true do |t| t.string "version" t.text "description" @@ -1430,6 +1729,11 @@ ActiveRecord::Schema.define(:version => 20160519070718) do t.datetime "updated_at", :null => false end + create_table "project_import_data", :force => true do |t| + t.integer "project_id" + t.text "data" + end + create_table "project_infos", :force => true do |t| t.integer "project_id" t.integer "user_id" @@ -1519,6 +1823,16 @@ ActiveRecord::Schema.define(:version => 20160519070718) do add_index "projects_trackers", ["project_id", "tracker_id"], :name => "projects_trackers_unique", :unique => true add_index "projects_trackers", ["project_id"], :name => "projects_trackers_project_id" + create_table "protected_branches", :force => true do |t| + t.integer "project_id", :null => false + t.string "name", :null => false + t.datetime "created_at" + t.datetime "updated_at" + t.boolean "developers_can_push", :default => false, :null => false + end + + add_index "protected_branches", ["project_id"], :name => "index_protected_branches_on_project_id" + create_table "queries", :force => true do |t| t.integer "project_id" t.string "name", :default => "", :null => false @@ -1653,6 +1967,25 @@ ActiveRecord::Schema.define(:version => 20160519070718) do t.integer "is_teacher_score", :default => 0 end + create_table "services", :force => true do |t| + t.string "type" + t.string "title" + t.integer "project_id" + t.datetime "created_at" + t.datetime "updated_at" + t.boolean "active", :default => false, :null => false + t.text "properties" + t.boolean "template", :default => false + t.boolean "push_events", :default => true + t.boolean "issues_events", :default => true + t.boolean "merge_requests_events", :default => true + t.boolean "tag_push_events", :default => true + t.boolean "note_events", :default => true, :null => false + end + + add_index "services", ["created_at", "id"], :name => "index_services_on_created_at_and_id" + add_index "services", ["project_id"], :name => "index_services_on_project_id" + create_table "settings", :force => true do |t| t.string "name", :default => "", :null => false t.text "value" @@ -1691,6 +2024,26 @@ ActiveRecord::Schema.define(:version => 20160519070718) do t.datetime "updated_at", :null => false end + create_table "snippets", :force => true do |t| + t.string "title" + t.text "content", :limit => 2147483647 + t.integer "author_id", :null => false + t.integer "project_id" + t.datetime "created_at" + t.datetime "updated_at" + t.string "file_name" + t.datetime "expires_at" + t.string "type" + t.integer "visibility_level", :default => 0, :null => false + end + + add_index "snippets", ["author_id"], :name => "index_snippets_on_author_id" + add_index "snippets", ["created_at", "id"], :name => "index_snippets_on_created_at_and_id" + add_index "snippets", ["created_at"], :name => "index_snippets_on_created_at" + add_index "snippets", ["expires_at"], :name => "index_snippets_on_expires_at" + add_index "snippets", ["project_id"], :name => "index_snippets_on_project_id" + add_index "snippets", ["visibility_level"], :name => "index_snippets_on_visibility_level" + create_table "softapplications", :force => true do |t| t.string "name" t.text "description" @@ -1763,9 +2116,9 @@ ActiveRecord::Schema.define(:version => 20160519070718) do t.integer "absence_penalty", :default => 0 t.float "system_score", :default => 0.0 t.boolean "is_test", :default => false + t.float "work_score" t.integer "simi_id" t.integer "simi_value" - t.float "work_score" end add_index "student_works", ["homework_common_id", "user_id"], :name => "index_student_works_on_homework_common_id_and_user_id" @@ -1813,13 +2166,13 @@ ActiveRecord::Schema.define(:version => 20160519070718) do create_table "sub_domains", :force => true do |t| t.integer "org_subfield_id" - t.integer "priority", :default => 0 + t.integer "priority" t.string "name" t.string "field_type" - t.integer "hide", :default => 0 - t.integer "status", :default => 0 - t.datetime "created_at", :null => false - t.datetime "updated_at", :null => false + t.integer "hide" + t.integer "status" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false end create_table "subfield_subdomain_dirs", :force => true do |t| @@ -1829,6 +2182,17 @@ ActiveRecord::Schema.define(:version => 20160519070718) do t.datetime "updated_at", :null => false end + create_table "subscriptions", :force => true do |t| + t.integer "user_id" + t.integer "subscribable_id" + t.string "subscribable_type" + t.boolean "subscribed" + t.datetime "created_at" + t.datetime "updated_at" + end + + add_index "subscriptions", ["subscribable_id", "subscribable_type", "user_id"], :name => "subscriptions_user_id_and_ref_fields", :unique => true + create_table "system_messages", :force => true do |t| t.integer "user_id" t.string "content" @@ -2068,6 +2432,17 @@ ActiveRecord::Schema.define(:version => 20160519070718) do add_index "users", ["id", "type"], :name => "index_users_on_id_and_type" add_index "users", ["type"], :name => "index_users_on_type" + create_table "users_star_projects", :force => true do |t| + t.integer "project_id", :null => false + t.integer "user_id", :null => false + t.datetime "created_at" + t.datetime "updated_at" + end + + add_index "users_star_projects", ["project_id"], :name => "index_users_star_projects_on_project_id" + add_index "users_star_projects", ["user_id", "project_id"], :name => "index_users_star_projects_on_user_id_and_project_id", :unique => true + add_index "users_star_projects", ["user_id"], :name => "index_users_star_projects_on_user_id" + create_table "versions", :force => true do |t| t.integer "project_id", :default => 0, :null => false t.string "name", :default => "", :null => false @@ -2119,6 +2494,23 @@ ActiveRecord::Schema.define(:version => 20160519070718) do t.datetime "updated_at", :null => false end + create_table "web_hooks", :force => true do |t| + t.string "url" + t.integer "project_id" + t.datetime "created_at" + t.datetime "updated_at" + t.string "type", :default => "ProjectHook" + t.integer "service_id" + t.boolean "push_events", :default => true, :null => false + t.boolean "issues_events", :default => false, :null => false + t.boolean "merge_requests_events", :default => false, :null => false + t.boolean "tag_push_events", :default => false + t.boolean "note_events", :default => false, :null => false + end + + add_index "web_hooks", ["created_at", "id"], :name => "index_web_hooks_on_created_at_and_id" + add_index "web_hooks", ["project_id"], :name => "index_web_hooks_on_project_id" + create_table "wechat_logs", :force => true do |t| t.string "openid", :null => false t.text "request_raw" From 61eeee702ca2efe5d33803d65a97b98cbe3d61c7 Mon Sep 17 00:00:00 2001 From: huang Date: Tue, 24 May 2016 09:40:47 +0800 Subject: [PATCH 111/668] migrate --- .../20160523085440_add_status_to_org_document_comment.rb | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 db/migrate/20160523085440_add_status_to_org_document_comment.rb diff --git a/db/migrate/20160523085440_add_status_to_org_document_comment.rb b/db/migrate/20160523085440_add_status_to_org_document_comment.rb new file mode 100644 index 000000000..e29426450 --- /dev/null +++ b/db/migrate/20160523085440_add_status_to_org_document_comment.rb @@ -0,0 +1,5 @@ +class AddStatusToOrgDocumentComment < ActiveRecord::Migration + def change + add_column :org_document_comments, :status, :integer, :default => false + end +end From 13676ec9c3eee6d62db3e862c8c3691e6d5af063 Mon Sep 17 00:00:00 2001 From: cxt Date: Tue, 24 May 2016 09:51:27 +0800 Subject: [PATCH 112/668] =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E7=9A=84=E9=93=BE?= =?UTF-8?q?=E6=8E=A5=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/wechat_service.rb | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/app/services/wechat_service.rb b/app/services/wechat_service.rb index ee45c99dc..6d8c0f234 100644 --- a/app/services/wechat_service.rb +++ b/app/services/wechat_service.rb @@ -5,7 +5,7 @@ class WechatService data = { touser:openid, template_id:template_id, - url:"https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx8e1ab05163a28e37&redirect_uri=https://www.trustie.net/assets/wechat/app.html#/#{type}/#{id}?response_type=code&scope=snsapi_base&state=123#wechat_redirect", + url:"https://open.weixin.qq.com/connect/oauth2/authorize?appid=#{Wechat.config.appid}&redirect_uri=#{Setting.protocol}://#{Setting.host_name}/assets/wechat/app.html#/#{type}/#{id}?response_type=code&scope=snsapi_base&state=123#wechat_redirect", topcolor:"#FF0000", data:{ first: { @@ -44,7 +44,6 @@ class WechatService end Rails.logger.info "send over. #{req}" end - Rails.logger.info "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx8e1ab05163a28e37&redirect_uri=https://www.trustie.net/assets/wechat/app.html#/#{type}/#{id}?response_type=code&scope=snsapi_base&state=123#wechat_redirect" end def topic_publish_template(user_id, type, id, first, key1, key2, key3, remark="") @@ -59,7 +58,6 @@ class WechatService end Rails.logger.info "send over. #{req}" end - Rails.logger.info "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx8e1ab05163a28e37&redirect_uri=https://www.trustie.net/assets/wechat/app.html#/#{type}/#{id}?response_type=code&scope=snsapi_base&state=123#wechat_redirect" end def comment_template(user_id,type, id, first, key1, key2, key3, remark="") @@ -74,7 +72,6 @@ class WechatService end Rails.logger.info "send over. #{req}" end - Rails.logger.info "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx8e1ab05163a28e37&redirect_uri=https://www.trustie.net/assets/wechat/app.html#/#{type}/#{id}?response_type=code&scope=snsapi_base&state=123#wechat_redirect" end def message_update_template(user_id, type, id, first, key1, key2, remark="") @@ -83,7 +80,7 @@ class WechatService data = { touser:uw.openid, template_id:"YTyNPZnQD8uZFBFq-Q6cCOWaq5LA9vL6RFlF2JuD5Cg", - url:"https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx8e1ab05163a28e37&redirect_uri=https://www.trustie.net/assets/wechat/app.html#/#{type}/#{id}?response_type=code&scope=snsapi_base&state=123#wechat_redirect", + url:"https://open.weixin.qq.com/connect/oauth2/authorize?appid=#{Wechat.config.appid}&redirect_uri=#{Setting.protocol}://#{Setting.host_name}/assets/wechat/app.html#/#{type}/#{id}?response_type=code&scope=snsapi_base&state=123#wechat_redirect", topcolor:"#FF0000", data:{ first: { @@ -112,6 +109,5 @@ class WechatService end Rails.logger.info "send over. #{req}" end - Rails.logger.info "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx8e1ab05163a28e37&redirect_uri=https://www.trustie.net/assets/wechat/app.html#/#{type}/#{id}?response_type=code&scope=snsapi_base&state=123#wechat_redirect" end end \ No newline at end of file From bc0e24d39e421b37721ea4d38c75ea5d04bb3e13 Mon Sep 17 00:00:00 2001 From: huang Date: Tue, 24 May 2016 10:28:17 +0800 Subject: [PATCH 113/668] =?UTF-8?q?=E8=B5=84=E6=BA=90=E5=BC=95=E7=94=A8?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/users_controller.rb | 160 +++++++++--------- app/views/users/_resources_list.html.erb | 45 +---- .../users/_user_import_resource_list.html.erb | 16 +- app/views/users/_user_resource_info.html.erb | 10 +- .../users/_user_resource_tip_list.html.erb | 2 +- app/views/users/user_resource.html.erb | 6 +- 6 files changed, 96 insertions(+), 143 deletions(-) diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 2c4355180..853219426 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -2058,18 +2058,18 @@ class UsersController < ApplicationController # 公共资源库:所有公开资源或者我上传的私有资源 @attachments = get_public_resources(user_course_ids, user_project_ids, params[:order], @score) end - elsif params[:type] == "2" - apply_ids = ApplyResource.where("user_id =? and status =?", params[:id], 2).map { |ar| ar.attachment_id} - if params[:status] == "2" - resource_type = "'Course'" - elsif params[:status] == "3" - resource_type = "'Project'" - elsif params[:status] == "5" - resource_type = "'Principal'" - else - resource_type = "'Project','OrgSubfield','Principal','Course'" - end - @attachments = get_my_private_resources(apply_ids, resource_type, @order, @score) + # elsif params[:type] == "2" + # apply_ids = ApplyResource.where("user_id =? and status =?", params[:id], 2).map { |ar| ar.attachment_id} + # if params[:status] == "2" + # resource_type = "'Course'" + # elsif params[:status] == "3" + # resource_type = "'Project'" + # elsif params[:status] == "5" + # resource_type = "'Principal'" + # else + # resource_type = "'Project','OrgSubfield','Principal','Course'" + # end + # @attachments = get_my_private_resources(apply_ids, resource_type, @order, @score) end @type = params[:type] @limit = 25 @@ -2211,18 +2211,18 @@ class UsersController < ApplicationController # 公共资源库:所有公开资源或者我上传的私有资源 @attachments = get_public_resources(user_course_ids, user_project_ids, params[:order], @score) end - elsif params[:type] == "2" - apply_ids = ApplyResource.where("user_id =? and status =?", params[:id], 2).map { |ar| ar.attachment_id} - if params[:status] == "2" - resource_type = "'Course'" - elsif params[:status] == "3" - resource_type = "'Project'" - elsif params[:status] == "5" - resource_type = "'Principal'" - else - resource_type = "'Project','OrgSubfield','Principal','Course'" - end - @attachments = get_my_private_resources(apply_ids, resource_type, @order, @score) + # elsif params[:type] == "2" + # apply_ids = ApplyResource.where("user_id =? and status =?", params[:id], 2).map { |ar| ar.attachment_id} + # if params[:status] == "2" + # resource_type = "'Course'" + # elsif params[:status] == "3" + # resource_type = "'Project'" + # elsif params[:status] == "5" + # resource_type = "'Principal'" + # else + # resource_type = "'Project','OrgSubfield','Principal','Course'" + # end + # @attachments = get_my_private_resources(apply_ids, resource_type, @order, @score) end @status = params[:status] @type = params[:type] @@ -2352,18 +2352,18 @@ class UsersController < ApplicationController # 公共资源库:所有公开资源或者我上传的私有资源 @attachments = get_public_resources(user_course_ids, user_project_ids, params[:order], @score) end - elsif params[:type] == "2" - apply_ids = ApplyResource.where("user_id =? and status =?", params[:id], 2).map { |ar| ar.attachment_id} - if params[:status] == "2" - resource_type = "'Course'" - elsif params[:status] == "3" - resource_type = "'Project'" - elsif params[:status] == "5" - resource_type = "'Principal'" - else - resource_type = "'Project','OrgSubfield','Principal','Course'" - end - @attachments = get_my_private_resources(apply_ids, resource_type, @order, @score) + # elsif params[:type] == "2" + # apply_ids = ApplyResource.where("user_id =? and status =?", params[:id], 2).map { |ar| ar.attachment_id} + # if params[:status] == "2" + # resource_type = "'Course'" + # elsif params[:status] == "3" + # resource_type = "'Project'" + # elsif params[:status] == "5" + # resource_type = "'Principal'" + # else + # resource_type = "'Project','OrgSubfield','Principal','Course'" + # end + # @attachments = get_my_private_resources(apply_ids, resource_type, @order, @score) end @type = params[:type] @limit = 25 @@ -2700,12 +2700,12 @@ class UsersController < ApplicationController # 获取公共资源 def get_public_resources user_course_ids, user_project_ids, order, score - attachments = Attachment.where("(is_publish = 1 and container_id is not null and container_type in('Project','OrgSubfield','Principal','Course')) ").order("#{order.nil? ? 'created_on' : order} #{score}") + attachments = Attachment.where("(is_publish = 1 and is_public = 1 and container_id is not null and container_type in('Project','OrgSubfield','Principal','Course')) ").order("#{order.nil? ? 'created_on' : order} #{score}") end # 获取公共资源搜索 def get_public_resources_search user_course_ids, user_project_ids, order, score, search - attachments = Attachment.where("is_publish = 1 and container_id is not null and container_type in('Project','OrgSubfield','Principal','Course') and (filename like :p)", :p => search).order("#{order.nil? ? 'created_on' : order} #{score}") + attachments = Attachment.where("is_publish = 1 and is_public = 1 and container_id is not null and container_type in('Project','OrgSubfield','Principal','Course') and (filename like :p)", :p => search).order("#{order.nil? ? 'created_on' : order} #{score}") end # 获取我的资源 @@ -2729,15 +2729,15 @@ class UsersController < ApplicationController and is_publish = 1 and container_id is not null)" ).order("#{order.nil? ? 'created_on' : order} #{score}") end - # 获取我的私有资源分享结果 - def get_my_private_resources apply_ids, resource_type, order, score - attachments = Attachment.where("id in (#{apply_ids.empty? ? '0': apply_ids.join(',')}) and container_type in(#{resource_type})").order("#{order.nil? ? 'created_on' : order} #{score}") - end - - # 获取我的私有资源分享搜索结果 - def get_my_private_resources_search apply_ids, resource_type, order, score, search - attachments = Attachment.where("id in (#{apply_ids.empty? ? '0': apply_ids.join(',')}) and container_type in(#{resource_type}) and (filename like :p)", :p => search).order("#{order.nil? ? 'created_on' : order} #{score}") - end + # # 获取我的私有资源分享结果 + # def get_my_private_resources apply_ids, resource_type, order, score + # attachments = Attachment.where("id in (#{apply_ids.empty? ? '0': apply_ids.join(',')}) and container_type in(#{resource_type})").order("#{order.nil? ? 'created_on' : order} #{score}") + # end + # + # # 获取我的私有资源分享搜索结果 + # def get_my_private_resources_search apply_ids, resource_type, order, score, search + # attachments = Attachment.where("id in (#{apply_ids.empty? ? '0': apply_ids.join(',')}) and container_type in(#{resource_type}) and (filename like :p)", :p => search).order("#{order.nil? ? 'created_on' : order} #{score}") + # end # 获取我的课程资源中搜索结果 def get_course_resources_search author_id, user_course_ids, order, score, search @@ -2748,12 +2748,12 @@ class UsersController < ApplicationController # 获取公共资源中课程资源 def get_course_resources_public user_course_ids, order, score - attchments = Attachment.where("(container_type = 'Course'and container_id is not null and is_publish = 1)").order("#{order.nil? ? 'created_on' : order} #{score}") + attchments = Attachment.where("(container_type = 'Course'and container_id is not null and is_publish = 1 and is_public =1)").order("#{order.nil? ? 'created_on' : order} #{score}") end # 获取公共资源中课程资源搜索结果 def get_course_resources_public_search user_course_ids, order, score, search - attchments = Attachment.where("(container_type = 'Course'and container_id is not null and is_publish = 1) and (filename like :p)", :p => search ).order("#{order.nil? ? 'created_on' : order} #{score}") + attchments = Attachment.where("(container_type = 'Course'and container_id is not null and is_publish = 1 and is_public =1) and (filename like :p)", :p => search ).order("#{order.nil? ? 'created_on' : order} #{score}") end # 获取我的项目资源 @@ -2772,12 +2772,12 @@ class UsersController < ApplicationController # 获取公共资源的项目资源 def get_project_resources_public user_project_ids, order, score - attchments = Attachment.where("container_type = 'Project' and container_id is not null").order("#{order.nil? ? 'created_on' : order} #{score}") + attchments = Attachment.where("container_type = 'Project' and container_id is not null and is_public =1").order("#{order.nil? ? 'created_on' : order} #{score}") end # 获取公共资源的项目资源搜索 def get_project_resources_public_search user_project_ids, order, score, search - attchments = Attachment.where("(container_type = 'Project' and container_id is not null) and (filename like :p)", :p => search ).order("#{order.nil? ? 'created_on' : order} #{score}") + attchments = Attachment.where("(container_type = 'Project' and container_id is not null and is_public =1) and (filename like :p)", :p => search ).order("#{order.nil? ? 'created_on' : order} #{score}") end # 获取我上传的附件 @@ -2795,13 +2795,13 @@ class UsersController < ApplicationController # 获取公共资源中我上传的附件 def get_attch_resources_public order, score attchments = Attachment.where("container_type in('Issue','Document','Message','News','StudentWorkScore','HomewCommon','OrgSubfield','Principal') - and container_id is not null").order("#{order.nil? ? 'created_on' : order} #{score}") + and container_id is not null and is_public =1").order("#{order.nil? ? 'created_on' : order} #{score}") end # 获取公共资源中我上传的附件 def get_attch_resources_public_search order, score, search attchments = Attachment.where("(container_type in('Issue','Document','Message','News','StudentWorkScore','HomewCommon','OrgSubfield','Principal') - and container_id is not null) and (filename like :p)", :p => search).order("#{order.nil? ? 'created_on' : order} #{score}") + and container_id is not null and is_public =1) and (filename like :p)", :p => search).order("#{order.nil? ? 'created_on' : order} #{score}") end # 获取我的用户类型资源 @@ -2816,12 +2816,12 @@ class UsersController < ApplicationController # 获取我的用户类型资源 def get_principal_resources_public order, score - attchments = Attachment.where("container_type = 'Principal' and container_id is not null").order("#{order.nil? ? 'created_on' : order} #{score}") + attchments = Attachment.where("container_type = 'Principal' and is_public =1 and container_id is not null").order("#{order.nil? ? 'created_on' : order} #{score}") end # 获取我的用户类型资源 def get_principal_resources_public_search order, score, search - attchments = Attachment.where("(container_type = 'Principal'and container_id is not null) and (filename like :p)", :p => search).order("#{order.nil? ? 'created_on' : order} #{score}") + attchments = Attachment.where("(container_type = 'Principal'and container_id is not null and is_public =1) and (filename like :p)", :p => search).order("#{order.nil? ? 'created_on' : order} #{score}") end # 资源库 分为全部 课程资源 项目资源 附件 @@ -2863,18 +2863,18 @@ class UsersController < ApplicationController # 公共资源库:所有公开资源或者我上传的私有资源 @attachments = get_public_resources(user_course_ids, user_project_ids, params[:order], @score) end - elsif params[:type] == "2" # 私有资源 - apply_ids = ApplyResource.where("user_id =? and status =?", params[:id], 2).map { |ar| ar.attachment_id} - if params[:status] == "2" - resource_type = "'Course'" - elsif params[:status] == "3" - resource_type = "'Project'" - elsif params[:status] == "5" - resource_type = "'Principal'" - else - resource_type = "'Project','OrgSubfield','Principal','Course'" - end - @attachments = get_my_private_resources(apply_ids, resource_type, @order, @score) + # elsif params[:type] == "2" # 私有资源 + # apply_ids = ApplyResource.where("user_id =? and status =?", params[:id], 2).map { |ar| ar.attachment_id} + # if params[:status] == "2" + # resource_type = "'Course'" + # elsif params[:status] == "3" + # resource_type = "'Project'" + # elsif params[:status] == "5" + # resource_type = "'Principal'" + # else + # resource_type = "'Project','OrgSubfield','Principal','Course'" + # end + # @attachments = get_my_private_resources(apply_ids, resource_type, @order, @score) end @status = params[:status] @type = params[:type] @@ -3054,19 +3054,19 @@ class UsersController < ApplicationController # 公共资源库:所有公开资源或者我上传的私有资源 @attachments = get_public_resources_search(user_course_ids, user_project_ids, @order, @score, search) end - elsif params[:type] == "2" # 私有资源 - apply_ids = ApplyResource.where("user_id =? and status =?", params[:id], 2).map { |ar| ar.attachment_id} - if params[:status] == "2" - resource_type = "'Course'" - elsif params[:status] == "3" - resource_type = "'Project'" - elsif params[:status] == "5" - resource_type = "'Principal'" - else - resource_type = "'Project','OrgSubfield','Principal','Course'" - end - @attachments = get_my_private_resources_search(apply_ids, resource_type, @order, @score, search) - @attachments + # elsif params[:type] == "2" # 私有资源 + # apply_ids = ApplyResource.where("user_id =? and status =?", params[:id], 2).map { |ar| ar.attachment_id} + # if params[:status] == "2" + # resource_type = "'Course'" + # elsif params[:status] == "3" + # resource_type = "'Project'" + # elsif params[:status] == "5" + # resource_type = "'Principal'" + # else + # resource_type = "'Project','OrgSubfield','Principal','Course'" + # end + # @attachments = get_my_private_resources_search(apply_ids, resource_type, @order, @score, search) + # @attachments end @status = params[:status] @type = params[:type] diff --git a/app/views/users/_resources_list.html.erb b/app/views/users/_resources_list.html.erb index 3aaed7594..d22b69760 100644 --- a/app/views/users/_resources_list.html.erb +++ b/app/views/users/_resources_list.html.erb @@ -6,55 +6,20 @@ <% attachments.each do |attach| %>
        • - <% if private_attachment_allow(attach.id) && (@type == "6" || @type == "2") %> - - <% else %> - - <% end %> +
        • - <% if private_attachment_allow(attach.id) %> - - <% else %> - <%= link_to truncate(attach.filename, :length => 30), download_named_attachment_path(attach.id, attach.filename), :title => attach.filename, :class => 'resourcesBlack resource-list-middle hidden mw280' %> - <% end %> - <% if private_attachment_allow(attach.id) && (@type == "6" || @type == "2") %> - 私有 - <% end %> -
        • -
        • - <% if private_attachment_allow(attach.id) && (@type == "6" || @type == "2") %> - <% ah = attach.get_status_by_attach(User.current.id) %> - <% if ah.nil? %> - <%= link_to("请求分享", apply_resource_user_path(User.current.id, :attachment_id => attach.id), :class => 'green_btn_share c_white', :remote => true) %> - <% elsif ah == 1 %> - 等待回复 - <% elsif ah == 2 %> - 可引用 - <% elsif ah == 3 %> - 已拒绝 - <% end %> - <% else %> - <% ah = attach.get_status_by_attach(User.current.id) %> - <% if ah == 2 %> - 可引用 - <% else %> - -- - <% end %> - <% end %> + <%= link_to truncate(attach.filename, :length => 30), download_named_attachment_path(attach.id, attach.filename), :title => attach.filename, :class => 'resourcesBlack resource-list-middle hidden mw280' %>
        • <%= format_date(attach.created_on) %>
        • <%= attach.quotes.nil? ? 0 : attach.quotes %>
        • <%= attach.downloads %>
        • <%= attach.author_id %>
        • <%= (number_to_human_size(attach.filesize)).gsub("ytes", "") %>
        • - +
        • <%= get_resource_type(attach.container_type)%>
        • -
        • <%= private_attachment_allow(attach.id) %>
        • -
        • <%= attach.get_apply_resource_status(attach.id, User.current.id) %>
        • -
        • <%= private_attachment_allow(attach.id) ? 0 : 1 %>
        • <%= attach.id %>
        @@ -219,7 +184,7 @@ } line.children().css("background-color", 'white'); id = line.children().last().html(); - user_id = line.children().eq(6).html(); + user_id = line.children().eq(5).html(); if(user_id === '<%= User.current.id%>') { if(line.children().first().children().data('hasHistory') == 'Y'){ alert('该资源存在历史版本,不能删除'); @@ -228,7 +193,7 @@ if (confirm('确定要删除资源"' + line.children().eq(1).children().attr('title').trim() + '"么?')) { $.ajax({ type: 'post', - url: '<%= user_resource_delete_user_path(User.current.id)%>' + '?resource_id=' + id + '&type=<%=@type %>&status=<%=@status %>' + url: '<%= user_resource_delete_user_path(User.current.id) %>' + '?resource_id=' + id + '&type=<%= @type %>&status=<%= @status %>' }); } diff --git a/app/views/users/_user_import_resource_list.html.erb b/app/views/users/_user_import_resource_list.html.erb index e8ed684c6..97366832b 100644 --- a/app/views/users/_user_import_resource_list.html.erb +++ b/app/views/users/_user_import_resource_list.html.erb @@ -6,22 +6,10 @@
        • <%= get_resource_type(attach.container_type)%>
        • diff --git a/app/views/users/_user_resource_info.html.erb b/app/views/users/_user_resource_info.html.erb index 52a61a7b0..a140f803c 100644 --- a/app/views/users/_user_resource_info.html.erb +++ b/app/views/users/_user_resource_info.html.erb @@ -19,13 +19,13 @@
          - + 全选 删除
        - - - +
        + 发送至 +
        选择 0 个资源
        @@ -215,7 +215,7 @@ document.oncontextmenu = function() {return true;} line.children().css("background-color",'white'); id = line.children().last().html(); - user_id = line.children().eq(6).html(); + user_id = line.children().eq(5).html(); if(user_id === '<%= User.current.id %>') { res_name = line.children().eq(1).children().attr('title'); res_link = line.children().eq(1).html(); diff --git a/app/views/users/_user_resource_tip_list.html.erb b/app/views/users/_user_resource_tip_list.html.erb index 67fe292ee..35ca130dd 100644 --- a/app/views/users/_user_resource_tip_list.html.erb +++ b/app/views/users/_user_resource_tip_list.html.erb @@ -1,7 +1,7 @@
        • 资源名称
        • -
        • 操作
        • +
        • <%= link_to "上传时间", resource_search_user_path(:type => @type, :status => @status, :sort => @score, :order => "created_on", :search => " "), :class => "fl", :remote => true %> <% if @order == "created_on" %> diff --git a/app/views/users/user_resource.html.erb b/app/views/users/user_resource.html.erb index 483dceaed..43f06b93d 100644 --- a/app/views/users/user_resource.html.erb +++ b/app/views/users/user_resource.html.erb @@ -55,9 +55,9 @@
        • 我的资源
        • -
        • - 申请资源 -
        • + + +
        •  
        • From ccf29c980a243dae60c0f16193c9c2ce4ee36bf9 Mon Sep 17 00:00:00 2001 From: cxt Date: Tue, 24 May 2016 10:34:36 +0800 Subject: [PATCH 114/668] =?UTF-8?q?=E4=BD=9C=E4=B8=9A=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E6=90=9C=E7=B4=A2=E4=BD=9C=E4=B8=9A=EF=BC=9A=E6=90=9C=E7=B4=A2?= =?UTF-8?q?=E7=BB=93=E6=9E=9C=E4=B8=AD=E5=8C=85=E6=8B=AC=E4=B8=8D=E5=8C=85?= =?UTF-8?q?=E5=90=AB=E5=85=B3=E9=94=AE=E5=AD=97=E7=9A=84=E4=BD=9C=E4=B8=9A?= =?UTF-8?q?=E3=80=81=E4=BD=9C=E4=B8=9A=E5=9B=9E=E5=A4=8D=E6=A1=86=E5=8A=A0?= =?UTF-8?q?=E8=BD=BD=E4=B8=8D=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/homework_common_controller.rb | 5 +++-- app/views/homework_common/_homework_index_list.html.erb | 8 ++++++++ app/views/homework_common/_homework_search_form.html.erb | 2 +- app/views/homework_common/index.html.erb | 9 ++------- app/views/homework_common/index.js.erb | 5 ++++- 5 files changed, 18 insertions(+), 11 deletions(-) create mode 100644 app/views/homework_common/_homework_index_list.html.erb diff --git a/app/controllers/homework_common_controller.rb b/app/controllers/homework_common_controller.rb index 9da4b90b9..376f8d5c2 100644 --- a/app/controllers/homework_common_controller.rb +++ b/app/controllers/homework_common_controller.rb @@ -14,6 +14,7 @@ class HomeworkCommonController < ApplicationController #unless params[:page] # update_homework_time(@course.homework_commons) #end + search = "%#{params[:search].to_s.strip.downcase}%" @new_homework = HomeworkCommon.new @new_homework.homework_detail_manual = HomeworkDetailManual.new @new_homework.course = @course @@ -21,10 +22,10 @@ class HomeworkCommonController < ApplicationController @is_teacher = User.current.logged? && (User.current.admin? || User.current.allowed_to?(:as_teacher,@course)) if @is_teacher #@homeworks = @course.homework_commons.order("created_at desc").limit(10).offset(@page * 10) - @homework_commons = @course.homework_commons.order("created_at desc") + @homework_commons = @course.homework_commons.where("name like '%#{search}%'").order("created_at desc") else #@homeworks = @course.homework_commons.where("publish_time <= '#{Date.today}'").order("created_at desc").limit(10).offset(@page * 10) - @homework_commons = @course.homework_commons.where("publish_time <= '#{Date.today}'").order("created_at desc") + @homework_commons = @course.homework_commons.where("name like '%#{search}%' and publish_time <= '#{Date.today}'").order("created_at desc") end @is_student = User.current.logged? && (User.current.admin? || (User.current.member_of_course?(@course) && !@is_teacher)) @is_new = params[:is_new] diff --git a/app/views/homework_common/_homework_index_list.html.erb b/app/views/homework_common/_homework_index_list.html.erb new file mode 100644 index 000000000..9b11017e8 --- /dev/null +++ b/app/views/homework_common/_homework_index_list.html.erb @@ -0,0 +1,8 @@ +<%= render :partial => 'users/user_homework_list', :locals => {:homework_commons => homework_commons,:page => 0,:is_in_course => 1,:course_id => course_id} %> + +
          +
            + <%= pagination_links_full @obj_pages, @obj_count, :per_page_links => false, :remote => false, :flag => true%> +
          +
          +
          \ No newline at end of file diff --git a/app/views/homework_common/_homework_search_form.html.erb b/app/views/homework_common/_homework_search_form.html.erb index f71cec9a5..250d72467 100644 --- a/app/views/homework_common/_homework_search_form.html.erb +++ b/app/views/homework_common/_homework_search_form.html.erb @@ -1,4 +1,4 @@ -<%= form_tag( url_for(:controller => 'courses',:action => 'homework_search',:id=>course.id), +<%= form_tag( homework_common_index_url_in_org(course.id), :remote=>true ,:method => 'get',:class=>'resourcesSearchloadBox',:id=>'resource_search_form') do %> <%= submit_tag '',:class=>'homepageSearchIcon',:onfocus=>'this.blur();',:style=>'border-style:none' %> diff --git a/app/views/homework_common/index.html.erb b/app/views/homework_common/index.html.erb index 29cff8933..35f4658f9 100644 --- a/app/views/homework_common/index.html.erb +++ b/app/views/homework_common/index.html.erb @@ -71,13 +71,8 @@ <% end%>
          <% end%> - <%= render :partial => 'users/user_homework_list', :locals => {:homework_commons => @homeworks,:page => 0,:is_in_course => 1,:course_id => @course.id} %> - -
          -
            - <%= pagination_links_full @obj_pages, @obj_count, :per_page_links => false, :remote => false, :flag => true%> -
          -
          +
          + <%= render :partial => 'homework_common/homework_index_list', :locals => {:homework_commons => @homeworks,:course_id => @course.id} %>
          diff --git a/app/views/homework_common/index.js.erb b/app/views/homework_common/index.js.erb index 7a038eb5c..4a9ec6ad3 100644 --- a/app/views/homework_common/index.js.erb +++ b/app/views/homework_common/index.js.erb @@ -1 +1,4 @@ -$("#user_show_more_homework").replaceWith("<%= escape_javascript( render :partial => 'users/user_homework_list',:locals => {:homework_commons => @homeworks, :page => @page, :is_in_course => 1,:course_id => @course.id} )%>"); \ No newline at end of file +/* +$("#user_show_more_homework").replaceWith("<%#= escape_javascript( render :partial => 'users/user_homework_list',:locals => {:homework_commons => @homeworks, :page => @page, :is_in_course => 1,:course_id => @course.id} )%>");*/ + +$("#homework_index_list").html("<%=escape_javascript(render :partial => 'homework_common/homework_index_list', :locals => {:homework_commons => @homeworks,:course_id => @course.id}) %>"); From 29ceb7b8e961c76bb1942e7ef174e4441494ce4f Mon Sep 17 00:00:00 2001 From: txz Date: Tue, 24 May 2016 15:01:26 +0800 Subject: [PATCH 115/668] =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E5=9B=BE=E6=A0=87?= =?UTF-8?q?=E6=B8=85=E6=99=B0=E9=97=AE=E9=A2=98=EF=BC=8C=E5=9B=9E=E5=A4=8D?= =?UTF-8?q?=E7=82=B9=E8=B5=9E=E5=8F=B3=E5=AF=B9=E9=BD=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/assets/wechat/activities.html | 108 +++++++++++++------------- public/images/wechat/wechat_icon.gif | Bin 0 -> 2482 bytes public/images/wechat/wechat_icon.png | Bin 5631 -> 4259 bytes public/images/wechat/wechat_icon2.png | Bin 4259 -> 0 bytes public/javascripts/wechat/app.js | 54 ++++++------- public/stylesheets/weui/weixin.css | 9 ++- 6 files changed, 87 insertions(+), 84 deletions(-) create mode 100755 public/images/wechat/wechat_icon.gif delete mode 100755 public/images/wechat/wechat_icon2.png diff --git a/public/assets/wechat/activities.html b/public/assets/wechat/activities.html index b4e582336..3391506f2 100644 --- a/public/assets/wechat/activities.html +++ b/public/assets/wechat/activities.html @@ -23,15 +23,15 @@ 迟交扣分:{{act.homework_common_detail.late_penalty}}分 匿评开启时间:{{act.homework_common_detail.evaluation_start}}
          缺评扣分:{{act.homework_common_detail.absence_penalty}}分/作品 匿评关闭时间:{{act.homework_common_detail.evaluation_end}}
        - 点击展开 +
        - {{act.activity_type_name}} - {{act.latest_update}} - - {{act.reply_count}} -
        -
        {{act.praise_count}}
        -
        {{act.praise_count}}
        + {{act.activity_type_name}} + {{act.latest_update}} + + {{act.reply_count}} +
        +
        {{act.praise_count}}
        +
        {{act.praise_count}}
        @@ -50,15 +50,15 @@
        - 点击展开 +
        - {{act.activity_type_name}} - {{act.latest_update}} - - {{act.reply_count}} -
        -
        {{act.praise_count}}
        -
        {{act.praise_count}}
        + {{act.activity_type_name}} + {{act.latest_update}} + + {{act.reply_count}} +
        +
        {{act.praise_count}}
        +
        {{act.praise_count}}
        @@ -77,15 +77,15 @@
        - 点击展开 +
        - {{act.activity_type_name}} - {{act.latest_update}} - - {{act.reply_count}} -
        -
        {{act.praise_count}}
        -
        {{act.praise_count}}
        + {{act.activity_type_name}} + {{act.latest_update}} + + {{act.reply_count}} +
        +
        {{act.praise_count}}
        +
        {{act.praise_count}}
        @@ -122,15 +122,15 @@ 状态:{{act.issue_detail.issue_status}} 优先级:{{act.issue_detail.issue_priority}}
        指派给:{{act.issue_detail.issue_assigned_to}} 完成度:{{act.issue_detail.done_ratio}}%
        - 点击展开 +
        - {{act.activity_type_name}} - {{act.latest_update}} - - {{act.reply_count}} -
        -
        {{act.praise_count}}
        -
        {{act.praise_count}}
        + {{act.activity_type_name}} + {{act.latest_update}} + + {{act.reply_count}} +
        +
        {{act.praise_count}}
        +
        {{act.praise_count}}
        @@ -150,15 +150,15 @@
        - 点击展开 +
        - {{act.activity_type_name}} - {{act.latest_update}} - - {{act.reply_count}} -
        -
        {{act.praise_count}}
        -
        {{act.praise_count}}
        + {{act.activity_type_name}} + {{act.latest_update}} + + {{act.reply_count}} +
        +
        {{act.praise_count}}
        +
        {{act.praise_count}}
        @@ -192,14 +192,14 @@

        - 点击展开 +
        - {{act.latest_update}} - - {{act.reply_count}} -
        -
        {{act.praise_count}}
        -
        {{act.praise_count}}
        + {{act.latest_update}} + + {{act.reply_count}} +
        +
        {{act.praise_count}}
        +
        {{act.praise_count}}
        @@ -219,14 +219,14 @@
        - 点击展开 +
        - {{act.latest_update}} - - {{act.reply_count}} -
        -
        {{act.praise_count}}
        -
        {{act.praise_count}}
        + {{act.latest_update}} + + {{act.reply_count}} +
        +
        {{act.praise_count}}
        +
        {{act.praise_count}}
        diff --git a/public/images/wechat/wechat_icon.gif b/public/images/wechat/wechat_icon.gif new file mode 100755 index 0000000000000000000000000000000000000000..8d460be806d4cadac2f3a1d9ce231aa13b206c04 GIT binary patch literal 2482 zcmaJ?dpwhEAKwfk5;_Q}nTqFe*oF-&=Q$P+(z%|@wh%kmCWj6(d33Op!|EwQR8q;g zIc3?>XygzP%PFTY6Us5q^j6RN$J={-?$3Q+hwu0M`~9x#`?+o>7e{joY!o0CFc=A# znwb+0O!kdTjePugtEhwduyyA1=YheYX5qLUy}Y2N_gTZ>+}!;5xTvYAxwB7{k&)5b z`ZhVgV{U#Cd7|XY?CkUE>KDy}!=f2p%ZPaL)8gV%*4?|V;g!9;{T=T*v6pN7;`wd8 z;;1`Ksi~>#(z5WBhPJouA%EA8Pkwp)I5(Humr>f8QTnd3@>vPLzoBzHKfmBm3~ym^ z@x{y9y;0A*dwL1XmsY{0!7M>v--o(af|$E4e_nXOY54F;P+wZt$FHq>$*+A@#VIZ+ zxmPKCkdxEdC2Z&zdCF#sCd3~{$IhfR3hEmgUN@D#8VpLTOL)>gH8q|4BroUTqgNec zH81(qT<*=AHx2QHU%!4WEG%03`t{=dH&vYHWn~rp9|mgMhGXxwOi$003kL6GW_q6G zR5cC@yL<9^J?*{YL&GCaxZSm_L**5fjg8Hb=}ndO{ST_%mpo->W@T}CH9}$cy?ghG zNp)jm<5}fhOG`^FEpG;ghKh=cmzS5dmlY1Uc|b5&I#%-CX&pwv;sObDh%dn}fMf}s zD6fJ-0`Qj5{YW>s8^xaBAK)B8CG3fC_r^s8;wSbMKuf6Y$^v91rahTTfFO-b3~_J-0)j#rAxx1d6v6;v3`ZEl z;F1Srh%iMXQD|c`$oB@7M5E%5qrEVW-(yKemQa5>oq~qJLPJB1LQRawR6iKP!op%j z!`RqRf-t0oljztmLlRBrhXRH`!%+h$^Z+smvZ9FfC5O;0p^{AhQv#9lQP;pG{n$khe=?m+^Cwdv_Ipqez5M|sJUNv1+c&(M8`_0Lqhm=pf(ynHDp4>B z2*9I}7+a({9D_7QnAsx`4k&Y!BgWPQ3CEyJ;V5Hc)DJF(j0+(WNc10E{J&h(FS#pL zAW|feF$8MBNdn%HN+v?Sm5dJfbuK2q)celG|2h}bUvgoRWMC@?`(FqBV@l$lmF`d5 zN(MiTPasL$PL8VeX;tA3C*yzWR;i18S5B+_;J>BnxU7hbb z+TXUdzG-Q0YJA;LFL+f~%YRw(g2%0X&Z&ATvS+)pZ6s9@uP=153=vy zyPK7HCnG)Wc52G4n}6T9&Pq;7Ot^M6{t7eh@}-LxV*iRcAI*q57kT!~=~EHmVWB5O z=rn3Dg-jv_1)d1-_d8C&<9x9`$NoHe%GUz)8h|!x81v3U7Vd99WeHG zwl>yQmOFQ#EzHeONK?rk!(m2-2KvAMrl-4o+g2T@He}0YtxcL5>KoNItY5cQRYiG? z(rQJ8Rq}FRSs7`N6c7N=o|BfmBLM~gNn5$E0pR6xkqphv*7o)r+`}1h%q#I%uO%cV zC9~ob@tziX+ohq`uYg08PKM(Gx47APWk@c${444@2CLvw>iVj_Qn{OV;I4x9YZOQ> zOooE$vv~Nle*5XB&hG&1fULpwQpCF5=uBW&NvEB@`SNA9En_CW3u{C zq^n}2hIz0PMKh7IQECwgvFnVcLgj9(#c=s)Am!hK*fd^uJOdIRq9T1inx$wC_jXS2 z`2&DpRrqVR^t?WgT$1&kO?+v~PkXXEY3(^5?Kt&A%2~6~Hon_*(Rxb&P*Kh{DZJi# zbKHY!W!yDcx%}hBL0c8|vTSpjw{;b14=-;XQ7&kCBy@s$tP9B+*sZ3R%Mq9QgW|w@ zRf>d1yM`~`wpQn-9L$5Rx=hV|Z|+g7!(X#TcH`ya>m2L`q_WchXN#Y|NCsx&%zS+q zF6%qkw9)tV((OBsOJkH}e$6|gdI7&Y9#-xog=m0!= zl}~Xj1Ea0i?;w3f;OVmoY0%1*u{zJbt`E-U05lNO!JJF3VY&dIG`-1ILxJhRWg_$N z7lBIVdC@AP0-qP_Fz%kRr#dq@(#xylvzz$R9wHUHnB*{Qlo}l~3syUFqPJR2Cl5bUG?a_;-Q7^}fW^0l&Oi&TeFLaeH5R%;$8@JqWk zY=g0mZdR9HCv&7AJ1w3q_6()E&dbRjk8`fQd)3<}hV?E6zFqFBG9dA8;5^Vpdf#a^ zhP=+!bg)9jr+3w{8C$VY>o=wNjODBF0JlP|Y=90*dmJ^THWS JOO?kLr@HvizW^ zp1<@(><_F!QR(o#hoZ8vl2K8)xJG}XV!ADGqH@-?PfC8r`CA~FWGTtNJ-ArcW`o>v ztUv>V1Nxo9LQ-Uyd`zQw3Mf+mnUtyRYJ#)1oKpmvTTKN{@gFbf0%cSS0Xo3py#*L~ z7oG=|Yqq8f7K%032fb1SF~!cwra{w9pzBSkyxnF@xDrdzK(5*Ga2|aF!@S;<;ebOR zTR}L1R`tO^rdZ1J)DpNIlvu3Q5qX0Nw>cWgGzBBVz)w5m`IL)q0{6H{C6IAiPute< zcFXtpJQNGxA9}02suN^SsqUxx*#d7~7u$lhHYI7#57SQrHUs5*uA-G572ZC#X|Bd- zVXWvaX0Y+`Y$(FwLR{boN|;v)cH$3OV+ BY!(0j literal 0 HcmV?d00001 diff --git a/public/images/wechat/wechat_icon.png b/public/images/wechat/wechat_icon.png index 7aa0a4351c720ed5b5f10f056d2d1d14be1d05f6..cbc3eb565cc9ddd9ce1a9618becd0035d38f0919 100755 GIT binary patch literal 4259 zcmcIoX*iU9+m|ggp`k2^F^rvAVq(fNj2c9evM*zdrOc8U46=lXqAb}eL@Kg{DBDwdRqim5ivePr&&)xmJAKu>Mcs{(>ab4$sIex$2x%|)nmn+)b?9_ffaXvOSw*5v} zj0J1F%KD;sxLFpyfih(cVl+c*+Bvct%@5~IU_-l-T?il}BF>#)LBP5CUv4FwU}NI| zdszw80D23^2&kRU2%jVG1*) z7!W)>u>szMa{*?S_<&1zEmyFv4(J3O#S$PAXgCm^=tZKU=-S}FbWyDNuWcw8^cRG7 zNgMp{psY>JK?Y=R0!Tycs45-?hl7wvHMqJ45(!rUAz*L>6vldys&I9b1`>rh2KxH} zv%Gn`x}hvEC;#@vT4{qlXfz563ib2zQ}a8jM)r1x!nL%terX^Osw{*m)t^Me(N#%Q zncoT+0u}G=Nuha?NuXbfI2W=HO&iRL^xr8EDgVflsDGD-_{s1Vpits>ta&{Ml&tqq@Sx#Df?++E)}dj%Z+k}FGQ;N1`9o#= z$M@aY)O|WVfB)Ff`JIr3+Mmx?1cHJFjDeRfg7Rk|wsN`V`f}-Rz6v?B@^NG7Ne6~} zruok%B=d%?#4EJQ3i1dVo_+JRtOJZ~IqETZm?^1?^3hwHx-cu{6bS3>FTba=C?kZl zi?^PO=&mL?){vNCeasQdpoUv@86Qh?UcGT^F9X!R^|?P+n%(!rk=aF)t7R@MX991v zy!~9ZkLc#eL7YM~UxZs;bN65@YLsOZi{-uXvNAH?@HQ{*e9WO7lWrAcD>cG=a!}PF z#2J=D8=p&AwOeYrmdS`;@WJpXJTu*KG3}2O=8~bRbbox0NmG!7wz`&Ker&G2O62|W zW77!vG!`qLKED#sJCm*FArqNLSy?!cTAEk!vj3*ZRxQ%+^HiI(&cmX!GRivnTV~ZC z46?0s>pWT_jB)}39BrR(^HO3^+Uu#U1cQthxX}}8^#acwHd-H~6lZpB6fz{ut z9F7c0*6W7irMBVMEtJgDw_5X(345jeKrjJSM5(P4z^Z}AeyQy1@$J!hBaY_NN0?i{ z;CF$W;~x&DbX4ae-gFd;buX7jJ-)D;B;|CXW=q~l!@YX)j*w=YP?TargtgGepAG7z zIl#-$1y)w#<8m3JgT@fq8@w%V)w;`8998er8+y8@ofRx1pD6)4r-8?GUc!&@omljK z-y8QWV{2svZIbCww^n|}@3rLgIi1nB@}&G>-LbUyw^E{dqp}8Ca14*s}+#qZuiJhyIzhQyLG&EvOP>=II#m4N=;2-$nOLE>eGOQ&a}1kZ#F`;ioM0%IW?8^@LGUTu z{u(;|W4ph}r457B!VueBlfcr zfKiwIGaWi(fp;FT>djb{QEroasdk{~@Q_S#Dy+EQN?x&U>#jI|JJN?JO1L>5pzD>b z&~&|?p77=rH(%@MHPE}<+z%vyw$cLp3%;g%DLQr<{=ALST{4FT>y$gK4^EaV`n$Rruw(B6tNfae z+Eqof$Lgy8NSbnMXI5!2FGVj+x;1iM{TUK&d~4>pMf68?Q7$Ervf$C_2oPU_s`3ms z&*lj%Kwz=rN>Y~Ux04S;B|Lfp;Ks99y|ibni#>eVeoyebV_Odq%(%nytBzVz6GU=2 zTMO;TGqK6Qj2rddB_fz%%iiqXM`M=9D@-Kz6)6PraO$p&3ns^uz;Bw#FTP3I9dXxj zq5^Yz@@EeYu4cwYWq9oP&ov0|*@JR3ifKZHjfkUp1(VqRd!xk%{uCy3tFO1scI?i` zfLOSr@Ll+aRew0GmnC*9RJ$Lx|LSCzU7^dA#HnT6>WEa@0AOAW+f>iHh zt*G=p@!8a_giN0iVD2+*q$I^OstLdYo9OYT?j(nICG)58)AhRZgg^XHDK_gX^|bBm zd|vHpqX>_ky}x9QucQ}5k5^2JJ|pg98qT_^kHj^qT@E;dJnQ^WE^lB2r6TVU4?-iR z)#0>o(Z~ivo~3=snCe(T!^=;TjSR~M0N1l8@>7>YEaKZCgqR>v$YJ5=W?~dz8LQIw zAR0Fxgz1;dB@krARpoUuD@E{L+7D#$HhmPEvttRf(xqP}4w}HgEmv#bmm41#aX2nu zGxm99bd}pbC`vB!ipSJ>?7C%rD%K);eSb{LR$fML`_)_Dwy%z=Y2SSx%cg~+D1Ei8 z;=I@D!|VG!Yo6A(8m?CCIyrZ!Jl{TL^2?MSc3aYxQI=8o&LoUH>08%ky1#XujuqY; z(Fmyw6Ba>_2Bp!yOT5`fe;R4H_n%f&0@q+aL}uK4I$ zxb5o1_24hc3v;E)Yb~#;7dNE(F{@LpC?26 zYAR2?4c2AsqYoeSheXEVPhnb@t3du4E@9S}(%fSAEbDe07{2Fug{tz=E=I*JOhNOJ zCww5MF7mUID6)V}cEtN&SKQ+&{NA^alElD>>Af2hoL2@fJG_SNKlq)aIpun6?EaUo zaEa*g{1mu#DmMoj2;hz;ef@+fkd!d*cP=mkAbZ4X8qGdN-+* zuFswpSOa)je5TlsUHYRfezu=70IDXnBYRq{}flnz(9SCWXX+!CGLoAd71 z0WU4=2W1P3RTo)_W*%YwT`2$81U-5~r_`*Moq(oQ^gD-ToBL%m){=)B*3U?HKNM$x zLcnjh*3ByTetM>JgFP4#9ab}uF9%A2qWSDyw+}U2%(#t~+&bgyCYjsRRo>8iLHPKs zx#)?XY-h%)4C3^8!FAyR;Y~zK)c|DW`aU@!)1Hd=H-dIMy|CcuZ_d-z`X6#qw|$(B zrp;=Wi*k<%NO$H8N|Y$VmGt`z0$si&;Kh9pscf&MPCkkp@-SJOioQ0u%9Ur9y6*h2 zd?jcXnnm$%m-16PIr|eg-{6wWv-<Ou*bt;_@Z#+=KT46O*lm_pL+h>18sBi%z02EW4tT#r z&`Y!7J??lan};)XK-)P^@hi>Q#_iU^{mh#<&AL~JmE&;Fu80h-J9%~Tq7+>IU^k7~{<)y&Bsl21u(L%I4a z>PAU4^EYNz`=}B}iMqJZ)Y~K9Ru%Hh#CSpefILU044rvKK_A^4gknOc;72-%X_hY1 zpVow8h?iq`wHKxYnG%*(R+W!Qrus?a8_9WN#081LgF=S1pAYO>%xh0C(HFYP29K1~ zjWVwFze^mP*?A42oKMC~zjV?}7CTz6OR( nL>4EHap?cM!ES97vvII#bbG{qmhfHp_1nP6&xqDM(3om!yCoT?33r3`qCK z_aEGQAI{znXRY&a)?WMU^HE(*kpPz(7XSc)w-9;gBZofL2hfv8AMBf7d z@JRl@(15HQN&vuBwUd)mSGRTXbn&otab`$_Hd?`VCKX|vbyyDW@?lgJupi#aDFn}q~| z#88>Q2LS4;sh)dLsYK+?*2a!C(h+q!P;l>X@EzubAvg1S3%>EqnNV%&KF3Q`=N;7yLis2O`-2b++@+m zdLNtBnN^42Ezl%+rXOjW#Jj-)#|-IrI4M2^Kt<%cZnZ}2hEd1vphGnD7(%^iZ$LWe zgeR67F9{&B5fXr306#41ANrz31{=SJw4$3Z zr-!b+n*ts7L|z)7wOgD>_Q_TVE$$b}bQvnGZty&2Lk$LX{+X{8IQ>fg9s&u6fy2bk!mmx47(Shm&w{E z8ADk9@wk(U#TiLoCoT;$3Pj&Vw=43ehSq9e{6hDVZu!bU9X*)uG36=r)Ho!)z+sBI zo?arPv7mHH`Hz<;5EvbA5i-S3XdSx%Gm8E2#_XdWHTw{`#kQWXPJ*xno!%>NGMer@ z7z)IS9uq>c4>AcS>UDgdn5d|yq9^y2ZJ(u{xD}*}6Bf?j`$`e3KjN!?Uvu#H zL_LKH_CqFmraU&2=Y%AtDG*k|AIV#4xJ+z`0&nr&IzW~nJVlyClG8+XIV$XXiB3OO zw?MTa6^t24O^Htv-zDGt=-X-{1rJ1Rs^Ao`LW@#~m4vONwlRx83&>{Xmurld<^2Mc zM}a>ZymiX=R_E3HP(~u;mBlumO)fWD#8Wu?Gt17#?!uOL*RvI8C5-+}#?Opthd%BOC5kQtS zLYxLp(@6_TLzZi4duU6|!prfrzG*-GW}*{VqM%);jwr+VMgDEJj840)Or&Z8>H|$s zpVTld>@>Z5e{Dff8yTUH9|PU?itt#eBp)DD$=Ua8qvDsHThR^#$pe?i*q(|M!35&rFiCa zT6jkB7d3~PVtBB&{o4Xw55xR;`vD#9`)k0!u~xMFU%%oa3nuS=Oyn^)sGhW5e9b74sE8_T$B7 za~$$uoeS+tw{a20Z*m5dVnkww(ihVMMzPXW(=RGM=}79pb_-)>Z2X4CvI?vp^toE}~1ZMuyia!a#IdruOP zye8fz`X)CW^zZ6&*z@N2oQ9YB4c9wH{msCV5?0p}yBLy#lIWlPK7Z&e>11A$=wu0+ z3(5?_zRkONeLZ@YaM`s1|3`kThGmA9k7hjT0 z79WQ|pTRxFrJLd(&6S1VvJH3E6xj$Um&}0Xns1Cl(jVQ>a;wz9O+JuRxXmkU}bc6KL5 z^L)hhh4m8yL?b>CXVgkXF*(n#`mUXCGq5)T%ELY z(UsSMa@V$z?-aZS1##X%x!_4u$t^4=sygy>s}++AZVNnOsX3`Rg-`;!^m?w}d`%op z@2t7FQV6!-J5D1sDIZ2Iwpgw_PL{|VBUGje>!DTZgybr`U%7k@DGhy_AsrBdUxI7a z_kXWg@ZOULbR^cOH`mn7H~Z=zuQPYOX(MNe(WLNs$!`p8we+<+nhqSb9j#5jQ{U8s zYX7r`FaL{&hD{e2%W=Ke6-p~h{W0oXb!yOJK?X~+)JEB7%o^$hzo1Ant#GaQT6I~Y z(7dy$t7bYIa0Yi;TwGOZ8add5>=o@fS6t|KRV#Ja%gp|aJR+#1IgZ<=F?CW}_59*z ze-=MpKRz;!Aq*2fFdS>FSo-%xr10D?H`sVo=dSWwQ|AKv;#}8?kN*i_7#-Q`RaEMJ zdjprRu0zM0z%%FR!}lu*)aEp;T{}T5&5Azn2J#a8i~X_B-=OyFJzX4^tGl{tah#wc zar6+d>vndC%VPFHmQRDL!3)A(neCqEYb62x2=zZ-Ci<59#@8}~o6bOc5IEN~xXY`8 zr_d>1;!6kWPi$c>oe7;{XVXIviXUO&H6)y%o0p%t0pD!D{~os zp>mt)V60)>VIw!0Cq?0TsM2J5@#AC_nP7a>?t036VZOxHq+BUcC7~GPdba_oHgwsu zx)?ps6|eF_us9$oz^eSy3Hp0^q-;#aX#eTr#{Sl*qBxvQ=DZ{V2Mk} zWniEopzio*IgzqaT3bpoITEDv0N?ZYhFrVbyiuOiyPZG6yNa3Ys)CoDxTC(6RfC6E zh8Wr>;1b6rx0Mr1fv9Fw>)KEULng>Cbl;lE{GjTi%QClN+|_&w`I> zlhFbKeN3HxYyc1v1^`zNkGu;2UVH%X*9-u_p8$ZuCE0X9;W3SJzm=EK@?G4|^>@{p zr5ox(E)Q8V{9w-x#|$`XgsKoVaHRGmy`siflE;Cl44Z2k*wXQ+?OlE{D1C}mT-=Qw z&B4s51!B|*^Ws3@VW4rnhtS4^Bsz*LTy$LI+&{zM#LRY_PqYjE9Q=tDIbk(%k+LSy z)s};i0yW>}a?lWP!UfigGkz~SQ%*UEA#_1Z1cR`*KM2dR8XGLHepgT0B(rr4>D!PMqNbv^|LXs9qvi(KFK$jAO3Nrt z(`G0`Ngx~Vt0&i7T@6{ud%iD%8iND&r3T}ua|FG52IWYi70;FQjrHp!llUb*v9*^)8do!4`Q{7=b>4b=el!>s6Ki#`U$ z_~ZDci@3njzy05~Nv_))tcP?F#AWC}zLC5BB$ir+f92~H%|1pL4jxq=cX%I6zE?&s zUEbPS1pO>%{(!K^zt*0IMZ^--dDjy5uWIpKlCf`9Uc+`vQkaJ~&+_T^jT2SZP2z)x z_O{%sgX`9{dW{aBrZ!?%_L+S`L`t-KQFc=vi5Y~9-)s5 zr`DnVu0EWbw-8sWL>T*JV>QA*0j+zcn*P&^qV`?hx|1gEh4V8nf5MxGpRatnQ;|W* zKAsbsfq3o`=WA$}{Rk)`l2eexfW)=Rvb4miS;#nSChgoay3fnTKFhE~6zbzPEAm$3 zOf&YFL)S^uQRIf)M?qvc&zb7jcVBcMjh359@If!{6%k-falWJ{x<3uSxGP)a=-izS zw5Z;@uQO^gNGsqHZZcX!Y+&PF?_-4&Ht@HV)TZEQqvHhSGpWB?O-ZYx?}k-<{gCZw ziN@Ed3_^qHuN%QlXNCTV&~4;*MSZ&_jOG%X7rGxP;8Bc3zdXI_qA$0-zwaA84@6&2 zX`1i^IWz_w5diDs37u2|H5qN-FG}hrI{&iugtSOw!m%R?`8lE^TNhKJ6nY`wU&9R8 zZ|}kLbZV55p@Sh0kIK_}r*pVOs_TAfJ2jpV4CfYY^|h=nXpCh@`dz7~#K9{ia61rg zC_lb)>$FmaIEmG>1R-c;K_I65axf(#5&E8gaC2(7Ur)$$X>2;VrL}5^qpGO!qfcd3 zMW*<1q;g4)%UHp})nd2F;dJiJJCiP(T^^~kC7V(h8~@Vo;|*L+Qy4D=d}D@$Op{!3x~3#IY-d? z(ARpbusd^-6j&cVUKc~0bdcc$dUqEU)!si4mU1#e(BHHE4`85J%=yPJC(ut{@RfKC z+(dN3dEDDzbX8xyd2|1`(s-sssRq8ZG~ax+Y~iL;WpFn$5JQ17Xt6(IjV^W|imzJ$ zYSkiBYw@l{6QRtc;y%in;^bGwRZF$8zNa!-_b=t-8miZEBM{QWthTmikycj4x?jt$ zImZK$GY0xd{5G_1VoLX(-3ZhMV;1JA(mB&t(f;hE9x3r4n}qn?6~3Beb|EW0bAcGMUnO3Kk_(x8nZJ@Dr} z)Y|FSRI_x;%*cU3e_HdPlS$I}$;Vrv%@c_StkfC#7PtrXB=@r>Zc-?xUpG6~ZBri4 zR}yC2eBVK9bzW+6yo!F2-(mn^;{N9EXWi7I$xc!AXw%SZQ;T&Nj%aZ|f$mP!CdTv2 ziJi~7Je)_3(>l(t$@&j~Mc$rh3R6FAjnu>v`zl)@ac*H2|BBZVh||9_Y3V_xe3Uw9 zAN>zIM=?V(bUNCFX&pH*9#@3Mx$(nWe`%i@FJK$l!h?0$spxMIy`1+GAr0cvoQ3Le zmG2-G+S}|Xu{WnU8Xc=Ki^5Zhp}2M1Zz5stZ8K-!fixj*W$BpA>Bz>e*;${LIhT&I z#C&|pN_H_cZm%t3hY)VR=JL=j@bku0_y&8(;*;%s8ZT+G{El6m=lrm(kqnl%M1VqinFF z3%Z4PC?j#&B(_g4`g$Tc%S%utwynRY3y_BcB+pHLk|*&K4qon#5P@>wg_Lm${%fyC z4I!GJwLbMen<4E7^pO7eK!|ZlLK!W}>r?^_Lyy$#89hqq7 z7MO(`T^)Dfkx8|W=$q72;qGRcx)&mNJpz<{ieE$-7VLYhqh8_t{8GzO++VxR+uoBE zbcX=;E7uYS9wo)DA^#9INe>=N&JQ+GNW{c^EB&8?yu(+?wM?D}6I3SM%xYEP2RbRyO!hgQHp+u?^U2vgd4ENhss(uue0N zkRy|GU6#eNwc>mo!9X&j7<#=`*dMV>&_{FNAU&kXSFyX@gx6s&BD&nUusNBqFS8C~ zN#Jr^?SN1T#hEEX<;8P;jeA%^o&<^Veki4gJwX74tq^=-rurs+|ebb?|y z3RwU0>Ivt))X5#>Li@HBIRQ{~LcyA#8Kl$N*Z=;JnUD&{F Xz08CkL8tv=#s=QLQIoHdHGBVmi>8p( diff --git a/public/images/wechat/wechat_icon2.png b/public/images/wechat/wechat_icon2.png deleted file mode 100755 index cbc3eb565cc9ddd9ce1a9618becd0035d38f0919..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4259 zcmcIoX*iU9+m|ggp`k2^F^rvAVq(fNj2c9evM*zdrOc8U46=lXqAb}eL@Kg{DBDwdRqim5ivePr&&)xmJAKu>Mcs{(>ab4$sIex$2x%|)nmn+)b?9_ffaXvOSw*5v} zj0J1F%KD;sxLFpyfih(cVl+c*+Bvct%@5~IU_-l-T?il}BF>#)LBP5CUv4FwU}NI| zdszw80D23^2&kRU2%jVG1*) z7!W)>u>szMa{*?S_<&1zEmyFv4(J3O#S$PAXgCm^=tZKU=-S}FbWyDNuWcw8^cRG7 zNgMp{psY>JK?Y=R0!Tycs45-?hl7wvHMqJ45(!rUAz*L>6vldys&I9b1`>rh2KxH} zv%Gn`x}hvEC;#@vT4{qlXfz563ib2zQ}a8jM)r1x!nL%terX^Osw{*m)t^Me(N#%Q zncoT+0u}G=Nuha?NuXbfI2W=HO&iRL^xr8EDgVflsDGD-_{s1Vpits>ta&{Ml&tqq@Sx#Df?++E)}dj%Z+k}FGQ;N1`9o#= z$M@aY)O|WVfB)Ff`JIr3+Mmx?1cHJFjDeRfg7Rk|wsN`V`f}-Rz6v?B@^NG7Ne6~} zruok%B=d%?#4EJQ3i1dVo_+JRtOJZ~IqETZm?^1?^3hwHx-cu{6bS3>FTba=C?kZl zi?^PO=&mL?){vNCeasQdpoUv@86Qh?UcGT^F9X!R^|?P+n%(!rk=aF)t7R@MX991v zy!~9ZkLc#eL7YM~UxZs;bN65@YLsOZi{-uXvNAH?@HQ{*e9WO7lWrAcD>cG=a!}PF z#2J=D8=p&AwOeYrmdS`;@WJpXJTu*KG3}2O=8~bRbbox0NmG!7wz`&Ker&G2O62|W zW77!vG!`qLKED#sJCm*FArqNLSy?!cTAEk!vj3*ZRxQ%+^HiI(&cmX!GRivnTV~ZC z46?0s>pWT_jB)}39BrR(^HO3^+Uu#U1cQthxX}}8^#acwHd-H~6lZpB6fz{ut z9F7c0*6W7irMBVMEtJgDw_5X(345jeKrjJSM5(P4z^Z}AeyQy1@$J!hBaY_NN0?i{ z;CF$W;~x&DbX4ae-gFd;buX7jJ-)D;B;|CXW=q~l!@YX)j*w=YP?TargtgGepAG7z zIl#-$1y)w#<8m3JgT@fq8@w%V)w;`8998er8+y8@ofRx1pD6)4r-8?GUc!&@omljK z-y8QWV{2svZIbCww^n|}@3rLgIi1nB@}&G>-LbUyw^E{dqp}8Ca14*s}+#qZuiJhyIzhQyLG&EvOP>=II#m4N=;2-$nOLE>eGOQ&a}1kZ#F`;ioM0%IW?8^@LGUTu z{u(;|W4ph}r457B!VueBlfcr zfKiwIGaWi(fp;FT>djb{QEroasdk{~@Q_S#Dy+EQN?x&U>#jI|JJN?JO1L>5pzD>b z&~&|?p77=rH(%@MHPE}<+z%vyw$cLp3%;g%DLQr<{=ALST{4FT>y$gK4^EaV`n$Rruw(B6tNfae z+Eqof$Lgy8NSbnMXI5!2FGVj+x;1iM{TUK&d~4>pMf68?Q7$Ervf$C_2oPU_s`3ms z&*lj%Kwz=rN>Y~Ux04S;B|Lfp;Ks99y|ibni#>eVeoyebV_Odq%(%nytBzVz6GU=2 zTMO;TGqK6Qj2rddB_fz%%iiqXM`M=9D@-Kz6)6PraO$p&3ns^uz;Bw#FTP3I9dXxj zq5^Yz@@EeYu4cwYWq9oP&ov0|*@JR3ifKZHjfkUp1(VqRd!xk%{uCy3tFO1scI?i` zfLOSr@Ll+aRew0GmnC*9RJ$Lx|LSCzU7^dA#HnT6>WEa@0AOAW+f>iHh zt*G=p@!8a_giN0iVD2+*q$I^OstLdYo9OYT?j(nICG)58)AhRZgg^XHDK_gX^|bBm zd|vHpqX>_ky}x9QucQ}5k5^2JJ|pg98qT_^kHj^qT@E;dJnQ^WE^lB2r6TVU4?-iR z)#0>o(Z~ivo~3=snCe(T!^=;TjSR~M0N1l8@>7>YEaKZCgqR>v$YJ5=W?~dz8LQIw zAR0Fxgz1;dB@krARpoUuD@E{L+7D#$HhmPEvttRf(xqP}4w}HgEmv#bmm41#aX2nu zGxm99bd}pbC`vB!ipSJ>?7C%rD%K);eSb{LR$fML`_)_Dwy%z=Y2SSx%cg~+D1Ei8 z;=I@D!|VG!Yo6A(8m?CCIyrZ!Jl{TL^2?MSc3aYxQI=8o&LoUH>08%ky1#XujuqY; z(Fmyw6Ba>_2Bp!yOT5`fe;R4H_n%f&0@q+aL}uK4I$ zxb5o1_24hc3v;E)Yb~#;7dNE(F{@LpC?26 zYAR2?4c2AsqYoeSheXEVPhnb@t3du4E@9S}(%fSAEbDe07{2Fug{tz=E=I*JOhNOJ zCww5MF7mUID6)V}cEtN&SKQ+&{NA^alElD>>Af2hoL2@fJG_SNKlq)aIpun6?EaUo zaEa*g{1mu#DmMoj2;hz;ef@+fkd!d*cP=mkAbZ4X8qGdN-+* zuFswpSOa)je5TlsUHYRfezu=70IDXnBYRq{}flnz(9SCWXX+!CGLoAd71 z0WU4=2W1P3RTo)_W*%YwT`2$81U-5~r_`*Moq(oQ^gD-ToBL%m){=)B*3U?HKNM$x zLcnjh*3ByTetM>JgFP4#9ab}uF9%A2qWSDyw+}U2%(#t~+&bgyCYjsRRo>8iLHPKs zx#)?XY-h%)4C3^8!FAyR;Y~zK)c|DW`aU@!)1Hd=H-dIMy|CcuZ_d-z`X6#qw|$(B zrp;=Wi*k<%NO$H8N|Y$VmGt`z0$si&;Kh9pscf&MPCkkp@-SJOioQ0u%9Ur9y6*h2 zd?jcXnnm$%m-16PIr|eg-{6wWv-<Ou*bt;_@Z#+=KT46O*lm_pL+h>18sBi%z02EW4tT#r z&`Y!7J??lan};)XK-)P^@hi>Q#_iU^{mh#<&AL~JmE&;Fu80h-J9%~Tq7+>IU^k7~{<)y&Bsl21u(L%I4a z>PAU4^EYNz`=}B}iMqJZ)Y~K9Ru%Hh#CSpefILU044rvKK_A^4gknOc;72-%X_hY1 zpVow8h?iq`wHKxYnG%*(R+W!Qrus?a8_9WN#081LgF=S1pAYO>%xh0C(HFYP29K1~ zjWVwFze^mP*?A42oKMC~zjV?}7CTz6OR( nL>4EHap?cM!ES97vvII#bbG{qmhfHp_1nP6&90){ - element.css('display', 'block'); - element.on('click', function(){ - if(element.text() == "点击展开"){ - e.css("height", height+'px'); - element.text("点击隐藏"); - } else { - e.css("height", '90px'); - element.text("点击展开"); - } - - }); - } - }, false); - - } - } -}); +//app.directive('textAutoHeight', function($timeout){ +// return { +// restrict: 'A', +// scope: {}, +// link: function(scope, element, attr){ +// scope.text = '点击展开'; +// $timeout(function(){ +// var e = element.parent().children().eq(5); +// var height = e[0].scrollHeight; +// if(height>90){ +// element.css('display', 'block'); +// element.on('click', function(){ +// if(element.text() == "点击展开"){ +// e.css("height", height+'px'); +// element.text("点击隐藏"); +// } else { +// e.css("height", '90px'); +// element.text("点击展开"); +// } +// +// }); +// } +// }, false); +// +// } +// } +//}); app.directive('inputAuto',function(){ return{ diff --git a/public/stylesheets/weui/weixin.css b/public/stylesheets/weui/weixin.css index 64598e381..8b135dbeb 100644 --- a/public/stylesheets/weui/weixin.css +++ b/public/stylesheets/weui/weixin.css @@ -8,6 +8,7 @@ h1,h2,h3,h4,h5,p {padding:0px; margin:0px;} .f13 {font-size:13px;} .f15 {font-size:15px;} .fb {font-weight:bold;} +.mt2 {margin-top:2px;} .mt5 {margin-top:5px;} .mt10 {margin-top:10px;} .mb5 {margin-bottom:5px;} @@ -16,6 +17,8 @@ h1,h2,h3,h4,h5,p {padding:0px; margin:0px;} .mr10 {margin-right:10px;} .ml15 {margin-left:15px;} .mr15 {margin-right:15px;} +.mr20 {margin-right:20px;} +.mr25 {margin-right:25px;} .ml55 {margin-left:55px;} .mr55 {margin-right:55px;} .c-blue {color:#269ac9;} @@ -69,9 +72,9 @@ a.underline {text-decoration:underline;} .copy-input {width:100%; height:28px; line-height:28px; border-radius:3px; position:absolute; left:-9999em;} .post-reply-input {width:100%; height:28px; max-height:84px; line-height:28px; border:1px solid #e6e6e6; outline:none; padding:0; margin:0; border-radius:3px; overflow-y:hidden; resize:none;} .post-reply-submit {font-size:13px; padding:3px 8px; color:#fff; background-color:#269ac9; outline:none; border:none; display:inline-block;} -.reply-icon {background:url(/images/wechat/wechat_icon.png) -100px 1px no-repeat; width:20px; height:18px; display:inline-block; vertical-align:middle;} -.praise-icon {background:url(/images/wechat/wechat_icon.png) -100px -38px no-repeat; width:20px; height:18px; display:inline-block; vertical-align:middle;} -.praised-icon {background:url(/images/wechat/wechat_icon.png) -100px -76px no-repeat; width:20px; height:18px; display:inline-block; vertical-align:middle;} +.reply-icon {background:url(/images/wechat/wechat_icon.gif) -100px 1px no-repeat; width:20px; height:20px; display:inline-block; vertical-align:middle;} +.praise-icon {background:url(/images/wechat/wechat_icon.gif) -100px -38px no-repeat; width:20px; height:20px; display:inline-block; vertical-align:middle;} +.praised-icon {background:url(/images/wechat/wechat_icon.gif) -100px -76px no-repeat; width:20px; height:20px; display:inline-block; vertical-align:middle;} /* loading 弹框*/ .loading-bg {position:fixed; width:100%; height:100%; left:0; top:0; z-index:99; background:rgba(206, 206, 206, 0.3); overflow:hidden;} From 65c7719ed2d52524318e3e3c1ad6d257af9ab5f0 Mon Sep 17 00:00:00 2001 From: Tim Date: Tue, 24 May 2016 15:18:11 +0800 Subject: [PATCH 116/668] =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E5=A4=A7=E7=BA=B2?= =?UTF-8?q?=E5=9B=BE=E6=A0=87=E5=9C=A8=E8=AE=A8=E8=AE=BA=E5=8C=BA=E6=8D=A2?= =?UTF-8?q?=E8=A1=8C=E6=98=BE=E7=A4=BA=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/layouts/_project_info.html.erb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/views/layouts/_project_info.html.erb b/app/views/layouts/_project_info.html.erb index 30f527595..c04c2effb 100644 --- a/app/views/layouts/_project_info.html.erb +++ b/app/views/layouts/_project_info.html.erb @@ -20,9 +20,9 @@
        - +
        - + <%= @course.name %> From 1c0a68e57b424c06f12397dde37c015e8ab01bad Mon Sep 17 00:00:00 2001 From: Tim Date: Tue, 24 May 2016 15:47:22 +0800 Subject: [PATCH 117/668] =?UTF-8?q?=E7=BB=84=E7=BB=87=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E6=88=90=E5=91=98tab=EF=BC=8C=E6=90=9C=E7=B4=A2=E7=BB=93?= =?UTF-8?q?=E6=9E=9C=E5=A4=AA=E5=A4=9A=E5=AF=BC=E8=87=B4=E6=8D=A2=E9=A1=B5?= =?UTF-8?q?=E6=96=AD=E8=A1=8C=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/organizations/_org_member_list.html.erb | 2 +- public/stylesheets/org.css | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/views/organizations/_org_member_list.html.erb b/app/views/organizations/_org_member_list.html.erb index fb22716ff..0059a2be5 100644 --- a/app/views/organizations/_org_member_list.html.erb +++ b/app/views/organizations/_org_member_list.html.erb @@ -1,6 +1,6 @@ <% members.each do |member|%>
          -
        • <%= User.find(member.user_id).realname.blank? ? User.find(member.user_id).login : User.find(member.user_id).realname %>
        • +
        • <%= get_org_member_role_name member %> <%= form_for(member, {:as => :org_member, :remote => true, :url => Setting.protocol + "://" + Setting.host_name + "/org_member/" + member.id.to_s, diff --git a/public/stylesheets/org.css b/public/stylesheets/org.css index abfeaef85..f1b552687 100644 --- a/public/stylesheets/org.css +++ b/public/stylesheets/org.css @@ -18,14 +18,14 @@ .orgUrlInput {width:200px; outline:none; border:1px solid #eaeaea; height:22px;} a.saveBtn {padding:2px 10px; background-color:#269ac9; color:#ffffff;} a.saveBtn:hover {background-color:#297fb8;} -.orgMemberList {width:480px; float:left;} +.orgMemberList {width:420px; float:left;} .orgColumnList {width:688px; float:left;} .orgListUser {width:110px; float:left;padding-right: 10px;} .orgListRole {width:180px; float:left;} .orgOrder {width:70px; float:left; text-align:center;} .orgSubNum {width:30px; float:left; text-align:center;} .subNumBlock {cursor:pointer;background-color:#fffce6;color: #0d90c3; width:30px; height:17px; line-height:17px; margin:7px 0; vertical-align:middle;} -.orgMemContainer {width:208px;} +.orgMemContainer {width:268px;} .orgMemberAdd {float:right;} .orgAddSearch {border:1px solid #dddddd; outline:none; width:180px; height:22px; color:#9b9b9b;} .undis {display:none;} From a7a2be6a4bec789dc0e50ee6076dcac281fdaa28 Mon Sep 17 00:00:00 2001 From: huang Date: Tue, 24 May 2016 16:01:02 +0800 Subject: [PATCH 118/668] =?UTF-8?q?=E4=BD=9C=E4=B8=9A=E5=AF=BC=E5=85=A5?= =?UTF-8?q?=E8=B5=84=E6=BA=90=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/users_controller.rb | 73 ++++++++++++------- app/views/users/_show_user_resource.html.erb | 15 ++-- .../users/_user_homework_attachment.html.erb | 2 +- app/views/users/user_import_resource.js.erb | 2 +- .../users/user_ref_resource_search.js.erb | 13 +++- 5 files changed, 68 insertions(+), 37 deletions(-) diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 853219426..6f3cca744 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -1022,20 +1022,34 @@ class UsersController < ApplicationController #用户从资源库导入资源到作业 def user_import_resource - @user = User.current - user_course_ids = @user.courses.map { |c| c.id} #我的资源库的话,那么应该是我上传的所有资源 加上 我加入的课程的所有资源 - @attachments = Attachment.where("(author_id = #{params[:id]} and container_type in('Project','Principal','Course','Issue','Document','Message','News','StudentWorkScore','HomewCommon')) "+ - "or (container_type = 'Course' and container_id in (#{user_course_ids.empty? ? '0': user_course_ids.join(',')}))").order("created_on desc") + if User.current.id.to_i != params[:id].to_i + render_403 + return + end + @resource_id = params[:project_id].nil? ? (params[:course_id].nil? ? params[:subfield_file_id] : params[:course_id]) : params[:project_id] + @resource_type = params[:project_id].nil? ? (params[:course_id].nil? ? "SubfieldFile" : "Course") : "Project" + @order, @b_sort = params[:order] || "created_on", params[:sort] || "asc" + @score = @b_sort == "desc" ? "asc" : "desc" + user_course_ids = User.current.courses.map { |c| c.is_delete == 0 && c.id} + user_project_ids = User.current.projects.map {|p| p.status != 9 && p.id } # user_org_ids = User.current.organizations.map {|o| o.id} + if(params[:type] == "1") # 我的资源 + # 修正:我的资源库的话,那么应该是我上传的所有资源加上,我加入的课程、项目、组织的所有资源 + @attachments = get_my_resources(params[:id], user_course_ids, user_project_ids, @order, @score) + elsif (params[:type].blank? ||params[:type] == "6") # 公共资源 + # 公共资源库:所有公开资源或者我上传的私有资源 + @attachments = get_public_resources(user_course_ids, user_project_ids, params[:order], @score) + end + @status = params[:status] @type = params[:type] @homework_id = params[:homework_id] - @limit = 7 + @limit = 10 @is_remote = true + @seleted_resources = session[:seleted_resource_ids].nil? ? [] : session[:seleted_resource_ids] @atta_count = @attachments.count @atta_pages = Paginator.new @atta_count, @limit, params['page'] || 1 @offset ||= @atta_pages.offset - @seleted_resources = session[:seleted_resource_ids].nil? ? [] : session[:seleted_resource_ids] #@curse_attachments_all = @all_attachments[@offset, @limit] - @attachments = paginateHelper @attachments,7 + @attachments = paginateHelper @attachments,10 respond_to do |format| format.js end @@ -1043,10 +1057,10 @@ class UsersController < ApplicationController #引入资源列表根据类型过滤 def user_resource_type - if User.current.id.to_i != params[:id].to_i - render_403 - return - end + # if User.current.id.to_i != params[:id].to_i + # render_403 + # return + # end user_course_ids = User.current.courses.map { |c| c.is_delete == 0 && c.id} user_project_ids = User.current.projects.map {|p| p.status != 9 && p.id } # user_org_ids = User.current.organizations.map {|o| o.id} @@ -1095,22 +1109,27 @@ class UsersController < ApplicationController #引入资源列表根据关键词过滤 def user_ref_resource_search - search = params[:search].to_s.strip.downcase - if(params[:type].blank? || params[:type] == "1") #全部 - user_course_ids = User.current.courses.map { |c| c.is_delete == 0 && c.id} #我的资源库的话,那么应该是我上传的所有资源 加上 我加入的课程的所有资源 取交集并查询 - @attachments = Attachment.where("((author_id = #{params[:id]} and container_type in('Project','Principal','Course','Issue','Document','Message','News','StudentWorkScore','HomewCommon')) "+ - " or (container_type = 'Course' and container_id in (#{user_course_ids.empty? ? '0': user_course_ids.join(',')}))) and (filename like '%#{search}%') ").order("created_on desc") - elsif params[:type] == "2" #课程资源 + if User.current.id.to_i != params[:id].to_i + render_403 + return + end + @resource_id = params[:mul_id] + @resource_type = params[:mul_type] + @order, @b_sort = params[:order] || "created_on", params[:sort] || "asc" + @score = @b_sort == "desc" ? "asc" : "desc" + @user = User.current + @switch_search = params[:search].nil? ? " " : params[:search] + search = "%#{@switch_search.strip.downcase}%" + # 别人的资源库是没有权限去看的 + if(params[:type] == "1") # 我的资源 + # 修正:我的资源库的话,那么应该是我上传的所有资源加上,我加入的课程、项目、组织的所有资源 user_course_ids = User.current.courses.map { |c| c.is_delete == 0 && c.id} - @attachments = Attachment.where("(author_id = #{params[:id]} and container_type = 'Course') or (container_type = 'Course' and container_id in (#{user_course_ids.empty? ? '0': user_course_ids.join(',')})) and (filename like '%#{search}%') ").order("created_on desc") - elsif params[:type] == "3" #项目资源 - @attachments = Attachment.where("author_id = #{params[:id]} and container_type = 'Project' and (filename like '%#{search}%')").order("created_on desc") - elsif params[:type] == "4" #附件 - @attachments = Attachment.where("author_id = #{params[:id]} and container_type in('Project','Issue','Document','Message','News','StudentWorkScore','HomewCommon') and (filename like '%#{search}%')").order("created_on desc") - elsif params[:type] == "5" #用户资源 - @attachments = Attachment.where("author_id = #{params[:id]} and container_type = 'Principal' and (filename like '%#{search}%')").order("created_on desc") - elsif params[:type] == "6" #公共资源 - @attachments = Attachment.where("(is_public =1 and is_publish = 1 and container_id is not null)" + "or (author_id = #{params[:id]} and is_publish = 0)").order("created_on desc") + user_project_ids = User.current.projects.map {|p| p.status != 9 && p.id } + # user_org_ids = User.current.organizations.map {|o| o.id} + @attachments = get_my_resources_search(params[:id], user_course_ids, user_project_ids, @order, @score, search) + elsif (params[:type].blank? || params[:type] == "6") # 公共资源 + # 公共资源库:所有公开资源或者我上传的私有资源 + @attachments = get_public_resources_search(user_course_ids, user_project_ids, @order, @score, search) end @type = params[:type] @limit = 7 @@ -1120,7 +1139,7 @@ class UsersController < ApplicationController @offset ||= @atta_pages.offset @seleted_resources = session[:seleted_resource_ids].nil? ? [] : session[:seleted_resource_ids] #@curse_attachments_all = @all_attachments[@offset, @limit] - @attachments = paginateHelper @attachments,7 + @attachments = paginateHelper @attachments, 7 respond_to do |format| format.js end diff --git a/app/views/users/_show_user_resource.html.erb b/app/views/users/_show_user_resource.html.erb index 6c3216f11..f2c28387f 100644 --- a/app/views/users/_show_user_resource.html.erb +++ b/app/views/users/_show_user_resource.html.erb @@ -10,11 +10,16 @@ // }); $(document).ready(function(){ + <% if type == "1" %> + $("#my_resources_choose_homework").addClass("referenceTypeActive"); + $("#public_resources_choose_homework").removeClass("referenceTypeActive"); + <% else %> $(".referenceTypeBlock").click(function(){ var activeBlock = $(".referenceResourceType").children(".referenceTypeActive"); activeBlock.removeClass("referenceTypeActive"); $(this).addClass("referenceTypeActive"); }); + <% end %> }); // 点击 checkbox选中引用的资源的时候,保存该资源的id到session里去 @@ -36,14 +41,12 @@ function store_seleted_resource(dom){
        - <%= form_tag(user_ref_resource_search_user_path(user),:method => 'get',:remote=>'true',:class=>'referenceSearchBox') do%> + <%= form_tag(user_ref_resource_search_user_path(user, :type => @type),:method => 'get',:remote=>'true',:class=>'referenceSearchBox') do%> <% end %> diff --git a/app/views/users/_user_homework_attachment.html.erb b/app/views/users/_user_homework_attachment.html.erb index 673cee0e1..9f9aea60f 100644 --- a/app/views/users/_user_homework_attachment.html.erb +++ b/app/views/users/_user_homework_attachment.html.erb @@ -70,7 +70,7 @@
        上传附件 - <%= link_to "资源库",{:controller => 'users',:action=>'user_import_resource',:id=>User.current.id,:homework_id=>container.id},:class => "FilesBtn fl mt3 mr15",:title=>"请从资源库中选择文件作为作品的附件",:remote => true%> + <%= link_to "资源库",{:controller => 'users', :action => 'user_ref_resource_search', :id => User.current.id, :homework_id => container.id, :type => nil}, :class => "FilesBtn fl mt3 mr15", :title => "请从资源库中选择文件作为作品的附件", :remote => true %> <% if defined?(has_program) && has_program %>
        编程 diff --git a/app/views/users/user_import_resource.js.erb b/app/views/users/user_import_resource.js.erb index 87324669e..cd302a9c1 100644 --- a/app/views/users/user_import_resource.js.erb +++ b/app/views/users/user_import_resource.js.erb @@ -1,4 +1,4 @@ -$('#ajax-modal').html('<%= escape_javascript(render :partial => 'users/show_user_resource',:locals => {:user => @user,:homework_id=>@homework_id,:seleted_resources=>@seleted_resources}) %>'); +$('#ajax-modal').html('<%= escape_javascript(render :partial => 'users/show_user_resource',:locals => {:user => @user, :homework_id => @homework_id, :seleted_resources=> @seleted_resources, :type => @type}) %>'); showModal('ajax-modal', '730px'); $('#ajax-modal').css('height','500px').css("width","730px"); $('#ajax-modal').siblings().remove(); diff --git a/app/views/users/user_ref_resource_search.js.erb b/app/views/users/user_ref_resource_search.js.erb index 8651768a5..e6af1bc47 100644 --- a/app/views/users/user_ref_resource_search.js.erb +++ b/app/views/users/user_ref_resource_search.js.erb @@ -1,2 +1,11 @@ -$("#user_ref_resources").html('<%= escape_javascript(render :partial => 'homework_ref_resources_list',:locals=>{:attachments => @attachments,:seleted_resources=>@seleted_resources})%>'); -$("#resource_ref_pages").html('<%= pagination_links_full @atta_pages, @atta_count, :per_page_links => false, :remote => @is_remote, :flag => true %>'); \ No newline at end of file +$('#ajax-modal').html('<%= escape_javascript(render :partial => 'users/show_user_resource',:locals => {:user => @user, :homework_id => @homework_id, :seleted_resources=> @seleted_resources, :type => @type}) %>'); +showModal('ajax-modal', '730px'); +$('#ajax-modal').css('height','auto').css("width","730px"); +$('#ajax-modal').siblings().remove(); +$('#ajax-modal').before("
        " + "
        "); +$('#ajax-modal').parent().css("top","30%").css("left","").css("position","fixed"); +$('#ajax-modal').parent().addClass("popbox").addClass("referenceResourcesPopup"); + +$("#public_resources_choose_homework").attr('href','<%= user_ref_resource_search_user_path(@user, :type => '6') %>'); +$("#my_resources_choose_homework").attr('href','<%= user_ref_resource_search_user_path(@user, :type => '1') %>'); + From 9e8411aac978e573bf94e593ef50916d0a6a23be Mon Sep 17 00:00:00 2001 From: yuanke <249218296@qq.com> Date: Tue, 24 May 2016 16:22:46 +0800 Subject: [PATCH 119/668] =?UTF-8?q?=E4=BF=AE=E6=94=B9ke=EF=BC=9Aissue?= =?UTF-8?q?=E6=8F=8F=E8=BF=B0=E5=8F=AA=E6=9C=89=E4=B8=80=E8=A1=8C=EF=BC=8C?= =?UTF-8?q?=E7=82=B9=E5=87=BB=E7=BC=96=E8=BE=91=E5=90=8E=EF=BC=8C=E6=8F=8F?= =?UTF-8?q?=E8=BF=B0=E6=A1=86=E8=A2=AB=E6=8B=89=E9=AB=98=E4=BA=86=EF=BC=8C?= =?UTF-8?q?=E6=9C=89=E5=BE=88=E5=A4=9A=E7=A9=BA=E7=99=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/assets/kindeditor/plugins/autoheight/autoheight.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/assets/kindeditor/plugins/autoheight/autoheight.js b/public/assets/kindeditor/plugins/autoheight/autoheight.js index 82928ff0c..cdd3f94f8 100644 --- a/public/assets/kindeditor/plugins/autoheight/autoheight.js +++ b/public/assets/kindeditor/plugins/autoheight/autoheight.js @@ -41,7 +41,7 @@ KindEditor.plugin('autoheight', function(K) { var body = edit.doc.body; edit.iframe.height(minHeight); self.resize(null, Math.max( - ((K.IE ? body.scrollHeight : body.offsetHeight) > 500 ? 500 : (K.IE ? body.scrollHeight : body.offsetHeight)) //限制初始化太高的情况 + ((K.IE ? body.scrollHeight : body.offsetHeight) > 250 ? 250 : (K.IE ? body.scrollHeight : body.offsetHeight)) //限制初始化太高的情况 + 33, minHeight)); } From fc3b47e3aa556b454fc1d4c4f570dda7d79be673 Mon Sep 17 00:00:00 2001 From: cxt Date: Tue, 24 May 2016 16:37:21 +0800 Subject: [PATCH 120/668] =?UTF-8?q?=E6=B5=8B=E9=AA=8C=E7=BB=9F=E8=AE=A1?= =?UTF-8?q?=E7=BB=93=E6=9E=9C=E7=9A=84js=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/exercise/_student_table.html.erb | 61 +++++++++++----------- 1 file changed, 31 insertions(+), 30 deletions(-) diff --git a/app/views/exercise/_student_table.html.erb b/app/views/exercise/_student_table.html.erb index 3022b83a6..cbb56025e 100644 --- a/app/views/exercise/_student_table.html.erb +++ b/app/views/exercise/_student_table.html.erb @@ -15,46 +15,23 @@ - <% @exercise_users_list.each do |exercise|%> - - + <% @exercise_users_list.each_with_index do |exercise, index|%> - 1 + <%=index + 1 %> <%= link_to(image_tag(url_to_avatar(exercise.user),:width =>"40",:height => "40",:style => "display:block;", :class => "mt15"),user_activities_path(exercise.user)) %> - + <%=exercise.user.show_name %> - + - + --   - + <% if exercise.created_at%> <%= Time.parse(format_time(exercise.created_at)).strftime("%m-%d %H:%M")%>  <% if @exercise.end_time <= exercise.created_at %> @@ -67,5 +44,29 @@
        - <% end%> + + + +<% end%> \ No newline at end of file From 909d40b4eb462e4aa28a5242792580bec8dcbebd Mon Sep 17 00:00:00 2001 From: huang Date: Tue, 24 May 2016 17:14:01 +0800 Subject: [PATCH 121/668] =?UTF-8?q?=E9=BB=98=E8=AE=A4=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E5=85=AC=E5=85=B1=E8=B5=84=E6=BA=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/users_controller.rb | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 6f3cca744..cff97e423 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -2050,7 +2050,7 @@ class UsersController < ApplicationController @score = @b_sort == "desc" ? "asc" : "desc" user_project_ids = User.current.projects.map {|p| p.id} user_course_ids = User.current.courses.map { |c| c.id} #我的资源库的话,那么应该是我上传的所有资源 加上 我加入的课程的所有资源 - if(params[:type].blank? || params[:type] == "1") # 我的资源 + if(params[:type] == "1") # 我的资源 # 修正:我的资源库的话,那么应该是我上传的所有资源加上,我加入的课程、项目、组织的所有资源 if params[:status] == "2" @attachments = get_course_resources(params[:id], user_course_ids, @order, @score) @@ -2064,7 +2064,7 @@ class UsersController < ApplicationController # 公共资源库:所有公开资源或者我上传的私有资源 @attachments = get_my_resources(params[:id], user_course_ids, user_project_ids, @order, @score) end - elsif params[:type] == "6" # 公共资源 + elsif (params[:type].blank? || params[:type] == "6") # 公共资源 if params[:status] == "2" @attachments = get_course_resources_public( user_course_ids, @order, @score) elsif params[:status] == "3" @@ -2203,7 +2203,7 @@ class UsersController < ApplicationController @score = @b_sort == "desc" ? "asc" : "desc" user_project_ids = User.current.projects.map {|p| p.id} user_course_ids = User.current.courses.map { |c| c.id} #我的资源库的话,那么应该是我上传的所有资源 加上 我加入的课程的所有资源 - if(params[:type].blank? || params[:type] == "1") # 我的资源 + if(params[:type] == "1") # 我的资源 # 修正:我的资源库的话,那么应该是我上传的所有资源加上,我加入的课程、项目、组织的所有资源 if params[:status] == "2" @attachments = get_course_resources(params[:id], user_course_ids, @order, @score) @@ -2217,7 +2217,7 @@ class UsersController < ApplicationController # 公共资源库:所有公开资源或者我上传的私有资源 @attachments = get_my_resources(params[:id], user_course_ids, user_project_ids, @order, @score) end - elsif params[:type] == "6" # 公共资源 + elsif (params[:type].blank? || params[:type] == "6") # 公共资源 if params[:status] == "2" @attachments = get_course_resources_public( user_course_ids, @order, @score) elsif params[:status] == "3" @@ -2344,7 +2344,7 @@ class UsersController < ApplicationController @score = @b_sort == "desc" ? "asc" : "desc" user_project_ids = User.current.projects.map {|p| p.id} user_course_ids = User.current.courses.map { |c| c.id} #我的资源库的话,那么应该是我上传的所有资源 加上 我加入的课程的所有资源 - if(params[:type].blank? || params[:type] == "1") # 我的资源 + if(params[:type] == "1") # 我的资源 # 修正:我的资源库的话,那么应该是我上传的所有资源加上,我加入的课程、项目、组织的所有资源 if params[:status] == "2" @attachments = get_course_resources(params[:id], user_course_ids, @order, @score) @@ -2358,7 +2358,7 @@ class UsersController < ApplicationController # 公共资源库:所有公开资源或者我上传的私有资源 @attachments = get_my_resources(params[:id], user_course_ids, user_project_ids, @order, @score) end - elsif params[:type] == "6" # 公共资源 + elsif (params[:type].blank? || params[:type] == "6") # 公共资源 if params[:status] == "2" @attachments = get_course_resources_public( user_course_ids, @order, @score) elsif params[:status] == "3" From 7b7f9cf8f2b108777a974955fc62c8aecf97fb84 Mon Sep 17 00:00:00 2001 From: cxt Date: Tue, 24 May 2016 19:52:51 +0800 Subject: [PATCH 122/668] =?UTF-8?q?=E5=88=A0=E9=99=A4wechat=E6=97=A0?= =?UTF-8?q?=E7=94=A8=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/wechats_controller.rb | 1 - lib/wechat/bin/wechat | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/wechats_controller.rb b/app/controllers/wechats_controller.rb index 39be9cef3..7ee0552fb 100644 --- a/app/controllers/wechats_controller.rb +++ b/app/controllers/wechats_controller.rb @@ -178,7 +178,6 @@ class WechatsController < ActionController::Base openid: openid, user: user ) - request.reply.text "欢迎加入Trustie创新实践社区" render :json => {status:0, msg: "绑定成功"} rescue Exception=>e render :json => {status: -1, msg: e.message} diff --git a/lib/wechat/bin/wechat b/lib/wechat/bin/wechat index 8931a2dcb..d5563802e 100755 --- a/lib/wechat/bin/wechat +++ b/lib/wechat/bin/wechat @@ -1,3 +1,4 @@ +#coding=utf-8 #!/usr/bin/env ruby lib = File.expand_path(File.dirname(__FILE__) + '/../lib') From ed2f41394902fc09acfd56507fb3cd2453c918c7 Mon Sep 17 00:00:00 2001 From: cxt Date: Tue, 24 May 2016 20:04:06 +0800 Subject: [PATCH 123/668] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E8=BF=98=E5=8E=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/users_controller.rb | 210 +++++++++--------- app/views/users/_resources_list.html.erb | 45 +++- .../users/_user_import_resource_list.html.erb | 22 +- app/views/users/_user_resource_info.html.erb | 14 +- .../users/_user_resource_tip_list.html.erb | 2 +- app/views/users/user_resource.html.erb | 14 +- 6 files changed, 177 insertions(+), 130 deletions(-) diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 853219426..854e604b4 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -320,7 +320,7 @@ class UsersController < ApplicationController case params[:agree] when 'Y' ar.update_column('status', 2) - @msg.update_attributes(:apply_result => 1, :viewed => 1) + @msg.update_attributes(:apply_result => 1, :viewed => 1) ar.course_messages << CourseMessage.new(:user_id => ar.user_id, :course_id => -1, :viewed => false, :apply_result => 2, :status => 1) when 'N' ar.update_column('status', 3) @@ -539,28 +539,28 @@ class UsersController < ApplicationController end def student_homeworks - if User.current == @user - @page = params[:page] ? params[:page].to_i + 1 : 0 - user_course_ids = @user.courses.empty? ? "(-1)" :"(" + @user.courses.visible.map{|course| course.id}.join(",") + ")" - - #判断当前用户在当前课程的身份 - visibleCourse = @user.courses.empty? ? [] : @user.courses.where("is_delete = 0").visible - homework_ids = [] - visibleCourse.each do |course| - homeworks = HomeworkCommon.where("course_id = #{course.id} and publish_time <= '#{Date.today}'") - homework_ids << homeworks.pluck(:id) unless homeworks.empty? - end - visible_homework_ids = homework_ids.size == 0 ? "(-1)" :"(" + homework_ids.join(",") + ")" - @homework_commons = HomeworkCommon.where("id in #{visible_homework_ids}").order("created_at desc").limit(10).offset(@page * 10) - @is_teacher = User.current.user_extensions && User.current.user_extensions.identity == 0 && User.current.allowed_to?(:add_course, nil, :global => true) - @is_in_course = params[:is_in_course].to_i || 0 - respond_to do |format| - format.js - format.html {render :layout => 'new_base_user'} - end - else - render_403 + if User.current == @user + @page = params[:page] ? params[:page].to_i + 1 : 0 + user_course_ids = @user.courses.empty? ? "(-1)" :"(" + @user.courses.visible.map{|course| course.id}.join(",") + ")" + + #判断当前用户在当前课程的身份 + visibleCourse = @user.courses.empty? ? [] : @user.courses.where("is_delete = 0").visible + homework_ids = [] + visibleCourse.each do |course| + homeworks = HomeworkCommon.where("course_id = #{course.id} and publish_time <= '#{Date.today}'") + homework_ids << homeworks.pluck(:id) unless homeworks.empty? + end + visible_homework_ids = homework_ids.size == 0 ? "(-1)" :"(" + homework_ids.join(",") + ")" + @homework_commons = HomeworkCommon.where("id in #{visible_homework_ids}").order("created_at desc").limit(10).offset(@page * 10) + @is_teacher = User.current.user_extensions && User.current.user_extensions.identity == 0 && User.current.allowed_to?(:add_course, nil, :global => true) + @is_in_course = params[:is_in_course].to_i || 0 + respond_to do |format| + format.js + format.html {render :layout => 'new_base_user'} end + else + render_403 + end end def choose_user_course @@ -2058,18 +2058,18 @@ class UsersController < ApplicationController # 公共资源库:所有公开资源或者我上传的私有资源 @attachments = get_public_resources(user_course_ids, user_project_ids, params[:order], @score) end - # elsif params[:type] == "2" - # apply_ids = ApplyResource.where("user_id =? and status =?", params[:id], 2).map { |ar| ar.attachment_id} - # if params[:status] == "2" - # resource_type = "'Course'" - # elsif params[:status] == "3" - # resource_type = "'Project'" - # elsif params[:status] == "5" - # resource_type = "'Principal'" - # else - # resource_type = "'Project','OrgSubfield','Principal','Course'" - # end - # @attachments = get_my_private_resources(apply_ids, resource_type, @order, @score) + elsif params[:type] == "2" + apply_ids = ApplyResource.where("user_id =? and status =?", params[:id], 2).map { |ar| ar.attachment_id} + if params[:status] == "2" + resource_type = "'Course'" + elsif params[:status] == "3" + resource_type = "'Project'" + elsif params[:status] == "5" + resource_type = "'Principal'" + else + resource_type = "'Project','OrgSubfield','Principal','Course'" + end + @attachments = get_my_private_resources(apply_ids, resource_type, @order, @score) end @type = params[:type] @limit = 25 @@ -2211,18 +2211,18 @@ class UsersController < ApplicationController # 公共资源库:所有公开资源或者我上传的私有资源 @attachments = get_public_resources(user_course_ids, user_project_ids, params[:order], @score) end - # elsif params[:type] == "2" - # apply_ids = ApplyResource.where("user_id =? and status =?", params[:id], 2).map { |ar| ar.attachment_id} - # if params[:status] == "2" - # resource_type = "'Course'" - # elsif params[:status] == "3" - # resource_type = "'Project'" - # elsif params[:status] == "5" - # resource_type = "'Principal'" - # else - # resource_type = "'Project','OrgSubfield','Principal','Course'" - # end - # @attachments = get_my_private_resources(apply_ids, resource_type, @order, @score) + elsif params[:type] == "2" + apply_ids = ApplyResource.where("user_id =? and status =?", params[:id], 2).map { |ar| ar.attachment_id} + if params[:status] == "2" + resource_type = "'Course'" + elsif params[:status] == "3" + resource_type = "'Project'" + elsif params[:status] == "5" + resource_type = "'Principal'" + else + resource_type = "'Project','OrgSubfield','Principal','Course'" + end + @attachments = get_my_private_resources(apply_ids, resource_type, @order, @score) end @status = params[:status] @type = params[:type] @@ -2352,18 +2352,18 @@ class UsersController < ApplicationController # 公共资源库:所有公开资源或者我上传的私有资源 @attachments = get_public_resources(user_course_ids, user_project_ids, params[:order], @score) end - # elsif params[:type] == "2" - # apply_ids = ApplyResource.where("user_id =? and status =?", params[:id], 2).map { |ar| ar.attachment_id} - # if params[:status] == "2" - # resource_type = "'Course'" - # elsif params[:status] == "3" - # resource_type = "'Project'" - # elsif params[:status] == "5" - # resource_type = "'Principal'" - # else - # resource_type = "'Project','OrgSubfield','Principal','Course'" - # end - # @attachments = get_my_private_resources(apply_ids, resource_type, @order, @score) + elsif params[:type] == "2" + apply_ids = ApplyResource.where("user_id =? and status =?", params[:id], 2).map { |ar| ar.attachment_id} + if params[:status] == "2" + resource_type = "'Course'" + elsif params[:status] == "3" + resource_type = "'Project'" + elsif params[:status] == "5" + resource_type = "'Principal'" + else + resource_type = "'Project','OrgSubfield','Principal','Course'" + end + @attachments = get_my_private_resources(apply_ids, resource_type, @order, @score) end @type = params[:type] @limit = 25 @@ -2700,12 +2700,12 @@ class UsersController < ApplicationController # 获取公共资源 def get_public_resources user_course_ids, user_project_ids, order, score - attachments = Attachment.where("(is_publish = 1 and is_public = 1 and container_id is not null and container_type in('Project','OrgSubfield','Principal','Course')) ").order("#{order.nil? ? 'created_on' : order} #{score}") + attachments = Attachment.where("(is_publish = 1 and container_id is not null and container_type in('Project','OrgSubfield','Principal','Course')) ").order("#{order.nil? ? 'created_on' : order} #{score}") end # 获取公共资源搜索 def get_public_resources_search user_course_ids, user_project_ids, order, score, search - attachments = Attachment.where("is_publish = 1 and is_public = 1 and container_id is not null and container_type in('Project','OrgSubfield','Principal','Course') and (filename like :p)", :p => search).order("#{order.nil? ? 'created_on' : order} #{score}") + attachments = Attachment.where("is_publish = 1 and container_id is not null and container_type in('Project','OrgSubfield','Principal','Course') and (filename like :p)", :p => search).order("#{order.nil? ? 'created_on' : order} #{score}") end # 获取我的资源 @@ -2725,19 +2725,19 @@ class UsersController < ApplicationController # 获取我的课程资源 def get_course_resources author_id, user_course_ids, order, score attchments = Attachment.where("(author_id = #{author_id} and is_publish = 1 and container_id is not null and container_type = 'Course')"+ - "or (container_type = 'Course' and container_id in (#{user_course_ids.empty? ? '0': user_course_ids.join(',')}) + "or (container_type = 'Course' and container_id in (#{user_course_ids.empty? ? '0': user_course_ids.join(',')}) and is_publish = 1 and container_id is not null)" ).order("#{order.nil? ? 'created_on' : order} #{score}") end - # # 获取我的私有资源分享结果 - # def get_my_private_resources apply_ids, resource_type, order, score - # attachments = Attachment.where("id in (#{apply_ids.empty? ? '0': apply_ids.join(',')}) and container_type in(#{resource_type})").order("#{order.nil? ? 'created_on' : order} #{score}") - # end - # - # # 获取我的私有资源分享搜索结果 - # def get_my_private_resources_search apply_ids, resource_type, order, score, search - # attachments = Attachment.where("id in (#{apply_ids.empty? ? '0': apply_ids.join(',')}) and container_type in(#{resource_type}) and (filename like :p)", :p => search).order("#{order.nil? ? 'created_on' : order} #{score}") - # end + # 获取我的私有资源分享结果 + def get_my_private_resources apply_ids, resource_type, order, score + attachments = Attachment.where("id in (#{apply_ids.empty? ? '0': apply_ids.join(',')}) and container_type in(#{resource_type})").order("#{order.nil? ? 'created_on' : order} #{score}") + end + + # 获取我的私有资源分享搜索结果 + def get_my_private_resources_search apply_ids, resource_type, order, score, search + attachments = Attachment.where("id in (#{apply_ids.empty? ? '0': apply_ids.join(',')}) and container_type in(#{resource_type}) and (filename like :p)", :p => search).order("#{order.nil? ? 'created_on' : order} #{score}") + end # 获取我的课程资源中搜索结果 def get_course_resources_search author_id, user_course_ids, order, score, search @@ -2748,18 +2748,18 @@ class UsersController < ApplicationController # 获取公共资源中课程资源 def get_course_resources_public user_course_ids, order, score - attchments = Attachment.where("(container_type = 'Course'and container_id is not null and is_publish = 1 and is_public =1)").order("#{order.nil? ? 'created_on' : order} #{score}") + attchments = Attachment.where("(container_type = 'Course'and container_id is not null and is_publish = 1)").order("#{order.nil? ? 'created_on' : order} #{score}") end # 获取公共资源中课程资源搜索结果 def get_course_resources_public_search user_course_ids, order, score, search - attchments = Attachment.where("(container_type = 'Course'and container_id is not null and is_publish = 1 and is_public =1) and (filename like :p)", :p => search ).order("#{order.nil? ? 'created_on' : order} #{score}") + attchments = Attachment.where("(container_type = 'Course'and container_id is not null and is_publish = 1) and (filename like :p)", :p => search ).order("#{order.nil? ? 'created_on' : order} #{score}") end # 获取我的项目资源 def get_project_resources author_id, user_project_ids, order, score attchments = Attachment.where("(author_id = #{author_id} and is_publish = 1 and container_id is not null and container_type = 'Project') "+ - "or (container_type = 'Project' and container_id in (#{user_project_ids.empty? ? '0': user_project_ids.join(',')}) + "or (container_type = 'Project' and container_id in (#{user_project_ids.empty? ? '0': user_project_ids.join(',')}) and is_publish = 1 and container_id is not null)").order("#{order.nil? ? 'created_on' : order} #{score}") end @@ -2772,12 +2772,12 @@ class UsersController < ApplicationController # 获取公共资源的项目资源 def get_project_resources_public user_project_ids, order, score - attchments = Attachment.where("container_type = 'Project' and container_id is not null and is_public =1").order("#{order.nil? ? 'created_on' : order} #{score}") + attchments = Attachment.where("container_type = 'Project' and container_id is not null").order("#{order.nil? ? 'created_on' : order} #{score}") end # 获取公共资源的项目资源搜索 def get_project_resources_public_search user_project_ids, order, score, search - attchments = Attachment.where("(container_type = 'Project' and container_id is not null and is_public =1) and (filename like :p)", :p => search ).order("#{order.nil? ? 'created_on' : order} #{score}") + attchments = Attachment.where("(container_type = 'Project' and container_id is not null) and (filename like :p)", :p => search ).order("#{order.nil? ? 'created_on' : order} #{score}") end # 获取我上传的附件 @@ -2795,13 +2795,13 @@ class UsersController < ApplicationController # 获取公共资源中我上传的附件 def get_attch_resources_public order, score attchments = Attachment.where("container_type in('Issue','Document','Message','News','StudentWorkScore','HomewCommon','OrgSubfield','Principal') - and container_id is not null and is_public =1").order("#{order.nil? ? 'created_on' : order} #{score}") + and container_id is not null").order("#{order.nil? ? 'created_on' : order} #{score}") end # 获取公共资源中我上传的附件 def get_attch_resources_public_search order, score, search attchments = Attachment.where("(container_type in('Issue','Document','Message','News','StudentWorkScore','HomewCommon','OrgSubfield','Principal') - and container_id is not null and is_public =1) and (filename like :p)", :p => search).order("#{order.nil? ? 'created_on' : order} #{score}") + and container_id is not null) and (filename like :p)", :p => search).order("#{order.nil? ? 'created_on' : order} #{score}") end # 获取我的用户类型资源 @@ -2816,12 +2816,12 @@ class UsersController < ApplicationController # 获取我的用户类型资源 def get_principal_resources_public order, score - attchments = Attachment.where("container_type = 'Principal' and is_public =1 and container_id is not null").order("#{order.nil? ? 'created_on' : order} #{score}") + attchments = Attachment.where("container_type = 'Principal' and container_id is not null").order("#{order.nil? ? 'created_on' : order} #{score}") end # 获取我的用户类型资源 def get_principal_resources_public_search order, score, search - attchments = Attachment.where("(container_type = 'Principal'and container_id is not null and is_public =1) and (filename like :p)", :p => search).order("#{order.nil? ? 'created_on' : order} #{score}") + attchments = Attachment.where("(container_type = 'Principal'and container_id is not null) and (filename like :p)", :p => search).order("#{order.nil? ? 'created_on' : order} #{score}") end # 资源库 分为全部 课程资源 项目资源 附件 @@ -2863,18 +2863,18 @@ class UsersController < ApplicationController # 公共资源库:所有公开资源或者我上传的私有资源 @attachments = get_public_resources(user_course_ids, user_project_ids, params[:order], @score) end - # elsif params[:type] == "2" # 私有资源 - # apply_ids = ApplyResource.where("user_id =? and status =?", params[:id], 2).map { |ar| ar.attachment_id} - # if params[:status] == "2" - # resource_type = "'Course'" - # elsif params[:status] == "3" - # resource_type = "'Project'" - # elsif params[:status] == "5" - # resource_type = "'Principal'" - # else - # resource_type = "'Project','OrgSubfield','Principal','Course'" - # end - # @attachments = get_my_private_resources(apply_ids, resource_type, @order, @score) + elsif params[:type] == "2" # 私有资源 + apply_ids = ApplyResource.where("user_id =? and status =?", params[:id], 2).map { |ar| ar.attachment_id} + if params[:status] == "2" + resource_type = "'Course'" + elsif params[:status] == "3" + resource_type = "'Project'" + elsif params[:status] == "5" + resource_type = "'Principal'" + else + resource_type = "'Project','OrgSubfield','Principal','Course'" + end + @attachments = get_my_private_resources(apply_ids, resource_type, @order, @score) end @status = params[:status] @type = params[:type] @@ -3052,21 +3052,21 @@ class UsersController < ApplicationController @attachments = get_principal_resources_public_search(@order, @score, search) else # 公共资源库:所有公开资源或者我上传的私有资源 - @attachments = get_public_resources_search(user_course_ids, user_project_ids, @order, @score, search) + @attachments = get_public_resources_search(user_course_ids, user_project_ids, @order, @score, search) + end + elsif params[:type] == "2" # 私有资源 + apply_ids = ApplyResource.where("user_id =? and status =?", params[:id], 2).map { |ar| ar.attachment_id} + if params[:status] == "2" + resource_type = "'Course'" + elsif params[:status] == "3" + resource_type = "'Project'" + elsif params[:status] == "5" + resource_type = "'Principal'" + else + resource_type = "'Project','OrgSubfield','Principal','Course'" end - # elsif params[:type] == "2" # 私有资源 - # apply_ids = ApplyResource.where("user_id =? and status =?", params[:id], 2).map { |ar| ar.attachment_id} - # if params[:status] == "2" - # resource_type = "'Course'" - # elsif params[:status] == "3" - # resource_type = "'Project'" - # elsif params[:status] == "5" - # resource_type = "'Principal'" - # else - # resource_type = "'Project','OrgSubfield','Principal','Course'" - # end - # @attachments = get_my_private_resources_search(apply_ids, resource_type, @order, @score, search) - # @attachments + @attachments = get_my_private_resources_search(apply_ids, resource_type, @order, @score, search) + @attachments end @status = params[:status] @type = params[:type] diff --git a/app/views/users/_resources_list.html.erb b/app/views/users/_resources_list.html.erb index d22b69760..3aaed7594 100644 --- a/app/views/users/_resources_list.html.erb +++ b/app/views/users/_resources_list.html.erb @@ -6,20 +6,55 @@ <% attachments.each do |attach| %>
        • - + <% if private_attachment_allow(attach.id) && (@type == "6" || @type == "2") %> + + <% else %> + + <% end %>
        • - <%= link_to truncate(attach.filename, :length => 30), download_named_attachment_path(attach.id, attach.filename), :title => attach.filename, :class => 'resourcesBlack resource-list-middle hidden mw280' %> + <% if private_attachment_allow(attach.id) %> + + <% else %> + <%= link_to truncate(attach.filename, :length => 30), download_named_attachment_path(attach.id, attach.filename), :title => attach.filename, :class => 'resourcesBlack resource-list-middle hidden mw280' %> + <% end %> + <% if private_attachment_allow(attach.id) && (@type == "6" || @type == "2") %> + 私有 + <% end %> +
        • +
        • + <% if private_attachment_allow(attach.id) && (@type == "6" || @type == "2") %> + <% ah = attach.get_status_by_attach(User.current.id) %> + <% if ah.nil? %> + <%= link_to("请求分享", apply_resource_user_path(User.current.id, :attachment_id => attach.id), :class => 'green_btn_share c_white', :remote => true) %> + <% elsif ah == 1 %> + 等待回复 + <% elsif ah == 2 %> + 可引用 + <% elsif ah == 3 %> + 已拒绝 + <% end %> + <% else %> + <% ah = attach.get_status_by_attach(User.current.id) %> + <% if ah == 2 %> + 可引用 + <% else %> + -- + <% end %> + <% end %>
        • <%= format_date(attach.created_on) %>
        • <%= attach.quotes.nil? ? 0 : attach.quotes %>
        • <%= attach.downloads %>
        • <%= attach.author_id %>
        • <%= (number_to_human_size(attach.filesize)).gsub("ytes", "") %>
        • - +
        • <%= get_resource_type(attach.container_type)%>
        • +
        • <%= private_attachment_allow(attach.id) %>
        • +
        • <%= attach.get_apply_resource_status(attach.id, User.current.id) %>
        • +
        • <%= private_attachment_allow(attach.id) ? 0 : 1 %>
        • <%= attach.id %>
        @@ -184,7 +219,7 @@ } line.children().css("background-color", 'white'); id = line.children().last().html(); - user_id = line.children().eq(5).html(); + user_id = line.children().eq(6).html(); if(user_id === '<%= User.current.id%>') { if(line.children().first().children().data('hasHistory') == 'Y'){ alert('该资源存在历史版本,不能删除'); @@ -193,7 +228,7 @@ if (confirm('确定要删除资源"' + line.children().eq(1).children().attr('title').trim() + '"么?')) { $.ajax({ type: 'post', - url: '<%= user_resource_delete_user_path(User.current.id) %>' + '?resource_id=' + id + '&type=<%= @type %>&status=<%= @status %>' + url: '<%= user_resource_delete_user_path(User.current.id)%>' + '?resource_id=' + id + '&type=<%=@type %>&status=<%=@status %>' }); } diff --git a/app/views/users/_user_import_resource_list.html.erb b/app/views/users/_user_import_resource_list.html.erb index 97366832b..26118f3f4 100644 --- a/app/views/users/_user_import_resource_list.html.erb +++ b/app/views/users/_user_import_resource_list.html.erb @@ -1,15 +1,27 @@ <%= form_tag( url_for({:controller => 'users', :action => 'import_into_container', - :mul_id => @resource_id, - :mul_type => @resource_type}), - :method => 'post', :id => 'resource_import_container_form') do %> + :mul_id => @resource_id, + :mul_type => @resource_type}), + :method => 'post', :id => 'resource_import_container_form') do %> <% @attachments.each do |attach| %>
        • <%= get_resource_type(attach.container_type)%>
        • diff --git a/app/views/users/_user_resource_info.html.erb b/app/views/users/_user_resource_info.html.erb index a140f803c..9c321cdb5 100644 --- a/app/views/users/_user_resource_info.html.erb +++ b/app/views/users/_user_resource_info.html.erb @@ -1,6 +1,6 @@
          - <%= render :partial => "show_new_upload", :locals => {:type => @type, :status => @status} %> + <%= render :partial => "show_new_upload", :locals => {:type => @type, :status => @status} %>
          <%= render :partial => 'users/resource_search_form',:locals => {:user => @user, :type => @type, :order => @order, :sort => @score, :status => @status} %> @@ -19,13 +19,13 @@
          - 全选 + 删除
          -
          - 发送至 -
          + + +
          选择 0 个资源
          @@ -215,7 +215,7 @@ document.oncontextmenu = function() {return true;} line.children().css("background-color",'white'); id = line.children().last().html(); - user_id = line.children().eq(5).html(); + user_id = line.children().eq(6).html(); if(user_id === '<%= User.current.id %>') { res_name = line.children().eq(1).children().attr('title'); res_link = line.children().eq(1).html(); @@ -232,7 +232,7 @@ } } - //发送至按钮控制 + //发送至按钮控制 $("input[name='checkbox1[]']").click(function(){ if($("input[name='checkbox1[]']:checked").length >= 1){ $(".resourcesSelectSendButton").removeClass("inactive-border"); diff --git a/app/views/users/_user_resource_tip_list.html.erb b/app/views/users/_user_resource_tip_list.html.erb index 35ca130dd..67fe292ee 100644 --- a/app/views/users/_user_resource_tip_list.html.erb +++ b/app/views/users/_user_resource_tip_list.html.erb @@ -1,7 +1,7 @@
          • 资源名称
          • - +
          • 操作
          • <%= link_to "上传时间", resource_search_user_path(:type => @type, :status => @status, :sort => @score, :order => "created_on", :search => " "), :class => "fl", :remote => true %> <% if @order == "created_on" %> diff --git a/app/views/users/user_resource.html.erb b/app/views/users/user_resource.html.erb index 43f06b93d..a8bd96859 100644 --- a/app/views/users/user_resource.html.erb +++ b/app/views/users/user_resource.html.erb @@ -8,11 +8,11 @@ } $(document).ready(function(){ - $(".resource-switch").click(function(){ - $(".resource-switch").children().removeClass("resource-tab-active"); - $(this).children().addClass("resource-tab-active"); - }); + $(".resource-switch").click(function(){ + $(".resource-switch").children().removeClass("resource-tab-active"); + $(this).children().addClass("resource-tab-active"); }); + }); function remote_search(){ $("#resource_search_form").submit(); } @@ -55,9 +55,9 @@
          • 我的资源
          • - - - +
          • + 申请资源 +
          •  
          • From d1e11d426010b93de1d3d9631241258ddcd6c940 Mon Sep 17 00:00:00 2001 From: huang Date: Wed, 25 May 2016 08:58:58 +0800 Subject: [PATCH 124/668] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E5=AE=A1=E6=9F=A5?= =?UTF-8?q?=E5=90=8E=E4=BB=A3=E7=A0=81=E7=AE=80=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/users_controller.rb | 7 +------ app/helpers/application_helper.rb | 1 - app/models/attachment.rb | 2 +- app/views/users/apply_resource.js.erb | 4 ++-- 4 files changed, 4 insertions(+), 10 deletions(-) diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index cff97e423..18093b790 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -443,12 +443,7 @@ class UsersController < ApplicationController # 资源分享请求弹框 def apply_resource - if User.current.logged? - @attachment = Attachment.find params[:attachment_id] - @state = 2 - else - @state = 1 - end + @attachment = Attachment.find params[:attachment_id] respond_to do |format| format.js end diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 4d92808d4..ce6d2259c 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -70,7 +70,6 @@ module ApplicationHelper attach = Attachment.find(attachment_id) # 条件取否,result结果为true则不能下载 result = attach.is_public == 0 && attach.author != User.current && !attach.get_apply_resource_status(attach.id, User.current.id) && !attach_show_allow(attach) - return result end # Time 2015-03-24 15:27:29 diff --git a/app/models/attachment.rb b/app/models/attachment.rb index 8f9ee2d85..aa4ef8670 100644 --- a/app/models/attachment.rb +++ b/app/models/attachment.rb @@ -143,7 +143,7 @@ class Attachment < ActiveRecord::Base def get_apply_resource_status attachment_id, author_id status = ApplyResource.where("attachment_id =? and user_id =?", attachment_id, author_id).first.try(:status) - status == 2 ? true :false + status == 2 end # add by nwb diff --git a/app/views/users/apply_resource.js.erb b/app/views/users/apply_resource.js.erb index 14a795fe5..601cafa11 100644 --- a/app/views/users/apply_resource.js.erb +++ b/app/views/users/apply_resource.js.erb @@ -1,6 +1,6 @@ -<% if @state == 1 %> +<% if !User.current.logged? %> alert("您还未登录"); -<% elsif @state == 2 %> +<% else %> $("#ajax-modal").html('<%= escape_javascript( render :partial => 'users/apply_resource', :locals => {:attachment => @attachment}) %>'); showModal('ajax-modal', '500px'); $('#ajax-modal').siblings().remove(); From 197f054c1896a3923fe828946f3157beab51c60d Mon Sep 17 00:00:00 2001 From: huang Date: Wed, 25 May 2016 09:10:41 +0800 Subject: [PATCH 125/668] =?UTF-8?q?=E6=B3=A8=E9=87=8A=E6=8E=89=E7=94=B3?= =?UTF-8?q?=E8=AF=B7=E7=A7=81=E6=9C=89=E8=B5=84=E6=BA=90=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/users_controller.rb | 233 ++++++++---------- app/views/users/_resources_list.html.erb | 47 +--- .../users/_user_import_resource_list.html.erb | 16 +- app/views/users/_user_resource_info.html.erb | 10 +- .../users/_user_resource_tip_list.html.erb | 2 +- app/views/users/user_resource.html.erb | 6 +- 6 files changed, 124 insertions(+), 190 deletions(-) diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 1b85a4a20..203296160 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -1022,34 +1022,20 @@ class UsersController < ApplicationController #用户从资源库导入资源到作业 def user_import_resource - if User.current.id.to_i != params[:id].to_i - render_403 - return - end - @resource_id = params[:project_id].nil? ? (params[:course_id].nil? ? params[:subfield_file_id] : params[:course_id]) : params[:project_id] - @resource_type = params[:project_id].nil? ? (params[:course_id].nil? ? "SubfieldFile" : "Course") : "Project" - @order, @b_sort = params[:order] || "created_on", params[:sort] || "asc" - @score = @b_sort == "desc" ? "asc" : "desc" - user_course_ids = User.current.courses.map { |c| c.is_delete == 0 && c.id} - user_project_ids = User.current.projects.map {|p| p.status != 9 && p.id } # user_org_ids = User.current.organizations.map {|o| o.id} - if(params[:type] == "1") # 我的资源 - # 修正:我的资源库的话,那么应该是我上传的所有资源加上,我加入的课程、项目、组织的所有资源 - @attachments = get_my_resources(params[:id], user_course_ids, user_project_ids, @order, @score) - elsif (params[:type].blank? ||params[:type] == "6") # 公共资源 - # 公共资源库:所有公开资源或者我上传的私有资源 - @attachments = get_public_resources(user_course_ids, user_project_ids, params[:order], @score) - end - @status = params[:status] + @user = User.current + user_course_ids = @user.courses.map { |c| c.id} #我的资源库的话,那么应该是我上传的所有资源 加上 我加入的课程的所有资源 + @attachments = Attachment.where("(author_id = #{params[:id]} and container_type in('Project','Principal','Course','Issue','Document','Message','News','StudentWorkScore','HomewCommon')) "+ + "or (container_type = 'Course' and container_id in (#{user_course_ids.empty? ? '0': user_course_ids.join(',')}))").order("created_on desc") @type = params[:type] @homework_id = params[:homework_id] - @limit = 10 + @limit = 7 @is_remote = true - @seleted_resources = session[:seleted_resource_ids].nil? ? [] : session[:seleted_resource_ids] @atta_count = @attachments.count @atta_pages = Paginator.new @atta_count, @limit, params['page'] || 1 @offset ||= @atta_pages.offset + @seleted_resources = session[:seleted_resource_ids].nil? ? [] : session[:seleted_resource_ids] #@curse_attachments_all = @all_attachments[@offset, @limit] - @attachments = paginateHelper @attachments,10 + @attachments = paginateHelper @attachments,7 respond_to do |format| format.js end @@ -1057,10 +1043,10 @@ class UsersController < ApplicationController #引入资源列表根据类型过滤 def user_resource_type - # if User.current.id.to_i != params[:id].to_i - # render_403 - # return - # end + if User.current.id.to_i != params[:id].to_i + render_403 + return + end user_course_ids = User.current.courses.map { |c| c.is_delete == 0 && c.id} user_project_ids = User.current.projects.map {|p| p.status != 9 && p.id } # user_org_ids = User.current.organizations.map {|o| o.id} @@ -1109,27 +1095,22 @@ class UsersController < ApplicationController #引入资源列表根据关键词过滤 def user_ref_resource_search - if User.current.id.to_i != params[:id].to_i - render_403 - return - end - @resource_id = params[:mul_id] - @resource_type = params[:mul_type] - @order, @b_sort = params[:order] || "created_on", params[:sort] || "asc" - @score = @b_sort == "desc" ? "asc" : "desc" - @user = User.current - @switch_search = params[:search].nil? ? " " : params[:search] - search = "%#{@switch_search.strip.downcase}%" - # 别人的资源库是没有权限去看的 - if(params[:type] == "1") # 我的资源 - # 修正:我的资源库的话,那么应该是我上传的所有资源加上,我加入的课程、项目、组织的所有资源 + search = params[:search].to_s.strip.downcase + if(params[:type].blank? || params[:type] == "1") #全部 + user_course_ids = User.current.courses.map { |c| c.is_delete == 0 && c.id} #我的资源库的话,那么应该是我上传的所有资源 加上 我加入的课程的所有资源 取交集并查询 + @attachments = Attachment.where("((author_id = #{params[:id]} and container_type in('Project','Principal','Course','Issue','Document','Message','News','StudentWorkScore','HomewCommon')) "+ + " or (container_type = 'Course' and container_id in (#{user_course_ids.empty? ? '0': user_course_ids.join(',')}))) and (filename like '%#{search}%') ").order("created_on desc") + elsif params[:type] == "2" #课程资源 user_course_ids = User.current.courses.map { |c| c.is_delete == 0 && c.id} - user_project_ids = User.current.projects.map {|p| p.status != 9 && p.id } - # user_org_ids = User.current.organizations.map {|o| o.id} - @attachments = get_my_resources_search(params[:id], user_course_ids, user_project_ids, @order, @score, search) - elsif (params[:type].blank? || params[:type] == "6") # 公共资源 - # 公共资源库:所有公开资源或者我上传的私有资源 - @attachments = get_public_resources_search(user_course_ids, user_project_ids, @order, @score, search) + @attachments = Attachment.where("(author_id = #{params[:id]} and container_type = 'Course') or (container_type = 'Course' and container_id in (#{user_course_ids.empty? ? '0': user_course_ids.join(',')})) and (filename like '%#{search}%') ").order("created_on desc") + elsif params[:type] == "3" #项目资源 + @attachments = Attachment.where("author_id = #{params[:id]} and container_type = 'Project' and (filename like '%#{search}%')").order("created_on desc") + elsif params[:type] == "4" #附件 + @attachments = Attachment.where("author_id = #{params[:id]} and container_type in('Project','Issue','Document','Message','News','StudentWorkScore','HomewCommon') and (filename like '%#{search}%')").order("created_on desc") + elsif params[:type] == "5" #用户资源 + @attachments = Attachment.where("author_id = #{params[:id]} and container_type = 'Principal' and (filename like '%#{search}%')").order("created_on desc") + elsif params[:type] == "6" #公共资源 + @attachments = Attachment.where("(is_public =1 and is_publish = 1 and container_id is not null)" + "or (author_id = #{params[:id]} and is_publish = 0)").order("created_on desc") end @type = params[:type] @limit = 7 @@ -1139,7 +1120,7 @@ class UsersController < ApplicationController @offset ||= @atta_pages.offset @seleted_resources = session[:seleted_resource_ids].nil? ? [] : session[:seleted_resource_ids] #@curse_attachments_all = @all_attachments[@offset, @limit] - @attachments = paginateHelper @attachments, 7 + @attachments = paginateHelper @attachments,7 respond_to do |format| format.js end @@ -2077,18 +2058,18 @@ class UsersController < ApplicationController # 公共资源库:所有公开资源或者我上传的私有资源 @attachments = get_public_resources(user_course_ids, user_project_ids, params[:order], @score) end - elsif params[:type] == "2" - apply_ids = ApplyResource.where("user_id =? and status =?", params[:id], 2).map { |ar| ar.attachment_id} - if params[:status] == "2" - resource_type = "'Course'" - elsif params[:status] == "3" - resource_type = "'Project'" - elsif params[:status] == "5" - resource_type = "'Principal'" - else - resource_type = "'Project','OrgSubfield','Principal','Course'" - end - @attachments = get_my_private_resources(apply_ids, resource_type, @order, @score) + # elsif params[:type] == "2" + # apply_ids = ApplyResource.where("user_id =? and status =?", params[:id], 2).map { |ar| ar.attachment_id} + # if params[:status] == "2" + # resource_type = "'Course'" + # elsif params[:status] == "3" + # resource_type = "'Project'" + # elsif params[:status] == "5" + # resource_type = "'Principal'" + # else + # resource_type = "'Project','OrgSubfield','Principal','Course'" + # end + # @attachments = get_my_private_resources(apply_ids, resource_type, @order, @score) end @type = params[:type] @limit = 25 @@ -2230,18 +2211,18 @@ class UsersController < ApplicationController # 公共资源库:所有公开资源或者我上传的私有资源 @attachments = get_public_resources(user_course_ids, user_project_ids, params[:order], @score) end - elsif params[:type] == "2" - apply_ids = ApplyResource.where("user_id =? and status =?", params[:id], 2).map { |ar| ar.attachment_id} - if params[:status] == "2" - resource_type = "'Course'" - elsif params[:status] == "3" - resource_type = "'Project'" - elsif params[:status] == "5" - resource_type = "'Principal'" - else - resource_type = "'Project','OrgSubfield','Principal','Course'" - end - @attachments = get_my_private_resources(apply_ids, resource_type, @order, @score) + # elsif params[:type] == "2" + # apply_ids = ApplyResource.where("user_id =? and status =?", params[:id], 2).map { |ar| ar.attachment_id} + # if params[:status] == "2" + # resource_type = "'Course'" + # elsif params[:status] == "3" + # resource_type = "'Project'" + # elsif params[:status] == "5" + # resource_type = "'Principal'" + # else + # resource_type = "'Project','OrgSubfield','Principal','Course'" + # end + # @attachments = get_my_private_resources(apply_ids, resource_type, @order, @score) end @status = params[:status] @type = params[:type] @@ -2371,18 +2352,18 @@ class UsersController < ApplicationController # 公共资源库:所有公开资源或者我上传的私有资源 @attachments = get_public_resources(user_course_ids, user_project_ids, params[:order], @score) end - elsif params[:type] == "2" - apply_ids = ApplyResource.where("user_id =? and status =?", params[:id], 2).map { |ar| ar.attachment_id} - if params[:status] == "2" - resource_type = "'Course'" - elsif params[:status] == "3" - resource_type = "'Project'" - elsif params[:status] == "5" - resource_type = "'Principal'" - else - resource_type = "'Project','OrgSubfield','Principal','Course'" - end - @attachments = get_my_private_resources(apply_ids, resource_type, @order, @score) + # elsif params[:type] == "2" + # apply_ids = ApplyResource.where("user_id =? and status =?", params[:id], 2).map { |ar| ar.attachment_id} + # if params[:status] == "2" + # resource_type = "'Course'" + # elsif params[:status] == "3" + # resource_type = "'Project'" + # elsif params[:status] == "5" + # resource_type = "'Principal'" + # else + # resource_type = "'Project','OrgSubfield','Principal','Course'" + # end + # @attachments = get_my_private_resources(apply_ids, resource_type, @order, @score) end @type = params[:type] @limit = 25 @@ -2719,12 +2700,12 @@ class UsersController < ApplicationController # 获取公共资源 def get_public_resources user_course_ids, user_project_ids, order, score - attachments = Attachment.where("(is_publish = 1 and container_id is not null and container_type in('Project','OrgSubfield','Principal','Course')) ").order("#{order.nil? ? 'created_on' : order} #{score}") + attachments = Attachment.where("(is_publish = 1 and is_public = 1 and container_id is not null and container_type in('Project','OrgSubfield','Principal','Course')) ").order("#{order.nil? ? 'created_on' : order} #{score}") end # 获取公共资源搜索 def get_public_resources_search user_course_ids, user_project_ids, order, score, search - attachments = Attachment.where("is_publish = 1 and container_id is not null and container_type in('Project','OrgSubfield','Principal','Course') and (filename like :p)", :p => search).order("#{order.nil? ? 'created_on' : order} #{score}") + attachments = Attachment.where("is_publish = 1 and is_public = 1 and container_id is not null and container_type in('Project','OrgSubfield','Principal','Course') and (filename like :p)", :p => search).order("#{order.nil? ? 'created_on' : order} #{score}") end # 获取我的资源 @@ -2748,15 +2729,15 @@ class UsersController < ApplicationController and is_publish = 1 and container_id is not null)" ).order("#{order.nil? ? 'created_on' : order} #{score}") end - # 获取我的私有资源分享结果 - def get_my_private_resources apply_ids, resource_type, order, score - attachments = Attachment.where("id in (#{apply_ids.empty? ? '0': apply_ids.join(',')}) and container_type in(#{resource_type})").order("#{order.nil? ? 'created_on' : order} #{score}") - end - - # 获取我的私有资源分享搜索结果 - def get_my_private_resources_search apply_ids, resource_type, order, score, search - attachments = Attachment.where("id in (#{apply_ids.empty? ? '0': apply_ids.join(',')}) and container_type in(#{resource_type}) and (filename like :p)", :p => search).order("#{order.nil? ? 'created_on' : order} #{score}") - end + # # 获取我的私有资源分享结果 + # def get_my_private_resources apply_ids, resource_type, order, score + # attachments = Attachment.where("id in (#{apply_ids.empty? ? '0': apply_ids.join(',')}) and container_type in(#{resource_type})").order("#{order.nil? ? 'created_on' : order} #{score}") + # end + # + # # 获取我的私有资源分享搜索结果 + # def get_my_private_resources_search apply_ids, resource_type, order, score, search + # attachments = Attachment.where("id in (#{apply_ids.empty? ? '0': apply_ids.join(',')}) and container_type in(#{resource_type}) and (filename like :p)", :p => search).order("#{order.nil? ? 'created_on' : order} #{score}") + # end # 获取我的课程资源中搜索结果 def get_course_resources_search author_id, user_course_ids, order, score, search @@ -2767,12 +2748,12 @@ class UsersController < ApplicationController # 获取公共资源中课程资源 def get_course_resources_public user_course_ids, order, score - attchments = Attachment.where("(container_type = 'Course'and container_id is not null and is_publish = 1)").order("#{order.nil? ? 'created_on' : order} #{score}") + attchments = Attachment.where("(container_type = 'Course'and container_id is not null and is_publish = 1 and is_public =1)").order("#{order.nil? ? 'created_on' : order} #{score}") end # 获取公共资源中课程资源搜索结果 def get_course_resources_public_search user_course_ids, order, score, search - attchments = Attachment.where("(container_type = 'Course'and container_id is not null and is_publish = 1) and (filename like :p)", :p => search ).order("#{order.nil? ? 'created_on' : order} #{score}") + attchments = Attachment.where("(container_type = 'Course'and container_id is not null and is_publish = 1 and is_public =1) and (filename like :p)", :p => search ).order("#{order.nil? ? 'created_on' : order} #{score}") end # 获取我的项目资源 @@ -2791,12 +2772,12 @@ class UsersController < ApplicationController # 获取公共资源的项目资源 def get_project_resources_public user_project_ids, order, score - attchments = Attachment.where("container_type = 'Project' and container_id is not null").order("#{order.nil? ? 'created_on' : order} #{score}") + attchments = Attachment.where("container_type = 'Project' and container_id is not null and is_public =1").order("#{order.nil? ? 'created_on' : order} #{score}") end # 获取公共资源的项目资源搜索 def get_project_resources_public_search user_project_ids, order, score, search - attchments = Attachment.where("(container_type = 'Project' and container_id is not null) and (filename like :p)", :p => search ).order("#{order.nil? ? 'created_on' : order} #{score}") + attchments = Attachment.where("(container_type = 'Project' and container_id is not null and is_public =1) and (filename like :p)", :p => search ).order("#{order.nil? ? 'created_on' : order} #{score}") end # 获取我上传的附件 @@ -2814,13 +2795,13 @@ class UsersController < ApplicationController # 获取公共资源中我上传的附件 def get_attch_resources_public order, score attchments = Attachment.where("container_type in('Issue','Document','Message','News','StudentWorkScore','HomewCommon','OrgSubfield','Principal') - and container_id is not null").order("#{order.nil? ? 'created_on' : order} #{score}") + and container_id is not null and is_public =1").order("#{order.nil? ? 'created_on' : order} #{score}") end # 获取公共资源中我上传的附件 def get_attch_resources_public_search order, score, search attchments = Attachment.where("(container_type in('Issue','Document','Message','News','StudentWorkScore','HomewCommon','OrgSubfield','Principal') - and container_id is not null) and (filename like :p)", :p => search).order("#{order.nil? ? 'created_on' : order} #{score}") + and container_id is not null and is_public =1) and (filename like :p)", :p => search).order("#{order.nil? ? 'created_on' : order} #{score}") end # 获取我的用户类型资源 @@ -2835,12 +2816,12 @@ class UsersController < ApplicationController # 获取我的用户类型资源 def get_principal_resources_public order, score - attchments = Attachment.where("container_type = 'Principal' and container_id is not null").order("#{order.nil? ? 'created_on' : order} #{score}") + attchments = Attachment.where("container_type = 'Principal' and is_public =1 and container_id is not null").order("#{order.nil? ? 'created_on' : order} #{score}") end # 获取我的用户类型资源 def get_principal_resources_public_search order, score, search - attchments = Attachment.where("(container_type = 'Principal'and container_id is not null) and (filename like :p)", :p => search).order("#{order.nil? ? 'created_on' : order} #{score}") + attchments = Attachment.where("(container_type = 'Principal'and container_id is not null and is_public =1) and (filename like :p)", :p => search).order("#{order.nil? ? 'created_on' : order} #{score}") end # 资源库 分为全部 课程资源 项目资源 附件 @@ -2882,18 +2863,18 @@ class UsersController < ApplicationController # 公共资源库:所有公开资源或者我上传的私有资源 @attachments = get_public_resources(user_course_ids, user_project_ids, params[:order], @score) end - elsif params[:type] == "2" # 私有资源 - apply_ids = ApplyResource.where("user_id =? and status =?", params[:id], 2).map { |ar| ar.attachment_id} - if params[:status] == "2" - resource_type = "'Course'" - elsif params[:status] == "3" - resource_type = "'Project'" - elsif params[:status] == "5" - resource_type = "'Principal'" - else - resource_type = "'Project','OrgSubfield','Principal','Course'" - end - @attachments = get_my_private_resources(apply_ids, resource_type, @order, @score) + # elsif params[:type] == "2" # 私有资源 + # apply_ids = ApplyResource.where("user_id =? and status =?", params[:id], 2).map { |ar| ar.attachment_id} + # if params[:status] == "2" + # resource_type = "'Course'" + # elsif params[:status] == "3" + # resource_type = "'Project'" + # elsif params[:status] == "5" + # resource_type = "'Principal'" + # else + # resource_type = "'Project','OrgSubfield','Principal','Course'" + # end + # @attachments = get_my_private_resources(apply_ids, resource_type, @order, @score) end @status = params[:status] @type = params[:type] @@ -3073,19 +3054,19 @@ class UsersController < ApplicationController # 公共资源库:所有公开资源或者我上传的私有资源 @attachments = get_public_resources_search(user_course_ids, user_project_ids, @order, @score, search) end - elsif params[:type] == "2" # 私有资源 - apply_ids = ApplyResource.where("user_id =? and status =?", params[:id], 2).map { |ar| ar.attachment_id} - if params[:status] == "2" - resource_type = "'Course'" - elsif params[:status] == "3" - resource_type = "'Project'" - elsif params[:status] == "5" - resource_type = "'Principal'" - else - resource_type = "'Project','OrgSubfield','Principal','Course'" - end - @attachments = get_my_private_resources_search(apply_ids, resource_type, @order, @score, search) - @attachments + # elsif params[:type] == "2" # 私有资源 + # apply_ids = ApplyResource.where("user_id =? and status =?", params[:id], 2).map { |ar| ar.attachment_id} + # if params[:status] == "2" + # resource_type = "'Course'" + # elsif params[:status] == "3" + # resource_type = "'Project'" + # elsif params[:status] == "5" + # resource_type = "'Principal'" + # else + # resource_type = "'Project','OrgSubfield','Principal','Course'" + # end + # @attachments = get_my_private_resources_search(apply_ids, resource_type, @order, @score, search) + # @attachments end @status = params[:status] @type = params[:type] diff --git a/app/views/users/_resources_list.html.erb b/app/views/users/_resources_list.html.erb index 3aaed7594..26e8f922b 100644 --- a/app/views/users/_resources_list.html.erb +++ b/app/views/users/_resources_list.html.erb @@ -6,55 +6,20 @@ <% attachments.each do |attach| %>
            • - <% if private_attachment_allow(attach.id) && (@type == "6" || @type == "2") %> - - <% else %> - - <% end %> +
            • - <% if private_attachment_allow(attach.id) %> - - <% else %> - <%= link_to truncate(attach.filename, :length => 30), download_named_attachment_path(attach.id, attach.filename), :title => attach.filename, :class => 'resourcesBlack resource-list-middle hidden mw280' %> - <% end %> - <% if private_attachment_allow(attach.id) && (@type == "6" || @type == "2") %> - 私有 - <% end %> -
            • -
            • - <% if private_attachment_allow(attach.id) && (@type == "6" || @type == "2") %> - <% ah = attach.get_status_by_attach(User.current.id) %> - <% if ah.nil? %> - <%= link_to("请求分享", apply_resource_user_path(User.current.id, :attachment_id => attach.id), :class => 'green_btn_share c_white', :remote => true) %> - <% elsif ah == 1 %> - 等待回复 - <% elsif ah == 2 %> - 可引用 - <% elsif ah == 3 %> - 已拒绝 - <% end %> - <% else %> - <% ah = attach.get_status_by_attach(User.current.id) %> - <% if ah == 2 %> - 可引用 - <% else %> - -- - <% end %> - <% end %> + <%= link_to truncate(attach.filename, :length => 30), download_named_attachment_path(attach.id, attach.filename), :title => attach.filename, :class => 'resourcesBlack resource-list-middle hidden mw280' %>
            • <%= format_date(attach.created_on) %>
            • <%= attach.quotes.nil? ? 0 : attach.quotes %>
            • <%= attach.downloads %>
            • <%= attach.author_id %>
            • <%= (number_to_human_size(attach.filesize)).gsub("ytes", "") %>
            • - +
            • <%= get_resource_type(attach.container_type)%>
            • -
            • <%= private_attachment_allow(attach.id) %>
            • -
            • <%= attach.get_apply_resource_status(attach.id, User.current.id) %>
            • -
            • <%= private_attachment_allow(attach.id) ? 0 : 1 %>
            • <%= attach.id %>
            @@ -104,7 +69,7 @@ document.oncontextmenu = function() {return true;} line.children().css("background-color",'white'); id = line.children().last().html(); - user_id = line.children().eq(6).html(); + user_id = line.children().eq(5).html(); allow = line.children().eq(13).html(); if( allow == 0){ alert('您无权发送私有资源') @@ -219,7 +184,7 @@ } line.children().css("background-color", 'white'); id = line.children().last().html(); - user_id = line.children().eq(6).html(); + user_id = line.children().eq(5).html(); if(user_id === '<%= User.current.id%>') { if(line.children().first().children().data('hasHistory') == 'Y'){ alert('该资源存在历史版本,不能删除'); @@ -228,7 +193,7 @@ if (confirm('确定要删除资源"' + line.children().eq(1).children().attr('title').trim() + '"么?')) { $.ajax({ type: 'post', - url: '<%= user_resource_delete_user_path(User.current.id)%>' + '?resource_id=' + id + '&type=<%=@type %>&status=<%=@status %>' + url: '<%= user_resource_delete_user_path(User.current.id) %>' + '?resource_id=' + id + '&type=<%= @type %>&status=<%= @status %>' }); } diff --git a/app/views/users/_user_import_resource_list.html.erb b/app/views/users/_user_import_resource_list.html.erb index 26118f3f4..e886c16ca 100644 --- a/app/views/users/_user_import_resource_list.html.erb +++ b/app/views/users/_user_import_resource_list.html.erb @@ -6,22 +6,10 @@
            • <%= get_resource_type(attach.container_type)%>
            • diff --git a/app/views/users/_user_resource_info.html.erb b/app/views/users/_user_resource_info.html.erb index 9c321cdb5..c415ba0b4 100644 --- a/app/views/users/_user_resource_info.html.erb +++ b/app/views/users/_user_resource_info.html.erb @@ -19,13 +19,13 @@
              - + 全选 删除
            - - - +
            + 发送至 +
            选择 0 个资源
            @@ -215,7 +215,7 @@ document.oncontextmenu = function() {return true;} line.children().css("background-color",'white'); id = line.children().last().html(); - user_id = line.children().eq(6).html(); + user_id = line.children().eq(5).html(); if(user_id === '<%= User.current.id %>') { res_name = line.children().eq(1).children().attr('title'); res_link = line.children().eq(1).html(); diff --git a/app/views/users/_user_resource_tip_list.html.erb b/app/views/users/_user_resource_tip_list.html.erb index 67fe292ee..35ca130dd 100644 --- a/app/views/users/_user_resource_tip_list.html.erb +++ b/app/views/users/_user_resource_tip_list.html.erb @@ -1,7 +1,7 @@
            • 资源名称
            • -
            • 操作
            • +
            • <%= link_to "上传时间", resource_search_user_path(:type => @type, :status => @status, :sort => @score, :order => "created_on", :search => " "), :class => "fl", :remote => true %> <% if @order == "created_on" %> diff --git a/app/views/users/user_resource.html.erb b/app/views/users/user_resource.html.erb index a8bd96859..d2e3242d8 100644 --- a/app/views/users/user_resource.html.erb +++ b/app/views/users/user_resource.html.erb @@ -55,9 +55,9 @@
            • 我的资源
            • -
            • - 申请资源 -
            • + + +
            •  
            • From b6de2dbd2d7376b4c36dbf8cc9070fbd140e5dd4 Mon Sep 17 00:00:00 2001 From: huang Date: Wed, 25 May 2016 09:44:30 +0800 Subject: [PATCH 126/668] =?UTF-8?q?=E5=8F=91=E5=B8=83=E4=BD=9C=E4=B8=9A?= =?UTF-8?q?=E5=AF=BC=E5=85=A5=E8=B5=84=E6=BA=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/users_controller.rb | 1 + app/views/users/_user_homework_attachment.html.erb | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 203296160..1e12db25d 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -1096,6 +1096,7 @@ class UsersController < ApplicationController #引入资源列表根据关键词过滤 def user_ref_resource_search search = params[:search].to_s.strip.downcase + @user = User.current if(params[:type].blank? || params[:type] == "1") #全部 user_course_ids = User.current.courses.map { |c| c.is_delete == 0 && c.id} #我的资源库的话,那么应该是我上传的所有资源 加上 我加入的课程的所有资源 取交集并查询 @attachments = Attachment.where("((author_id = #{params[:id]} and container_type in('Project','Principal','Course','Issue','Document','Message','News','StudentWorkScore','HomewCommon')) "+ diff --git a/app/views/users/_user_homework_attachment.html.erb b/app/views/users/_user_homework_attachment.html.erb index 9f9aea60f..669e7aa91 100644 --- a/app/views/users/_user_homework_attachment.html.erb +++ b/app/views/users/_user_homework_attachment.html.erb @@ -70,7 +70,7 @@
              上传附件 - <%= link_to "资源库",{:controller => 'users', :action => 'user_ref_resource_search', :id => User.current.id, :homework_id => container.id, :type => nil}, :class => "FilesBtn fl mt3 mr15", :title => "请从资源库中选择文件作为作品的附件", :remote => true %> + <%= link_to "资源库", user_ref_resource_search_user_path(User.current.id, :homework_id => container.id), :class => "FilesBtn fl mt3 mr15", :title => "请从资源库中选择文件作为作品的附件", :remote => true %> <% if defined?(has_program) && has_program %>
              编程 From 46860a838baa5e9b2c7759256700e86022eb01d2 Mon Sep 17 00:00:00 2001 From: yuanke <249218296@qq.com> Date: Wed, 25 May 2016 10:34:09 +0800 Subject: [PATCH 127/668] =?UTF-8?q?1.=E8=AE=BE=E7=BD=AE=E8=A1=A8=E6=A0=BC?= =?UTF-8?q?=E8=BE=B9=E6=A1=86=E5=90=8E=E6=89=80=E6=9C=89=E7=9A=84=E8=A1=A8?= =?UTF-8?q?=E6=A0=BC=E7=BA=BF=E5=AE=BD=E5=BA=A6=E9=83=BD=E4=B8=80=E6=A0=B7?= =?UTF-8?q?=202.KE=E6=94=B9=E5=8F=98=E5=AD=97=E4=BD=93=E5=90=8E=E5=86=8D?= =?UTF-8?q?=E7=82=B9=E5=87=BB=E5=AD=97=E4=BD=93=E4=BC=9A=E6=A0=87=E6=98=8E?= =?UTF-8?q?=E5=BD=93=E5=89=8D=E7=9A=84=E5=AD=97=E4=BD=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/assets/kindeditor/kindeditor.js | 5 +++-- public/assets/kindeditor/plugins/code/previewcode.css | 6 +++--- public/assets/kindeditor/plugins/table/table.js | 3 ++- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/public/assets/kindeditor/kindeditor.js b/public/assets/kindeditor/kindeditor.js index a8c17345b..39ce0abdb 100644 --- a/public/assets/kindeditor/kindeditor.js +++ b/public/assets/kindeditor/kindeditor.js @@ -297,7 +297,7 @@ K.options = { 'td,th': [ 'id', 'class', 'align', 'valign', 'width', 'height', 'colspan', 'rowspan', 'bgcolor', '.text-align', '.color', '.background-color', '.font-size', '.font-family', '.font-weight', - '.font-style', '.text-decoration', '.vertical-align', '.background', '.border', '.text-overflow','.overflow','.white-space' + '.font-style', '.text-decoration', '.vertical-align', '.background', '.border','.border-color', '.text-overflow','.overflow','.white-space' ], a : ['id', 'class', 'href', 'target', 'name'], embed : ['id', 'class', 'src', 'width', 'height', 'type', 'loop', 'autostart', 'quality', '.width', '.height', 'align', 'allowscriptaccess'], @@ -2539,7 +2539,8 @@ function _nativeCommand(doc, key, val) { function _nativeCommandValue(doc, key) { var val = ''; try { - val = doc.query_nativeCommand(self.doc, name, val);Value(key); +// val = doc.query_nativeCommand(self.doc, name, val);Value(key); + val = doc.queryCommandValue(key); } catch (e) {} if (typeof val !== 'string') { val = ''; diff --git a/public/assets/kindeditor/plugins/code/previewcode.css b/public/assets/kindeditor/plugins/code/previewcode.css index 65c75d6ea..352c77625 100644 --- a/public/assets/kindeditor/plugins/code/previewcode.css +++ b/public/assets/kindeditor/plugins/code/previewcode.css @@ -1,7 +1,7 @@ .ke-content { - font-size: 12px; - font: 14px/1.5 "sans serif",tahoma,verdana,helvetica;font-family: ΢���ź�, ����; - font-family:Tahoma; + font-size: 14px; + /*font: 14px/1.5 "sans serif",tahoma,verdana,helvetica;*/ + font-family: "微软雅黑","宋体"; } .ke-content pre { font-size:9pt; diff --git a/public/assets/kindeditor/plugins/table/table.js b/public/assets/kindeditor/plugins/table/table.js index be386f7cc..74b14b118 100644 --- a/public/assets/kindeditor/plugins/table/table.js +++ b/public/assets/kindeditor/plugins/table/table.js @@ -257,6 +257,7 @@ KindEditor.plugin('table', function(K) { style += 'border-color:'+borderColor+';'; } style += 'table-layout: '+'fixed;'; + style += 'border-collapse: collapse;'; var html = '') + ''; + html += '' + (K.IE ? ' ' : '
              ') + ''; } html += ''; } From fcaa9666e2744537265d8f391c36f1dc944e46ae Mon Sep 17 00:00:00 2001 From: yuanke <249218296@qq.com> Date: Wed, 25 May 2016 10:37:35 +0800 Subject: [PATCH 128/668] =?UTF-8?q?KE=E5=86=85=E5=AE=B9=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E8=AF=86=E5=88=AB=E7=BD=91=E5=9D=80=E5=8A=A0=E4=B8=8A=E8=B6=85?= =?UTF-8?q?=E9=93=BE=E6=8E=A5=E6=97=B6=E6=8A=8A=E9=A2=9C=E8=89=B2=E4=B9=9F?= =?UTF-8?q?=E5=8A=A0=E4=B8=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/javascripts/application.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/public/javascripts/application.js b/public/javascripts/application.js index aec0af070..01bb164a9 100644 --- a/public/javascripts/application.js +++ b/public/javascripts/application.js @@ -1327,10 +1327,10 @@ function autoUrl(id){ var reStr = full; if (full.length > 0){ if (full.indexOf("://") >= 0){ - reStr = ""+full+""; + reStr = ""+full+""; } else{ - reStr = ""+full+""; + reStr = ""+full+""; } } return reStr ; @@ -1346,10 +1346,10 @@ function autoUrl(id){ var reStr = full; if (full.length > 0){ if (full.indexOf("://") >= 0){ - reStr = ""+full+""; + reStr = ""+full+""; } else{ - reStr = ""+full+""; + reStr = ""+full+""; } } return reStr ; From 2abb68c00cba170db035219d4e699e9d41456f56 Mon Sep 17 00:00:00 2001 From: huang Date: Wed, 25 May 2016 10:54:49 +0800 Subject: [PATCH 129/668] =?UTF-8?q?=E7=BB=84=E7=BB=87=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E5=85=AC=E5=85=B1=E9=83=A8=E5=88=86=E6=95=B4=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/layouts/base_org2.html.erb | 70 +------------------ app/views/organizations/_org2_footer.html.erb | 12 ++++ .../organizations/_org_avater_swap.html.erb | 8 +++ .../organizations/_org_field_menu.html.erb | 44 ++++++++++++ 4 files changed, 67 insertions(+), 67 deletions(-) create mode 100644 app/views/organizations/_org2_footer.html.erb create mode 100644 app/views/organizations/_org_avater_swap.html.erb create mode 100644 app/views/organizations/_org_field_menu.html.erb diff --git a/app/views/layouts/base_org2.html.erb b/app/views/layouts/base_org2.html.erb index e51a62e24..c234fd288 100644 --- a/app/views/layouts/base_org2.html.erb +++ b/app/views/layouts/base_org2.html.erb @@ -62,66 +62,15 @@
              -
                - <% @subfield_content.each do |field| %> - <% if is_default_field?(field) %> - <% case field.name %> - <% when 'activity' %> - - <% when 'course' %> - - <% when 'project' %> - - <% end %> - <% else %> - <% if field.field_type == "Post" && field.hide == 0 %> - - - - <% elsif field.field_type == "Resource" && field.hide == 0 %> - - <% end %> - <% end %> - <% end %> - <% if User.current.admin_of_org?(@organization) %> - - <% end %> -
              + <%= render :partial => "org_field_menu", :locals => {:subfield_content => @subfield_content} %>
              @@ -136,20 +85,7 @@
              - -
              - -
              + <%= render :partial => "org2_footer" %>
              diff --git a/app/views/organizations/_org2_footer.html.erb b/app/views/organizations/_org2_footer.html.erb new file mode 100644 index 000000000..9ff7051c1 --- /dev/null +++ b/app/views/organizations/_org2_footer.html.erb @@ -0,0 +1,12 @@ +
              + +
              \ No newline at end of file diff --git a/app/views/organizations/_org_avater_swap.html.erb b/app/views/organizations/_org_avater_swap.html.erb new file mode 100644 index 000000000..70bdf3b1b --- /dev/null +++ b/app/views/organizations/_org_avater_swap.html.erb @@ -0,0 +1,8 @@ +<% if @org_logo_attchment.blank? || !User.current.logged? %> + +<% else %> + +<% end %> +<% if User.current.admin_of_org?(@organization) %> + +<% end %> \ No newline at end of file diff --git a/app/views/organizations/_org_field_menu.html.erb b/app/views/organizations/_org_field_menu.html.erb new file mode 100644 index 000000000..792bea87e --- /dev/null +++ b/app/views/organizations/_org_field_menu.html.erb @@ -0,0 +1,44 @@ +
                + <% subfield_content.each do |field| %> + <% if is_default_field?(field) %> + <% case field.name %> + <% when 'activity' %> + + <% when 'course' %> + + <% when 'project' %> + + <% end %> + <% else %> + <% if field.field_type == "Post" && field.hide == 0 %> + + + + <% elsif field.field_type == "Resource" && field.hide == 0 %> + + <% end %> + <% end %> + <% end %> + <% if User.current.admin_of_org?(@organization) %> + + <% end %> +
              \ No newline at end of file From 415b624e0bba4456848995741f8076b7fc5216ad Mon Sep 17 00:00:00 2001 From: huang Date: Wed, 25 May 2016 11:07:36 +0800 Subject: [PATCH 130/668] =?UTF-8?q?=E6=A0=B7=E5=BC=8F=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/users/_show_new_upload.html.erb | 4 +--- app/views/users/user_resource.html.erb | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/app/views/users/_show_new_upload.html.erb b/app/views/users/_show_new_upload.html.erb index b343aeae1..e63cf2af9 100644 --- a/app/views/users/_show_new_upload.html.erb +++ b/app/views/users/_show_new_upload.html.erb @@ -1,3 +1 @@ -<% if @type != "2" %> - -<% end %> + diff --git a/app/views/users/user_resource.html.erb b/app/views/users/user_resource.html.erb index d2e3242d8..3c70e6c33 100644 --- a/app/views/users/user_resource.html.erb +++ b/app/views/users/user_resource.html.erb @@ -58,7 +58,7 @@ -
            •  
            • +
            •  
            • <%= render :partial => 'user_resource_type_filter' %> From 72ae31b7f989b21b80eae84131a7a237eecea94f Mon Sep 17 00:00:00 2001 From: huang Date: Wed, 25 May 2016 11:23:19 +0800 Subject: [PATCH 131/668] =?UTF-8?q?=E4=BD=9C=E4=B8=9A=E5=AF=BC=E5=87=BA?= =?UTF-8?q?=E8=B5=84=E6=BA=90=E4=BB=A3=E7=A0=81=E5=9B=9E=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/users_controller.rb | 34 ++++++++++++++++------------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 1e12db25d..121b93dc5 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -1095,23 +1095,27 @@ class UsersController < ApplicationController #引入资源列表根据关键词过滤 def user_ref_resource_search - search = params[:search].to_s.strip.downcase + if User.current.id.to_i != params[:id].to_i + render_403 + return + end + @resource_id = params[:mul_id] + @resource_type = params[:mul_type] + @order, @b_sort = params[:order] || "created_on", params[:sort] || "asc" + @score = @b_sort == "desc" ? "asc" : "desc" @user = User.current - if(params[:type].blank? || params[:type] == "1") #全部 - user_course_ids = User.current.courses.map { |c| c.is_delete == 0 && c.id} #我的资源库的话,那么应该是我上传的所有资源 加上 我加入的课程的所有资源 取交集并查询 - @attachments = Attachment.where("((author_id = #{params[:id]} and container_type in('Project','Principal','Course','Issue','Document','Message','News','StudentWorkScore','HomewCommon')) "+ - " or (container_type = 'Course' and container_id in (#{user_course_ids.empty? ? '0': user_course_ids.join(',')}))) and (filename like '%#{search}%') ").order("created_on desc") - elsif params[:type] == "2" #课程资源 + @switch_search = params[:search].nil? ? " " : params[:search] + search = "%#{@switch_search.strip.downcase}%" + # 别人的资源库是没有权限去看的 + if(params[:type] == "1") # 我的资源 + # 修正:我的资源库的话,那么应该是我上传的所有资源加上,我加入的课程、项目、组织的所有资源 user_course_ids = User.current.courses.map { |c| c.is_delete == 0 && c.id} - @attachments = Attachment.where("(author_id = #{params[:id]} and container_type = 'Course') or (container_type = 'Course' and container_id in (#{user_course_ids.empty? ? '0': user_course_ids.join(',')})) and (filename like '%#{search}%') ").order("created_on desc") - elsif params[:type] == "3" #项目资源 - @attachments = Attachment.where("author_id = #{params[:id]} and container_type = 'Project' and (filename like '%#{search}%')").order("created_on desc") - elsif params[:type] == "4" #附件 - @attachments = Attachment.where("author_id = #{params[:id]} and container_type in('Project','Issue','Document','Message','News','StudentWorkScore','HomewCommon') and (filename like '%#{search}%')").order("created_on desc") - elsif params[:type] == "5" #用户资源 - @attachments = Attachment.where("author_id = #{params[:id]} and container_type = 'Principal' and (filename like '%#{search}%')").order("created_on desc") - elsif params[:type] == "6" #公共资源 - @attachments = Attachment.where("(is_public =1 and is_publish = 1 and container_id is not null)" + "or (author_id = #{params[:id]} and is_publish = 0)").order("created_on desc") + user_project_ids = User.current.projects.map {|p| p.status != 9 && p.id } + # user_org_ids = User.current.organizations.map {|o| o.id} + @attachments = get_my_resources_search(params[:id], user_course_ids, user_project_ids, @order, @score, search) + elsif (params[:type].blank? || params[:type] == "6") # 公共资源 + # 公共资源库:所有公开资源或者我上传的私有资源 + @attachments = get_public_resources_search(user_course_ids, user_project_ids, @order, @score, search) end @type = params[:type] @limit = 7 From c4c0dd3c60b5577a5b147e5f81b5f0ed5a8d2b29 Mon Sep 17 00:00:00 2001 From: txz Date: Wed, 25 May 2016 13:50:59 +0800 Subject: [PATCH 132/668] =?UTF-8?q?=E5=9B=9E=E5=A4=8D=E5=86=85=E5=AE=B9?= =?UTF-8?q?=E6=8D=A2=E8=A1=8C=E7=AC=A6=E6=9C=AA=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 1234567 | 2 +- public/assets/wechat/blog_detail.html | 2 +- public/assets/wechat/course_discussion.html | 2 +- public/assets/wechat/course_notice.html | 2 +- public/assets/wechat/homework_detail.html | 2 +- public/assets/wechat/issue_detail.html | 2 +- public/assets/wechat/jour_message_detail.html | 2 +- public/assets/wechat/project_discussion.html | 2 +- public/stylesheets/weui/weixin.css | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/1234567 b/1234567 index f2f064de8..ed94d1804 100644 --- a/1234567 +++ b/1234567 @@ -1 +1 @@ -{"access_token":"gRbIMUYYKFdANxpBGhYc8iauelCeSy3x7wODnZd1crF9upNiANKAdGaMKFLcgPz_0-oJvRtb7Ai0G1WnL_AnVV-tdRlzlCPpgpO9Z9k9EqrGz2iSLCAbQ35qk0f75KWlRRDfCEAVVH","expires_in":7200,"got_token_at":1464053170} \ No newline at end of file +{"access_token":"q51KZUeA6_-CCCH-Buy1m4pR7G9hh-9GT_Vn-h9oFq8qfF9SVVeagJZ7Jeuvv3k12UEXk7IxtAuXkrBlufaanGd81bNEEkXkPyhPveTHenmjj5fQa3GQmxCM9kUPhZjyXMPjCIAKZC","expires_in":7200,"got_token_at":1464146250} \ No newline at end of file diff --git a/public/assets/wechat/blog_detail.html b/public/assets/wechat/blog_detail.html index 8473b1446..8c5dcb73f 100644 --- a/public/assets/wechat/blog_detail.html +++ b/public/assets/wechat/blog_detail.html @@ -24,7 +24,7 @@
              -
              +
              
                                       
              {{journal.lasted_comment}}
              回复
              diff --git a/public/assets/wechat/course_discussion.html b/public/assets/wechat/course_discussion.html index c790fd5cf..bf450d447 100644 --- a/public/assets/wechat/course_discussion.html +++ b/public/assets/wechat/course_discussion.html @@ -30,7 +30,7 @@
              -
              +
              
                                       
              {{journal.lasted_comment}}
              回复
              diff --git a/public/assets/wechat/course_notice.html b/public/assets/wechat/course_notice.html index 18f62be1e..ac1f7dcea 100644 --- a/public/assets/wechat/course_notice.html +++ b/public/assets/wechat/course_notice.html @@ -30,7 +30,7 @@
              -
              +
              
                                       
              {{comments.created_on}}
              回复
              diff --git a/public/assets/wechat/homework_detail.html b/public/assets/wechat/homework_detail.html index 5efa7c54d..41ff56f57 100644 --- a/public/assets/wechat/homework_detail.html +++ b/public/assets/wechat/homework_detail.html @@ -36,7 +36,7 @@
              -
              +
              
                                       
              {{journal.lasted_comment}}
              回复
              diff --git a/public/assets/wechat/issue_detail.html b/public/assets/wechat/issue_detail.html index 20c35c664..08eb9a39d 100644 --- a/public/assets/wechat/issue_detail.html +++ b/public/assets/wechat/issue_detail.html @@ -34,7 +34,7 @@
              -
              +
              
                                       
              {{journal.created_on}}
              回复
              diff --git a/public/assets/wechat/jour_message_detail.html b/public/assets/wechat/jour_message_detail.html index f9aebd632..f813d19c1 100644 --- a/public/assets/wechat/jour_message_detail.html +++ b/public/assets/wechat/jour_message_detail.html @@ -22,7 +22,7 @@
              -
              +
              
                                       
              {{journal.lasted_comment}}
              回复
              diff --git a/public/assets/wechat/project_discussion.html b/public/assets/wechat/project_discussion.html index 0c3f9aad3..c0a609bc0 100644 --- a/public/assets/wechat/project_discussion.html +++ b/public/assets/wechat/project_discussion.html @@ -30,7 +30,7 @@
              -
              +
              
                                           
              {{journal.lasted_comment}}
              回复
              diff --git a/public/stylesheets/weui/weixin.css b/public/stylesheets/weui/weixin.css index 8b135dbeb..f0e336563 100644 --- a/public/stylesheets/weui/weixin.css +++ b/public/stylesheets/weui/weixin.css @@ -3,7 +3,7 @@ /*基本样式*/ body,table,input,textarea,select,button { font-family: "微软雅黑","宋体";} -h1,h2,h3,h4,h5,p {padding:0px; margin:0px;} +h1,h2,h3,h4,h5,p,pre {padding:0px; margin:0px;} .f12 {font-size:12px;} .f13 {font-size:13px;} .f15 {font-size:15px;} From 0a8d21ea5579a52ba59be284c1ff7470af380fc1 Mon Sep 17 00:00:00 2001 From: huang Date: Wed, 25 May 2016 14:05:09 +0800 Subject: [PATCH 133/668] =?UTF-8?q?=E5=85=AC=E5=85=B1=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=BA=95=E7=AB=AF=E5=8F=91=E9=80=81JS?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/users/_resources_list.html.erb | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/app/views/users/_resources_list.html.erb b/app/views/users/_resources_list.html.erb index 26e8f922b..3f5138107 100644 --- a/app/views/users/_resources_list.html.erb +++ b/app/views/users/_resources_list.html.erb @@ -49,8 +49,6 @@ alert("您只能删除没有历史记录的资源,请重新选择后再删除。"); return; } - - if(data != "" && confirm('确认要删除这些资源吗?')) { $.post( '<%= user_resource_delete_user_path(User.current.id,:type=>@type,:status=>@status)%>', @@ -62,8 +60,6 @@ } } - - function show_send(){ $("#contextMenu").hide(); document.oncontextmenu = function() {return true;} @@ -99,13 +95,26 @@ if (lastSendType === '2'){ //如果已经发送过一次了,那么就应该沿用上次发送的类型。 $.ajax({ type: 'get', - url: '<%= search_user_project_user_path(User.current.id)%>' + '?' + $("#resources_list_form").serialize() + "&type=<%= @type%>", + url: '<%= search_user_project_user_path(User.current.id) %>' + '?' + $("#resources_list_form").serialize() + "&type=<%= @type %>", data:{send_type:'file'} }); - }else{ + }else if (lastSendType === '1'){ + $.ajax({ + type: 'get', + url: '<%= search_user_course_user_path(User.current.id) %>' + '?' + $("#resources_list_form").serialize() + "&type=<%= @type %>", + data:{send_type:'file'} + }); + }else if (lastSendType === '3'){ + $.ajax({ + type: 'get', + url: '<%= search_user_org_user_path(User.current.id) %>' + '?' + $("#resources_list_form").serialize() + "&type=<%= @type %>", + data:{send_type:'file'} + }); + } + else{ $.ajax({ type: 'get', - url: '<%= search_user_course_user_path(User.current.id)%>' + '?'+ $("#resources_list_form").serialize() + "&type=<%= @type%>", + url: '<%= search_user_course_user_path(User.current.id)%>' + '?'+ $("#resources_list_form").serialize() + "&type=<%= @type %>", data:{send_type:'file'} }); From 457cf72263c9c91ef14670f882aa44a11cacd6aa Mon Sep 17 00:00:00 2001 From: huang Date: Wed, 25 May 2016 14:08:05 +0800 Subject: [PATCH 134/668] =?UTF-8?q?=E6=96=AD=E8=A1=8C=E6=A0=B7=E5=BC=8F=20?= =?UTF-8?q?=E5=8F=91=E9=80=81JS?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/users/_resources_list.html.erb | 19 ++++++++++++++++--- app/views/users/user_resource.html.erb | 2 +- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/app/views/users/_resources_list.html.erb b/app/views/users/_resources_list.html.erb index 26e8f922b..cdd270a56 100644 --- a/app/views/users/_resources_list.html.erb +++ b/app/views/users/_resources_list.html.erb @@ -99,13 +99,26 @@ if (lastSendType === '2'){ //如果已经发送过一次了,那么就应该沿用上次发送的类型。 $.ajax({ type: 'get', - url: '<%= search_user_project_user_path(User.current.id)%>' + '?' + $("#resources_list_form").serialize() + "&type=<%= @type%>", + url: '<%= search_user_project_user_path(User.current.id) %>' + '?' + $("#resources_list_form").serialize() + "&type=<%= @type %>", data:{send_type:'file'} }); - }else{ + }else if (lastSendType === '1'){ + $.ajax({ + type: 'get', + url: '<%= search_user_course_user_path(User.current.id) %>' + '?' + $("#resources_list_form").serialize() + "&type=<%= @type %>", + data:{send_type:'file'} + }); + }else if (lastSendType === '3'){ + $.ajax({ + type: 'get', + url: '<%= search_user_org_user_path(User.current.id) %>' + '?' + $("#resources_list_form").serialize() + "&type=<%= @type %>", + data:{send_type:'file'} + }); + } + else{ $.ajax({ type: 'get', - url: '<%= search_user_course_user_path(User.current.id)%>' + '?'+ $("#resources_list_form").serialize() + "&type=<%= @type%>", + url: '<%= search_user_course_user_path(User.current.id)%>' + '?'+ $("#resources_list_form").serialize() + "&type=<%= @type %>", data:{send_type:'file'} }); diff --git a/app/views/users/user_resource.html.erb b/app/views/users/user_resource.html.erb index d2e3242d8..3c70e6c33 100644 --- a/app/views/users/user_resource.html.erb +++ b/app/views/users/user_resource.html.erb @@ -58,7 +58,7 @@ -
            •  
            • +
            •  
            • <%= render :partial => 'user_resource_type_filter' %> From 921b01e8e3eda778aa56676b000262bf9a40e5b7 Mon Sep 17 00:00:00 2001 From: txz Date: Wed, 25 May 2016 14:26:49 +0800 Subject: [PATCH 135/668] =?UTF-8?q?=E8=BE=93=E5=85=A5=E6=A1=86=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E6=96=87=E5=AD=97=E5=86=85=E5=AE=B9=E6=BB=91=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/javascripts/wechat/app.js | 7 ++++++- public/stylesheets/weui/weixin.css | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/public/javascripts/wechat/app.js b/public/javascripts/wechat/app.js index 5d94afca4..0817eaa58 100644 --- a/public/javascripts/wechat/app.js +++ b/public/javascripts/wechat/app.js @@ -136,7 +136,7 @@ app.factory('common', function($http, auth, $routeParams){ url: apiUrl+ "new_comment/"+id, data: userInfo }).then(function successCallback(response) { - alert("提交成功"); + //alert("提交成功"); //数据提交完成,回复按钮启用 data.disabled = false; if(typeof cb === 'function'){ @@ -410,11 +410,16 @@ app.directive('inputAuto',function(){ scope: {}, link: function(scope, element){ var copyContainer = element.parent().children().eq(0); + var sendButton = element.parent().next(); element.on('input',function(){ + console.log(sendButton); copyContainer.html(element[0].value); var textHeight = copyContainer[0].scrollHeight; element.css('height', textHeight + 'px'); }); + sendButton.on('click',function(){ + element.css('height','28px'); + }); } } }); diff --git a/public/stylesheets/weui/weixin.css b/public/stylesheets/weui/weixin.css index f0e336563..0455c81e3 100644 --- a/public/stylesheets/weui/weixin.css +++ b/public/stylesheets/weui/weixin.css @@ -70,7 +70,7 @@ a.underline {text-decoration:underline;} .post-reply-date, .post-reply-trigger {font-size:13px;} .post-input-container {padding-right:2px;} .copy-input {width:100%; height:28px; line-height:28px; border-radius:3px; position:absolute; left:-9999em;} -.post-reply-input {width:100%; height:28px; max-height:84px; line-height:28px; border:1px solid #e6e6e6; outline:none; padding:0; margin:0; border-radius:3px; overflow-y:hidden; resize:none;} +.post-reply-input {width:100%; height:28px; max-height:84px; line-height:28px; border:1px solid #e6e6e6; outline:none; padding:0; margin:0; border-radius:3px; overflow-y:auto; resize:none;} .post-reply-submit {font-size:13px; padding:3px 8px; color:#fff; background-color:#269ac9; outline:none; border:none; display:inline-block;} .reply-icon {background:url(/images/wechat/wechat_icon.gif) -100px 1px no-repeat; width:20px; height:20px; display:inline-block; vertical-align:middle;} .praise-icon {background:url(/images/wechat/wechat_icon.gif) -100px -38px no-repeat; width:20px; height:20px; display:inline-block; vertical-align:middle;} From d9bd13c2fc5c9a1b5928a6db27b2ddf5c1078e03 Mon Sep 17 00:00:00 2001 From: cxt Date: Wed, 25 May 2016 14:57:46 +0800 Subject: [PATCH 136/668] =?UTF-8?q?=E5=A4=8D=E5=88=B6=E8=AF=BE=E7=A8=8B?= =?UTF-8?q?=E6=8A=A5500?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/courses/_copy_course.html.erb | 32 +++++------ app/views/courses/new.html.erb | 30 +++++----- app/views/courses/settings.html.erb | 22 ++++---- public/javascripts/course.js | 74 ++++++++++++------------- 4 files changed, 79 insertions(+), 79 deletions(-) diff --git a/app/views/courses/_copy_course.html.erb b/app/views/courses/_copy_course.html.erb index 402e00cf6..3b6d55d96 100644 --- a/app/views/courses/_copy_course.html.erb +++ b/app/views/courses/_copy_course.html.erb @@ -1,17 +1,17 @@ \ No newline at end of file diff --git a/app/views/courses/settings.html.erb b/app/views/courses/settings.html.erb index b0c4a067f..82123a767 100644 --- a/app/views/courses/settings.html.erb +++ b/app/views/courses/settings.html.erb @@ -33,35 +33,35 @@ - - + +
            • - - + +
            • - <%= select_tag :time,options_for_select(course_time_option(@course.time),@course.time), {:id=>"time"} %> - <%= select_tag :term,options_for_select(course_term_option,@course.term || cur_course_term),{:id=>"term"} %> + <%= select_tag :time,options_for_select(course_time_option(@course.time),@course.time), {:id=>"edit_time"} %> + <%= select_tag :term,options_for_select(course_term_option,@course.term || cur_course_term),{:id=>"edit_term"} %>
            • - <%= select_tag :end_time,options_for_select(course_time_option(@course.end_time),@course.end_time), {:id=>"end_time"} %> - <%= select_tag :end_term,options_for_select(course_term_option,@course.end_term || cur_course_term),{:id=>"end_term"} %> - + <%= select_tag :end_time,options_for_select(course_time_option(@course.end_time),@course.end_time), {:id=>"edit_end_time"} %> + <%= select_tag :end_term,options_for_select(course_term_option,@course.end_term || cur_course_term),{:id=>"edit_end_term"} %> +
            • - + 显示明码 - +
              学生或其他成员申请加入课程时候需要使用该口令,该口令可以由老师在课堂上公布。
            • diff --git a/public/javascripts/course.js b/public/javascripts/course.js index 0bba3264b..7cfad6005 100644 --- a/public/javascripts/course.js +++ b/public/javascripts/course.js @@ -73,79 +73,79 @@ function hidden_homework_score_form() /////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////新建课程相关 //验证课程名称 -function regex_course_name() +function regex_course_name(str) { - var name = $.trim($("#course_name").val()); + var name = $.trim($("#"+str+"_course_name").val()); if(name.length < 2) { - $("#course_name_notice").show(); + $("#"+str+"_course_name_notice").show(); return false; } else { - $("#course_name_notice").hide(); + $("#"+str+"_course_name_notice").hide(); return true; } } //验证课程学时 -function regex_course_class_period() +function regex_course_class_period(str) { - var class_period = $.trim($("#class_period").val()); + var class_period = $.trim($("#"+str+"_class_period").val()); var regex = /^\d*$/; if(class_period.length == 0) { - $("#course_class_period_notice").html("学时总数不能为空"); - $("#course_class_period_notice").show(); + $("#"+str+"_course_class_period_notice").html("学时总数不能为空"); + $("#"+str+"_course_class_period_notice").show(); return false; } else if (regex.test(class_period)) { if(parseInt(class_period) > 0) { - $("#course_class_period_notice").html(""); - $("#course_class_period_notice").hide(); + $("#"+str+"_course_class_period_notice").html(""); + $("#"+str+"_course_class_period_notice").hide(); return true; } else { - $("#course_class_period_notice").html("学时总数必须大于0"); - $("#course_class_period_notice").show(); + $("#"+str+"_course_class_period_notice").html("学时总数必须大于0"); + $("#"+str+"_course_class_period_notice").show(); return false; } } else { - $("#course_class_period_notice").html("学时总数必须为正整数"); - $("#course_class_period_notice").show(); + $("#"+str+"_course_class_period_notice").html("学时总数必须为正整数"); + $("#"+str+"_course_class_period_notice").show(); return false; } } //验证开始学期和结束学期 -function regex_time_term(){ - var obj_time = document.getElementById("time"); - var obj_end_time = document.getElementById("end_time"); - var obj_term = document.getElementById("term"); - var obj_end_term = document.getElementById("end_term"); +function regex_time_term(str){ + var obj_time = document.getElementById(str+"_time"); + var obj_end_time = document.getElementById(str+"_end_time"); + var obj_term = document.getElementById(str+"_term"); + var obj_end_term = document.getElementById(str+"_end_term"); var time = obj_time.options[obj_time.selectedIndex]; var end_time = obj_end_time.options[obj_end_time.selectedIndex]; var term = obj_term.options[obj_term.selectedIndex]; var end_term = obj_end_term.options[obj_end_term.selectedIndex]; if(time.value == end_time.value) { if(set_term_val(term.value) > set_term_val(end_term.value)) { - $("#course_time_term_notice").html("开始学期不能晚于结束学期"); - $("#course_time_term_notice").show(); + $("#"+str+"_course_time_term_notice").html("开始学期不能晚于结束学期"); + $("#"+str+"_course_time_term_notice").show(); return false; } else { - $("#course_time_term_notice").html(""); - $("#course_time_term_notice").hide(); + $("#"+str+"_course_time_term_notice").html(""); + $("#"+str+"_course_time_term_notice").hide(); return true; } } else if(time.value < end_time.value) { - $("#course_time_term_notice").html(""); - $("#course_time_term_notice").hide(); + $("#"+str+"_course_time_term_notice").html(""); + $("#"+str+"_course_time_term_notice").hide(); return true; } else { - $("#course_time_term_notice").html("开始学期不能晚于结束学期"); - $("#course_time_term_notice").show(); + $("#"+str+"_course_time_term_notice").html("开始学期不能晚于结束学期"); + $("#"+str+"_course_time_term_notice").show(); return false; } } @@ -160,32 +160,32 @@ function set_term_val(val) { } } //验证密码 -function regex_course_password() +function regex_course_password(str) { - var class_period = $.trim($("#course_course_password").val()); + var class_period = $.trim($("#"+str+"_course_course_password").val()); var regex = /^\w+$/; if(class_period.length == 0) { - $("#course_course_password_notice").html("课程密码不能为空"); - $("#course_course_password_notice").show(); + $("#"+str+"_course_course_password_notice").html("课程密码不能为空"); + $("#"+str+"_course_course_password_notice").show(); return false; } else if (regex.test(class_period)) { - $("#course_course_password_notice").html(""); - $("#course_course_password_notice").hide(); + $("#"+str+"_course_course_password_notice").html(""); + $("#"+str+"_course_course_password_notice").hide(); return true; } else { - $("#course_course_password_notice").html("课程密码有非法字符"); - $("#course_course_password_notice").show(); + $("#"+str+"_course_course_password_notice").html("课程密码有非法字符"); + $("#"+str+"_course_course_password_notice").show(); return false; } } //提交新建课程 function submit_new_course() { - if(regex_course_name()&®ex_course_class_period()&®ex_time_term()&®ex_course_password()) + if(regex_course_name('new')&®ex_course_class_period('new')&®ex_time_term('new')&®ex_course_password('new')) { $("#new_course").submit(); } @@ -193,7 +193,7 @@ function submit_new_course() function submit_edit_course(id) { - if(regex_course_name()&®ex_course_class_period()&®ex_time_term()&®ex_course_password()) + if(regex_course_name('edit')&®ex_course_class_period('edit')&®ex_time_term('edit')&®ex_course_password('edit')) { $("#edit_course_"+id).submit(); } From c8467a50a023a2381dede7b6fdf359a3bf4f03ad Mon Sep 17 00:00:00 2001 From: cxt Date: Wed, 25 May 2016 16:19:41 +0800 Subject: [PATCH 137/668] =?UTF-8?q?=E8=87=AA=E5=B7=B1=E5=8F=AF=E4=BB=A5?= =?UTF-8?q?=E7=BB=99=E8=87=AA=E5=B7=B1=E7=82=B9=E8=B5=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/praise_tread_controller.rb | 16 ++++++++-------- app/views/blog_comments/show.html.erb | 12 ++---------- app/views/messages/_course_show.html.erb | 10 +--------- app/views/messages/_project_show.html.erb | 12 ++---------- app/views/news/_course_show.html.erb | 12 ++---------- app/views/org_document_comments/show.html.erb | 12 ++---------- .../organizations/_org_course_homework.html.erb | 14 +++----------- .../organizations/_org_course_message.html.erb | 12 ++---------- .../organizations/_org_course_news.html.erb | 14 +++----------- .../organizations/_org_project_issue.html.erb | 12 ++---------- .../organizations/_org_subfield_message.html.erb | 12 ++---------- .../organizations/_org_subfield_news.html.erb | 12 ++---------- .../organizations/_project_message.html.erb | 12 ++---------- .../organizations/_show_org_document.html.erb | 12 ++---------- app/views/projects/_project_news.html.erb | 12 ++---------- app/views/users/_course_homework.html.erb | 12 ++---------- .../users/_course_journalsformessage.html.erb | 13 +++++++++---- app/views/users/_course_message.html.erb | 12 ++---------- app/views/users/_course_news.html.erb | 12 ++---------- app/views/users/_project_issue_reply.html.erb | 14 +++----------- app/views/users/_project_message.html.erb | 12 ++---------- app/views/users/_user_activities.html.erb | 12 ++++++------ app/views/users/_user_blog.html.erb | 12 ++---------- app/views/users/_user_homework_detail.html.erb | 12 ++---------- .../users/_user_journalsformessage.html.erb | 12 ++---------- 25 files changed, 69 insertions(+), 240 deletions(-) diff --git a/app/controllers/praise_tread_controller.rb b/app/controllers/praise_tread_controller.rb index 96eeab884..0c665341a 100644 --- a/app/controllers/praise_tread_controller.rb +++ b/app/controllers/praise_tread_controller.rb @@ -25,14 +25,14 @@ class PraiseTreadController < ApplicationController return end @horizontal = params[:horizontal].downcase == "false" ? false:true if params[:horizontal] - if @obj.respond_to?("author_id") - author_id = @obj.author_id - elsif @obj.respond_to?("user_id") - author_id = @obj.user_id - end - unless author_id == User.current.id - praise_tread_plus(@obj_type,@obj_id,1) - end + # if @obj.respond_to?("author_id") + # author_id = @obj.author_id + # elsif @obj.respond_to?("user_id") + # author_id = @obj.user_id + # end + # unless author_id == User.current.id + praise_tread_plus(@obj_type,@obj_id,1) + # end respond_to do |format| format.js end diff --git a/app/views/blog_comments/show.html.erb b/app/views/blog_comments/show.html.erb index d3763abf3..288a02d56 100644 --- a/app/views/blog_comments/show.html.erb +++ b/app/views/blog_comments/show.html.erb @@ -122,11 +122,7 @@
              回复 <%= count>0 ? "(#{count})" : "" %> - <% if @article.author == User.current %> - - <% else %> <%=render :partial=> "praise_tread/praise", :locals => {:activity=>@article, :user_activity_id=>@article.id,:type=>"activity"}%> - <% end %>
              @@ -162,12 +158,8 @@
              <%= format_time(reply.created_on) %> - <% if reply.author == User.current %> - - <% else %> - <%=render :partial=> "praise_tread/praise", :locals => {:activity=>reply, :user_activity_id=>reply.id,:type=>"reply"}%> - <% end %> - + <%=render :partial=> "praise_tread/praise", :locals => {:activity=>reply, :user_activity_id=>reply.id,:type=>"reply"}%> + @@ -131,11 +127,7 @@ <%= format_time(reply.created_on) %> @@ -187,11 +183,7 @@ <%= format_time(reply.created_on) %> @@ -137,11 +133,7 @@ <%= format_time(reply.created_on) %> @@ -100,11 +96,7 @@
              <%= format_time(reply.created_at) %> - <% if reply.creator_id.to_i == User.current.id.to_i %> - - <% else %> - <%=render :partial=> "praise_tread/praise", :locals => {:activity=>reply, :user_activity_id=>reply.id,:type=>"reply"}%> - <% end %> + <%=render :partial=> "praise_tread/praise", :locals => {:activity=>reply, :user_activity_id=>reply.id,:type=>"reply"}%>
              <%if count>3 %> @@ -359,11 +355,7 @@
              - <% if comment.user == User.current %> - - <% else %> - <%=render :partial=> "praise_tread/praise", :locals => {:activity=>comment, :user_activity_id=>comment.id,:type=>"reply"}%> - <% end %> + <%=render :partial=> "praise_tread/praise", :locals => {:activity=>comment, :user_activity_id=>comment.id,:type=>"reply"}%> <%= link_to( diff --git a/app/views/organizations/_org_course_message.html.erb b/app/views/organizations/_org_course_message.html.erb index e68745f7a..03e986716 100644 --- a/app/views/organizations/_org_course_message.html.erb +++ b/app/views/organizations/_org_course_message.html.erb @@ -74,11 +74,7 @@
              回复 <%= count>0 ? "(#{count})" : "" %> - <% if activity.author == User.current %> - - <% else %> - <%=render :partial=> "praise_tread/praise", :locals => {:activity=>activity, :user_activity_id=>user_activity_id,:type=>"activity"}%> - <% end %> + <%=render :partial=> "praise_tread/praise", :locals => {:activity=>activity, :user_activity_id=>user_activity_id,:type=>"activity"}%>
              <%#=format_date(activity.updated_on)%>
              @@ -117,11 +113,7 @@ <% end %> <%= format_time(reply.created_on) %> - <% if reply.author == User.current %> - - <% else %> - <%=render :partial=> "praise_tread/praise", :locals => {:activity=>reply, :user_activity_id=>reply.id,:type=>"reply"}%> - <% end %> + <%=render :partial=> "praise_tread/praise", :locals => {:activity=>reply, :user_activity_id=>reply.id,:type=>"reply"}%>
              diff --git a/app/views/organizations/_org_course_news.html.erb b/app/views/organizations/_org_course_news.html.erb index acf0f0377..8c260c21c 100644 --- a/app/views/organizations/_org_course_news.html.erb +++ b/app/views/organizations/_org_course_news.html.erb @@ -44,12 +44,8 @@
              回复 <%= count>0 ? "(#{count})" : "" %> - <% if activity.author == User.current %> - - <% else %> - <%=render :partial=> "praise_tread/praise", :locals => {:activity=>activity, :user_activity_id=>user_activity_id,:type=>"activity"}%> - <% end %> - + <%=render :partial=> "praise_tread/praise", :locals => {:activity=>activity, :user_activity_id=>user_activity_id,:type=>"activity"}%> +
              <%#= format_date(activity.updated_on) %>
              <%if count>3 %> @@ -86,11 +82,7 @@ <% end %> <%= format_time(comment.created_on) %> - <% if comment.author == User.current %> - - <% else %> - <%=render :partial=> "praise_tread/praise", :locals => {:activity=>comment, :user_activity_id=>comment.id,:type=>"reply"}%> - <% end %> + <%=render :partial=> "praise_tread/praise", :locals => {:activity=>comment, :user_activity_id=>comment.id,:type=>"reply"}%>
              diff --git a/app/views/organizations/_org_project_issue.html.erb b/app/views/organizations/_org_project_issue.html.erb index 9ca10c91d..94eb2820a 100644 --- a/app/views/organizations/_org_project_issue.html.erb +++ b/app/views/organizations/_org_project_issue.html.erb @@ -55,11 +55,7 @@
              回复 <%= count>0 ? "(#{count})" : "" %> - <% if activity.author == User.current %> - - <% else %> - <%=render :partial=> "praise_tread/praise", :locals => {:activity=>activity, :user_activity_id=>user_activity_id,:type=>"activity"}%> - <% end %> + <%=render :partial=> "praise_tread/praise", :locals => {:activity=>activity, :user_activity_id=>user_activity_id,:type=>"activity"}%>
              <%#= format_date(activity.updated_on) %>
              @@ -97,11 +93,7 @@ <% end %> <%= format_time(reply.created_on) %> - <% if reply.user == User.current %> - - <% else %> - <%=render :partial=> "praise_tread/praise", :locals => {:activity=>reply, :user_activity_id=>reply.id,:type=>"reply"}%> - <% end %> + <%=render :partial=> "praise_tread/praise", :locals => {:activity=>reply, :user_activity_id=>reply.id,:type=>"reply"}%>
              diff --git a/app/views/organizations/_org_subfield_message.html.erb b/app/views/organizations/_org_subfield_message.html.erb index 61bc5bc7f..bcc43610e 100644 --- a/app/views/organizations/_org_subfield_message.html.erb +++ b/app/views/organizations/_org_subfield_message.html.erb @@ -84,11 +84,7 @@
              回复 <%= count>0 ? "(#{count})" : "" %> - <% if activity.author == User.current %> - - <% else %> - <%=render :partial=> "praise_tread/praise", :locals => {:activity=>activity, :user_activity_id=>user_activity_id,:type=>"activity"}%> - <% end %> + <%=render :partial=> "praise_tread/praise", :locals => {:activity=>activity, :user_activity_id=>user_activity_id,:type=>"activity"}%>
              <%if count>3 %> @@ -122,11 +118,7 @@ <% end %> <%= format_time(reply.created_on) %> - <% if reply.author == User.current %> - - <% else %> - <%=render :partial=> "praise_tread/praise", :locals => {:activity=>reply, :user_activity_id=>reply.id,:type=>"reply"}%> - <% end %> + <%=render :partial=> "praise_tread/praise", :locals => {:activity=>reply, :user_activity_id=>reply.id,:type=>"reply"}%>
              diff --git a/app/views/organizations/_org_subfield_news.html.erb b/app/views/organizations/_org_subfield_news.html.erb index 5d6c38542..662a965e9 100644 --- a/app/views/organizations/_org_subfield_news.html.erb +++ b/app/views/organizations/_org_subfield_news.html.erb @@ -64,11 +64,7 @@
              回复 <%= count>0 ? "(#{count})" : "" %> - <% if activity.author == User.current %> - - <% else %> - <%=render :partial=> "praise_tread/praise", :locals => {:activity=>activity, :user_activity_id=>user_activity_id,:type=>"activity"}%> - <% end %> + <%=render :partial=> "praise_tread/praise", :locals => {:activity=>activity, :user_activity_id=>user_activity_id,:type=>"activity"}%>
              <%#= format_date(activity.updated_on) %>
              @@ -106,11 +102,7 @@ <% end %> <%= format_time(comment.created_on) %> - <% if comment.author == User.current %> - - <% else %> - <%=render :partial=> "praise_tread/praise", :locals => {:activity=>comment, :user_activity_id=>comment.id,:type=>"reply"}%> - <% end %> + <%=render :partial=> "praise_tread/praise", :locals => {:activity=>comment, :user_activity_id=>comment.id,:type=>"reply"}%>
              diff --git a/app/views/organizations/_project_message.html.erb b/app/views/organizations/_project_message.html.erb index e1b000c70..4407d86bd 100644 --- a/app/views/organizations/_project_message.html.erb +++ b/app/views/organizations/_project_message.html.erb @@ -57,11 +57,7 @@
              回复 <%= count>0 ? "(#{count})" : "" %> - <% if activity.author == User.current %> - - <% else %> - <%=render :partial=> "praise_tread/praise", :locals => {:activity=>activity, :user_activity_id=>user_activity_id,:type=>"activity"}%> - <% end %> + <%=render :partial=> "praise_tread/praise", :locals => {:activity=>activity, :user_activity_id=>user_activity_id,:type=>"activity"}%>
              <%#=format_date(activity.updated_on)%>
              @@ -96,11 +92,7 @@ <% end %> <%= format_time(reply.created_on) %> - <% if reply.author == User.current %> - - <% else %> - <%=render :partial=> "praise_tread/praise", :locals => {:activity=>reply, :user_activity_id=>reply.id,:type=>"reply"}%> - <% end %> + <%=render :partial=> "praise_tread/praise", :locals => {:activity=>reply, :user_activity_id=>reply.id,:type=>"reply"}%>
              diff --git a/app/views/organizations/_show_org_document.html.erb b/app/views/organizations/_show_org_document.html.erb index e8f531206..3042ca9ae 100644 --- a/app/views/organizations/_show_org_document.html.erb +++ b/app/views/organizations/_show_org_document.html.erb @@ -69,11 +69,7 @@
              回复 <%= count>0 ? "(#{count})" : "" %> - <% if document.creator_id.to_i == User.current.id.to_i %> - - <% else %> - <%=render :partial=> "praise_tread/praise", :locals => {:activity=>document, :user_activity_id=>document.id,:type=>"activity"}%> - <% end %> + <%=render :partial=> "praise_tread/praise", :locals => {:activity=>document, :user_activity_id=>document.id,:type=>"activity"}%>
              <% if count > 3 %> @@ -102,11 +98,7 @@ <%= link_to User.find(comment.creator_id), user_url_in_org(comment.creator_id), :class => "newsBlue mr10 f14" %> <%= format_activity_day(comment.created_at) %> <%= format_time(comment.created_at, false) %> - <% if comment.creator_id.to_i == User.current.id.to_i %> - - <% else %> - <%=render :partial=> "praise_tread/praise", :locals => {:activity=>comment, :user_activity_id=>comment.id,:type=>"reply"}%> - <% end %> + <%=render :partial=> "praise_tread/praise", :locals => {:activity=>comment, :user_activity_id=>comment.id,:type=>"reply"}%>
              <% unless comment.content.blank? %> diff --git a/app/views/projects/_project_news.html.erb b/app/views/projects/_project_news.html.erb index 6d97b252d..7baf93e4f 100644 --- a/app/views/projects/_project_news.html.erb +++ b/app/views/projects/_project_news.html.erb @@ -44,11 +44,7 @@
              回复 <%= count>0 ? "(#{count})" : "" %> - <% if activity.author == User.current %> - - <% else %> - <%=render :partial=> "praise_tread/praise", :locals => {:activity=>activity, :user_activity_id=>user_activity_id,:type=>"activity"}%> - <% end %> + <%=render :partial=> "praise_tread/praise", :locals => {:activity=>activity, :user_activity_id=>user_activity_id,:type=>"activity"}%>
              <%#= format_date(activity.updated_on) %>
              @@ -86,11 +82,7 @@ <% end %> <%= format_time(comment.created_on) %> - <% if comment.author == User.current %> - - <% else %> - <%=render :partial=> "praise_tread/praise", :locals => {:activity=>comment, :user_activity_id=>comment.id,:type=>"reply"}%> - <% end %> + <%=render :partial=> "praise_tread/praise", :locals => {:activity=>comment, :user_activity_id=>comment.id,:type=>"reply"}%>
              diff --git a/app/views/users/_course_homework.html.erb b/app/views/users/_course_homework.html.erb index 3721244ed..e694f471e 100644 --- a/app/views/users/_course_homework.html.erb +++ b/app/views/users/_course_homework.html.erb @@ -296,11 +296,7 @@ ︿ <%= count>0 ? "(#{count})" : "" %> - <% if activity.user == User.current %> - - <% else %> - <%=render :partial=> "praise_tread/praise", :locals => {:activity=>activity, :user_activity_id=>user_activity_id,:type=>"activity"}%> - <% end %> + <%=render :partial=> "praise_tread/praise", :locals => {:activity=>activity, :user_activity_id=>user_activity_id,:type=>"activity"}%>
              @@ -365,11 +361,7 @@
              - <% if comment.user == User.current %> - - <% else %> - <%=render :partial=> "praise_tread/praise", :locals => {:activity=>comment, :user_activity_id=>comment.id,:type=>"reply"}%> - <% end %> + <%=render :partial=> "praise_tread/praise", :locals => {:activity=>comment, :user_activity_id=>comment.id,:type=>"reply"}%> <%= link_to( diff --git a/app/views/users/_course_journalsformessage.html.erb b/app/views/users/_course_journalsformessage.html.erb index aeb7f5e5d..a76081859 100644 --- a/app/views/users/_course_journalsformessage.html.erb +++ b/app/views/users/_course_journalsformessage.html.erb @@ -33,10 +33,12 @@
              <% count = fetch_user_leaveWord_reply(activity).count %>
              -
              -
              -
              - 回复(<%= count %>) +
              +
              回复 + <%= count>0 ? "(#{count})" : "" %> + + <%=render :partial=> "praise_tread/praise", :locals => {:activity=>activity, :user_activity_id=>user_activity_id,:type=>"activity"}%> +
              <%if count>3 %> @@ -72,6 +74,9 @@ <%= link_to comment.try(:user).try(:realname), user_path(comment.user_id), :class => "newsBlue mr10 f14" %> <% end %> <%= format_time(comment.created_on) %> + + <%=render :partial=> "praise_tread/praise", :locals => {:activity=>comment, :user_activity_id=>comment.id,:type=>"reply"}%> +
              <%= comment.notes.html_safe %> diff --git a/app/views/users/_course_message.html.erb b/app/views/users/_course_message.html.erb index 8b6056309..c0e667396 100644 --- a/app/views/users/_course_message.html.erb +++ b/app/views/users/_course_message.html.erb @@ -91,11 +91,7 @@
              回复 <%= count>0 ? "(#{count})" : "" %> - <% if activity.author == User.current %> - - <% else %> - <%=render :partial=> "praise_tread/praise", :locals => {:activity=>activity, :user_activity_id=>user_activity_id,:type=>"activity"}%> - <% end %> + <%=render :partial=> "praise_tread/praise", :locals => {:activity=>activity, :user_activity_id=>user_activity_id,:type=>"activity"}%>
              <%#=format_date(activity.updated_on)%>
              @@ -134,11 +130,7 @@ <% end %> <%= format_time(reply.created_on) %> - <% if reply.author == User.current %> - - <% else %> - <%=render :partial=> "praise_tread/praise", :locals => {:activity=>reply, :user_activity_id=>reply.id,:type=>"reply"}%> - <% end %> + <%=render :partial=> "praise_tread/praise", :locals => {:activity=>reply, :user_activity_id=>reply.id,:type=>"reply"}%>
              diff --git a/app/views/users/_course_news.html.erb b/app/views/users/_course_news.html.erb index 19d62b14e..b89873b43 100644 --- a/app/views/users/_course_news.html.erb +++ b/app/views/users/_course_news.html.erb @@ -69,11 +69,7 @@
              回复 <%= count>0 ? "(#{count})" : "" %> - <% if activity.author == User.current %> - - <% else %> - <%=render :partial=> "praise_tread/praise", :locals => {:activity=>activity, :user_activity_id=>user_activity_id,:type=>"activity"}%> - <% end %> + <%=render :partial=> "praise_tread/praise", :locals => {:activity=>activity, :user_activity_id=>user_activity_id,:type=>"activity"}%>
              <%#= format_date(activity.updated_on) %>
              @@ -111,11 +107,7 @@ <% end %> <%= format_time(comment.created_on) %> - <% if comment.author == User.current %> - - <% else %> - <%=render :partial=> "praise_tread/praise", :locals => {:activity=>comment, :user_activity_id=>comment.id,:type=>"reply"}%> - <% end %> + <%=render :partial=> "praise_tread/praise", :locals => {:activity=>comment, :user_activity_id=>comment.id,:type=>"reply"}%>
              diff --git a/app/views/users/_project_issue_reply.html.erb b/app/views/users/_project_issue_reply.html.erb index 5323b76b6..2b43d8acf 100644 --- a/app/views/users/_project_issue_reply.html.erb +++ b/app/views/users/_project_issue_reply.html.erb @@ -4,11 +4,7 @@
              回复 <%= count>0 ? "(#{count})" : "" %> - <% if activity.author == User.current %> - - <% else %> - <%=render :partial=> "praise_tread/praise", :locals => {:activity=>activity, :user_activity_id=>user_activity_id,:type=>"activity"}%> - <% end %> + <%=render :partial=> "praise_tread/praise", :locals => {:activity=>activity, :user_activity_id=>user_activity_id,:type=>"activity"}%>
              <%#= format_date(activity.updated_on) %>
              @@ -46,12 +42,8 @@ <% end %> <%= format_time(reply.created_on) %> - <% if reply.user == User.current %> - - <% else %> - <%=render :partial=> "praise_tread/praise", :locals => {:activity=>reply, :user_activity_id=>reply.id,:type=>"reply"}%> - <% end %> - + <%=render :partial=> "praise_tread/praise", :locals => {:activity=>reply, :user_activity_id=>reply.id,:type=>"reply"}%> +
              <% if reply.details.any? %> diff --git a/app/views/users/_project_message.html.erb b/app/views/users/_project_message.html.erb index b6e3f9a94..b3c2fea59 100644 --- a/app/views/users/_project_message.html.erb +++ b/app/views/users/_project_message.html.erb @@ -90,11 +90,7 @@
              回复 <%= count>0 ? "(#{count})" : "" %> - <% if activity.author == User.current %> - - <% else %> - <%=render :partial=> "praise_tread/praise", :locals => {:activity=>activity, :user_activity_id=>user_activity_id,:type=>"activity"}%> - <% end %> + <%=render :partial=> "praise_tread/praise", :locals => {:activity=>activity, :user_activity_id=>user_activity_id,:type=>"activity"}%>
              <%#=format_date(activity.updated_on)%>
              @@ -129,11 +125,7 @@ <% end %> <%= format_time(reply.created_on) %> - <% if reply.author == User.current %> - - <% else %> - <%=render :partial=> "praise_tread/praise", :locals => {:activity=>reply, :user_activity_id=>reply.id,:type=>"reply"}%> - <% end %> + <%=render :partial=> "praise_tread/praise", :locals => {:activity=>reply, :user_activity_id=>reply.id,:type=>"reply"}%>
              diff --git a/app/views/users/_user_activities.html.erb b/app/views/users/_user_activities.html.erb index 2fe7315d5..432074191 100644 --- a/app/views/users/_user_activities.html.erb +++ b/app/views/users/_user_activities.html.erb @@ -5,24 +5,24 @@ $(document).ready(function(){ $("#relateProject,.relatePInfo").mouseover(function(){ $(".relatePInfo").css("display","block"); - }) + }); $("#relateProject,.relatePInfo").mouseout(function(){ $(".relatePInfo").css("display","none"); - }) + }); $(".coursesLineGrey").mouseover(function(){ $(this).css("color","#ffffff"); - }) + }); $(".coursesLineGrey").mouseout(function(){ $(this).css("color","#808080"); - }) + }); $(".homepagePostSetting,.coursesLineGrey").mouseover(function(){ $(this).prev().css("color","#ffffff"); $(this).css("z-index", "9999"); - }) + }); $(".homepagePostSetting").mouseout(function(){ $(this).prev().css("color","#808080"); $(this).css("z-index", "1"); - }) + }); }) diff --git a/app/views/users/_user_blog.html.erb b/app/views/users/_user_blog.html.erb index de5ffc31f..522bdc835 100644 --- a/app/views/users/_user_blog.html.erb +++ b/app/views/users/_user_blog.html.erb @@ -50,11 +50,7 @@
              回复 <%= count>0 ? "(#{count})" : "" %> - <% if activity.author == User.current %> - - <% else %> - <%=render :partial=> "praise_tread/praise", :locals => {:activity=>activity, :user_activity_id=>user_activity_id,:type=>"activity"}%> - <% end %> + <%=render :partial=> "praise_tread/praise", :locals => {:activity=>activity, :user_activity_id=>user_activity_id,:type=>"activity"}%>
              <%#= format_date(activity.updated_on) %>
              @@ -92,11 +88,7 @@ <% end %> <%= format_time(comment.created_on) %> - <% if comment.author == User.current %> - - <% else %> - <%=render :partial=> "praise_tread/praise", :locals => {:activity=>comment, :user_activity_id=>comment.id,:type=>"reply"}%> - <% end %> + <%=render :partial=> "praise_tread/praise", :locals => {:activity=>comment, :user_activity_id=>comment.id,:type=>"reply"}%>
              diff --git a/app/views/users/_user_homework_detail.html.erb b/app/views/users/_user_homework_detail.html.erb index f81fbabf5..650ced5dc 100644 --- a/app/views/users/_user_homework_detail.html.erb +++ b/app/views/users/_user_homework_detail.html.erb @@ -306,11 +306,7 @@ ︿ <%= count>0 ? "(#{count})" : "" %> - <% if homework_common.user == User.current %> - - <% else %> - <%=render :partial=> "praise_tread/praise", :locals => {:activity=>homework_common, :user_activity_id=>homework_common.id,:type=>"activity"}%> - <% end %> + <%=render :partial=> "praise_tread/praise", :locals => {:activity=>homework_common, :user_activity_id=>homework_common.id,:type=>"activity"}%>
              @@ -379,11 +375,7 @@
              - <% if comment.user == User.current %> - - <% else %> - <%=render :partial=> "praise_tread/praise", :locals => {:activity=>comment, :user_activity_id=>comment.id,:type=>"reply"}%> - <% end %> + <%=render :partial=> "praise_tread/praise", :locals => {:activity=>comment, :user_activity_id=>comment.id,:type=>"reply"}%> <%= link_to( diff --git a/app/views/users/_user_journalsformessage.html.erb b/app/views/users/_user_journalsformessage.html.erb index 47d5145ac..6967bb398 100644 --- a/app/views/users/_user_journalsformessage.html.erb +++ b/app/views/users/_user_journalsformessage.html.erb @@ -64,11 +64,7 @@
              回复 <%= count>0 ? "(#{count})" : "" %> - <% if activity.user == User.current %> - - <% else %> - <%=render :partial=> "praise_tread/praise", :locals => {:activity=>activity, :user_activity_id=>user_activity_id,:type=>"activity"}%> - <% end %> + <%=render :partial=> "praise_tread/praise", :locals => {:activity=>activity, :user_activity_id=>user_activity_id,:type=>"activity"}%>
              @@ -106,11 +102,7 @@ <% end %> <%= format_time(comment.created_on) %> - <% if comment.user == User.current %> - - <% else %> - <%=render :partial=> "praise_tread/praise", :locals => {:activity=>comment, :user_activity_id=>comment.id,:type=>"reply"}%> - <% end %> + <%=render :partial=> "praise_tread/praise", :locals => {:activity=>comment, :user_activity_id=>comment.id,:type=>"reply"}%>
            - 配置 + 配置
          diff --git a/public/stylesheets/org_custom.css b/public/stylesheets/org_custom.css index ce4bff32f..85f056438 100644 --- a/public/stylesheets/org_custom.css +++ b/public/stylesheets/org_custom.css @@ -1,28 +1,3 @@ -/* 门户样式重置 */ -body,h1,h2,h3,h4,h5,h6,hr,p,blockquote,dl,dt,dd,ul,ol,li,pre,form,fieldset,legend,button,input,textarea,th,td{ margin:0; padding:0;} -body,table,input,textarea,select,button { font-family: "微软雅黑","宋体"; font-size:12px;line-height:1.5; background:#fff;} -div,img,tr,td,table{ border:0;} -table,tr,td{border:0;cellspacing:0; cellpadding:0;} -ol,ul,li{ list-style-type:none} -a:link,a:visited{color:#000;text-decoration:none;} -a:hover,a:active{color:#3b94d6;} - -/* 公共 */ -.clear:after {content:".";height:0;visibility:hidden;display:block;clear:both;} -.fl{ float:left;} -.fr{ float:right;} -.cl{ clear:both; overflow:hidden;} -.mt5{ margin-top:5px;} -.mt10{ margin-top:10px;} -.mb5{ margin-bottom:5px;} -.mb10{ margin-bottom:10px;} -.ml5{ margin-left:5px;} -.ml10{ margin-left:10px;} -.ml15{ margin-left:15px;} -.mr5{ margin-right:5px;} -.mr10{ margin-right:15px;} -.mr15{ margin-right:10px;} - /* 门户首页 */ #por_header{ width:100%; } .por_header_top{ width:100%; height:70px; background:#3b94d6; } diff --git a/public/stylesheets/public.css b/public/stylesheets/public.css index 2ca221d5c..115e48223 100644 --- a/public/stylesheets/public.css +++ b/public/stylesheets/public.css @@ -270,6 +270,8 @@ a.linkGrey6 {color:#484848 !important;} a.linkGrey6:hover {color:#ffffff !important;} a.linkGrey7 {color:#888888;} a.linkGrey7:hover {color:#269ac9;} +a.link-black {color:#000;} +a.link-black:hover {color:#3b94d6;} a.bBlue {background-color:#3498db;} a.bBlue:hover {background-color:#297fb8;} a.submit_btn {border:1px solid #3498db; padding:3px 10px; border-radius:3px; color:#3498db;} @@ -1139,4 +1141,4 @@ a.st_down{ display: block; width:8px; float:left; height:13px; background:url(.. .likeNum{color: #7f7f7f} /*弹框*/ -.apply_content{ border:1px solid #ddd;line-height: 16px; height:80px;width:420px; background:#fff; margin-bottom:10px;} +.apply_content{ border:1px solid #ddd;line-height: 16px; height:80px;width:420px; background:#fff; margin-bottom:10px;} From 698e4bd7b3a1a5c855e6aafd6a0dc11368098bf2 Mon Sep 17 00:00:00 2001 From: huang Date: Mon, 30 May 2016 14:41:53 +0800 Subject: [PATCH 187/668] header --- app/views/layouts/base_org_custom.html.erb | 2 +- .../organizations/_org_custom_header.html.erb | 52 ++++++++++++++----- 2 files changed, 39 insertions(+), 15 deletions(-) diff --git a/app/views/layouts/base_org_custom.html.erb b/app/views/layouts/base_org_custom.html.erb index 4a9ba4dce..355ec23ec 100644 --- a/app/views/layouts/base_org_custom.html.erb +++ b/app/views/layouts/base_org_custom.html.erb @@ -18,7 +18,7 @@ <% update_visiti_count @organization %>
          - <%= render :partial => 'org_custom_header' %> + <%= render :partial => 'org_custom_header', :locals => {:subfield_content => @subfield_content} %>
          diff --git a/app/views/organizations/_org_custom_header.html.erb b/app/views/organizations/_org_custom_header.html.erb index 027e4e8ec..4be46e789 100644 --- a/app/views/organizations/_org_custom_header.html.erb +++ b/app/views/organizations/_org_custom_header.html.erb @@ -30,20 +30,45 @@
          - 配置 + <% if User.current.admin_of_org?(@organization) %> + 配置 + <% end %>
          @@ -57,7 +82,6 @@ $("#homepageProfileMenuIcon").removeClass("homepageProfileMenuIconhover"); $("#topnav_login_list").hide(); }); - function signout(){ $.post( '<%= signout_path%>', From d4c0e9754ac6332a5af1fd5d2c7e5d8b0f153ff8 Mon Sep 17 00:00:00 2001 From: cxt Date: Mon, 30 May 2016 14:51:54 +0800 Subject: [PATCH 188/668] =?UTF-8?q?=E8=AF=BE=E7=A8=8B=E6=8F=8F=E8=BF=B0?= =?UTF-8?q?=E5=B1=95=E5=BC=80=E5=90=8E=E5=BA=94=E6=98=BE=E7=A4=BA=E2=80=9C?= =?UTF-8?q?=E6=94=B6=E8=B5=B7=E6=8F=8F=E8=BF=B0=E4=BF=A1=E6=81=AF=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/layouts/base_courses.html.erb | 4 ++-- public/javascripts/course.js | 13 +++++++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/app/views/layouts/base_courses.html.erb b/app/views/layouts/base_courses.html.erb index a9e859448..c3f3a4a60 100644 --- a/app/views/layouts/base_courses.html.erb +++ b/app/views/layouts/base_courses.html.erb @@ -157,9 +157,9 @@
        - <%= l(:label_expend_information)%> + - +
        diff --git a/public/javascripts/course.js b/public/javascripts/course.js index 7cfad6005..73ab065ea 100644 --- a/public/javascripts/course.js +++ b/public/javascripts/course.js @@ -475,6 +475,19 @@ function submitMemberSerch(content) function show_more_msg() { $("#course_description").toggleClass("course_description_none"); + var information = $("#expend_more_information"); + var arrow = $("#arrow"); + var val = information.attr("value"); + if (val == "show_more") { + $("#expend_more_information").text("收起描述信息"); + information.attr("value", "hide_more"); + arrow.attr("src", "/images/jiantouup.jpg") + } + else { + $("#expend_more_information").text("展开更多信息"); + information.attr("value", "show_more"); + arrow.attr("src", "/images/jiantou.jpg") + } } //作业描述显示更多信息 function news_show_more_des(id) From 471ed7cbd230355be723404a01ea9540826c7a9a Mon Sep 17 00:00:00 2001 From: huang Date: Mon, 30 May 2016 14:58:46 +0800 Subject: [PATCH 189/668] =?UTF-8?q?=E7=BB=84=E7=BB=87logo=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=EF=BC=8C=E6=B7=BB=E5=8A=A0=E6=A0=B7=E5=BC=8F=E5=9B=BE?= =?UTF-8?q?=E7=89=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../organizations/_org_custom_header.html.erb | 2 +- public/images/org_custom/homepageImage.jpg | Bin 0 -> 2756 bytes public/images/org_custom/icons_por.png | Bin 0 -> 19736 bytes public/images/org_custom/por_img.jpg | Bin 0 -> 39793 bytes public/images/org_custom/porlogo.png | Bin 0 -> 21343 bytes public/stylesheets/org_custom.css | 10 +++++----- 6 files changed, 6 insertions(+), 6 deletions(-) create mode 100644 public/images/org_custom/homepageImage.jpg create mode 100644 public/images/org_custom/icons_por.png create mode 100644 public/images/org_custom/por_img.jpg create mode 100644 public/images/org_custom/porlogo.png diff --git a/app/views/organizations/_org_custom_header.html.erb b/app/views/organizations/_org_custom_header.html.erb index 166b4991e..4d00550a8 100644 --- a/app/views/organizations/_org_custom_header.html.erb +++ b/app/views/organizations/_org_custom_header.html.erb @@ -1,6 +1,6 @@
        - + <%= image_tag(url_to_avatar(@organization), width:"67", height: "61", :id => 'nh_user_tx', :class => "por_logo fl ", :target => "_blank") %> <% if User.current.logged? %> diff --git a/app/views/organizations/_org_students_list.html.erb b/app/views/organizations/_org_students_list.html.erb new file mode 100644 index 000000000..4f768d29f --- /dev/null +++ b/app/views/organizations/_org_students_list.html.erb @@ -0,0 +1,45 @@ +<% org_students.each do |org_student| %> + <% school = School.where("id =?", org_student.school_id).first %> +
        +
        +
        + <%= link_to image_tag(url_to_avatar(org_student), :width => "90", :height => "90"), user_url_in_org(org_student), :alt => "用户头像" %> +
        +
        +
        <%=link_to org_student.try(:realname).nil? ? org_student.try(:login) : org_student.try(:realname), user_url_in_org(org_student) %> + <% unless school.nil? %> + <%= school.name %> + <% end %> +
        +
        +
        <%= org_student.courses.count %>
        +
        课程数
        +
        +
        +
        +
        <%= org_teacher_resource_count(org_student) %>
        +
        资源数
        +
        +
        + <% if User.current.admin_of_org?(@organization) %> + <%= org_student.excellent_student ==0 ? "设为学霸" : "取消设置" %> + <% end %> +
        +
        +
        +<% end %> + + \ No newline at end of file diff --git a/app/views/organizations/_setting_excellent_students.html.erb b/app/views/organizations/_setting_excellent_students.html.erb new file mode 100644 index 000000000..696d85378 --- /dev/null +++ b/app/views/organizations/_setting_excellent_students.html.erb @@ -0,0 +1,12 @@ +<% if @organization.allow_set_teachers && !org_subfield_had_created?(@organization, "Comptec") %> +
      • + + +
      • +<% end %> +<% if User.current.admin? && !org_subfield_had_created?(@organization, "Compstu") %> +
      • + + +
      • +<% end %> \ No newline at end of file diff --git a/app/views/organizations/_subfield_list.html.erb b/app/views/organizations/_subfield_list.html.erb index f16e53b0e..9307f3eb0 100644 --- a/app/views/organizations/_subfield_list.html.erb +++ b/app/views/organizations/_subfield_list.html.erb @@ -92,7 +92,7 @@ <%= link_to "删除", org_subfield_path(field), :method => 'delete', :remote => true, :confirm => "您确定删除吗?", :class => "linkGrey fr ml5 mr5" %> | 编辑 - <% unless field.field_type == "Resource" || field.field_type == "Comptec" %> + <% unless field.field_type == "Resource" || field.field_type == "Comptec" || field.field_type == "Compstu" %> | diff --git a/app/views/organizations/reset_excellent_teacher.js.erb b/app/views/organizations/reset_excellent_teacher.js.erb index fdf160bc4..8b7c6cc71 100644 --- a/app/views/organizations/reset_excellent_teacher.js.erb +++ b/app/views/organizations/reset_excellent_teacher.js.erb @@ -1 +1 @@ -$("#hide_<%= @ex_teacher.id %>").text("设为名师"); \ No newline at end of file +$("#hide_<%= @ex_teacher.id %>").text(<%= params[:type]== "student" ? "设为学霸" : "设为名师"%>); \ No newline at end of file diff --git a/app/views/organizations/setting.html.erb b/app/views/organizations/setting.html.erb index 0c8af8471..1920213cb 100644 --- a/app/views/organizations/setting.html.erb +++ b/app/views/organizations/setting.html.erb @@ -87,11 +87,11 @@  允许游客下载 <%= @organization.is_public? ? "" : "(私有组织不允许游客下载资源)" %>
        - <% if User.current.admin? %> -
        允许设置名师榜 : - class="ml3" /> -
        - <% end %> + + + + + 保存 <% end %>
        @@ -162,8 +162,8 @@ -
        - <%= render :partial => 'organizations/setting_excellent_teachers' %> +
        + <%= render :partial => 'organizations/org_custom_admin' %>
      • 新增
      • diff --git a/app/views/organizations/students.html.erb b/app/views/organizations/students.html.erb new file mode 100644 index 000000000..770967210 --- /dev/null +++ b/app/views/organizations/students.html.erb @@ -0,0 +1,30 @@ +
        +
        + <% if @type == "famous" %> + 学霸列表 + <% else %> + <%= @field.name %> + <% end %> +
        +
        +
        + +
        + <%=render 'organizations/org_students_list', :org_students => @org_students %> +
        +
        +
          + <%= pagination_links_full @atta_pages, @students_count, :per_page_links => false, :flag => true %> +
        +
        +
        \ No newline at end of file diff --git a/app/views/organizations/students.js.erb b/app/views/organizations/students.js.erb new file mode 100644 index 000000000..c65f8f861 --- /dev/null +++ b/app/views/organizations/students.js.erb @@ -0,0 +1,3 @@ +$("#org_students_list").html('<%= escape_javascript( render :partial => 'organizations/org_students_list', :locals => {:org_students => @org_students})%>'); +$("#pages").html('<%= pagination_links_full @atta_pages, @students_count, :per_page_links => false, :remote => @is_remote, :flag => true %>'); +$("#org_student_search").attr('href','<%= students_organization_path(@organization, :type => @type) %>'); \ No newline at end of file diff --git a/config/routes.rb b/config/routes.rb index 2863d49a4..71b8f298e 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -77,6 +77,7 @@ RedmineApp::Application.routes.draw do get 'more_org_courses' get 'search_courses' get 'teachers' + get 'students' post 'join_course_menu' post 'join_courses' get 'search_projects' @@ -94,7 +95,9 @@ RedmineApp::Application.routes.draw do post 'hide_org_subfield' post 'show_org_subfield' post 'set_excellent_teacher' + post 'set_excellent_student' post 'reset_excellent_teacher' + post 'reset_excellent_student' post 'agree_apply_subdomain' end end diff --git a/db/migrate/20160531021244_add_excellent_student_to_user.rb b/db/migrate/20160531021244_add_excellent_student_to_user.rb new file mode 100644 index 000000000..08378bca5 --- /dev/null +++ b/db/migrate/20160531021244_add_excellent_student_to_user.rb @@ -0,0 +1,5 @@ +class AddExcellentStudentToUser < ActiveRecord::Migration + def change + add_column :users, :excellent_student, :integer, :default => false + end +end diff --git a/db/schema.rb b/db/schema.rb index 7462c304e..f7d61f57c 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended to check this file into your version control system. -ActiveRecord::Schema.define(:version => 20160523085440) do +ActiveRecord::Schema.define(:version => 20160531021244) do create_table "activities", :force => true do |t| t.integer "act_id", :null => false @@ -2426,6 +2426,7 @@ ActiveRecord::Schema.define(:version => 20160523085440) do t.integer "gid" t.integer "visits", :default => 0 t.integer "excellent_teacher", :default => 0 + t.integer "excellent_student", :default => 0 end add_index "users", ["auth_source_id"], :name => "index_users_on_auth_source_id" From 19de82359a7db0686cbea05a16a0418860885a3b Mon Sep 17 00:00:00 2001 From: txz Date: Tue, 31 May 2016 10:53:11 +0800 Subject: [PATCH 196/668] =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E8=BF=9B=E5=85=A5?= =?UTF-8?q?=E8=AF=A6=E6=83=85=E9=A1=B5=E9=9D=A2=E6=98=BE=E7=A4=BA=E5=8A=A0?= =?UTF-8?q?=E8=BD=BD=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/assets/wechat/blog_detail.html | 1 + public/assets/wechat/course_discussion.html | 1 + public/assets/wechat/course_notice.html | 1 + public/assets/wechat/homework_detail.html | 1 + public/assets/wechat/issue_detail.html | 1 + public/assets/wechat/jour_message_detail.html | 1 + public/assets/wechat/project_discussion.html | 1 + 7 files changed, 7 insertions(+) diff --git a/public/assets/wechat/blog_detail.html b/public/assets/wechat/blog_detail.html index fa3a9f341..bd398c988 100644 --- a/public/assets/wechat/blog_detail.html +++ b/public/assets/wechat/blog_detail.html @@ -1,5 +1,6 @@ +
        diff --git a/public/assets/wechat/course_discussion.html b/public/assets/wechat/course_discussion.html index d1b65e629..46ef95cfa 100644 --- a/public/assets/wechat/course_discussion.html +++ b/public/assets/wechat/course_discussion.html @@ -1,5 +1,6 @@ +
        diff --git a/public/assets/wechat/course_notice.html b/public/assets/wechat/course_notice.html index c10763bf8..a4bca9809 100644 --- a/public/assets/wechat/course_notice.html +++ b/public/assets/wechat/course_notice.html @@ -1,5 +1,6 @@ +
        diff --git a/public/assets/wechat/homework_detail.html b/public/assets/wechat/homework_detail.html index 2783bd317..0671da049 100644 --- a/public/assets/wechat/homework_detail.html +++ b/public/assets/wechat/homework_detail.html @@ -1,5 +1,6 @@ +
        diff --git a/public/assets/wechat/issue_detail.html b/public/assets/wechat/issue_detail.html index 035a7c98d..0be7ba5ac 100644 --- a/public/assets/wechat/issue_detail.html +++ b/public/assets/wechat/issue_detail.html @@ -1,5 +1,6 @@ +
        diff --git a/public/assets/wechat/jour_message_detail.html b/public/assets/wechat/jour_message_detail.html index 5ccbf6248..9b1494abe 100644 --- a/public/assets/wechat/jour_message_detail.html +++ b/public/assets/wechat/jour_message_detail.html @@ -1,4 +1,5 @@ +
        diff --git a/public/assets/wechat/project_discussion.html b/public/assets/wechat/project_discussion.html index be639c1a0..69625c0c5 100644 --- a/public/assets/wechat/project_discussion.html +++ b/public/assets/wechat/project_discussion.html @@ -1,5 +1,6 @@ +
        From 79c106a1c6bd5f0e3d9e698304749d58a0315f16 Mon Sep 17 00:00:00 2001 From: cxt Date: Tue, 31 May 2016 11:04:20 +0800 Subject: [PATCH 197/668] =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E5=8A=A8=E6=80=81?= =?UTF-8?q?=E7=9A=84=E7=BC=BA=E5=A4=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/mobile/apis/activities.rb | 20 ++------------------ public/assets/wechat/activities.html | 2 +- 2 files changed, 3 insertions(+), 19 deletions(-) diff --git a/app/api/mobile/apis/activities.rb b/app/api/mobile/apis/activities.rb index 2275a550e..af17e0f44 100644 --- a/app/api/mobile/apis/activities.rb +++ b/app/api/mobile/apis/activities.rb @@ -13,28 +13,12 @@ module Mobile end post do user = UserWechat.find_by_openid(params[:openid]).user -=begin - shield_project_ids = ShieldActivity.where("container_type='User' and container_id=#{user.id} and shield_type='Project'").map(&:shield_id) - shield_course_ids = ShieldActivity.where("container_type='User' and container_id=#{user.id} and shield_type='Course'").map(&:shield_id) - page = params[:page] ? params[:page] : 0 - user_project_ids = (user.projects.visible.map{|project| project.id}-shield_project_ids).empty? ? "(-1)" : "(" + (user.projects.visible.map{|project| project.id}-shield_project_ids).join(",") + ")" - user_course_ids = (user.courses.visible.map{|course| course.id}-shield_course_ids).empty? ? "(-1)" : "(" + (user.courses.visible.map{|course| course.id}-shield_course_ids).join(",") + ")" - course_types = "('Message','News','HomeworkCommon','Poll','Course')" - project_types = "('Message','Issue','ProjectCreateInfo')" - principal_types = "JournalsForMessage" - - blog_ids = "("+user.blog.id.to_s+","+((User.watched_by(user.id).count == 0 )? '0' :User.watched_by(user.id).map{|u| u.blog.id}.join(','))+")" - activities = UserActivity.where("(container_type = 'Project' and container_id in #{user_project_ids} and act_type in #{project_types})" + - "or (container_type = 'Course' and container_id in #{user_course_ids} and act_type in #{course_types}) "+ - "or (container_type = 'Principal' and act_type= '#{principal_types}' and container_id = #{user.id}) " + - "or (container_type = 'Blog' and act_type= 'BlogComment' and container_id in #{blog_ids})").order('updated_at desc') -=end shield_project_ids = ShieldActivity.select("shield_id").where("container_type='User' and container_id=#{user.id} and shield_type='Project'").map(&:shield_id) shield_course_ids = ShieldActivity.select("shield_id").where("container_type='User' and container_id=#{user.id} and shield_type='Course'").map(&:shield_id) page = params[:page] ? params[:page] : 0 - user_project_ids = (user.projects.visible.map{|project| project.id}-shield_project_ids).empty? ? "(-1)" : "(" + (user.projects.visible.map{|project| project.id}-shield_project_ids).join(",") + ")" - user_course_ids = (user.courses.visible.where("is_delete = 0").map{|course| course.id}-shield_course_ids).empty? ? "(-1)" : "(" + (user.courses.visible.where("is_delete = 0").map{|course| course.id}-shield_course_ids).join(",") + ")" + user_project_ids = (user.projects.where("status = 1").map{|project| project.id}-shield_project_ids).empty? ? "(-1)" : "(" + (user.projects.where("status = 1").map{|project| project.id}-shield_project_ids).join(",") + ")" + user_course_ids = (user.courses.where("is_delete = 0").map{|course| course.id}-shield_course_ids).empty? ? "(-1)" : "(" + (user.courses.where("is_delete = 0").map{|course| course.id}-shield_course_ids).join(",") + ")" course_types = "('Message','News','HomeworkCommon','Poll','Course')" project_types = "('Message','Issue','Project')" principal_types = "JournalsForMessage" diff --git a/public/assets/wechat/activities.html b/public/assets/wechat/activities.html index 1bab8dfb4..30b4dafaa 100644 --- a/public/assets/wechat/activities.html +++ b/public/assets/wechat/activities.html @@ -175,7 +175,7 @@
        -
        +
        From c369b271a0d967dd2edb309ddbf91d27930c8f3f Mon Sep 17 00:00:00 2001 From: huang Date: Tue, 31 May 2016 11:24:47 +0800 Subject: [PATCH 198/668] =?UTF-8?q?=E7=BB=84=E7=BB=87=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E5=91=98=E9=85=8D=E7=BD=AE=E5=90=8E=E7=9A=84=E6=9D=83=E9=99=90?= =?UTF-8?q?=E6=8E=A7=E5=88=B6=E5=8F=8A=E5=B1=80=E9=83=A8=E5=88=B7=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/helpers/organizations_helper.rb | 8 ++++++++ app/views/org_subfields/create.js.erb | 3 +-- app/views/org_subfields/destroy.js.erb | 5 ++--- app/views/org_subfields/update.js.erb | 3 ++- app/views/org_subfields/update_priority.js.erb | 4 ++-- app/views/organizations/_org_left_subfield_list.html.erb | 8 +++++--- app/views/organizations/setting.html.erb | 2 +- app/views/sub_domains/create.js.erb | 2 +- app/views/sub_domains/destroy.js.erb | 2 +- app/views/sub_domains/domain_update_priority.js.erb | 2 +- app/views/sub_domains/update.js.erb | 3 ++- 11 files changed, 26 insertions(+), 16 deletions(-) diff --git a/app/helpers/organizations_helper.rb b/app/helpers/organizations_helper.rb index 7298841b1..4a712c0f0 100644 --- a/app/helpers/organizations_helper.rb +++ b/app/helpers/organizations_helper.rb @@ -132,6 +132,14 @@ module OrganizationsHelper end end + # 系统栏目只有管理员才能看到 + def subfield_to_addmin?(org) + if User.current.admin? + @organization.org_subfields.order("priority") + else + @organization.org_subfields.select { |os| (os.field_type != "Comptec" && os.field_type != "Compstu") }.sort_by {|os| os.priority} + end + end def get_subfield_acts field org_subfield = OrgSubfield.find(field.id) diff --git a/app/views/org_subfields/create.js.erb b/app/views/org_subfields/create.js.erb index f1661ba87..952ed7b2c 100644 --- a/app/views/org_subfields/create.js.erb +++ b/app/views/org_subfields/create.js.erb @@ -1,7 +1,6 @@ <% if @res %> $("#org_subfield_list").html(""); - $("#org_subfield_list").html("<%= escape_javascript(render :partial => 'organizations/subfield_list', - :locals => {:subfields => @organization.org_subfields.order("priority") }) %>"); + $("#org_subfield_list").html("<%= escape_javascript(render :partial => 'organizations/subfield_list', :locals => {:subfields => subfield_to_addmin?(@organization)}) %>"); $("#sub_field_left_lists").html(""); $("#sub_field_left_lists").html("<%= escape_javascript(render :partial => 'organizations/org_left_subfield_list', :locals => {:organization => @organization}) %>"); $("#org_custom_admin").html("<%= escape_javascript(render :partial => 'organizations/org_custom_admin') %>"); diff --git a/app/views/org_subfields/destroy.js.erb b/app/views/org_subfields/destroy.js.erb index 60ce47fe6..f61e1c100 100644 --- a/app/views/org_subfields/destroy.js.erb +++ b/app/views/org_subfields/destroy.js.erb @@ -1,6 +1,5 @@ $("#org_subfield_list").html(""); -$("#org_subfield_list").html("<%= escape_javascript(render :partial => 'organizations/subfield_list', - :locals => {:subfields => @organization.org_subfields.order("priority") }) %>"); +$("#org_subfield_list").html("<%= escape_javascript(render :partial => 'organizations/subfield_list', :locals => {:subfields => subfield_to_addmin?(@organization)}) %>"); $("#sub_field_left_lists").html(""); $("#sub_field_left_lists").html("<%= escape_javascript(render :partial => 'organizations/org_left_subfield_list', :locals => {:organization => @organization}) %>"); -$("#org_custom_admin").html("<%= escape_javascript(render :partial => 'organizations/org_custom_admin') %>"); \ No newline at end of file +$("#org_custom_admin").html("<%= escape_javascript(render :partial => 'organizations/org_custom_admin') %>"); diff --git a/app/views/org_subfields/update.js.erb b/app/views/org_subfields/update.js.erb index 06982ccfc..c030b7767 100644 --- a/app/views/org_subfields/update.js.erb +++ b/app/views/org_subfields/update.js.erb @@ -1,3 +1,4 @@ $("#subfield_show_<%= @subfield.id %>").html("<%= @subfield.name %>"); $("#sub_field_left_lists").html(""); -$("#sub_field_left_lists").html("<%= escape_javascript(render :partial => 'organizations/org_left_subfield_list', :locals => {:organization => @organization}) %>"); \ No newline at end of file +$("#sub_field_left_lists").html("<%= escape_javascript(render :partial => 'organizations/org_left_subfield_list', :locals => {:organization => @organization}) %>"); +$("#org_subfield_list").html("<%= escape_javascript(render :partial => 'organizations/subfield_list', :locals => {:subfields => subfield_to_addmin?(@organization)}) %>"); \ No newline at end of file diff --git a/app/views/org_subfields/update_priority.js.erb b/app/views/org_subfields/update_priority.js.erb index 475649aac..043e8acbd 100644 --- a/app/views/org_subfields/update_priority.js.erb +++ b/app/views/org_subfields/update_priority.js.erb @@ -1,2 +1,2 @@ -$("#org_subfield_list").html("<%= escape_javascript(render :partial => 'organizations/subfield_list',:locals => {:subfields => @organization.org_subfields.order("priority")}) %>"); -$("#sub_field_left_lists").html("<%= escape_javascript(render :partial => 'organizations/org_left_subfield_list', :locals => {:organization => @organization}) %>"); \ No newline at end of file +$("#org_subfield_list").html("<%= escape_javascript(render :partial => 'organizations/subfield_list', :locals => {:subfields => subfield_to_addmin?(@organization)}) %>"); +$("#sub_field_left_lists").html("<%= escape_javascript(render :partial => 'organizations/org_left_subfield_list', :locals => {:organization => @organization}) %>"); diff --git a/app/views/organizations/_org_left_subfield_list.html.erb b/app/views/organizations/_org_left_subfield_list.html.erb index 4340213a4..12edd4201 100644 --- a/app/views/organizations/_org_left_subfield_list.html.erb +++ b/app/views/organizations/_org_left_subfield_list.html.erb @@ -101,13 +101,15 @@ <%= link_to "#{field.name}", show_org_subfield_organization_path(:id => organization.id, :sub_dir_name => field.subfield_subdomain_dir.name), :class => "homepageMenuText homepageMenuControl hidden", :onclick => "$('#homepageLeftMenuPost').slideToggle();" %> <% end %> <% else %> - <% if field.field_type == "Comptec" %> + <% if field.field_type == "Comptec" && User.current.admin? %> <%= link_to "#{field.name}", teachers_organization_path(organization, :org_subfield_id => field.id), :class => "homepageMenuText homepageMenuControl hidden", :onclick => "$('#homepageLeftMenuPost').slideToggle();" %> - <% else %> + <% elsif field.field_type == "Compstu" && User.current.admin? %> + <%= link_to "#{field.name}", students_organization_path(organization, :org_subfield_id => field.id), :class => "homepageMenuText homepageMenuControl hidden", :onclick => "$('#homepageLeftMenuPost').slideToggle();" %> + <% elsif field.field_type != "Comptec" && field.field_type != "Compstu" %> <%= link_to "#{field.name}", organization_path(organization, :org_subfield_id => field.id), :class => "homepageMenuText homepageMenuControl hidden", :onclick => "$('#homepageLeftMenuPost').slideToggle();" %> <% end %> <% end %> - <% if User.current.logged? and User.current.admin_of_org?(organization) && field.field_type != "Comptec" %> + <% if User.current.logged? and User.current.admin_of_org?(organization) && field.field_type != "Comptec" && field.field_type != "Compstu" %> <%=link_to "", new_organization_org_document_comment_path(organization, :field_id => field.id), :method => "get", :class => "homepageMenuSetting fr", :title => "发布帖子" %> <% end %>
        diff --git a/app/views/organizations/setting.html.erb b/app/views/organizations/setting.html.erb index 1920213cb..06420363a 100644 --- a/app/views/organizations/setting.html.erb +++ b/app/views/organizations/setting.html.erb @@ -172,7 +172,7 @@
        - <%= render :partial => 'organizations/subfield_list', :locals => {:subfields => @organization.org_subfields.order("priority")} %> + <%= render :partial => 'organizations/subfield_list', :locals => {:subfields => subfield_to_addmin?(@organization)} %>
        diff --git a/app/views/sub_domains/create.js.erb b/app/views/sub_domains/create.js.erb index 0990e35de..d793efd6e 100644 --- a/app/views/sub_domains/create.js.erb +++ b/app/views/sub_domains/create.js.erb @@ -1,6 +1,6 @@ <% if @res %> $("#org_subfield_list").html(""); -$("#org_subfield_list").html("<%= escape_javascript(render :partial => 'organizations/subfield_list', :locals => {:subfields => @organization.org_subfields.order("priority") }) %>"); +$("#org_subfield_list").html("<%= escape_javascript(render :partial => 'organizations/subfield_list', :locals => {:subfields => subfield_to_addmin?(@organization)}) %>"); $("#sub_field_left_lists").html(""); $("#sub_field_left_lists").html("<%= escape_javascript(render :partial => 'organizations/org_left_subfield_list', :locals => {:organization => @organization}) %>"); <% end %> diff --git a/app/views/sub_domains/destroy.js.erb b/app/views/sub_domains/destroy.js.erb index 913c400f7..4d8ef21de 100644 --- a/app/views/sub_domains/destroy.js.erb +++ b/app/views/sub_domains/destroy.js.erb @@ -1,4 +1,4 @@ $("#org_subfield_list").html(""); -$("#org_subfield_list").html("<%= escape_javascript(render :partial => 'organizations/subfield_list', :locals => {:subfields => @organization.org_subfields.order("priority") }) %>"); +$("#org_subfield_list").html("<%= escape_javascript(render :partial => 'organizations/subfield_list', :locals => {:subfields => subfield_to_addmin?(@organization)}) %>"); $("#sub_field_left_lists").html(""); $("#sub_field_left_lists").html("<%= escape_javascript(render :partial => 'organizations/org_left_subfield_list', :locals => {:organization => @organization}) %>"); \ No newline at end of file diff --git a/app/views/sub_domains/domain_update_priority.js.erb b/app/views/sub_domains/domain_update_priority.js.erb index 475649aac..e4de7c931 100644 --- a/app/views/sub_domains/domain_update_priority.js.erb +++ b/app/views/sub_domains/domain_update_priority.js.erb @@ -1,2 +1,2 @@ -$("#org_subfield_list").html("<%= escape_javascript(render :partial => 'organizations/subfield_list',:locals => {:subfields => @organization.org_subfields.order("priority")}) %>"); +$("#org_subfield_list").html("<%= escape_javascript(render :partial => 'organizations/subfield_list', :locals => {:subfields => subfield_to_addmin?(@organization)}) %>"); $("#sub_field_left_lists").html("<%= escape_javascript(render :partial => 'organizations/org_left_subfield_list', :locals => {:organization => @organization}) %>"); \ No newline at end of file diff --git a/app/views/sub_domains/update.js.erb b/app/views/sub_domains/update.js.erb index 02810eee7..2c0af9c42 100644 --- a/app/views/sub_domains/update.js.erb +++ b/app/views/sub_domains/update.js.erb @@ -1,3 +1,4 @@ $("#subsubdomain_show_<%= @subdomain.id %>").html("<%= @subdomain.name %>"); $("#sub_field_left_lists").html(""); -$("#sub_field_left_lists").html("<%= escape_javascript(render :partial => 'organizations/org_left_subfield_list', :locals => {:organization => @organization}) %>"); \ No newline at end of file +$("#sub_field_left_lists").html("<%= escape_javascript(render :partial => 'organizations/org_left_subfield_list', :locals => {:organization => @organization}) %>"); +$("#org_subfield_list").html("<%= escape_javascript(render :partial => 'organizations/subfield_list', :locals => {:subfields => subfield_to_addmin?(@organization)}) %>"); \ No newline at end of file From 8f897cbf89a5395727e985628d7346c3f77dc096 Mon Sep 17 00:00:00 2001 From: huang Date: Tue, 31 May 2016 13:47:05 +0800 Subject: [PATCH 199/668] =?UTF-8?q?=E7=BB=84=E7=BB=87=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E5=91=98=E6=A8=A1=E5=BC=8F=EF=BC=8C=E4=BA=8C=E7=BA=A7=E7=9B=AE?= =?UTF-8?q?=E5=BD=95=E5=B1=80=E9=83=A8=E5=88=B7=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/sub_domains_controller.rb | 3 ++ .../_org_left_subfield_list.html.erb | 29 ++++++++++++++++++- app/views/organizations/setting.html.erb | 2 +- app/views/sub_domains/_new.html.erb | 9 ------ app/views/sub_domains/create.js.erb | 3 -- 5 files changed, 32 insertions(+), 14 deletions(-) diff --git a/app/controllers/sub_domains_controller.rb b/app/controllers/sub_domains_controller.rb index e32935789..438b67eec 100644 --- a/app/controllers/sub_domains_controller.rb +++ b/app/controllers/sub_domains_controller.rb @@ -18,6 +18,9 @@ class SubDomainsController < ApplicationController else @res = false end + respond_to do |format| + format.js + end end def update diff --git a/app/views/organizations/_org_left_subfield_list.html.erb b/app/views/organizations/_org_left_subfield_list.html.erb index 12edd4201..b51b57afb 100644 --- a/app/views/organizations/_org_left_subfield_list.html.erb +++ b/app/views/organizations/_org_left_subfield_list.html.erb @@ -91,7 +91,34 @@ <% end %> <% else %>
        - <% if field.field_type == "Post" || field.field_type == "Complex" || field.field_type == "Compstu" || field.field_type == "Comptec" %> + <% if field.field_type == "Post" || field.field_type == "Complex" %> +
        + + <% if !field.subfield_subdomain_dir.nil? %> + <% if !request.local? and Secdomain.where("sub_type=2 and pid=?", organization.id).count > 0 and Secdomain.where("sub_type=2 and pid=?", organization.id).map(&:subname).include?(request.subdomain) %> + <%= link_to "#{field.name}", show_subfield_without_id_path(:sub_dir_name => field.subfield_subdomain_dir.name), :class => "homepageMenuText homepageMenuControl hidden", :onclick => "$('#homepageLeftMenuPost').slideToggle();" %> + <% else %> + <%= link_to "#{field.name}", show_org_subfield_organization_path(:id => organization.id, :sub_dir_name => field.subfield_subdomain_dir.name), :class => "homepageMenuText homepageMenuControl hidden", :onclick => "$('#homepageLeftMenuPost').slideToggle();" %> + <% end %> + <% else %> + <%= link_to "#{field.name}", organization_path(organization, :org_subfield_id => field.id), :class => "homepageMenuText homepageMenuControl hidden", :onclick => "$('#homepageLeftMenuPost').slideToggle();" %> + <% end %> + <% if User.current.logged? and User.current.admin_of_org?(organization) %> + <%=link_to "", new_organization_org_document_comment_path(organization, :field_id => field.id), :method => "get", :class => "homepageMenuSetting fr", :title => "发布帖子" %> + <% end %> +
        + + + <% unless (field.sub_domains.count == 0 || !if_hidden_subdomain(field)) %> +
      • + +
      • + <% end %> + <% elsif field.field_type == "Comptec" %>
        <% if !field.subfield_subdomain_dir.nil? %> diff --git a/app/views/organizations/setting.html.erb b/app/views/organizations/setting.html.erb index 06420363a..775bc7e6a 100644 --- a/app/views/organizations/setting.html.erb +++ b/app/views/organizations/setting.html.erb @@ -184,7 +184,7 @@ function add_org_subfield_subdomain(){ if ($("#subfield_name_subdomain").val().trim() != "") $("#add_subfield_form_subdomain").submit(); - $("#org_subfield_list").html('<%= escape_javascript(render(:partial => 'organizations/subfield_list', :locals => {:subfields => @organization.org_subfields.order("priority")} )) %>'); + $("#org_subfield_list").html('<%= escape_javascript(render(:partial => 'organizations/subfield_list', :locals => {:subfields => subfield_to_addmin?(@organization)})) %>'); } var $is_exist = false; function apply_subdomain(id, domain){ diff --git a/app/views/sub_domains/_new.html.erb b/app/views/sub_domains/_new.html.erb index 25b660750..865eae785 100644 --- a/app/views/sub_domains/_new.html.erb +++ b/app/views/sub_domains/_new.html.erb @@ -9,10 +9,6 @@ - - - -
      • @@ -20,8 +16,3 @@ <% end %>
        - - - \ No newline at end of file diff --git a/app/views/sub_domains/create.js.erb b/app/views/sub_domains/create.js.erb index d793efd6e..8c7b7f64a 100644 --- a/app/views/sub_domains/create.js.erb +++ b/app/views/sub_domains/create.js.erb @@ -1,8 +1,5 @@ <% if @res %> -$("#org_subfield_list").html(""); $("#org_subfield_list").html("<%= escape_javascript(render :partial => 'organizations/subfield_list', :locals => {:subfields => subfield_to_addmin?(@organization)}) %>"); $("#sub_field_left_lists").html(""); $("#sub_field_left_lists").html("<%= escape_javascript(render :partial => 'organizations/org_left_subfield_list', :locals => {:organization => @organization}) %>"); <% end %> -$("#subfield_name").val(""); -$("#sub_dir").val(""); \ No newline at end of file From f166a951f3665c7edbdaed54927f341f258a1ba8 Mon Sep 17 00:00:00 2001 From: txz Date: Tue, 31 May 2016 13:49:39 +0800 Subject: [PATCH 200/668] =?UTF-8?q?=E8=AF=A6=E6=83=85=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E6=96=87=E5=AD=97=E6=A0=BC=E5=BC=8F=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/assets/wechat/blog_detail.html | 4 +--- public/assets/wechat/course_discussion.html | 4 +--- public/assets/wechat/course_notice.html | 4 +--- public/assets/wechat/homework_detail.html | 12 +++++------- public/assets/wechat/issue_detail.html | 12 +++++------- public/assets/wechat/jour_message_detail.html | 4 +--- public/assets/wechat/project_discussion.html | 4 +--- 7 files changed, 15 insertions(+), 29 deletions(-) diff --git a/public/assets/wechat/blog_detail.html b/public/assets/wechat/blog_detail.html index bd398c988..4e0fb3577 100644 --- a/public/assets/wechat/blog_detail.html +++ b/public/assets/wechat/blog_detail.html @@ -8,9 +8,7 @@
        {{blog.title}}
        {{blog.user.realname}}发表博客
        -
        -
        -
        +
        {{blog.created_at}}
        diff --git a/public/assets/wechat/course_discussion.html b/public/assets/wechat/course_discussion.html index 46ef95cfa..0d7beb9e6 100644 --- a/public/assets/wechat/course_discussion.html +++ b/public/assets/wechat/course_discussion.html @@ -15,9 +15,7 @@ 来   源: {{discussion.course_project_name}}  |  课程问答区 -
        -
        -
        +
        {{discussion.created_on}}
        diff --git a/public/assets/wechat/course_notice.html b/public/assets/wechat/course_notice.html index a4bca9809..22906af39 100644 --- a/public/assets/wechat/course_notice.html +++ b/public/assets/wechat/course_notice.html @@ -14,9 +14,7 @@ 来   源: {{news.course_name}}  |  课程通知 -
        -
        -
        +
        {{news.created_on}}
        diff --git a/public/assets/wechat/homework_detail.html b/public/assets/wechat/homework_detail.html index 0671da049..b822f9866 100644 --- a/public/assets/wechat/homework_detail.html +++ b/public/assets/wechat/homework_detail.html @@ -16,13 +16,11 @@ 来   源: {{homework.course_name}}  |  课程作业 -
        -
        - 迟交扣分:{{homework.late_penalty}}分
        - 缺评扣分:{{homework.absence_penalty}}分/作品
        - 匿评开启时间:{{homework.evaluation_start}}
        - 匿评关闭时间:{{homework.evaluation_end}} -
        +
        + 迟交扣分:{{homework.late_penalty}}分
        + 缺评扣分:{{homework.absence_penalty}}分/作品
        + 匿评开启时间:{{homework.evaluation_start}}
        + 匿评关闭时间:{{homework.evaluation_end}}
        {{homework.publish_time}}
        diff --git a/public/assets/wechat/issue_detail.html b/public/assets/wechat/issue_detail.html index 0be7ba5ac..28b02c5aa 100644 --- a/public/assets/wechat/issue_detail.html +++ b/public/assets/wechat/issue_detail.html @@ -14,13 +14,11 @@ 来   源: {{issue.project_name}}  |  项目问题 -
        -
        - 状   态:{{issue.issue_status}}
        - 优先级:{{issue.issue_priority}}
        - 指派给:{{issue.issue_assigned_to}}
        - 完成度:{{issue.done_ratio}}%
        -
        +
        + 状   态:{{issue.issue_status}}
        + 优先级:{{issue.issue_priority}}
        + 指派给:{{issue.issue_assigned_to}}
        + 完成度:{{issue.done_ratio}}%
        {{issue.created_on}}
        diff --git a/public/assets/wechat/jour_message_detail.html b/public/assets/wechat/jour_message_detail.html index 9b1494abe..a4ad7a0dd 100644 --- a/public/assets/wechat/jour_message_detail.html +++ b/public/assets/wechat/jour_message_detail.html @@ -7,9 +7,7 @@
        {{message.user.realname}}给您留言了
        {{message.created_on}}
        -
        -
        -
        +
        diff --git a/public/assets/wechat/project_discussion.html b/public/assets/wechat/project_discussion.html index 69625c0c5..4b86eaf28 100644 --- a/public/assets/wechat/project_discussion.html +++ b/public/assets/wechat/project_discussion.html @@ -14,9 +14,7 @@ 来   源: {{discussion.course_project_name}}  |  项目讨论区 -
        -
        -
        +
        {{discussion.created_on}}
        From 6bfe344cbf8cfe0cf6b72af36590173f7a391c0b Mon Sep 17 00:00:00 2001 From: huang Date: Tue, 31 May 2016 13:59:29 +0800 Subject: [PATCH 201/668] =?UTF-8?q?=E7=BB=84=E7=BB=87=E6=A8=A1=E5=BC=8F?= =?UTF-8?q?=E4=B8=80=E5=B7=A6=E4=BE=A7=E6=9D=83=E9=99=90=E6=8E=A7=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../_org_left_subfield_list.html.erb | 38 +++---------------- 1 file changed, 6 insertions(+), 32 deletions(-) diff --git a/app/views/organizations/_org_left_subfield_list.html.erb b/app/views/organizations/_org_left_subfield_list.html.erb index b51b57afb..e621df8bd 100644 --- a/app/views/organizations/_org_left_subfield_list.html.erb +++ b/app/views/organizations/_org_left_subfield_list.html.erb @@ -112,46 +112,20 @@ <%= render :partial => 'organizations/org_subdomain',:locals=>{:subdomains => field.sub_domains.reorder('priority').uniq, :org_subfield_id => field.id} %>
        - <% unless (field.sub_domains.count == 0 || !if_hidden_subdomain(field)) %>
      • <% end %> - <% elsif field.field_type == "Comptec" %> + <% elsif field.field_type == "Comptec" && User.current.admin? %>
        - - <% if !field.subfield_subdomain_dir.nil? %> - <% if !request.local? and Secdomain.where("sub_type=2 and pid=?", organization.id).count > 0 and Secdomain.where("sub_type=2 and pid=?", organization.id).map(&:subname).include?(request.subdomain) %> - <%= link_to "#{field.name}", show_subfield_without_id_path(:sub_dir_name => field.subfield_subdomain_dir.name), :class => "homepageMenuText homepageMenuControl hidden", :onclick => "$('#homepageLeftMenuPost').slideToggle();" %> - <% else %> - <%= link_to "#{field.name}", show_org_subfield_organization_path(:id => organization.id, :sub_dir_name => field.subfield_subdomain_dir.name), :class => "homepageMenuText homepageMenuControl hidden", :onclick => "$('#homepageLeftMenuPost').slideToggle();" %> - <% end %> - <% else %> - <% if field.field_type == "Comptec" && User.current.admin? %> - <%= link_to "#{field.name}", teachers_organization_path(organization, :org_subfield_id => field.id), :class => "homepageMenuText homepageMenuControl hidden", :onclick => "$('#homepageLeftMenuPost').slideToggle();" %> - <% elsif field.field_type == "Compstu" && User.current.admin? %> - <%= link_to "#{field.name}", students_organization_path(organization, :org_subfield_id => field.id), :class => "homepageMenuText homepageMenuControl hidden", :onclick => "$('#homepageLeftMenuPost').slideToggle();" %> - <% elsif field.field_type != "Comptec" && field.field_type != "Compstu" %> - <%= link_to "#{field.name}", organization_path(organization, :org_subfield_id => field.id), :class => "homepageMenuText homepageMenuControl hidden", :onclick => "$('#homepageLeftMenuPost').slideToggle();" %> - <% end %> - <% end %> - <% if User.current.logged? and User.current.admin_of_org?(organization) && field.field_type != "Comptec" && field.field_type != "Compstu" %> - <%=link_to "", new_organization_org_document_comment_path(organization, :field_id => field.id), :method => "get", :class => "homepageMenuSetting fr", :title => "发布帖子" %> - <% end %> + <%= link_to "#{field.name}", teachers_organization_path(organization, :org_subfield_id => field.id), :class => "homepageMenuText homepageMenuControl hidden", :onclick => "$('#homepageLeftMenuPost').slideToggle();" %>
        -
        diff --git a/public/assets/wechat/course_discussion.html b/public/assets/wechat/course_discussion.html index 0d7beb9e6..f02c01ff6 100644 --- a/public/assets/wechat/course_discussion.html +++ b/public/assets/wechat/course_discussion.html @@ -46,7 +46,8 @@
        - + +
        diff --git a/public/assets/wechat/course_notice.html b/public/assets/wechat/course_notice.html index 22906af39..0a85ed089 100644 --- a/public/assets/wechat/course_notice.html +++ b/public/assets/wechat/course_notice.html @@ -45,7 +45,8 @@
        - + +
        diff --git a/public/assets/wechat/homework_detail.html b/public/assets/wechat/homework_detail.html index b822f9866..e416b7313 100644 --- a/public/assets/wechat/homework_detail.html +++ b/public/assets/wechat/homework_detail.html @@ -51,7 +51,8 @@
        - + +
        diff --git a/public/assets/wechat/issue_detail.html b/public/assets/wechat/issue_detail.html index 28b02c5aa..7b5db0afa 100644 --- a/public/assets/wechat/issue_detail.html +++ b/public/assets/wechat/issue_detail.html @@ -49,8 +49,9 @@
        - -
        + + +
        diff --git a/public/assets/wechat/jour_message_detail.html b/public/assets/wechat/jour_message_detail.html index a4ad7a0dd..fada796f8 100644 --- a/public/assets/wechat/jour_message_detail.html +++ b/public/assets/wechat/jour_message_detail.html @@ -37,7 +37,8 @@
        - + +
        diff --git a/public/assets/wechat/project_discussion.html b/public/assets/wechat/project_discussion.html index 4b86eaf28..bd863f5ed 100644 --- a/public/assets/wechat/project_discussion.html +++ b/public/assets/wechat/project_discussion.html @@ -45,7 +45,8 @@
        - + +
        diff --git a/public/javascripts/wechat/app.js b/public/javascripts/wechat/app.js index 8f00a2b96..267fefb43 100644 --- a/public/javascripts/wechat/app.js +++ b/public/javascripts/wechat/app.js @@ -1,10 +1,10 @@ var app = angular.module('wechat', ['ngRoute','ngCookies']); var apiUrl = '/api/v1/'; -var debug = false; //调试标志,如果在本地请置为true +var debug = true; //调试标志,如果在本地请置为true if(debug===true){ - //apiUrl = 'http://localhost:3000/api/v1/'; - apiUrl = 'https://www.trustie.net/api/v1/'; + apiUrl = 'http://localhost:3000/api/v1/'; + //apiUrl = 'https://www.trustie.net/api/v1/'; } app.factory('auth', function($http,$routeParams, $cookies, $q){ diff --git a/public/stylesheets/weui/weixin.css b/public/stylesheets/weui/weixin.css index ba3eac3df..b09c54109 100644 --- a/public/stylesheets/weui/weixin.css +++ b/public/stylesheets/weui/weixin.css @@ -84,3 +84,5 @@ a.underline {text-decoration:underline;} /*帖子锁定样式*/ .locked_btn_cir {background: url("/images/locked.png") 0 0 no-repeat; cursor: default;} + +.bg-grey {background-color:#c1c1c1;} From 80452ceef92553d98fbaf6cc288e7fb29a2ec701 Mon Sep 17 00:00:00 2001 From: txz Date: Tue, 31 May 2016 14:38:55 +0800 Subject: [PATCH 204/668] =?UTF-8?q?app.js=E6=96=87=E4=BB=B6=E6=9B=B4?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/javascripts/wechat/app.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/public/javascripts/wechat/app.js b/public/javascripts/wechat/app.js index 267fefb43..8f00a2b96 100644 --- a/public/javascripts/wechat/app.js +++ b/public/javascripts/wechat/app.js @@ -1,10 +1,10 @@ var app = angular.module('wechat', ['ngRoute','ngCookies']); var apiUrl = '/api/v1/'; -var debug = true; //调试标志,如果在本地请置为true +var debug = false; //调试标志,如果在本地请置为true if(debug===true){ - apiUrl = 'http://localhost:3000/api/v1/'; - //apiUrl = 'https://www.trustie.net/api/v1/'; + //apiUrl = 'http://localhost:3000/api/v1/'; + apiUrl = 'https://www.trustie.net/api/v1/'; } app.factory('auth', function($http,$routeParams, $cookies, $q){ From bb7204846fff4a57a66c8a69eec9c761dd689767 Mon Sep 17 00:00:00 2001 From: huang Date: Tue, 31 May 2016 14:41:50 +0800 Subject: [PATCH 205/668] =?UTF-8?q?=E6=96=B0=E7=89=88=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=E5=AE=9A=E5=88=B6=E6=A8=A1=E5=BC=8F6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/helpers/organizations_helper.rb | 5 +- .../organizations/_org_custom_right3.html.erb | 233 +++++++++++------- 2 files changed, 146 insertions(+), 92 deletions(-) diff --git a/app/helpers/organizations_helper.rb b/app/helpers/organizations_helper.rb index 4a712c0f0..cd3322283 100644 --- a/app/helpers/organizations_helper.rb +++ b/app/helpers/organizations_helper.rb @@ -44,9 +44,8 @@ module OrganizationsHelper def get_attach_org2(field) org_attachments = field.attachments - attachments = User.current.admin? ? org_attachments : visable_attachemnts(org_attachments) - return attachments.sort_by{|x| x.created_on}.reverse.first(6) - # Attachment.find_by_sql("SELECT * FROM `attachments` where container_id =#{field_id} and container_type = 'OrgSubfield' and is_public =1 order by created_on limit 6;") + attachments = User.current.admin? ? org_attachments.first(5) : visable_attachemnts(org_attachments).first(5) + attachments.sort_by{|x| x.created_on}.reverse end # 从内容中获取路径 diff --git a/app/views/organizations/_org_custom_right3.html.erb b/app/views/organizations/_org_custom_right3.html.erb index 698a2ea25..c29097400 100644 --- a/app/views/organizations/_org_custom_right3.html.erb +++ b/app/views/organizations/_org_custom_right3.html.erb @@ -1,91 +1,146 @@ -
        - -
        -
          -
        • - -
          - 张晓华张晓华张晓华张晓华 -

          国防科学技术大学学技术大学学技术大学学技术大学学技术大学

          -
          -

          博客20 课程20学生 20

          -
          +<% if field.field_type == "Resource" %> +
          +

          <%= field.name %><%= link_to "更多", org_subfield_files_path(field), :target => "_blank", :class => "por_more_index fr" %>

          +
          +
            + <% get_attach_org2(field).each do |attach| %> +
          • + <%= link_to image_tag(url_to_avatar(attach.author),:width => "43", :height => "43", :class => "por_teachers_img fl mr15"), user_path(attach.author), :target => "_blank", :class => "fl" %> + +
            + <%= link_to attach.author, user_path(attach.author), :class => " por_teachers_name fl", :target => "_blank" %> +

            + <%= link_to truncate(attach.filename,length: 20, omission: '...'), + download_named_attachment_path(attach.id, attach.filename), + :title => attach.filename+"\n"+attach.description.to_s, :style => "overflow: hidden; white-space: nowrap;text-overflow: ellipsis;" %> +

            +
            +

            + 类型:<%= attach.tag_list[0] %> + 下载:<%= attach.downloads %> + 引用:<%= attach.quotes.nil? ? 0 : attach.quotes %> +

            +
            +
            +
          • + <% end %> +
          +
          +
          + +
          +
          +<% else %> +
          + +
          + -
          -
          - -
          -
          \ No newline at end of file +
        +
        +
        + +
        +
        +<% end %> From e121d7d9270cdffefab90a1b154e0da97e280cfe Mon Sep 17 00:00:00 2001 From: txz Date: Tue, 31 May 2016 14:55:25 +0800 Subject: [PATCH 206/668] =?UTF-8?q?=E4=BA=8C=E7=BA=A7=E5=9B=9E=E5=A4=8D?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E8=BE=B9=E6=A1=86=E5=8C=BA=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/javascripts/wechat/app.js | 6 +++--- public/stylesheets/weui/weixin.css | 10 ++++++++++ 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/public/javascripts/wechat/app.js b/public/javascripts/wechat/app.js index 8f00a2b96..267fefb43 100644 --- a/public/javascripts/wechat/app.js +++ b/public/javascripts/wechat/app.js @@ -1,10 +1,10 @@ var app = angular.module('wechat', ['ngRoute','ngCookies']); var apiUrl = '/api/v1/'; -var debug = false; //调试标志,如果在本地请置为true +var debug = true; //调试标志,如果在本地请置为true if(debug===true){ - //apiUrl = 'http://localhost:3000/api/v1/'; - apiUrl = 'https://www.trustie.net/api/v1/'; + apiUrl = 'http://localhost:3000/api/v1/'; + //apiUrl = 'https://www.trustie.net/api/v1/'; } app.factory('auth', function($http,$routeParams, $cookies, $q){ diff --git a/public/stylesheets/weui/weixin.css b/public/stylesheets/weui/weixin.css index b09c54109..4a88f9705 100644 --- a/public/stylesheets/weui/weixin.css +++ b/public/stylesheets/weui/weixin.css @@ -4,6 +4,16 @@ /*基本样式*/ body,table,input,textarea,select,button { font-family: "微软雅黑","宋体";} h1,h2,h3,h4,h5,p,pre {padding:0px; margin:0px;} +blockquote { + border:1px solid #d4d4d4; + padding: 0.6em; + margin-left: 1.4em; + margin-right: 0.4em; + border-radius: 4px; + font-family: "Microsoft YaHei"; + background-size: 100% 100%; + margin-top:5px; +} .f12 {font-size:12px;} .f13 {font-size:13px;} .f15 {font-size:15px;} From 7e93518d4149548b49663dbc6e23bb96f4948c14 Mon Sep 17 00:00:00 2001 From: txz Date: Tue, 31 May 2016 14:56:24 +0800 Subject: [PATCH 207/668] =?UTF-8?q?app.js=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/javascripts/wechat/app.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/public/javascripts/wechat/app.js b/public/javascripts/wechat/app.js index 267fefb43..8f00a2b96 100644 --- a/public/javascripts/wechat/app.js +++ b/public/javascripts/wechat/app.js @@ -1,10 +1,10 @@ var app = angular.module('wechat', ['ngRoute','ngCookies']); var apiUrl = '/api/v1/'; -var debug = true; //调试标志,如果在本地请置为true +var debug = false; //调试标志,如果在本地请置为true if(debug===true){ - apiUrl = 'http://localhost:3000/api/v1/'; - //apiUrl = 'https://www.trustie.net/api/v1/'; + //apiUrl = 'http://localhost:3000/api/v1/'; + apiUrl = 'https://www.trustie.net/api/v1/'; } app.factory('auth', function($http,$routeParams, $cookies, $q){ From 8d56d8556fb7cca93362e2be6464d6dd2ab5e1bb Mon Sep 17 00:00:00 2001 From: huang Date: Tue, 31 May 2016 16:03:48 +0800 Subject: [PATCH 208/668] =?UTF-8?q?=E5=AE=8C=E6=88=90=E6=A8=A1=E5=BC=8F6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/helpers/organizations_helper.rb | 18 ++ .../organizations/_org_custom_right3.html.erb | 165 +++++++----------- app/views/organizations/_show_custom.html.erb | 8 +- 3 files changed, 85 insertions(+), 106 deletions(-) diff --git a/app/helpers/organizations_helper.rb b/app/helpers/organizations_helper.rb index cd3322283..4d704ba5f 100644 --- a/app/helpers/organizations_helper.rb +++ b/app/helpers/organizations_helper.rb @@ -42,6 +42,11 @@ module OrganizationsHelper Attachment.find_by_sql("SELECT * FROM `attachments` where container_id =#{field_id} and container_type = 'OrgSubfield' and is_public =1 order by created_on limit 6;") end + # 获取两种类型的隐藏状态,数量大于0说明是可见 + def double_field_show org + OrgSubfield.find_by_sql("SELECT * FROM `org_subfields` where organization_id = #{org.id} and (field_type = 'Compstu' or field_type = 'Comptec') and hide = 0;").count + end + def get_attach_org2(field) org_attachments = field.attachments attachments = User.current.admin? ? org_attachments.first(5) : visable_attachemnts(org_attachments).first(5) @@ -189,4 +194,17 @@ module OrganizationsHelper from users u, user_extensions ue where u.id = ue.user_id and ue.identity=0 and u.excellent_teacher =1 order by course_count desc").first(5) end + def excellent_students + User.find_by_sql("select u.*, ue.technical_title, ue.school_id,(select count(*) from courses where courses.tea_id = u.id) as course_count + from users u, user_extensions ue where u.id = ue.user_id and ue.identity = 1 and u.excellent_student = 1 order by course_count desc").first(5) + end + + def excellent_teachers_hide? org + org.org_subfields.where(:field_type => "Comptec").first.hide + end + + def excellent_students_hide? org + org.org_subfields.where(:field_type => "Compstu").first.hide + end + end diff --git a/app/views/organizations/_org_custom_right3.html.erb b/app/views/organizations/_org_custom_right3.html.erb index c29097400..34612a8ee 100644 --- a/app/views/organizations/_org_custom_right3.html.erb +++ b/app/views/organizations/_org_custom_right3.html.erb @@ -1,7 +1,7 @@ <% if field.field_type == "Resource" %> -
        -

        <%= field.name %><%= link_to "更多", org_subfield_files_path(field), :target => "_blank", :class => "por_more_index fr" %>

        -
        +
        +

        <%= field.name %><%= link_to "更多>", org_subfield_files_path(field), :target => "_blank", :class => "por_more_index fr" %>

        +
          <% get_attach_org2(field).each do |attach| %>
        • @@ -26,121 +26,80 @@ <% end %>
        -
        - -
        -<% else %> +<% elsif field.field_type == "Comptec" || field.field_type == "Compstu" %>
        -
        +
          -
        • - -
          - 张晓华张晓华张晓华张晓华 -

          国防科学技术大学学技术大学学技术大学学技术大学学技术大学

          -
          -

          博客20 课程20学生 20

          -
          -
          -
        • -
        • - -
          - 张晓华 -

          国防科学技术大学

          -
          -

          博客20 课程20学生 20

          -
          -
          -
        • -
        • - -
          - 张晓华 -

          国防科学技术大学

          -
          -

          博客20 课程20学生 20

          -
          -
          -
        • -
        • - -
          - 张晓华 -

          国防科学技术大学

          -
          -

          博客20 课程20学生 20

          -
          -
          -
        • -
        • - -
          - 张晓华 -

          国防科学技术大学

          -
          -

          博客20 课程20学生 20

          -
          -
          -
        • - + <% excellent_teachers.each do |teacher| %> +
        • + <%= link_to image_tag(url_to_avatar(teacher), :width => "43", :height => "43", :class => "por_teachers_img fl mr15"), user_path(teacher), :alt => "用户头像", :target => '_blank', :class => "fl" %> +
          + <%=link_to teacher.try(:realname) ? teacher.try(:realname) :teacher.try(:login), user_path(teacher), :class => "por_teachers_name fl", :target => '_blank' %> +

          <%= teacher.my_workplace %>

          +
          +

          + <% unless teacher.my_blogs_count == 0 %> + 博客 <%= teacher.my_blogs_count %> + <% end %> + <% unless teacher.courses.count == 0 %> + 课程 <%= teacher.courses.count %> + <% end %> + <% unless teacher.my_students == 0 %> + 学生 <%= teacher.my_students %> + <% end %> +

          +
          +
          +
        • + <% end %>
          -
        • - -
          - 张晓华张晓华张晓华张晓华 -

          国防科学技术大学学技术大学学技术大学学技术大学学技术大学

          -
          -

          博客20 课程20学生 20

          -
          -
          -
        • -
        • - -
          - 张晓华 -

          国防科学技术大学

          -
          -

          博客20 课程20学生 20

          -
          -
          -
        • + <% excellent_students.each do |student| %> +
        • + <%= link_to image_tag(url_to_avatar(student), :width => "43", :height => "43", :class => "por_teachers_img fl mr15"), user_path(student), :alt => "用户头像", :target => '_blank', :class => "fl" %> +
          + <%=link_to student.try(:realname) ? student.try(:realname) :student.try(:login), user_path(student), :class => "por_teachers_name fl", :target => '_blank' %> +

          <%= student.my_workplace %>

          +
          +

          + <% unless student.my_blogs_count == 0 %> + 博客 <%= student.my_blogs_count %> + <% end %> + <% unless student.courses.count == 0 %> + 课程 <%= student.courses.count %> + <% end %> +

          +
          +
          +
        • + <% end %>
        + + <% end %> diff --git a/app/views/organizations/_show_custom.html.erb b/app/views/organizations/_show_custom.html.erb index fbcc0c5f3..4d0d6470f 100644 --- a/app/views/organizations/_show_custom.html.erb +++ b/app/views/organizations/_show_custom.html.erb @@ -22,9 +22,11 @@ <% elsif field.status.to_i == 5 %> <%= render :partial => 'organizations/org_custom_right2', :locals => {:field => field} %> <% elsif field.status.to_i == 6 %> - <%= render :partial => 'organizations/org_custom_right3', :locals => {:field => field} %> - <%# elsif field.status.to_i == 23 %> - <%#= render :partial => 'organizations/org_subfield_rightM2', :locals => {:field => field} %> + <% if field.field_type == "Resource" %> + <%= render :partial => 'organizations/org_custom_right3', :locals => {:field => field} %> + <% else %> <%# 只允许显示一个模块 %> + <%= render :partial => 'organizations/org_custom_right3', :locals => {:field => field} %> + <% end %> <% end %> <% end %>
        From ed84783f260306c7f97ef0b57e33412c806cd73b Mon Sep 17 00:00:00 2001 From: cxt Date: Tue, 31 May 2016 17:03:50 +0800 Subject: [PATCH 209/668] =?UTF-8?q?=E7=A7=81=E6=9C=89=E8=AF=BE=E7=A8=8B?= =?UTF-8?q?=E4=BD=9C=E4=B8=9A=E7=9A=84=E5=85=AC=E5=BC=80=E4=BD=9C=E5=93=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/student_work_controller.rb | 4 ++-- .../_alert_open_student_works.html.erb | 12 +++++++++++- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/app/controllers/student_work_controller.rb b/app/controllers/student_work_controller.rb index dd178a1ce..10431f01a 100644 --- a/app/controllers/student_work_controller.rb +++ b/app/controllers/student_work_controller.rb @@ -390,7 +390,7 @@ class StudentWorkController < ApplicationController student_in_group = '(' + group_students.map{|user| user.id}.join(',') + ')' end #开放作品 || 老师 || 超级管理员 || 禁用匿评&&作业截止&&已提交作品 显示所有列表 - if @homework.is_open == 1 || @is_teacher || User.current.admin? || (User.current.member_of_course?(@course) && @homework.anonymous_comment == 1 && Time.parse(@homework.end_time.to_s).strftime("%Y-%m-%d") < Time.now.strftime("%Y-%m-%d") && !@homework.student_works.where(:user_id => User.current.id).empty?) + if (@homework.is_open == 1 && @course.is_public == 1) || (@homework.is_open == 1 && @course.is_public == 0 && User.current.member_of_course?(@course)) || @is_teacher || User.current.admin? || (User.current.member_of_course?(@course) && @homework.anonymous_comment == 1 && Time.parse(@homework.end_time.to_s).strftime("%Y-%m-%d") < Time.now.strftime("%Y-%m-%d") && !@homework.student_works.where(:user_id => User.current.id).empty?) if @order == 'lastname' @stundet_works = search_homework_member @homework.student_works.select("student_works.*,student_works.work_score as score").joins(:user).where("users.id in #{student_in_group}").order("CONVERT(lastname USING gbk) COLLATE gbk_chinese_ci #{@b_sort}, login #{@b_sort}"),@name elsif @order == 'student_id' @@ -456,7 +456,7 @@ class StudentWorkController < ApplicationController @student_work_count = (search_homework_member @homework.student_works.select("student_works.*,student_works.work_score as score").joins(:user).where("users.id in #{student_in_group}").order("#{@order} #{@b_sort}"),@name).count else - if @homework.is_open == 1 || @is_teacher || User.current.admin? || (User.current.member_of_course?(@course) && @homework.anonymous_comment == 1 && Time.parse(@homework.end_time.to_s).strftime("%Y-%m-%d") < Time.now.strftime("%Y-%m-%d") && !@homework.student_works.where(:user_id => User.current.id).empty?) + if (@homework.is_open == 1 &&@course.is_public == 1) || (@homework.is_open == 1 && @course.is_public == 0 && User.current.member_of_course?(@course)) || @is_teacher || User.current.admin? || (User.current.member_of_course?(@course) && @homework.anonymous_comment == 1 && Time.parse(@homework.end_time.to_s).strftime("%Y-%m-%d") < Time.now.strftime("%Y-%m-%d") && !@homework.student_works.where(:user_id => User.current.id).empty?) if @order == 'lastname' @stundet_works = search_homework_member @homework.student_works.select("student_works.*,student_works.work_score as score").joins(:user).order("CONVERT(lastname USING gbk) COLLATE gbk_chinese_ci #{@b_sort}, login #{@b_sort}"),@name elsif @order == 'student_id' diff --git a/app/views/homework_common/_alert_open_student_works.html.erb b/app/views/homework_common/_alert_open_student_works.html.erb index ef8fe3d08..73c7f0b47 100644 --- a/app/views/homework_common/_alert_open_student_works.html.erb +++ b/app/views/homework_common/_alert_open_student_works.html.erb @@ -1,10 +1,20 @@
        - <% if @homework.is_open == 0 %> + <% if @homework.is_open == 0 && @homework.course.is_public == 1 %>

        公开作品

        本次作业的所有作品将对Trustie平台所有注册用户开放,请问是否确定公开作品?

        + <% elsif @homework.is_open == 0 && @homework.course.is_public == 0 %> +

        公开作品

        +

        + 该作业是私有课程的作业,公开作品后本次作业的所有作品将对课程内的所有学生开放,请问是否确定公开作品? +

        + <% elsif @homework.is_open == 1 && @homework.course.is_public == 0 %> +

        取消公开作品

        +

        + 您将取消“公开作品”的功能,该私有作业的作品将只在作业截止后对已提交作品的学生开放,请问是否确定? +

        <% else %>

        取消公开作品

        From 8540b48091997f29509e2ca9da2bea3adaccf9d8 Mon Sep 17 00:00:00 2001 From: cxt Date: Tue, 31 May 2016 17:34:56 +0800 Subject: [PATCH 210/668] =?UTF-8?q?=E6=9C=AA=E7=BB=91=E5=AE=9A=E5=BE=AE?= =?UTF-8?q?=E4=BF=A1=E8=B4=A6=E5=8F=B7=E6=97=B6=E7=82=B9=E5=87=BB=E2=80=9C?= =?UTF-8?q?=E6=9C=80=E6=96=B0=E5=8A=A8=E6=80=81=E2=80=9D=E5=87=BA=E7=8E=B0?= =?UTF-8?q?=E6=8F=90=E7=A4=BA=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/javascripts/wechat/app.js | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/public/javascripts/wechat/app.js b/public/javascripts/wechat/app.js index 8f00a2b96..1149ea131 100644 --- a/public/javascripts/wechat/app.js +++ b/public/javascripts/wechat/app.js @@ -1,10 +1,10 @@ var app = angular.module('wechat', ['ngRoute','ngCookies']); var apiUrl = '/api/v1/'; -var debug = false; //调试标志,如果在本地请置为true +var debug = true; //调试标志,如果在本地请置为true if(debug===true){ - //apiUrl = 'http://localhost:3000/api/v1/'; - apiUrl = 'https://www.trustie.net/api/v1/'; + apiUrl = 'http://localhost:3000/api/v1/'; + //apiUrl = 'https://www.trustie.net/api/v1/'; } app.factory('auth', function($http,$routeParams, $cookies, $q){ @@ -78,6 +78,9 @@ app.controller('ActivityController',function($scope, $http, auth, rms, common){ url: apiUrl+ "activities", data: {openid: auth.openid(), page: page} }).then(function successCallback(response) { + if(response.data.message == "undefined method `user' for nil:NilClass"){ + alert("请先绑定确实的用户账号"); + } $scope.current_page = 0; console.log($scope.current_page); console.log(response.data.page); From a96fafd704284eeea52872105f6967bb447ec45b Mon Sep 17 00:00:00 2001 From: huang Date: Tue, 31 May 2016 18:37:21 +0800 Subject: [PATCH 211/668] =?UTF-8?q?=E6=A8=A1=E5=BC=8F=E4=B8=89=EF=BC=88?= =?UTF-8?q?=E6=9C=AA=E5=AE=8C=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/helpers/organizations_helper.rb | 1 - .../_link_subfield_more.html.erb | 6 +- .../organizations/_org_custom_left3.html.erb | 235 +++++++++++++++--- app/views/organizations/_show_custom.html.erb | 15 +- 4 files changed, 205 insertions(+), 52 deletions(-) diff --git a/app/helpers/organizations_helper.rb b/app/helpers/organizations_helper.rb index 4d704ba5f..437014528 100644 --- a/app/helpers/organizations_helper.rb +++ b/app/helpers/organizations_helper.rb @@ -149,7 +149,6 @@ module OrganizationsHelper org_subfield = OrgSubfield.find(field.id) org_subfield_ids = org_subfield.org_document_comments.map(&:id) << 0 org_acts = OrgActivity.where("(org_act_type='OrgDocumentComment'and org_act_id in (#{org_subfield_ids.join(",")})) || (container_type='OrgSubfield' and container_id=#{org_subfield.id})").order('updated_at desc') - org_acts end def allow_to_create?(org, type) diff --git a/app/views/organizations/_link_subfield_more.html.erb b/app/views/organizations/_link_subfield_more.html.erb index cb4a82ed1..59c12f1a1 100644 --- a/app/views/organizations/_link_subfield_more.html.erb +++ b/app/views/organizations/_link_subfield_more.html.erb @@ -1,9 +1,9 @@ <% if !field.subfield_subdomain_dir.nil? %> <% if !request.local? and Secdomain.where("sub_type=2 and pid=?", @organization.id).count > 0 and Secdomain.where("sub_type=2 and pid=?", @organization.id).map(&:subname).include?(request.subdomain) %> - <%= link_to "更多", show_subfield_without_id_path(:sub_dir_name => field.subfield_subdomain_dir.name), :class => "more" , :target => "_blank" %> + <%= link_to "更多", show_subfield_without_id_path(:sub_dir_name => field.subfield_subdomain_dir.name), :class => "por_more_index fr" , :target => "_blank" %> <% else %> - <%= link_to "更多", show_org_subfield_organization_path(:id => @organization.id, :sub_dir_name => field.subfield_subdomain_dir.name), :class => "more" , :target => "_blank" %> + <%= link_to "更多", show_org_subfield_organization_path(:id => @organization.id, :sub_dir_name => field.subfield_subdomain_dir.name), :class => "por_more_index fr" , :target => "_blank" %> <% end %> <% else %> - <%= link_to "更多", organization_path(@organization, :org_subfield_id => field.id), :class => "more" , :target => "_blank" %> + <%= link_to "更多", organization_path(@organization, :org_subfield_id => field.id), :class => "por_more_index fr" , :target => "_blank" %> <% end %> \ No newline at end of file diff --git a/app/views/organizations/_org_custom_left3.html.erb b/app/views/organizations/_org_custom_left3.html.erb index db20d42a1..adc1840fb 100644 --- a/app/views/organizations/_org_custom_left3.html.erb +++ b/app/views/organizations/_org_custom_left3.html.erb @@ -1,37 +1,200 @@ -

        -

        精华帖子更多>

        -
        -
        - - 阿里前副总裁里前副总裁:里前副总裁:里前副总裁::阿里巴巴给我上的10 -

        1分钟前 窦豆

        -

        本文选自阿本文选自阿里本文选自阿里本文选自阿里本文选自阿里本文选自阿里里巴巴前副总裁、首任美籍高管波特·埃里斯曼《阿里传》在这本书里,波特概括了他在阿里巴巴任职的8年中,学到的40堂课这40堂课简单明了地概括了马云的经营理念,以及阿里终成帝国的必

        -
        - -
        -
        - -
        -
        +
        + <% if acts.blank? %> +

        <%= field.name %>

        +

        该模块暂时没有发布内容

        + <% else %> +

        <%= field.name %> + <%= render :partial => 'organizations/link_subfield_more', :locals => {:field => field} %> +

        + <% if activity.container_type == 'Organization' && activity.org_act_type == 'OrgDocumentComment' && activity.org_act_id != @organization.home_id %> + <% document = activity.org_act %> + <% org_subfield_id = params[:org_subfield_id] %> + <% flag = 2 %> + <% iamge_path = get_image_path_from_content(document.content) %> +
        +
        + <% if iamge_path.nil? %> + <%= link_to image_tag("/images/default_blank/left-04.jpg", :width => "299", :height => "246"), org_document_comment_path(:id => document.id, :organization_id => document.organization.id), :target => "_blank" %> + <% else %> + <%= link_to image_tag("/files/uploads/image#{iamge_path}", :width => "299", :height => "246"), org_document_comment_path(:id => document.id, :organization_id => document.organization.id), :target => "_blank" %> + <% end %> + <%= link_to document.title, org_document_comment_path(:id => document.id, :organization_id => document.organization.id), :target => '_blank', :class => "por_post_title" %> +

        + <%= time_from_now(document.created_at) %> + <%= link_to document.creator, user_path(document.creator), :class => "por_hot_name", :target => "_blank" %> +

        +

        + <%=render :partial =>"users/intro_content_ex", :locals=>{:user_activity_id => document.id, :content=> document.content, :maxheight => 40, :maxwordsnum => 60} %> + 本文选自阿本文选自阿里本文选自阿里本文选自阿里本文选自阿里本文选自阿里里巴巴前副总裁、首任美籍高管波特·埃里斯曼《阿里传》在这本书里,波特概括了他在阿里巴巴任职的8年中,学到的40堂课这40堂课简单明了地概括了马云的经营理念,以及阿里终成帝国的必

        +
        + +
        + + + + +
        + <% if iamge_path.nil? %> + <%= link_to image_tag("/images/default_blank/left-04.jpg", :width => "185", :height => "125"), org_document_comment_path(:id => document.id, :organization_id => document.organization.id), :target => "_blank", :class =>"sn-resourcesimg" %> + <% else %> + <%= link_to image_tag("/files/uploads/image#{iamge_path}", :width => "185", :height => "125"), org_document_comment_path(:id => document.id, :organization_id => document.organization.id), :target => "_blank", :class =>"sn-resourcesimg" %> + <% end %> +

        + <%= link_to document.title, org_document_comment_path(:id => document.id, :organization_id => document.organization.id), :target => '_blank', :class => "resources-title sn-hidden" %> +

        +
        + <%=render :partial =>"users/intro_content_ex", :locals=>{:user_activity_id => document.id, :content=> document.content, :maxheight=>54, :maxwordsnum => 28} %> + <%#= link_to document.content.to_s.html_safe, org_document_comment_path(:id => document.id, :organization_id => document.organization.id), :target => '_blank', :class => "resources-tag" %> +
        + <%#= link_to "更多", org_document_comment_path(:id => document.id, :organization_id => document.organization.id), :class => "more-btn", :target => "_blank" %> + +
        + <% else activity.container_type == 'OrgSubfield' %> + <% if activity.org_act_type == 'Message' and activity.org_act_id and Message.where("id=#{activity.org_act_id}").count > 0 %> + <% message = Message.find(activity.org_act_id) %> + <% if message.parent_id.nil? %> + <% content = message.content%> + <% else %> + <% content = message.parent.content%> + <% end %> + <% iamge_path = get_image_path_from_content(content) %> + <% if message.board.org_subfield_id %> +
        +
        + + 阿里前副总裁里前副总裁:里前副总裁:里前副总裁::阿里巴巴给我上的10 +

        1分钟前 窦豆

        +

        本文选自阿本文选自阿里本文选自阿里本文选自阿里本文选自阿里本文选自阿里里巴巴前副总裁、首任美籍高管波特·埃里斯曼《阿里传》在这本书里,波特概括了他在阿里巴巴任职的8年中,学到的40堂课这40堂课简单明了地概括了马云的经营理念,以及阿里终成帝国的必

        +
        + +
        + + + + + +
        + <% if iamge_path.nil? %> + <%= link_to image_tag("/images/default_blank/left-04.jpg", :width => "185", :height => "125"), board_message_url_in_org(message.board.id,message.id), :target => "_blank", :class =>"sn-resourcesimg" %> + <% else %> + <%= link_to image_tag("/files/uploads/image#{iamge_path}", :width => "185", :height => "125"), board_message_url_in_org(message.board.id,message.id), :target => "_blank", :class =>"sn-resourcesimg" %> + <% end %> +

        + <% if message.parent_id.nil? %> + <%= link_to message.subject.to_s.html_safe, board_message_url_in_org(message.board.id,message.id), :target => '_blank', :class => "resources-title sn-hidden" %> + <% else %> + <%= link_to message.parent.subject.to_s.html_safe, board_message_url_in_org(message.board.id,message.id), :target => '_blank', :class => "resources-title sn-hidden" %> + <% end %> +

        +
        + <%= render :partial =>"users/intro_content_ex", :locals=>{:user_activity_id => message.id, :content=> content, :maxheight=>54, :maxwordsnum => 28} %> + <%#= link_to content.to_s.html_safe, board_message_url_in_org(activity.board_id, activity.id), :target => '_blank', :class => "resources-tag" %> +
        + <%#= link_to "更多", board_message_url_in_org(message.board.id,message.id), :class => "more-btn", :target => "_blank" %> +
        + <% else %> +
        +
        + + 阿里前副总裁里前副总裁:里前副总裁:里前副总裁::阿里巴巴给我上的10 +

        1分钟前 窦豆

        +

        本文选自阿本文选自阿里本文选自阿里本文选自阿里本文选自阿里本文选自阿里里巴巴前副总裁、首任美籍高管波特·埃里斯曼《阿里传》在这本书里,波特概括了他在阿里巴巴任职的8年中,学到的40堂课这40堂课简单明了地概括了马云的经营理念,以及阿里终成帝国的必

        +
        + +
        + + + + + + +
        + <% if iamge_path.nil? %> + <%= link_to image_tag("/images/default_blank/left-04.jpg", :width => "185", :height => "125"), board_message_path(message.board,activity), :target => "_blank", :class =>"sn-resourcesimg" %> + <% else %> + <%= link_to image_tag("/files/uploads/image#{iamge_path}", :width => "185", :height => "125"), board_message_path(message.board,activity), :target => "_blank", :class =>"sn-resourcesimg" %> + <% end %> +

        + <% if message.parent_id.nil? %> + <%= link_to message.subject.to_s.html_safe, board_message_path(message.board,message), :target => '_blank', :class => "resources-title sn-hidden" %> + <% else %> + <%= link_to message.parent.subject.to_s.html_safe, board_message_path(message.board,activity), :target => '_blank', :class => "resources-title sn-hidden" %> + <% end %> +

        +
        + <%= render :partial =>"users/intro_content_ex", :locals=>{:user_activity_id => message.id, :content=> content, :maxheight=>54, :maxwordsnum => 28} %> + <%#= link_to content.to_s.html_safe, board_message_path(message.board,activity), :target => '_blank', :class => "resources-tag" %> +
        + <%#= link_to "更多", board_message_path(message.board,activity), :class => "more-btn", :target => "_blank" %> +
        + <% end %> + <% end %> + <% if activity.org_act_type == 'News' and News.where("id=?", activity.org_act_id).count > 0 %> + <% news = News.find(activity.org_act_id) %> + <% iamge_path = get_image_path_from_content(news.description) %> +
        +
        + + 阿里前副总裁里前副总裁:里前副总裁:里前副总裁::阿里巴巴给我上的10 +

        1分钟前 窦豆

        +

        本文选自阿本文选自阿里本文选自阿里本文选自阿里本文选自阿里本文选自阿里里巴巴前副总裁、首任美籍高管波特·埃里斯曼《阿里传》在这本书里,波特概括了他在阿里巴巴任职的8年中,学到的40堂课这40堂课简单明了地概括了马云的经营理念,以及阿里终成帝国的必

        +
        + +
        + + + + + +
        + <% if iamge_path.nil? %> + <%= link_to image_tag("/images/default_blank/left-04.jpg", :width => "185", :height => "125"), news_path(news), :target => "_blank", :class =>"sn-resourcesimg" %> + <% else %> + <%= link_to image_tag("/files/uploads/image#{iamge_path}", :width => "185", :height => "125"), news_path(news), :target => "_blank", :class =>"sn-resourcesimg" %> + <% end %> +

        + <%= link_to news.title.to_s, news_path(news), :target => '_blank', :class => "resources-title sn-hidden" %> +

        +
        + <%#= link_to news.description.to_s.html_safe, news_path(news), :target => '_blank', :class => "resources-tag" %> + <%= render :partial =>"users/intro_content_ex", :locals=>{:user_activity_id => news.id, :content=> news.description, :maxheight=>54, :maxwordsnum => 28, :maxwordsnum => 28} %> +
        + <%#= link_to "更多", news_path(news), :class => "more-btn", :target => "_blank" %> +
        + <% end %> + <% end %> + + + + + + + + +
        + <% end %>
        \ No newline at end of file diff --git a/app/views/organizations/_show_custom.html.erb b/app/views/organizations/_show_custom.html.erb index 4d0d6470f..6f5c64379 100644 --- a/app/views/organizations/_show_custom.html.erb +++ b/app/views/organizations/_show_custom.html.erb @@ -2,15 +2,10 @@ <% @subfield_content.each do |field| %> <% if field.status.to_i == 1 %> <%= render :partial => 'organizations/org_custom_left1', :locals => {:field => field} %> - <% elsif field.status.to_i == 3 %> - <%#= render :partial => 'organizations/org_subfield_leftM', :locals => {:field => field} %> -
        - <%#= render :partial => 'organizations/org_subfield_leftM1', :locals => {:field => field} %> - <%= render :partial => 'organizations/org_custom_left3', :locals => {:field => field} %> -
        -
        <% elsif field.status.to_i == 2 %> <%= render :partial => 'organizations/org_custom_left2', :locals => {:field => field} %> + <% elsif field.status.to_i == 3 %> + <%= render :partial => 'organizations/org_custom_left3', :locals => {:field => field, :acts => get_subfield_acts(field) }%> <% end %> <% end %>
        @@ -22,11 +17,7 @@ <% elsif field.status.to_i == 5 %> <%= render :partial => 'organizations/org_custom_right2', :locals => {:field => field} %> <% elsif field.status.to_i == 6 %> - <% if field.field_type == "Resource" %> - <%= render :partial => 'organizations/org_custom_right3', :locals => {:field => field} %> - <% else %> <%# 只允许显示一个模块 %> - <%= render :partial => 'organizations/org_custom_right3', :locals => {:field => field} %> - <% end %> + <%= render :partial => 'organizations/org_custom_right3', :locals => {:field => field} %> <% end %> <% end %>
        From 7f811d7551b2be4660021e9fbcd40f7a4ea6edc0 Mon Sep 17 00:00:00 2001 From: guange <8863824@gmail.com> Date: Tue, 31 May 2016 19:20:15 +0800 Subject: [PATCH 212/668] =?UTF-8?q?=E7=94=A8=E6=88=B7=E5=8A=A8=E6=80=81?= =?UTF-8?q?=E5=A6=82=E6=9E=9C=E6=B2=A1=E6=9C=89=E7=BB=91=E5=AE=9A=E5=88=99?= =?UTF-8?q?=E8=B7=B3=E5=88=B0=E7=BB=91=E5=AE=9A=E9=A1=B5=E9=9D=A2.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/wechats_controller.rb | 43 +++++++-------------------- config/menu.yml | 2 +- config/routes.rb | 1 + 3 files changed, 12 insertions(+), 34 deletions(-) diff --git a/app/controllers/wechats_controller.rb b/app/controllers/wechats_controller.rb index 4bf95fdbd..d4758283a 100644 --- a/app/controllers/wechats_controller.rb +++ b/app/controllers/wechats_controller.rb @@ -154,12 +154,7 @@ class WechatsController < ActionController::Base end end - - - ### controller method - - module Controllers def get_open_id begin @@ -228,37 +223,19 @@ class WechatsController < ActionController::Base uw = UserWechat.where(openid: openid).first end - def user_activity(user) - @user = user - shield_project_ids = ShieldActivity.where("container_type='User' and container_id=#{@user.id} and shield_type='Project'").map(&:shield_id) - shield_course_ids = ShieldActivity.where("container_type='User' and container_id=#{@user.id} and shield_type='Course'").map(&:shield_id) - @page = params[:page] ? params[:page].to_i + 1 : 0 - user_project_ids = (@user.projects.visible.map{|project| project.id}-shield_project_ids).empty? ? "(-1)" : "(" + (@user.projects.visible.map{|project| project.id}-shield_project_ids).join(",") + ")" - user_course_ids = (@user.courses.visible.map{|course| course.id}-shield_course_ids).empty? ? "(-1)" : "(" + (@user.courses.visible.map{|course| course.id}-shield_course_ids).join(",") + ")" - course_types = "('Message','News','HomeworkCommon','Poll','Course')" - project_types = "('Message','Issue','Project')" - principal_types = "JournalsForMessage" - - blog_ids = "("+@user.blog.id.to_s+","+((User.watched_by(@user.id).count == 0 )? '0' :User.watched_by(@user.id).map{|u| u.blog.id}.join(','))+")" - @user_activities = UserActivity.where("(container_type = 'Project' and container_id in #{user_project_ids} and act_type in #{project_types})" + - "or (container_type = 'Course' and container_id in #{user_course_ids} and act_type in #{course_types}) "+ - "or (container_type = 'Principal' and act_type= '#{principal_types}' and container_id = #{@user.id}) " + - "or (container_type = 'Blog' and act_type= 'BlogComment' and container_id in #{blog_ids})").order('updated_at desc').limit(10).offset(@page * 10) - + def user_activities + session[:wechat_code] = params[:code] if params[:code] + code = params[:code] || session[:wechat_code] + openid = get_openid_from_code(code) + @wechat_user = user_binded?(openid) + unless @wechat_user + redirect_to :login + return + end + render File.join(Rails.root, "public/wechat/app.html"), layout: nil end - def process_activity(user_activity) - act= user_activity.act - case user_activity.container_type.to_s - when 'Course' - when 'Project' - case user_activity.act_type.to_s - when 'Issue' - [act.project.name.to_s+" | 项目问题", act.subject.to_s, url_to_avatar(act.author),"http://wechat.trustie.net/app.html#/issue/#{act.id}"] - end - end - end end diff --git a/config/menu.yml b/config/menu.yml index de1952503..ab6ae89ac 100644 --- a/config/menu.yml +++ b/config/menu.yml @@ -2,7 +2,7 @@ button: - type: "view" name: "最新动态" - url: "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxc09454f171153c2d&redirect_uri=https://test.course.trustie.net/assets/wechat/app.html#/activities?response_type=code&scope=snsapi_base&state=123#wechat_redirect" + url: "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxc09454f171153c2d&redirect_uri=https://wechat.trustie.net/wechat/user_activities&response_type=code&scope=snsapi_base&state=123#wechat_redirect" - type: "click" name: "意见反馈" diff --git a/config/routes.rb b/config/routes.rb index 2863d49a4..9abaef0ae 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1237,6 +1237,7 @@ RedmineApp::Application.routes.draw do resource :wechat, only:[:show, :create] do collection do get :login + get :user_activities post :bind post :get_open_id end From 7b5a7a93f535555d72b83a475a7228f62a182cee Mon Sep 17 00:00:00 2001 From: guange <8863824@gmail.com> Date: Tue, 31 May 2016 19:40:54 +0800 Subject: [PATCH 213/668] =?UTF-8?q?=E7=94=A8=E6=88=B7=E5=8A=A8=E6=80=81?= =?UTF-8?q?=E5=A6=82=E6=9E=9C=E6=B2=A1=E6=9C=89=E7=BB=91=E5=AE=9A=E5=88=99?= =?UTF-8?q?=E8=B7=B3=E5=88=B0=E7=BB=91=E5=AE=9A=E9=A1=B5=E9=9D=A2.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/wechats_controller.rb | 24 +++++++++++++----------- config/menu.yml | 2 +- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/app/controllers/wechats_controller.rb b/app/controllers/wechats_controller.rb index d4758283a..1e87c7b96 100644 --- a/app/controllers/wechats_controller.rb +++ b/app/controllers/wechats_controller.rb @@ -202,6 +202,19 @@ class WechatsController < ActionController::Base render 'wechats/login', layout: 'base_wechat' end + def user_activities + session[:wechat_code] = params[:code] if params[:code] + code = params[:code] || session[:wechat_code] + openid = get_openid_from_code(code) + @wechat_user = user_binded?(openid) + unless @wechat_user + redirect_to :login + return + end + + render File.join(Rails.root, "public/wechat/app.html"), layout: nil + end + private def get_openid_from_code(code) openid = session[:wechat_openid] @@ -223,18 +236,7 @@ class WechatsController < ActionController::Base uw = UserWechat.where(openid: openid).first end - def user_activities - session[:wechat_code] = params[:code] if params[:code] - code = params[:code] || session[:wechat_code] - openid = get_openid_from_code(code) - @wechat_user = user_binded?(openid) - unless @wechat_user - redirect_to :login - return - end - render File.join(Rails.root, "public/wechat/app.html"), layout: nil - end end diff --git a/config/menu.yml b/config/menu.yml index ab6ae89ac..3671ebb1b 100644 --- a/config/menu.yml +++ b/config/menu.yml @@ -2,7 +2,7 @@ button: - type: "view" name: "最新动态" - url: "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxc09454f171153c2d&redirect_uri=https://wechat.trustie.net/wechat/user_activities&response_type=code&scope=snsapi_base&state=123#wechat_redirect" + url: "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxc09454f171153c2d&redirect_uri=http://wechat.trustie.net/wechat/user_activities&response_type=code&scope=snsapi_base&state=123#wechat_redirect" - type: "click" name: "意见反馈" From e73c94680660701db79ea2059d290432b40bf957 Mon Sep 17 00:00:00 2001 From: guange <8863824@gmail.com> Date: Tue, 31 May 2016 19:43:27 +0800 Subject: [PATCH 214/668] =?UTF-8?q?=E7=94=A8=E6=88=B7=E5=8A=A8=E6=80=81?= =?UTF-8?q?=E5=A6=82=E6=9E=9C=E6=B2=A1=E6=9C=89=E7=BB=91=E5=AE=9A=E5=88=99?= =?UTF-8?q?=E8=B7=B3=E5=88=B0=E7=BB=91=E5=AE=9A=E9=A1=B5=E9=9D=A2.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/wechats_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/wechats_controller.rb b/app/controllers/wechats_controller.rb index 1e87c7b96..b0901efd4 100644 --- a/app/controllers/wechats_controller.rb +++ b/app/controllers/wechats_controller.rb @@ -208,7 +208,7 @@ class WechatsController < ActionController::Base openid = get_openid_from_code(code) @wechat_user = user_binded?(openid) unless @wechat_user - redirect_to :login + redirect_to login_wechat_path return end From 49a1a9de325b679579d9d01f3c12af6d27e37d63 Mon Sep 17 00:00:00 2001 From: guange <8863824@gmail.com> Date: Tue, 31 May 2016 19:46:30 +0800 Subject: [PATCH 215/668] =?UTF-8?q?=E7=94=A8=E6=88=B7=E5=8A=A8=E6=80=81?= =?UTF-8?q?=E5=A6=82=E6=9E=9C=E6=B2=A1=E6=9C=89=E7=BB=91=E5=AE=9A=E5=88=99?= =?UTF-8?q?=E8=B7=B3=E5=88=B0=E7=BB=91=E5=AE=9A=E9=A1=B5=E9=9D=A2.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/wechats_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/wechats_controller.rb b/app/controllers/wechats_controller.rb index b0901efd4..1074ebc3f 100644 --- a/app/controllers/wechats_controller.rb +++ b/app/controllers/wechats_controller.rb @@ -212,7 +212,7 @@ class WechatsController < ActionController::Base return end - render File.join(Rails.root, "public/wechat/app.html"), layout: nil + render template: File.join(Rails.root, "public/wechat/app.html"), layout: nil end private From 1c5a31e8f1a1970619f3b2974f7d74543514363d Mon Sep 17 00:00:00 2001 From: guange <8863824@gmail.com> Date: Tue, 31 May 2016 19:49:57 +0800 Subject: [PATCH 216/668] =?UTF-8?q?=E7=94=A8=E6=88=B7=E5=8A=A8=E6=80=81?= =?UTF-8?q?=E5=A6=82=E6=9E=9C=E6=B2=A1=E6=9C=89=E7=BB=91=E5=AE=9A=E5=88=99?= =?UTF-8?q?=E8=B7=B3=E5=88=B0=E7=BB=91=E5=AE=9A=E9=A1=B5=E9=9D=A2.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/wechats_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/wechats_controller.rb b/app/controllers/wechats_controller.rb index 1074ebc3f..d5dfb88f7 100644 --- a/app/controllers/wechats_controller.rb +++ b/app/controllers/wechats_controller.rb @@ -212,7 +212,7 @@ class WechatsController < ActionController::Base return end - render template: File.join(Rails.root, "public/wechat/app.html"), layout: nil + render file: File.join(Rails.root, "public/wechat/app.html") end private From ac5d91a428981e7bd2ad5381bf8336585726993e Mon Sep 17 00:00:00 2001 From: guange <8863824@gmail.com> Date: Tue, 31 May 2016 19:51:38 +0800 Subject: [PATCH 217/668] =?UTF-8?q?=E7=94=A8=E6=88=B7=E5=8A=A8=E6=80=81?= =?UTF-8?q?=E5=A6=82=E6=9E=9C=E6=B2=A1=E6=9C=89=E7=BB=91=E5=AE=9A=E5=88=99?= =?UTF-8?q?=E8=B7=B3=E5=88=B0=E7=BB=91=E5=AE=9A=E9=A1=B5=E9=9D=A2.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/wechats_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/wechats_controller.rb b/app/controllers/wechats_controller.rb index d5dfb88f7..9c6ab33f6 100644 --- a/app/controllers/wechats_controller.rb +++ b/app/controllers/wechats_controller.rb @@ -212,7 +212,7 @@ class WechatsController < ActionController::Base return end - render file: File.join(Rails.root, "public/wechat/app.html") + render template: File.join(Rails.root, "public/assets/wechat/app.html"), layout: nil end private From e01da32c75a64f58a5b921366a7ae53d76e55a6a Mon Sep 17 00:00:00 2001 From: guange <8863824@gmail.com> Date: Tue, 31 May 2016 19:54:45 +0800 Subject: [PATCH 218/668] tempate=>file --- app/controllers/wechats_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/wechats_controller.rb b/app/controllers/wechats_controller.rb index 9c6ab33f6..e47c99cbd 100644 --- a/app/controllers/wechats_controller.rb +++ b/app/controllers/wechats_controller.rb @@ -212,7 +212,7 @@ class WechatsController < ActionController::Base return end - render template: File.join(Rails.root, "public/assets/wechat/app.html"), layout: nil + render file: File.join(Rails.root, "public/assets/wechat/app.html"), layout: nil end private From 4815dc3c7b3c6dc3e5ce2f804f8a4d5c7e163bae Mon Sep 17 00:00:00 2001 From: guange <8863824@gmail.com> Date: Tue, 31 May 2016 19:59:34 +0800 Subject: [PATCH 219/668] =?UTF-8?q?=E7=94=A8=E6=88=B7=E5=8A=A8=E6=80=81?= =?UTF-8?q?=E5=A6=82=E6=9E=9C=E6=B2=A1=E6=9C=89=E7=BB=91=E5=AE=9A=E5=88=99?= =?UTF-8?q?=E8=B7=B3=E5=88=B0=E7=BB=91=E5=AE=9A=E9=A1=B5=E9=9D=A2.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/javascripts/wechat/app.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/javascripts/wechat/app.js b/public/javascripts/wechat/app.js index 8f00a2b96..f0881486e 100644 --- a/public/javascripts/wechat/app.js +++ b/public/javascripts/wechat/app.js @@ -482,7 +482,7 @@ app.directive('loadingSpinner', function ($http) { app.config(['$routeProvider',"$httpProvider",function ($routeProvider, $httpProvider) { $routeProvider .when('/activities', { - templateUrl: 'activities.html', + templateUrl: '/public/assets/wechat/activities.html', controller: 'ActivityController' }) .when('/issues/:id', { From 13d11e223934bac22a7b38975dc8a91f3d276a13 Mon Sep 17 00:00:00 2001 From: guange <8863824@gmail.com> Date: Tue, 31 May 2016 20:01:41 +0800 Subject: [PATCH 220/668] =?UTF-8?q?=E7=94=A8=E6=88=B7=E5=8A=A8=E6=80=81?= =?UTF-8?q?=E5=A6=82=E6=9E=9C=E6=B2=A1=E6=9C=89=E7=BB=91=E5=AE=9A=E5=88=99?= =?UTF-8?q?=E8=B7=B3=E5=88=B0=E7=BB=91=E5=AE=9A=E9=A1=B5=E9=9D=A2.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/javascripts/wechat/app.js | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/public/javascripts/wechat/app.js b/public/javascripts/wechat/app.js index f0881486e..d18719cfe 100644 --- a/public/javascripts/wechat/app.js +++ b/public/javascripts/wechat/app.js @@ -480,37 +480,39 @@ app.directive('loadingSpinner', function ($http) { }); app.config(['$routeProvider',"$httpProvider",function ($routeProvider, $httpProvider) { + var rootPath = '/assets/wechat/' + $routeProvider .when('/activities', { - templateUrl: '/public/assets/wechat/activities.html', + templateUrl: rootPath + 'activities.html', controller: 'ActivityController' }) .when('/issues/:id', { - templateUrl: 'issue_detail.html', + templateUrl: rootPath + 'issue_detail.html', controller: 'IssueController' }) .when('/project_discussion/:id', { - templateUrl: 'project_discussion.html', + templateUrl: rootPath + 'project_discussion.html', controller: 'DiscussionController' }) .when('/homework/:id', { - templateUrl: 'homework_detail.html', + templateUrl: rootPath + 'homework_detail.html', controller: 'HomeworkController' }) .when('/course_notice/:id', { - templateUrl: 'course_notice.html', + templateUrl: rootPath + 'course_notice.html', controller: 'CourseNoticeController' }) .when('/course_discussion/:id', { - templateUrl: 'course_discussion.html', + templateUrl: rootPath + 'course_discussion.html', controller: 'DiscussionController' }) .when('/journal_for_message/:id', { - templateUrl: 'jour_message_detail.html', + templateUrl: rootPath + 'jour_message_detail.html', controller: 'JournalsController' }) .when('/blog_comment/:id', { - templateUrl: 'blog_detail.html', + templateUrl: rootPath + 'blog_detail.html', controller: 'BlogController' }) .otherwise({ From 814fde878e5743013963e9111eb232cf85ea9000 Mon Sep 17 00:00:00 2001 From: guange <8863824@gmail.com> Date: Tue, 31 May 2016 20:19:45 +0800 Subject: [PATCH 221/668] =?UTF-8?q?=E4=BB=8E=E5=90=8E=E5=8F=B0=E8=8E=B7?= =?UTF-8?q?=E5=8F=96openid=E5=8D=B3=E5=8F=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/wechats_controller.rb | 2 +- app/views/wechats/user_activities.html.erb | 30 ++++++++++++++++++++++ config/menu.yml | 2 +- public/javascripts/wechat/app.js | 4 +++ 4 files changed, 36 insertions(+), 2 deletions(-) create mode 100644 app/views/wechats/user_activities.html.erb diff --git a/app/controllers/wechats_controller.rb b/app/controllers/wechats_controller.rb index e47c99cbd..ea230abe5 100644 --- a/app/controllers/wechats_controller.rb +++ b/app/controllers/wechats_controller.rb @@ -212,7 +212,7 @@ class WechatsController < ActionController::Base return end - render file: File.join(Rails.root, "public/assets/wechat/app.html"), layout: nil + render 'wechats/user_activities', layout: nil end private diff --git a/app/views/wechats/user_activities.html.erb b/app/views/wechats/user_activities.html.erb new file mode 100644 index 000000000..b45587ae0 --- /dev/null +++ b/app/views/wechats/user_activities.html.erb @@ -0,0 +1,30 @@ + + + + 最新动态 + + + + + + + + + + + +
        +
        + + + + + + + + + + + \ No newline at end of file diff --git a/config/menu.yml b/config/menu.yml index 3671ebb1b..83b892037 100644 --- a/config/menu.yml +++ b/config/menu.yml @@ -2,7 +2,7 @@ button: - type: "view" name: "最新动态" - url: "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxc09454f171153c2d&redirect_uri=http://wechat.trustie.net/wechat/user_activities&response_type=code&scope=snsapi_base&state=123#wechat_redirect" + url: "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxf694495398c7d470&redirect_uri=http://wechat.trustie.net/wechat/user_activities&response_type=code&scope=snsapi_base&state=123#wechat_redirect" - type: "click" name: "意见反馈" diff --git a/public/javascripts/wechat/app.js b/public/javascripts/wechat/app.js index d18719cfe..59605271c 100644 --- a/public/javascripts/wechat/app.js +++ b/public/javascripts/wechat/app.js @@ -10,6 +10,10 @@ if(debug===true){ app.factory('auth', function($http,$routeParams, $cookies, $q){ var _openid = ''; + if(typeof g_openid !== 'undefined'){ + _openid = g_openid; + } + if(debug===true){ _openid = "1"; } From 9ecdf0892b370bc9837fa87f9395362d6d3d3622 Mon Sep 17 00:00:00 2001 From: huang Date: Tue, 31 May 2016 20:45:54 +0800 Subject: [PATCH 222/668] =?UTF-8?q?=E5=AE=8C=E6=88=90=E5=B7=A6=E4=B8=89?= =?UTF-8?q?=E6=A8=A1=E5=BC=8F=E7=9A=84=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../organizations/_org_custom_left3.html.erb | 328 ++++++++---------- .../_organization_content_extension.html.erb | 23 ++ 2 files changed, 170 insertions(+), 181 deletions(-) create mode 100644 app/views/organizations/_organization_content_extension.html.erb diff --git a/app/views/organizations/_org_custom_left3.html.erb b/app/views/organizations/_org_custom_left3.html.erb index adc1840fb..fdf06a023 100644 --- a/app/views/organizations/_org_custom_left3.html.erb +++ b/app/views/organizations/_org_custom_left3.html.erb @@ -6,195 +6,161 @@

        <%= field.name %> <%= render :partial => 'organizations/link_subfield_more', :locals => {:field => field} %>

        - <% if activity.container_type == 'Organization' && activity.org_act_type == 'OrgDocumentComment' && activity.org_act_id != @organization.home_id %> - <% document = activity.org_act %> - <% org_subfield_id = params[:org_subfield_id] %> - <% flag = 2 %> - <% iamge_path = get_image_path_from_content(document.content) %> -
        -
        - <% if iamge_path.nil? %> - <%= link_to image_tag("/images/default_blank/left-04.jpg", :width => "299", :height => "246"), org_document_comment_path(:id => document.id, :organization_id => document.organization.id), :target => "_blank" %> - <% else %> - <%= link_to image_tag("/files/uploads/image#{iamge_path}", :width => "299", :height => "246"), org_document_comment_path(:id => document.id, :organization_id => document.organization.id), :target => "_blank" %> - <% end %> - <%= link_to document.title, org_document_comment_path(:id => document.id, :organization_id => document.organization.id), :target => '_blank', :class => "por_post_title" %> -

        - <%= time_from_now(document.created_at) %> - <%= link_to document.creator, user_path(document.creator), :class => "por_hot_name", :target => "_blank" %> -

        -

        - <%=render :partial =>"users/intro_content_ex", :locals=>{:user_activity_id => document.id, :content=> document.content, :maxheight => 40, :maxwordsnum => 60} %> - 本文选自阿本文选自阿里本文选自阿里本文选自阿里本文选自阿里本文选自阿里里巴巴前副总裁、首任美籍高管波特·埃里斯曼《阿里传》在这本书里,波特概括了他在阿里巴巴任职的8年中,学到的40堂课这40堂课简单明了地概括了马云的经营理念,以及阿里终成帝国的必

        -
        - -
        - - - - -
        - <% if iamge_path.nil? %> - <%= link_to image_tag("/images/default_blank/left-04.jpg", :width => "185", :height => "125"), org_document_comment_path(:id => document.id, :organization_id => document.organization.id), :target => "_blank", :class =>"sn-resourcesimg" %> - <% else %> - <%= link_to image_tag("/files/uploads/image#{iamge_path}", :width => "185", :height => "125"), org_document_comment_path(:id => document.id, :organization_id => document.organization.id), :target => "_blank", :class =>"sn-resourcesimg" %> - <% end %> -

        - <%= link_to document.title, org_document_comment_path(:id => document.id, :organization_id => document.organization.id), :target => '_blank', :class => "resources-title sn-hidden" %> -

        -
        - <%=render :partial =>"users/intro_content_ex", :locals=>{:user_activity_id => document.id, :content=> document.content, :maxheight=>54, :maxwordsnum => 28} %> - <%#= link_to document.content.to_s.html_safe, org_document_comment_path(:id => document.id, :organization_id => document.organization.id), :target => '_blank', :class => "resources-tag" %> -
        - <%#= link_to "更多", org_document_comment_path(:id => document.id, :organization_id => document.organization.id), :class => "more-btn", :target => "_blank" %> - -
        - <% else activity.container_type == 'OrgSubfield' %> - <% if activity.org_act_type == 'Message' and activity.org_act_id and Message.where("id=#{activity.org_act_id}").count > 0 %> - <% message = Message.find(activity.org_act_id) %> - <% if message.parent_id.nil? %> - <% content = message.content%> - <% else %> - <% content = message.parent.content%> - <% end %> - <% iamge_path = get_image_path_from_content(content) %> - <% if message.board.org_subfield_id %> -
        -
        - - 阿里前副总裁里前副总裁:里前副总裁:里前副总裁::阿里巴巴给我上的10 -

        1分钟前 窦豆

        -

        本文选自阿本文选自阿里本文选自阿里本文选自阿里本文选自阿里本文选自阿里里巴巴前副总裁、首任美籍高管波特·埃里斯曼《阿里传》在这本书里,波特概括了他在阿里巴巴任职的8年中,学到的40堂课这40堂课简单明了地概括了马云的经营理念,以及阿里终成帝国的必

        -
        - +
        +
        + <% activity = acts.first %> + <% if activity.container_type == 'Organization' && activity.org_act_type == 'OrgDocumentComment' && activity.org_act_id != @organization.home_id %> + <% document = activity.org_act %> + <% if get_image_path_from_content(acts.first.org_act.content).nil? %> + <%= link_to image_tag("/images/default_blank/left-04.jpg", :width => "299", :height => "246"), org_document_comment_path(:id => acts.first.org_act.id, :organization_id => acts.first.org_act.organization.id), :target => "_blank" %> + <% else %> + <%= link_to image_tag("/files/uploads/image#{get_image_path_from_content(acts.first.org_act.content)}", :width => "299", :height => "246"), org_document_comment_path(:id => acts.first.org_act.id, :organization_id => acts.first.org_act.organization.id), :target => "_blank" %> + <% end %> + <%= link_to acts.first.org_act.title, org_document_comment_path(:id => acts.first.org_act.id, :organization_id => acts.first.org_act.organization.id), :target => '_blank', :class => "por_post_title" %> +

        + <%= time_from_now(acts.first.org_act.created_at) %> + <%= link_to acts.first.org_act.creator, user_path(acts.first.org_act.creator), :class => "por_hot_name", :target => "_blank" %> +

        +
        + <%=render :partial =>"organizations/organization_content_extension", :locals => {:user_activity_id => acts.first.org_act.id, :content=> acts.first.org_act.content, :maxheight => 40, :maxwordsnum => 60, :maxwidth => 0} %>
        - - - - - -
        - <% if iamge_path.nil? %> - <%= link_to image_tag("/images/default_blank/left-04.jpg", :width => "185", :height => "125"), board_message_url_in_org(message.board.id,message.id), :target => "_blank", :class =>"sn-resourcesimg" %> - <% else %> - <%= link_to image_tag("/files/uploads/image#{iamge_path}", :width => "185", :height => "125"), board_message_url_in_org(message.board.id,message.id), :target => "_blank", :class =>"sn-resourcesimg" %> - <% end %> -

        - <% if message.parent_id.nil? %> - <%= link_to message.subject.to_s.html_safe, board_message_url_in_org(message.board.id,message.id), :target => '_blank', :class => "resources-title sn-hidden" %> + <% else activity.container_type == 'OrgSubfield' %> + <% if activity.org_act_type == 'Message' and activity.org_act_id and Message.where("id=#{activity.org_act_id}").count > 0 %> + <% message = Message.find(activity.org_act_id) %> + <% content = message.parent_id.nil? ? message.content : message.parent.content %> + <% iamge_path = get_image_path_from_content(content) %> + <% if message.board.org_subfield_id %> + <% if iamge_path.nil? %> + <%= link_to image_tag("/images/default_blank/left-04.jpg", :width => "299", :height => "246"), board_message_url_in_org(message.board.id,message.id), :target => "_blank" %> + <% else %> + <%= link_to image_tag("/files/uploads/image#{iamge_path}", :width => "299", :height => "246"), board_message_url_in_org(message.board.id,message.id), :target => "_blank" %> + <% end %> + <% if message.parent_id.nil? %> + <%= link_to message.subject.to_s.html_safe, board_message_url_in_org(message.board.id,message.id), :target => '_blank', :class => "por_post_title" %> + <% else %> + <%= link_to message.parent.subject.to_s.html_safe, board_message_url_in_org(message.board.id,message.id), :target => '_blank', :class => "por_post_title" %> + <% end %> +

        + <%= time_from_now(message.created_on) %> + <%= link_to message.author, user_path(message.author), :class => "por_hot_name", :target => "_blank" %> +

        +
        + <%=render :partial =>"organizations/organization_content_extension", :locals => {:user_activity_id => message.id, :content=> message.content, :maxheight => 40, :maxwordsnum => 60, :maxwidth => 0} %> +
        <% else %> - <%= link_to message.parent.subject.to_s.html_safe, board_message_url_in_org(message.board.id,message.id), :target => '_blank', :class => "resources-title sn-hidden" %> + <% if iamge_path.nil? %> + <%= link_to image_tag("/images/default_blank/left-04.jpg", :width => "299", :height => "246"), board_message_path(message.board, message), :target => "_blank" %> + <% else %> + <%= link_to image_tag("/files/uploads/image#{iamge_path}", :width => "299", :height => "246"), board_message_path(message.board, message), :target => "_blank" %> + <% end %> + <% if message.parent_id.nil? %> + <%= link_to message.subject.to_s.html_safe, board_message_path(message.board, message), :target => '_blank', :class => "por_post_title" %> + <% else %> + <%= link_to message.parent.subject.to_s.html_safe, board_message_path(message.board, message), :target => '_blank', :class => "por_post_title" %> + <% end %> +

        + <%= time_from_now(message.created_on) %> + <%= link_to message.author, user_path(message.author), :class => "por_hot_name", :target => "_blank" %> +

        +
        + <%=render :partial =>"organizations/organization_content_extension", :locals => {:user_activity_id => message.id, :content=> message.content, :maxheight => 40, :maxwordsnum => 60, :maxwidth => 0} %> +
        <% end %> -

        -
        - <%= render :partial =>"users/intro_content_ex", :locals=>{:user_activity_id => message.id, :content=> content, :maxheight=>54, :maxwordsnum => 28} %> - <%#= link_to content.to_s.html_safe, board_message_url_in_org(activity.board_id, activity.id), :target => '_blank', :class => "resources-tag" %> -
        - <%#= link_to "更多", board_message_url_in_org(message.board.id,message.id), :class => "more-btn", :target => "_blank" %> -
        - <% else %> -
        -
        - - 阿里前副总裁里前副总裁:里前副总裁:里前副总裁::阿里巴巴给我上的10 -

        1分钟前 窦豆

        -

        本文选自阿本文选自阿里本文选自阿里本文选自阿里本文选自阿里本文选自阿里里巴巴前副总裁、首任美籍高管波特·埃里斯曼《阿里传》在这本书里,波特概括了他在阿里巴巴任职的8年中,学到的40堂课这40堂课简单明了地概括了马云的经营理念,以及阿里终成帝国的必

        -
        - -
        - - - - - - -
        - <% if iamge_path.nil? %> - <%= link_to image_tag("/images/default_blank/left-04.jpg", :width => "185", :height => "125"), board_message_path(message.board,activity), :target => "_blank", :class =>"sn-resourcesimg" %> - <% else %> - <%= link_to image_tag("/files/uploads/image#{iamge_path}", :width => "185", :height => "125"), board_message_path(message.board,activity), :target => "_blank", :class =>"sn-resourcesimg" %> - <% end %> -

        - <% if message.parent_id.nil? %> - <%= link_to message.subject.to_s.html_safe, board_message_path(message.board,message), :target => '_blank', :class => "resources-title sn-hidden" %> + <% end %> + <% if activity.org_act_type == 'News' and News.where("id=?", activity.org_act_id).count > 0 %> + <% news = News.find(activity.org_act_id) %> + <% iamge_path = get_image_path_from_content(news.description) %> + <% if iamge_path.nil? %> + <%= link_to image_tag("/images/default_blank/left-04.jpg", :width => "299", :height => "246"), news_path(news), :target => "_blank" %> <% else %> - <%= link_to message.parent.subject.to_s.html_safe, board_message_path(message.board,activity), :target => '_blank', :class => "resources-title sn-hidden" %> + <%= link_to image_tag("/files/uploads/image#{iamge_path}", :width => "299", :height => "246"), news_path(news), :target => "_blank" %> <% end %> -

        -
        - <%= render :partial =>"users/intro_content_ex", :locals=>{:user_activity_id => message.id, :content=> content, :maxheight=>54, :maxwordsnum => 28} %> - <%#= link_to content.to_s.html_safe, board_message_path(message.board,activity), :target => '_blank', :class => "resources-tag" %> -
        - <%#= link_to "更多", board_message_path(message.board,activity), :class => "more-btn", :target => "_blank" %> -
        + <%= link_to news.title.to_s, news_path(news), :target => '_blank', :class => "por_post_title" %> +

        + <%= time_from_now(news.created_on) %> + <%= link_to news.author, user_path(news.author), :class => "por_hot_name", :target => "_blank" %> +

        +
        + <%=render :partial =>"organizations/organization_content_extension", :locals => {:user_activity_id => news.id, :content=> news.description, :maxheight => 40, :maxwordsnum => 60, :maxwidth => 0} %> +
        + <% end %> + <% end %> + + + <% unless acts[1..5].nil? %> + <% acts[1..5].each do |activity| %> + <% if activity.container_type == 'Organization' && activity.org_act_type == 'OrgDocumentComment' && activity.org_act_id != @organization.home_id %> + <% document = activity.org_act %> +
          +
        • <%= link_to "#{document.title}".html_safe, org_document_comment_path(:id => document.id, :organization_id => document.organization.id), class: 'por_hidden_w390', :target => "_blank" %>
        • +
        + <% else activity.container_type == 'OrgSubfield' %> + <% if activity.org_act_type == 'Message' and activity.org_act_id and Message.where("id=#{activity.org_act_id}").count > 0 %> + <% message = Message.find(activity.org_act_id) %> + <% if message.board.org_subfield_id %> +
          + <% if message.parent_id.nil? %> +
        • <%= link_to "#{message.subject}".html_safe, board_message_url_in_org(message.board.id, message.id), class: 'por_hidden_w390', :target => "_blank" %>
        • + <% else %> +
        • <%= link_to "#{message.parent.subject}".html_safe, board_message_url_in_org(message.board.id, message.id), class: 'por_hidden_w390', :target => "_blank" %>
        • + <% end %> +
        + <% else %> +
          + <% if message.parent_id.nil? %> +
        • <%= link_to "#{message.subject}".html_safe, board_message_path(message.board,message), class: 'por_hidden_w390', :target => "_blank" %>
        • + <% else %> +
        • <%= link_to "#{message.parent.subject}".html_safe, board_message_path(message.board, message), class: 'por_hidden_w390', :target => "_blank" %>
        • + <% end %> +
        + <% end %> + <% end %> + <% if activity.org_act_type == 'News' and News.where("id=?", activity.org_act_id).count > 0 %> + <% news = News.find(activity.org_act_id) %> + <% iamge_path = get_image_path_from_content(news.description) %> +
          +
        • <%= link_to "#{news.title}".html_safe, news_path(news), class: 'por_hidden_w390', :target => "_blank" %>
        • +
        + <% end %> + <% end %> <% end %> <% end %> - <% if activity.org_act_type == 'News' and News.where("id=?", activity.org_act_id).count > 0 %> - <% news = News.find(activity.org_act_id) %> - <% iamge_path = get_image_path_from_content(news.description) %> -
        -
        - - 阿里前副总裁里前副总裁:里前副总裁:里前副总裁::阿里巴巴给我上的10 -

        1分钟前 窦豆

        -

        本文选自阿本文选自阿里本文选自阿里本文选自阿里本文选自阿里本文选自阿里里巴巴前副总裁、首任美籍高管波特·埃里斯曼《阿里传》在这本书里,波特概括了他在阿里巴巴任职的8年中,学到的40堂课这40堂课简单明了地概括了马云的经营理念,以及阿里终成帝国的必

        -
        - -
        - - - - - -
        - <% if iamge_path.nil? %> - <%= link_to image_tag("/images/default_blank/left-04.jpg", :width => "185", :height => "125"), news_path(news), :target => "_blank", :class =>"sn-resourcesimg" %> - <% else %> - <%= link_to image_tag("/files/uploads/image#{iamge_path}", :width => "185", :height => "125"), news_path(news), :target => "_blank", :class =>"sn-resourcesimg" %> - <% end %> -

        - <%= link_to news.title.to_s, news_path(news), :target => '_blank', :class => "resources-title sn-hidden" %> -

        -
        - <%#= link_to news.description.to_s.html_safe, news_path(news), :target => '_blank', :class => "resources-tag" %> - <%= render :partial =>"users/intro_content_ex", :locals=>{:user_activity_id => news.id, :content=> news.description, :maxheight=>54, :maxwordsnum => 28, :maxwordsnum => 28} %> -
        - <%#= link_to "更多", news_path(news), :class => "more-btn", :target => "_blank" %> -
        - <% end %> +
        +
        + <% unless acts[6..19].nil? %> +
        +
          + <% acts[6..19].each do |activity| %> + <% if activity.container_type == 'Organization' && activity.org_act_type == 'OrgDocumentComment' && activity.org_act_id != @organization.home_id %> + <% document = activity.org_act %> +
        • <%= link_to "#{document.title}".html_safe, org_document_comment_path(:id => document.id, :organization_id => document.organization.id), class: 'por_hidden_w270', :target => "_blank" %>
        • + <% else activity.container_type == 'OrgSubfield' %> + <% if activity.org_act_type == 'Message' and activity.org_act_id and Message.where("id=#{activity.org_act_id}").count > 0 %> + <% message = Message.find(activity.org_act_id) %> + <% if message.board.org_subfield_id %> + <% if message.parent_id.nil? %> +
        • <%= link_to "#{message.subject}".html_safe, board_message_url_in_org(message.board.id, message.id), class: 'por_hidden_w270', :target => "_blank" %>
        • + <% else %> +
        • <%= link_to "#{message.parent.subject}".html_safe, board_message_url_in_org(message.board.id, message.id), class: 'por_hidden_w270', :target => "_blank" %>
        • + <% end %> + <% else %> + <% if message.parent_id.nil? %> +
        • <%= link_to "#{message.subject}".html_safe, board_message_path(message.board,message), class: 'por_hidden_w270', :target => "_blank" %>
        • + <% else %> +
        • <%= link_to "#{message.parent.subject}".html_safe, board_message_path(message.board, message), class: 'por_hidden_w270', :target => "_blank" %>
        • + <% end %> + <% end %> + <% end %> + <% if activity.org_act_type == 'News' and News.where("id=?", activity.org_act_id).count > 0 %> + <% news = News.find(activity.org_act_id) %> + <% iamge_path = get_image_path_from_content(news.description) %> +
        • <%= link_to "#{news.title}".html_safe, news_path(news), class: 'por_hidden_w270', :target => "_blank" %>
        • + <% end %> + <% end %> + <% end %> +
        +
        <% end %> - - - - - - - -
        <% end %>
        \ No newline at end of file diff --git a/app/views/organizations/_organization_content_extension.html.erb b/app/views/organizations/_organization_content_extension.html.erb new file mode 100644 index 000000000..c63011586 --- /dev/null +++ b/app/views/organizations/_organization_content_extension.html.erb @@ -0,0 +1,23 @@ +

        +

        + <%= content.to_s.html_safe%> +
        +

        + + \ No newline at end of file From 48b36e5d169e1ca519df54bccc7482c47a8a7351 Mon Sep 17 00:00:00 2001 From: guange <8863824@gmail.com> Date: Tue, 31 May 2016 20:46:46 +0800 Subject: [PATCH 223/668] =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=BF=94=E5=9B=9E?= =?UTF-8?q?=E5=88=B7=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/assets/wechat/activities.html | 2 +- public/javascripts/wechat/app.js | 17 ++++++++++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/public/assets/wechat/activities.html b/public/assets/wechat/activities.html index 30b4dafaa..ab0e85faf 100644 --- a/public/assets/wechat/activities.html +++ b/public/assets/wechat/activities.html @@ -118,7 +118,7 @@
        -
        +
        diff --git a/public/javascripts/wechat/app.js b/public/javascripts/wechat/app.js index 59605271c..4c17027e0 100644 --- a/public/javascripts/wechat/app.js +++ b/public/javascripts/wechat/app.js @@ -7,6 +7,7 @@ if(debug===true){ apiUrl = 'https://www.trustie.net/api/v1/'; } + app.factory('auth', function($http,$routeParams, $cookies, $q){ var _openid = ''; @@ -66,7 +67,7 @@ app.factory('rms', function(){ return {save: save, get: get}; }); -app.controller('ActivityController',function($scope, $http, auth, rms, common){ +app.controller('ActivityController',function($anchorScroll, $location,$scope, $http, auth, rms, common){ $scope.replaceUrl = function(url){ return url; }; @@ -76,6 +77,12 @@ app.controller('ActivityController',function($scope, $http, auth, rms, common){ $scope.page = 0; var loadActData = function(page){ + if (page <= 0 && $scope.activities.length >0){ + var yOffset = rms.get("yoffset"); + $location.hash(yOffset); + return; + } + $scope.page = page; $http({ method: 'POST', @@ -109,6 +116,12 @@ app.controller('ActivityController',function($scope, $http, auth, rms, common){ $scope.loadActData = loadActData; + //跳到详情页 + $scope.goDetail = function(type, id){ + rms.save("yoffset", id); + $location.path('/'+type+'/'+id); + } + $scope.addPraise = function(act){ common.addCommonPraise(act); }; @@ -117,6 +130,8 @@ app.controller('ActivityController',function($scope, $http, auth, rms, common){ common.decreaseCommonPraise(act); }; + + }); app.factory('common', function($http, auth, $routeParams){ From 32ffd2a5b5372aab6c8d8802b63e0f1763de5ae7 Mon Sep 17 00:00:00 2001 From: guange <8863824@gmail.com> Date: Tue, 31 May 2016 20:55:46 +0800 Subject: [PATCH 224/668] =?UTF-8?q?=E8=BF=94=E5=9B=9E=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/mobile/entities/activity.rb | 1 + public/assets/wechat/activities.html | 2 +- public/javascripts/wechat/app.js | 6 +++--- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/app/api/mobile/entities/activity.rb b/app/api/mobile/entities/activity.rb index a90ff323d..9e2a39a5a 100644 --- a/app/api/mobile/entities/activity.rb +++ b/app/api/mobile/entities/activity.rb @@ -98,6 +98,7 @@ module Mobile end expose :act_type #缺陷/作业/讨论区/留言等类型 expose :act_id + expose :id expose :container_type #课程/项目/博客/个人 expose :author, using: Mobile::Entities::User do |a, opt| #用户信息 if a.is_a? ::UserActivity diff --git a/public/assets/wechat/activities.html b/public/assets/wechat/activities.html index ab0e85faf..85cfad7e4 100644 --- a/public/assets/wechat/activities.html +++ b/public/assets/wechat/activities.html @@ -118,7 +118,7 @@
        -
        +
        diff --git a/public/javascripts/wechat/app.js b/public/javascripts/wechat/app.js index 4c17027e0..51c91d152 100644 --- a/public/javascripts/wechat/app.js +++ b/public/javascripts/wechat/app.js @@ -117,9 +117,9 @@ app.controller('ActivityController',function($anchorScroll, $location,$scope, $h $scope.loadActData = loadActData; //跳到详情页 - $scope.goDetail = function(type, id){ - rms.save("yoffset", id); - $location.path('/'+type+'/'+id); + $scope.goDetail = function(type, act_id,id){ + rms.save("yoffset", 'act_'+id); + $location.path('/'+type+'/'+act_id); } $scope.addPraise = function(act){ From c9eddad45d8b3036e9dec1be6ec0ffa222132f9c Mon Sep 17 00:00:00 2001 From: guange <8863824@gmail.com> Date: Tue, 31 May 2016 21:09:47 +0800 Subject: [PATCH 225/668] =?UTF-8?q?=E6=9B=B4=E5=A4=9A=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/assets/wechat/activities.html | 4 ++-- public/javascripts/wechat/app.js | 36 ++++++++++++++++++++++++---- 2 files changed, 33 insertions(+), 7 deletions(-) diff --git a/public/assets/wechat/activities.html b/public/assets/wechat/activities.html index 85cfad7e4..c610a9839 100644 --- a/public/assets/wechat/activities.html +++ b/public/assets/wechat/activities.html @@ -249,8 +249,8 @@
        -
        -
        更多
        +
        +
        更多
        diff --git a/public/javascripts/wechat/app.js b/public/javascripts/wechat/app.js index 51c91d152..a129a795c 100644 --- a/public/javascripts/wechat/app.js +++ b/public/javascripts/wechat/app.js @@ -73,11 +73,35 @@ app.controller('ActivityController',function($anchorScroll, $location,$scope, $h }; console.log("ActivityController load"); - $scope.activities = rms.get("activities") || []; + $scope.page = 0; + $scope.activities = rms.get("activities") || []; + + var savePageConfig = function(){ + rms.save('current_page', $scope.current_page); + rms.save('has_more', $scope.has_more); + rms.save('activities', $scope.activities); + } + + var loadPageConfig = function(){ + var current_page = rms.get('current_page'); + var has_more = rms.get('has_more'); + var activities = rms.get('activities'); + + if(typeof current_page !== 'undefined'){ + $scope.page = current_page; + } + if(typeof has_more !== 'undefined'){ + $scope.has_more = has_more; + } + if(typeof activities !== 'undefined'){ + $scope.activities = activities; + } + } var loadActData = function(page){ - if (page <= 0 && $scope.activities.length >0){ + if (page <= 0 && $scope.activities.length >0){ //应该是返回过来的 + loadPageConfig(); var yOffset = rms.get("yoffset"); $location.hash(yOffset); return; @@ -97,10 +121,12 @@ app.controller('ActivityController',function($anchorScroll, $location,$scope, $h } else { $scope.activities = response.data.data; } - $scope.current_page = response.data.page; - $scope.all_count = response.data.all_count; - $scope.count = response.data.count; + $scope.has_more = (response.data.count + response.data.page * 10) < response.data.all_count; + console.log(response.data); + + rms.save('current_page', $scope.page); + rms.save('has_more', $scope.has_more); rms.save('activities', $scope.activities); }, function errorCallback(response) { }); From c26d544772370e6b18b8e29830b99909d73764a3 Mon Sep 17 00:00:00 2001 From: guange <8863824@gmail.com> Date: Tue, 31 May 2016 21:15:31 +0800 Subject: [PATCH 226/668] =?UTF-8?q?=E6=9B=B4=E5=A4=9A=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/javascripts/wechat/app.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/public/javascripts/wechat/app.js b/public/javascripts/wechat/app.js index a129a795c..82c41a53c 100644 --- a/public/javascripts/wechat/app.js +++ b/public/javascripts/wechat/app.js @@ -103,7 +103,7 @@ app.controller('ActivityController',function($anchorScroll, $location,$scope, $h if (page <= 0 && $scope.activities.length >0){ //应该是返回过来的 loadPageConfig(); var yOffset = rms.get("yoffset"); - $location.hash(yOffset); + $location.yOffset = yOffset; return; } @@ -144,7 +144,9 @@ app.controller('ActivityController',function($anchorScroll, $location,$scope, $h //跳到详情页 $scope.goDetail = function(type, act_id,id){ - rms.save("yoffset", 'act_'+id); + console.log($anchorScroll.yOffset); + rms.save("yoffset", $anchorScroll.yOffset); + $location.path('/'+type+'/'+act_id); } From 553a02c89dbbba10ce7cb69cb5c9a269eb5961cc Mon Sep 17 00:00:00 2001 From: guange <8863824@gmail.com> Date: Tue, 31 May 2016 21:22:44 +0800 Subject: [PATCH 227/668] =?UTF-8?q?=E6=9B=B4=E5=A4=9A=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/javascripts/wechat/app.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/public/javascripts/wechat/app.js b/public/javascripts/wechat/app.js index 82c41a53c..5232b91c4 100644 --- a/public/javascripts/wechat/app.js +++ b/public/javascripts/wechat/app.js @@ -103,7 +103,7 @@ app.controller('ActivityController',function($anchorScroll, $location,$scope, $h if (page <= 0 && $scope.activities.length >0){ //应该是返回过来的 loadPageConfig(); var yOffset = rms.get("yoffset"); - $location.yOffset = yOffset; + $location.hash(yOffset); return; } @@ -144,8 +144,8 @@ app.controller('ActivityController',function($anchorScroll, $location,$scope, $h //跳到详情页 $scope.goDetail = function(type, act_id,id){ - console.log($anchorScroll.yOffset); - rms.save("yoffset", $anchorScroll.yOffset); + console.log($anchorScroll()); + rms.save("yoffset", $anchorScroll()); $location.path('/'+type+'/'+act_id); } From 03357388bdda524c1951eb661af3c0586191e74c Mon Sep 17 00:00:00 2001 From: guange <8863824@gmail.com> Date: Tue, 31 May 2016 21:26:31 +0800 Subject: [PATCH 228/668] =?UTF-8?q?=E6=9B=B4=E5=A4=9A=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/javascripts/wechat/app.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/public/javascripts/wechat/app.js b/public/javascripts/wechat/app.js index 5232b91c4..e0e436fda 100644 --- a/public/javascripts/wechat/app.js +++ b/public/javascripts/wechat/app.js @@ -103,7 +103,7 @@ app.controller('ActivityController',function($anchorScroll, $location,$scope, $h if (page <= 0 && $scope.activities.length >0){ //应该是返回过来的 loadPageConfig(); var yOffset = rms.get("yoffset"); - $location.hash(yOffset); + $location.yOffset = yOffset; return; } @@ -144,9 +144,7 @@ app.controller('ActivityController',function($anchorScroll, $location,$scope, $h //跳到详情页 $scope.goDetail = function(type, act_id,id){ - console.log($anchorScroll()); - rms.save("yoffset", $anchorScroll()); - + rms.save("yoffset",'act_'+id); $location.path('/'+type+'/'+act_id); } From ceffa6c2c82c74e60982838041ffb5863abdb8ca Mon Sep 17 00:00:00 2001 From: guange <8863824@gmail.com> Date: Tue, 31 May 2016 21:27:00 +0800 Subject: [PATCH 229/668] =?UTF-8?q?=E6=9B=B4=E5=A4=9A=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/javascripts/wechat/app.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/javascripts/wechat/app.js b/public/javascripts/wechat/app.js index e0e436fda..8cc3d053a 100644 --- a/public/javascripts/wechat/app.js +++ b/public/javascripts/wechat/app.js @@ -103,7 +103,7 @@ app.controller('ActivityController',function($anchorScroll, $location,$scope, $h if (page <= 0 && $scope.activities.length >0){ //应该是返回过来的 loadPageConfig(); var yOffset = rms.get("yoffset"); - $location.yOffset = yOffset; + $location.hash(yOffset); return; } From 51d3fc3aad760b2113b78f7d1b0aa9aad1311bd8 Mon Sep 17 00:00:00 2001 From: guange <8863824@gmail.com> Date: Tue, 31 May 2016 21:31:36 +0800 Subject: [PATCH 230/668] =?UTF-8?q?=E6=9B=B4=E5=A4=9A=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/javascripts/wechat/app.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/public/javascripts/wechat/app.js b/public/javascripts/wechat/app.js index 8cc3d053a..641e95bed 100644 --- a/public/javascripts/wechat/app.js +++ b/public/javascripts/wechat/app.js @@ -94,9 +94,7 @@ app.controller('ActivityController',function($anchorScroll, $location,$scope, $h if(typeof has_more !== 'undefined'){ $scope.has_more = has_more; } - if(typeof activities !== 'undefined'){ - $scope.activities = activities; - } + } var loadActData = function(page){ From 0cc8cb9928a1ade5d069a2ca7897901160e2769c Mon Sep 17 00:00:00 2001 From: cxt Date: Wed, 1 Jun 2016 08:57:27 +0800 Subject: [PATCH 231/668] =?UTF-8?q?=E5=88=9A=E6=8F=90=E4=BA=A4=E7=9A=84?= =?UTF-8?q?=E5=9B=9E=E5=A4=8D=E6=97=B6=E9=97=B4=E6=98=BE=E7=A4=BA=E4=B8=BA?= =?UTF-8?q?=E2=80=9C=E5=88=9A=E5=88=9A=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/helpers/api_helper.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/helpers/api_helper.rb b/app/helpers/api_helper.rb index 3f7adcfa6..fb1231287 100644 --- a/app/helpers/api_helper.rb +++ b/app/helpers/api_helper.rb @@ -182,7 +182,7 @@ module ApiHelper timeIntoFormat = 0 updateAtValue = "" if timePassed < 0 - updateAtValue = "1分钟前" + updateAtValue = "刚刚" elsif timePassed < ONE_MINUTE updateAtValue = "1分钟前" elsif timePassed < ONE_HOUR From 5c27aee2bd0ac8f2d53ed58c7db2546b4445fb9f Mon Sep 17 00:00:00 2001 From: huang Date: Wed, 1 Jun 2016 09:08:08 +0800 Subject: [PATCH 232/668] =?UTF-8?q?=E6=A8=A1=E5=BC=8F=E4=BA=8C=E8=AF=BE?= =?UTF-8?q?=E7=A8=8B=E6=A8=A1=E5=9D=97=20=20=20=E5=AE=9A=E4=B9=89=E5=85=AC?= =?UTF-8?q?=E5=85=B1=E6=96=B9=E6=B3=95=EF=BC=88=E6=98=BE=E7=A4=BA=E6=8F=8F?= =?UTF-8?q?=E8=BF=B0=E5=86=85=E5=AE=B9=E4=BB=A5=E7=9C=81=E7=95=A5=E5=8F=B7?= =?UTF-8?q?=E7=BB=93=E6=9D=9F=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../organizations/_org_custom_left2.html.erb | 300 ++++++++++++++++-- .../organizations/_org_custom_left3.html.erb | 19 +- .../_organization_content_extension.html.erb | 6 +- 3 files changed, 289 insertions(+), 36 deletions(-) diff --git a/app/views/organizations/_org_custom_left2.html.erb b/app/views/organizations/_org_custom_left2.html.erb index 649a1dd55..6dd7e0e66 100644 --- a/app/views/organizations/_org_custom_left2.html.erb +++ b/app/views/organizations/_org_custom_left2.html.erb @@ -1,4 +1,282 @@ -
        +
        +<% if is_default_field?(field) %> + <% case field.name %> + <% when 'course' %> +

        课程动态

        + <% if @course_acts.blank? %> +

        该模块暂时没有相关内容

        + <% else %> + <% @course_acts.first(4).each do |act| %> + <% if act.org_act_type == "HomeworkCommon" %> + <% activity = act.org_act %> + <% iamge_path = get_image_path_from_content(activity.description) %> +
        + <%= link_to activity.name.to_s, student_work_index_url_in_org(activity.id), :target => '_blank', :class => "por_course_title", :title => activity.name.to_s %> + <% if iamge_path.nil? %> + <%= link_to image_tag("/images/default_blank/left-02.jpg", :width => "140", :height => "100"), student_work_index_url_in_org(activity.id), :target => "_blank", :class =>"fl" %> + <% else %> + <%= link_to image_tag("/files/uploads/image#{iamge_path}", :width => "140", :height => "100"), student_work_index_url_in_org(activity.id), :target => "_blank", :class =>"fl" %> + <% end %> + + <%=render :partial =>"organizations/organization_content_extension", :locals => {:user_activity_id => activity.id, :content=> activity.description, :maxheight => 80, :maxwordsnum => 56, :maxwidth => 0, :cl => "por_course_txt fl"} %> + + <%= time_from_now(activity.updated_at) %> +
        + <% elsif act.org_act_type == "Message" %> + <% activity = act.org_act %> + <% iamge_path = get_image_path_from_content(activity.content) %> +
        + <%= link_to activity.parent_id.nil? ? activity.subject : activity.parent.subject, board_message_url_in_org(activity.board_id, activity.id), :target => '_blank', :class => "por_course_title" %> + +

        学习程序设计,要学习语言的语法更重要的是求解问题的算法思想。语法的学习需要多尝试,算法的算机程序设计(Z2班)算机程序设计(Z2班)算机程序设计(Z2班)学习需要多思考。学习程序设计

        + 2016春季学期 +
        + + + +
        + <% if iamge_path.nil? %> + <%= link_to image_tag("/images/default_blank/left-02.jpg", :width => "380", :height => "165"), board_message_url_in_org(activity.board_id, activity.id), :target => "_blank", :class =>"sn-news-bigimg",:style=>"display:block;" %> + <% else %> + <%= link_to image_tag("/files/uploads/image#{iamge_path}", :width => "380", :height => "165"), board_message_url_in_org(activity.board_id, activity.id), :target => "_blank", :class =>"sn-news-bigimg",:style=>"display:block;" %> + <% end %> +

        + <%= link_to activity.parent_id.nil? ? activity.subject.to_s.html_safe : activity.parent.subject.to_s.html_safe, board_message_url_in_org(activity.board_id, activity.id), :target => '_blank', :class => "h3-title" %> +

        + <%= format_date activity.updated_on %> +
        +
        <%= activity.content.to_s.html_safe %>
        +
        +
        <%=link_to "查看全文>>", board_message_url_in_org(activity.board_id, activity.id), :target => "_blank", :class => "sn-link-grey2 sn-fr" %>
        +
        + <% elsif act.org_act_type == "News" %> + <% activity = News.find(act.org_act_id) %> + <% iamge_path = get_image_path_from_content(activity.description) %> +
        + <% if iamge_path.nil? %> + <%= link_to image_tag("/images/default_blank/left-02.jpg", :width => "380", :height => "165"), news_url_in_org(activity.id), :target => "_blank", :class =>"sn-news-bigimg",:style=>"display:block;" %> + <% else %> + <%= link_to image_tag("/files/uploads/image#{iamge_path}", :width => "380", :height => "165"), news_url_in_org(activity.id), :target => "_blank", :class =>"sn-news-bigimg",:style=>"display:block;" %> + <% end %> +

        + <%= link_to activity.title.to_s, news_url_in_org(activity.id), :target => '_blank', :class => "h3-title" %> +

        + <%= format_date activity.created_on %> +
        +
        <%= activity.description.to_s.html_safe %>
        +
        + +
        <%=link_to "查看全文>>", news_url_in_org(activity.id), :target => "_blank", :class => "sn-link-grey2 sn-fr" %>
        +
        + <% elsif act.org_act_type == "Poll" %> + <% activity = Poll.find(act.org_act_id) %> + <% has_commit = has_commit_poll?(activity.id ,User.current)%> + <% poll_name = activity.polls_name.empty? ? l(:label_poll_new) : activity.polls_name%> + <% iamge_path = get_image_path_from_content(activity.polls_description) %> + <% if ( activity.polls_status==2) %> +
        + <% if iamge_path.nil? %> + <%= link_to image_tag("/images/default_blank/left-02.jpg", :width => "380", :height => "165"), Setting.protocol + "://" + Setting.host_name + "/poll/" + activity.id.to_s + "/poll_result", :target => "_blank", :class =>"sn-news-bigimg",:style=>"display:block;" %> + <% else %> + <%= link_to image_tag("/files/uploads/image#{iamge_path}", :width => "380", :height => "165"), Setting.protocol + "://" + Setting.host_name + "/poll/" + activity.id.to_s + "/poll_result", :target => "_blank", :class =>"sn-news-bigimg",:style=>"display:block;" %> + <% end %> +

        + <% if has_commit %> + <%= link_to poll_name, Setting.protocol + "://" + Setting.host_name + "/poll/" + activity.id.to_s + "/poll_result", :target => '_blank', :class => "h3-title" %> + <% else %> + <%= link_to poll_name, Setting.protocol + "://" + Setting.host_name + "/poll/" + activity.id.to_s + "/poll_result", :target => '_blank', :class => "h3-title" %> + <% end %> +

        + <%= format_date activity.published_at %> +
        +
        <%= activity.polls_description.to_s.html_safe %>
        +
        +
        <%=link_to "查看全文>>", Setting.protocol + "://" + Setting.host_name + "/poll/" + activity.id.to_s + "/poll_result", :target => "_blank", :class => "sn-link-grey2 sn-fr" %>
        +
        + <% end %> + <% end %> + <% end %> + <% end %> + <% when 'project' %> + <% if @project_acts.blank? %> +

        项目动态

        +

        该模块暂时没有相关内容

        + <% else %> +

        项目动态

        +
        + <% @project_acts.first(1).each do |act| %> + <% if act.org_act_type == "Issue" %> + <% activity = Issue.find(act.org_act_id) %> + <% iamge_path = get_image_path_from_content(activity.description) %> +
        + <% if iamge_path.nil? %> + <%= link_to image_tag("/images/default_blank/left-02.jpg", :width => "380", :height => "165"), issue_url_in_org(activity.id), :target => "_blank", :class =>"sn-news-bigimg",:style=>"display:block;" %> + <% else %> + <%= link_to image_tag("/files/uploads/image#{iamge_path}", :width => "380", :height => "165"), issue_url_in_org(activity.id), :target => "_blank", :class =>"sn-news-bigimg",:style=>"display:block;" %> + <% end %> +

        + <%= link_to activity.subject.to_s, issue_url_in_org(activity.id), :target => '_blank', :class => "h3-title" %> +

        + <%= format_date activity.updated_on %> +
        +
        <%= activity.description.to_s.html_safe %>
        +
        +
        <%=link_to "查看全文>>", issue_url_in_org(activity.id), :target => "_blank", :class => "sn-link-grey2 sn-fr" %>
        +
        + <% elsif act.org_act_type == "Message" %> + <% activity = Message.find(act.org_act_id) %> + <% iamge_path = get_image_path_from_content(activity.content) %> +
        + <% if iamge_path.nil? %> + <%= link_to image_tag("/images/default_blank/left-02.jpg", :width => "380", :height => "165"), board_message_url_in_org(activity.board_id, activity.id), :target => "_blank", :class =>"sn-news-bigimg",:style=>"display:block;" %> + <% else %> + <%= link_to image_tag("/files/uploads/image#{iamge_path}", :width => "380", :height => "165"), board_message_url_in_org(activity.board_id, activity.id), :target => "_blank", :class =>"sn-news-bigimg",:style=>"display:block;" %> + <% end %> +

        + <%= link_to activity.parent_id.nil? ? activity.subject.to_s.html_safe : activity.parent.subject.to_s.html_safe, board_message_url_in_org(activity.board_id, activity.id), :target => '_blank', :class => "h3-title" %> +

        + <%= format_date activity.updated_on %> +
        +
        <%= activity.content.to_s.html_safe %>
        +
        +
        <%=link_to "查看全文>>", board_message_url_in_org(activity.board_id, activity.id), :target => "_blank", :class => "sn-link-grey2 sn-fr" %>
        +
        + <% elsif act.org_act_type == "News" %> + <% activity = News.find(act.org_act_id) %> + <% iamge_path = get_image_path_from_content(activity.description) %> +
        + <% if iamge_path.nil? %> + <%= link_to image_tag("/images/default_blank/left-02.jpg", :width => "380", :height => "165"), board_message_url_in_org(activity.board_id, activity.id), :target => "_blank", :class =>"sn-news-bigimg",:style=>"display:block;" %> + <% else %> + <%= link_to image_tag("/files/uploads/image#{iamge_path}", :width => "380", :height => "165"), board_message_url_in_org(activity.board_id, activity.id), :target => "_blank", :class =>"sn-news-bigimg",:style=>"display:block;" %> + <% end %> +

        + <%= link_to activity.description.to_s.html_safe, news_url_in_org(activity.id), :target => '_blank', :class => "h3-title" %> +

        + 2016-04-08 +
        +
        <%= activity.description.to_s.html_safe %>
        +
        +
        <%=link_to "查看全文>>", news_url_in_org(activity.id), :target => "_blank", :class => "sn-link-grey2 sn-fr" %>
        +
        + <% end %> + <% end %> + <% end %> + <% end %> +<% else %> + <% if field.field_type == "Post" %> + <% org_acts = get_subfield_acts field %> + <% if org_acts.blank? %> +

        <%= field.name %>

        +
        + <%= render :partial => 'organizations/org_subfield_leftM1_default', :locals => {:field => field} %> + <% else %> +

        <%= field.name %> + <%= render :partial => 'organizations/link_subfield_more', :locals => {:field => field} %> +

        +
        + <% org_acts.first(1).each do |activity| %> + <% if activity.container_type == 'Organization' && activity.org_act_type == 'OrgDocumentComment' && activity.org_act_id != @organization.home_id %> + <% document = activity.org_act %> + <% org_subfield_id = params[:org_subfield_id] %> + <% flag = 2 %> + <% iamge_path = get_image_path_from_content(document.content) %> +
        + <% if iamge_path.nil? %> + <%= link_to image_tag("/images/default_blank/left-02.jpg", :width => "380", :height => "165"), org_document_comment_path(:id => document.id, :organization_id => document.organization.id), :target => "_blank", :class =>"sn-news-bigimg",:style=>"display:block;" %> + <% else %> + <%= link_to image_tag("/files/uploads/image#{iamge_path}", :width => "380", :height => "165"), org_document_comment_path(:id => document.id, :organization_id => document.organization.id), :target => "_blank", :class =>"sn-news-bigimg",:style=>"display:block;" %> + <% end %> +

        + <%= link_to document.title, org_document_comment_path(:id => document.id, :organization_id => document.organization.id), :target => '_blank', :class => "h3-title" %> +

        + <%= format_date document.created_at %> +
        +
        <%= document.content.to_s.html_safe %>
        +
        +
        <%=link_to "查看全文>>", org_document_comment_path(:id => document.id, :organization_id => document.organization.id), :target => "_blank", :class => "sn-link-grey2 sn-fr" %>
        +
        + <% else activity.container_type == 'OrgSubfield' %> + <% if activity.org_act_type == 'Message' and activity.org_act_id and Message.where("id=#{activity.org_act_id}").count > 0 %> + <% message = Message.find(activity.org_act_id) %> + <% if message.parent_id.nil? %> + <% content = message.content%> + <% else %> + <% content = message.parent.content%> + <% end %> + <% iamge_path = get_image_path_from_content(content) %> + <% if message.board.org_subfield_id %> +
        + <% if iamge_path.nil? %> + <%= link_to image_tag("/images/default_blank/left-02.jpg", :width => "380", :height => "165"), board_message_url_in_org(message.board.id,message.id), :target => "_blank", :class =>"sn-news-bigimg",:style=>"display:block;" %> + <% else %> + <%= link_to image_tag("/files/uploads/image#{iamge_path}", :width => "380", :height => "165"), board_message_url_in_org(message.board.id,message.id), :target => "_blank", :class =>"sn-news-bigimg",:style=>"display:block;" %> + <% end %> +

        + <%= link_to message.parent_id.nil? ? message.subject.to_s.html_safe : message.parent.subject.to_s.html_safe, board_message_url_in_org(message.board.id,message.id), :target => '_blank', :class => "h3-title" %> +

        + <%= format_date message.created_on %> +
        +
        <%= content.to_s.html_safe %>
        +
        +
        <%=link_to "查看全文>>", board_message_url_in_org(message.board.id,message.id), :target => "_blank", :class => "sn-link-grey2 sn-fr" %>
        +
        + <% else %> +
        + <% if iamge_path.nil? %> + <%= link_to image_tag("/images/default_blank/left-02.jpg", :width => "380", :height => "165"), board_message_path(message.board,activity), :target => "_blank", :class =>"sn-news-bigimg",:style=>"display:block;" %> + <% else %> + <%= link_to image_tag("/files/uploads/image#{iamge_path}", :width => "380", :height => "165"), board_message_path(message.board,activity), :target => "_blank", :class =>"sn-news-bigimg",:style=>"display:block;" %> + <% end %> +

        + <% if message.parent_id.nil? %> + <%= link_to message.subject.to_s.html_safe, board_message_path(message.board,message), :target => '_blank', :class => "h3-title" %> + <% else %> + <%= link_to message.parent.subject.to_s.html_safe, board_message_path(message.board,activity), :target => '_blank', :class => "h3-title" %> + <% end %> +

        + <%= format_date message.created_on %> +
        +
        <%= content.to_s.html_safe %>
        +
        +
        + <% if message.parent_id.nil? %> + <%=link_to "查看全文>>", board_message_path(message.board,message), :target => "_blank", :class => "sn-link-grey2 sn-fr" %> + <% else %> + <%=link_to "查看全文>>", board_message_path(message.board,activity), :target => "_blank", :class => "sn-link-grey2 sn-fr" %> + <% end %> +
        +
        + <% end %> + <% end %> + <% if activity.org_act_type == 'News' and News.where("id=?", activity.org_act_id).count > 0 %> + <% news = News.find(activity.org_act_id) %> + <% iamge_path = get_image_path_from_content(news.description) %> +
        + <% if iamge_path.nil? %> + <%= link_to image_tag("/images/default_blank/left-02.jpg", :width => "380", :height => "165"), news_path(news), :target => "_blank", :class =>"sn-news-bigimg",:style=>"display:block;" %> + <% else %> + <%= link_to image_tag("/files/uploads/image#{iamge_path}", :width => "380", :height => "165"), news_path(news), :target => "_blank", :class =>"sn-news-bigimg",:style=>"display:block;" %> + <% end %> +

        + <%= link_to news.title.to_s, news_path(news), :target => '_blank', :class => "h3-title" %> +

        + <%= format_date news.created_on %> +
        +
        <%= news.description.to_s.html_safe %>
        +
        +
        <%=link_to "查看全文>>", news_path(news), :target => "_blank", :class => "sn-link-grey2 sn-fr" %>
        +
        + <% end %> + <% end %> + <% end %> + <% end %> + <% end %> +<% end %> + + + +

        精品课程更多>

        2016春计算机程序设计(Z2算机程序设计(Z2班)算机程序设计(Z2班)班) @@ -6,23 +284,7 @@

        学习程序设计,要学习语言的语法更重要的是求解问题的算法思想。语法的学习需要多尝试,算法的算机程序设计(Z2班)算机程序设计(Z2班)算机程序设计(Z2班)学习需要多思考。学习程序设计

        2016春季学期
        -
        - 2016春计算机程序设计(Z2班) - -

        学习程序设计,要学习语言的语法更重要的是求解问题的算法思想。语法的学习需要多尝试,算法的学习需要多思考。学习程序设计

        - 2016春季学期 -
        -
        - 2016春计算机程序设计(Z2班) - -

        学习程序设计,要学习语言的语法更重要的是求解问题的算法思想。语法的学习需要多尝试,算法的学习需要多思考。学习程序设计

        - 2016春季学期 -
        -
        - 2016春计算机程序设计(Z2班) - -

        学习程序设计,要学习语言的语法更重要的是求解问题的算法思想。语法的学习需要多尝试,算法的学习需要多思考。学习程序设计

        - 2016春季学期 -
        + +
        \ No newline at end of file diff --git a/app/views/organizations/_org_custom_left3.html.erb b/app/views/organizations/_org_custom_left3.html.erb index fdf06a023..63cb584cc 100644 --- a/app/views/organizations/_org_custom_left3.html.erb +++ b/app/views/organizations/_org_custom_left3.html.erb @@ -1,7 +1,7 @@
        <% if acts.blank? %>

        <%= field.name %>

        -

        该模块暂时没有发布内容

        +

        该模块暂时没有相关内容

        <% else %>

        <%= field.name %> <%= render :partial => 'organizations/link_subfield_more', :locals => {:field => field} %> @@ -21,9 +21,7 @@ <%= time_from_now(acts.first.org_act.created_at) %> <%= link_to acts.first.org_act.creator, user_path(acts.first.org_act.creator), :class => "por_hot_name", :target => "_blank" %>

        -
        - <%=render :partial =>"organizations/organization_content_extension", :locals => {:user_activity_id => acts.first.org_act.id, :content=> acts.first.org_act.content, :maxheight => 40, :maxwordsnum => 60, :maxwidth => 0} %> -
        + <%=render :partial =>"organizations/organization_content_extension", :locals => {:user_activity_id => acts.first.org_act.id, :content=> acts.first.org_act.content, :maxheight => 40, :maxwordsnum => 60, :maxwidth => 0, :cl => "por_post_txt"} %> <% else activity.container_type == 'OrgSubfield' %> <% if activity.org_act_type == 'Message' and activity.org_act_id and Message.where("id=#{activity.org_act_id}").count > 0 %> <% message = Message.find(activity.org_act_id) %> @@ -44,9 +42,7 @@ <%= time_from_now(message.created_on) %> <%= link_to message.author, user_path(message.author), :class => "por_hot_name", :target => "_blank" %>

        -
        - <%=render :partial =>"organizations/organization_content_extension", :locals => {:user_activity_id => message.id, :content=> message.content, :maxheight => 40, :maxwordsnum => 60, :maxwidth => 0} %> -
        + <%=render :partial =>"organizations/organization_content_extension", :locals => {:user_activity_id => message.id, :content=> message.content, :maxheight => 40, :maxwordsnum => 60, :maxwidth => 0, :cl => "por_post_txt"} %> <% else %> <% if iamge_path.nil? %> <%= link_to image_tag("/images/default_blank/left-04.jpg", :width => "299", :height => "246"), board_message_path(message.board, message), :target => "_blank" %> @@ -62,9 +58,7 @@ <%= time_from_now(message.created_on) %> <%= link_to message.author, user_path(message.author), :class => "por_hot_name", :target => "_blank" %>

        -
        - <%=render :partial =>"organizations/organization_content_extension", :locals => {:user_activity_id => message.id, :content=> message.content, :maxheight => 40, :maxwordsnum => 60, :maxwidth => 0} %> -
        + <%=render :partial =>"organizations/organization_content_extension", :locals => {:user_activity_id => message.id, :content=> message.content, :maxheight => 40, :maxwordsnum => 60, :maxwidth => 0, :cl => "por_post_txt"} %> <% end %> <% end %> <% if activity.org_act_type == 'News' and News.where("id=?", activity.org_act_id).count > 0 %> @@ -80,12 +74,9 @@ <%= time_from_now(news.created_on) %> <%= link_to news.author, user_path(news.author), :class => "por_hot_name", :target => "_blank" %>

        -
        - <%=render :partial =>"organizations/organization_content_extension", :locals => {:user_activity_id => news.id, :content=> news.description, :maxheight => 40, :maxwordsnum => 60, :maxwidth => 0} %> -
        + <%=render :partial =>"organizations/organization_content_extension", :locals => {:user_activity_id => news.id, :content=> news.description, :maxheight => 40, :maxwordsnum => 60, :maxwidth => 0, :cl => "por_post_txt"} %> <% end %> <% end %> - <% unless acts[1..5].nil? %> <% acts[1..5].each do |activity| %> diff --git a/app/views/organizations/_organization_content_extension.html.erb b/app/views/organizations/_organization_content_extension.html.erb index c63011586..a486edd65 100644 --- a/app/views/organizations/_organization_content_extension.html.erb +++ b/app/views/organizations/_organization_content_extension.html.erb @@ -1,7 +1,7 @@ -

        -

        +

        + <%= content.to_s.html_safe%> -

        +

        \ No newline at end of file diff --git a/app/views/organizations/_org_custom_admin.html.erb b/app/views/organizations/_org_custom_admin.html.erb index 559b52b63..2f454819c 100644 --- a/app/views/organizations/_org_custom_admin.html.erb +++ b/app/views/organizations/_org_custom_admin.html.erb @@ -9,4 +9,22 @@ +<% end %> +<% if allow_to_create?(@organization, "Comppro") %> +
      • + + +
      • +<% end %> +<% if allow_to_create?(@organization, "Compcou") %> +
      • + + +
      • +<% end %> +<% if allow_to_create?(@organization, "Compact") %> +
      • + + +
      • <% end %> \ No newline at end of file diff --git a/app/views/organizations/_org_left_subfield_list.html.erb b/app/views/organizations/_org_left_subfield_list.html.erb index e621df8bd..30234c300 100644 --- a/app/views/organizations/_org_left_subfield_list.html.erb +++ b/app/views/organizations/_org_left_subfield_list.html.erb @@ -125,6 +125,22 @@
        <%= link_to "#{field.name}", students_organization_path(organization, :org_subfield_id => field.id), :class => "homepageMenuText homepageMenuControl hidden", :onclick => "$('#homepageLeftMenuPost').slideToggle();" %>
        + <% elsif field.field_type == "Compstu" && User.current.admin? %> +
        + <%= link_to "#{field.name}", students_organization_path(organization, :org_subfield_id => field.id), :class => "homepageMenuText homepageMenuControl hidden", :onclick => "$('#homepageLeftMenuPost').slideToggle();" %> +
        + <% elsif field.field_type == "Comppro" && User.current.admin? %> +
        + <%= link_to "#{field.name}", projects_organization_path(organization, :org_subfield_id => field.id), :class => "homepageMenuText homepageMenuControl hidden", :onclick => "$('#homepageLeftMenuPost').slideToggle();" %> +
        + <% elsif field.field_type == "Compcou" && User.current.admin? %> +
        + <%= link_to "#{field.name}", courses_organization_path(organization, :org_subfield_id => field.id), :class => "homepageMenuText homepageMenuControl hidden", :onclick => "$('#homepageLeftMenuPost').slideToggle();" %> +
        + <% elsif field.field_type == "Compact" && User.current.admin? %> +
        + <%= link_to "#{field.name}", acts_organization_path(organization, :org_subfield_id => field.id), :class => "homepageMenuText homepageMenuControl hidden", :onclick => "$('#homepageLeftMenuPost').slideToggle();" %> +
        <% elsif field.field_type == "Resource" %>
        <% if !field.subfield_subdomain_dir.nil? %> diff --git a/app/views/organizations/courses.html.erb b/app/views/organizations/courses.html.erb new file mode 100644 index 000000000..875fc3340 --- /dev/null +++ b/app/views/organizations/courses.html.erb @@ -0,0 +1,30 @@ +
        +
        + <% if @type == "famous" %> + 精品课程 + <% else %> + <%= @field.name %> + <% end %> +
        +
        +
        + +
        + <%=render 'organizations/org_container', :containers => @containers %> +
        +
        +
          + <%= pagination_links_full @atta_pages, @containers_count, :per_page_links => false, :flag => true %> +
        +
        +
        \ No newline at end of file diff --git a/app/views/organizations/courses.js.erb b/app/views/organizations/courses.js.erb new file mode 100644 index 000000000..dc42c115c --- /dev/null +++ b/app/views/organizations/courses.js.erb @@ -0,0 +1,3 @@ +$("#org_container_list").html('<%= escape_javascript( render :partial => 'organizations/org_container', :locals => {:containers => @containers})%>'); +$("#pages").html('<%= pagination_links_full @atta_pages, @container_count, :per_page_links => false, :remote => @is_remote, :flag => true %>'); +$("#org_student_search").attr('href','<%= courses_organization_path(@organization, :type => @type) %>'); \ No newline at end of file diff --git a/app/views/organizations/projects.html.erb b/app/views/organizations/projects.html.erb new file mode 100644 index 000000000..1c6cfa1d1 --- /dev/null +++ b/app/views/organizations/projects.html.erb @@ -0,0 +1,30 @@ +
        +
        + <% if @type == "famous" %> + 热门项目 + <% else %> + <%= @field.name %> + <% end %> +
        +
        +
        + +
        + <%=render 'organizations/org_container', :containers => @containers %> +
        +
        +
          + <%= pagination_links_full @atta_pages, @containers_count, :per_page_links => false, :flag => true %> +
        +
        +
        \ No newline at end of file diff --git a/app/views/organizations/projects.js.erb b/app/views/organizations/projects.js.erb new file mode 100644 index 000000000..e8d4f244a --- /dev/null +++ b/app/views/organizations/projects.js.erb @@ -0,0 +1,3 @@ +$("#org_container_list").html('<%= escape_javascript( render :partial => 'organizations/org_container', :locals => {:containers => @containers})%>'); +$("#pages").html('<%= pagination_links_full @atta_pages, @container_count, :per_page_links => false, :remote => @is_remote, :flag => true %>'); +$("#org_student_search").attr('href','<%= projects_organization_path(@organization, :type => @type) %>'); \ No newline at end of file diff --git a/config/routes.rb b/config/routes.rb index 71b8f298e..0349fc122 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -78,6 +78,9 @@ RedmineApp::Application.routes.draw do get 'search_courses' get 'teachers' get 'students' + get 'projects' + get 'courses' + get 'acts' post 'join_course_menu' post 'join_courses' get 'search_projects' @@ -99,6 +102,8 @@ RedmineApp::Application.routes.draw do post 'reset_excellent_teacher' post 'reset_excellent_student' post 'agree_apply_subdomain' + post 'update_field_by_admin' + post 'reset_update_field_by_admin' end end diff --git a/db/migrate/20160601073753_add_hot_to_project.rb b/db/migrate/20160601073753_add_hot_to_project.rb new file mode 100644 index 000000000..f35afa97f --- /dev/null +++ b/db/migrate/20160601073753_add_hot_to_project.rb @@ -0,0 +1,5 @@ +class AddHotToProject < ActiveRecord::Migration + def change + add_column :projects, :hot, :integer, :default => false + end +end diff --git a/db/schema.rb b/db/schema.rb index f7d61f57c..05a6f4e22 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended to check this file into your version control system. -ActiveRecord::Schema.define(:version => 20160531021244) do +ActiveRecord::Schema.define(:version => 20160601073753) do create_table "activities", :force => true do |t| t.integer "act_id", :null => false @@ -1810,6 +1810,7 @@ ActiveRecord::Schema.define(:version => 20160531021244) do t.integer "journals_count", :default => 0 t.integer "boards_reply_count", :default => 0 t.integer "visits", :default => 0 + t.integer "hot", :default => 0 end add_index "projects", ["lft"], :name => "index_projects_on_lft" diff --git a/public/javascripts/org.js b/public/javascripts/org.js index 5b18372ed..05ae5e717 100644 --- a/public/javascripts/org.js +++ b/public/javascripts/org.js @@ -108,4 +108,23 @@ function chooseTeacherType(org_id){ } } lastSendType = sendType; +} + +//修改状态 +function admin_hide_org(content, id){ + if (content.text() == '设为热门') + $.ajax({ + url: "/organizations/update_field_by_admin?user=" + id + "&type=project", + type: "post" + }); + else if (content.text() == '设为精品') + $.ajax({ + url: "/organizations/update_field_by_admin?user=" + id + "&type=course", + type: "post" + }); + else if (content.text() == '取消设置') + $.ajax({ + url: "/organizations/reset_update_field_by_admin?user=" + id + "&type=student", + type: "post" + }); } \ No newline at end of file From e5eeba90f634634381e1da7df239155e8992049c Mon Sep 17 00:00:00 2001 From: huang Date: Thu, 2 Jun 2016 09:52:06 +0800 Subject: [PATCH 241/668] =?UTF-8?q?=E7=BB=84=E7=BB=87=E7=B2=BE=E5=93=81?= =?UTF-8?q?=E8=AF=BE=E7=A8=8B=EF=BC=8C=E7=83=AD=E9=97=A8=E9=A1=B9=E7=9B=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/organizations_controller.rb | 25 ++++++++++--------- .../organizations/_org_container.html.erb | 17 +------------ .../update_field_by_admin.js.erb | 5 ++++ public/javascripts/org.js | 21 +++++++++++----- 4 files changed, 34 insertions(+), 34 deletions(-) create mode 100644 app/views/organizations/update_field_by_admin.js.erb diff --git a/app/controllers/organizations_controller.rb b/app/controllers/organizations_controller.rb index 1b328ad7e..c63cf8c7f 100644 --- a/app/controllers/organizations_controller.rb +++ b/app/controllers/organizations_controller.rb @@ -238,23 +238,12 @@ class OrganizationsController < ApplicationController if @type.nil? @containers = Course.find_by_sql("SELECT * FROM `courses` where is_delete = 0 and is_public = 1 and name like '%#{q}%' order by updated_at desc;") elsif @type == "famous" - @containers = Course.find_by_sql("SELECT * FROM `courses` where is_delete = 0 and is_public = 1 and hot = 1 and name like '%#{q}%' order by updated_at desc;") + @containers = Course.find_by_sql("SELECT * FROM `courses` where is_delete = 0 and is_public = 1 and is_excellent = 1 and name like '%#{q}%' order by updated_at desc;") end atta_page_public @containers end def acts - q = params[:search].nil? ? "" : "#{params[:search].strip}" - @field = params[:org_subfield_id].nil? ? OrgSubfield.where("organization_id =? and field_type =?", params[:id].to_i, "Compstu").first : OrgSubfield.find(params[:org_subfield_id]) - @type = params[:type] - if @type == "courses" || @type.nil? - @org_students = User.find_by_sql("select u.*, ue.student_id, ue.school_id,(select count(*) from courses where courses.tea_id = u.id) as course_count - from users u, user_extensions ue where u.id = ue.user_id and ue.identity= 1 and concat(lastname,firstname,login) like '%#{q}%' order by course_count desc") - elsif @type == "famous" - @org_students = User.find_by_sql("select u.*, ue.student_id, ue.school_id,(select count(*) from courses where courses.tea_id = u.id) as course_count - from users u, user_extensions ue where u.id = ue.user_id and ue.identity= 1 and u.excellent_student =1 and concat(lastname,firstname,login) like '%#{q}%' order by course_count desc") - end - atta_page_public container @containers end def searchmember_by_name members, name @@ -543,6 +532,18 @@ class OrganizationsController < ApplicationController end end + def update_field_by_admin + @type = params[:type] + @status = params[:status] + if @type == "project" + @container = Project.find(params[:container]) + @status == "reset" ? @container.update_column(:hot, 0) : @container.update_column(:hot, 1) + else + @container = Course.find(params[:container]) + @status == "reset" ? @container.update_column(:is_excellent, 0) : @container.update_column(:is_excellent, 1) + end + end + # 设置为名师 def set_excellent_teacher @ex_teacher = User.find(params[:user]) diff --git a/app/views/organizations/_org_container.html.erb b/app/views/organizations/_org_container.html.erb index 42c216879..59ac4d95c 100644 --- a/app/views/organizations/_org_container.html.erb +++ b/app/views/organizations/_org_container.html.erb @@ -16,24 +16,9 @@
        资源

        - - <%= (container.class == Course ? container.is_excellent == 0 : container.hot ==0) ? "设为热门" : "取消设置" %> + <%= container.class == Course ? (container.is_excellent == 0 ? "设为精品" : "取消精品") : (container.hot ==0 ? "设为热门" : "取消热门") %>
        <% end %> - \ No newline at end of file diff --git a/app/views/organizations/update_field_by_admin.js.erb b/app/views/organizations/update_field_by_admin.js.erb new file mode 100644 index 000000000..ba218c746 --- /dev/null +++ b/app/views/organizations/update_field_by_admin.js.erb @@ -0,0 +1,5 @@ +<% if @type == "course" %> +$("#hide_<%= @container.id %>").text("<%= (@status == 'reset' ? '设为精品' : '取消精品') %>"); +<% elsif @type == "project" %> +$("#hide_<%= @container.id %>").text("<%= (@status == 'reset' ? '设为热门' : '取消热门') %>"); +<% end %> diff --git a/public/javascripts/org.js b/public/javascripts/org.js index 05ae5e717..a2b2bd361 100644 --- a/public/javascripts/org.js +++ b/public/javascripts/org.js @@ -112,19 +112,28 @@ function chooseTeacherType(org_id){ //修改状态 function admin_hide_org(content, id){ - if (content.text() == '设为热门') + if (content.text() == '设为热门'){ $.ajax({ - url: "/organizations/update_field_by_admin?user=" + id + "&type=project", + url: "/organizations/update_field_by_admin?container=" + id + "&type=project", type: "post" }); - else if (content.text() == '设为精品') + } + else if (content.text() == '设为精品'){ $.ajax({ - url: "/organizations/update_field_by_admin?user=" + id + "&type=course", + url: "/organizations/update_field_by_admin?container=" + id + "&type=course", type: "post" }); - else if (content.text() == '取消设置') + } + else if (content.text() == '取消热门'){ $.ajax({ - url: "/organizations/reset_update_field_by_admin?user=" + id + "&type=student", + url: "/organizations/update_field_by_admin?container=" + id + "&type=project" + "&status=reset", type: "post" }); + } + else if (content.text() == '取消精品'){ + $.ajax({ + url: "/organizations/update_field_by_admin?container=" + id + "&type=course" + "&status=reset", + type: "post" + }); + } } \ No newline at end of file From b72ad364db9e2cac67c5b8af1d10c70bf1aade4d Mon Sep 17 00:00:00 2001 From: cxt Date: Thu, 2 Jun 2016 10:39:11 +0800 Subject: [PATCH 242/668] =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E6=A8=A1=E6=9D=BF?= =?UTF-8?q?=E6=B6=88=E6=81=AF=EF=BC=9A=E7=94=A8=E6=88=B7=E7=BB=91=E5=AE=9A?= =?UTF-8?q?=E6=88=90=E5=8A=9F=E3=80=81=E4=BD=9C=E4=B8=9A=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E3=80=81=E4=B8=AA=E4=BA=BA=E7=95=99=E8=A8=80=E3=80=81=E7=8F=AD?= =?UTF-8?q?=E7=BA=A7=E9=80=9A=E7=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 - app/controllers/wechats_controller.rb | 2 + app/models/blog_comment.rb | 24 ++--- app/models/comment.rb | 12 +-- app/models/homework_common.rb | 20 ++-- app/models/issue.rb | 42 ++++---- app/models/journal.rb | 14 +-- app/models/journals_for_message.rb | 34 +++---- app/models/message.rb | 42 ++++---- app/models/news.rb | 2 +- app/services/wechat_service.rb | 140 ++++++++++++++++++++++++++ config/locales/zh.yml | 2 +- config/wechat.yml | 6 ++ 13 files changed, 244 insertions(+), 98 deletions(-) diff --git a/.gitignore b/.gitignore index 38f29a661..0727a920a 100644 --- a/.gitignore +++ b/.gitignore @@ -30,6 +30,4 @@ vendor/cache /public/files /tags /config/initializers/gitlab_config.rb -/config/wechat.yml -/config/menu.yml 1234567 diff --git a/app/controllers/wechats_controller.rb b/app/controllers/wechats_controller.rb index 4bf95fdbd..679b6382f 100644 --- a/app/controllers/wechats_controller.rb +++ b/app/controllers/wechats_controller.rb @@ -193,6 +193,8 @@ class WechatsController < ActionController::Base openid: openid, user: user ) + ws = WechatService.new + ws.binding_succ_notice(user.id, "您已成功绑定Trustie平台", user.login, format_time(Time.now)) render :json => {status:0, msg: "绑定成功"} rescue Exception=>e render :json => {status: -1, msg: e.message} diff --git a/app/models/blog_comment.rb b/app/models/blog_comment.rb index af21b4f69..255410a89 100644 --- a/app/models/blog_comment.rb +++ b/app/models/blog_comment.rb @@ -77,16 +77,16 @@ class BlogComment < ActiveRecord::Base end #博客回复微信模板消息 - def blog_wechat_message - ws = WechatService.new - if self.parent_id.nil? - self.author.watcher_users.each do |watcher| - content = strip_html self.author.try(:realname) + " 发表了博客:" + self.title.html_safe, 200 - ws.message_update_template watcher.id, "blog_comment", self.id, "#{l(:label_new_blog_template)}", content, format_time(self.created_at) - end - else - content = strip_html self.content.html_safe, 200 - ws.comment_template self.parent.author_id, "blog_comment", self.parent_id, "#{l(:label_blog_comment_template)}", self.author.try(:realname), format_time(self.created_at), content - end - end + # def blog_wechat_message + # ws = WechatService.new + # if self.parent_id.nil? + # self.author.watcher_users.each do |watcher| + # content = strip_html self.author.try(:realname) + " 发表了博客:" + self.title.html_safe, 200 + # ws.message_update_template watcher.id, "blog_comment", self.id, "#{l(:label_new_blog_template)}", content, format_time(self.created_at) + # end + # else + # content = strip_html self.content.html_safe, 200 + # ws.comment_template self.parent.author_id, "blog_comment", self.parent_id, "#{l(:label_blog_comment_template)}", self.author.try(:realname), format_time(self.created_at), content + # end + # end end diff --git a/app/models/comment.rb b/app/models/comment.rb index 8632c243a..edb5e472f 100644 --- a/app/models/comment.rb +++ b/app/models/comment.rb @@ -41,15 +41,15 @@ class Comment < ActiveRecord::Base after_destroy :down_course_score def act_as_system_message - ws = WechatService.new + #ws = WechatService.new if self.commented.course if self.author_id != self.commented.author_id self.course_messages << CourseMessage.new(:user_id => self.commented.author_id, :course_id => self.commented.course.id, :viewed => false) - count = ShieldWechatMessage.where("container_type='User' and container_id=#{self.commented.author_id} and shield_type='Course' and shield_id=#{self.commented.course.id}").count - if count == 0 - content = strip_html self.comments.html_safe, 200 - ws.comment_template self.commented.author_id, "course_notice", self.id, "#{l(:label_notice_comment_template)}", self.author.try(:realname), format_time(self.created_on), content - end + # count = ShieldWechatMessage.where("container_type='User' and container_id=#{self.commented.author_id} and shield_type='Course' and shield_id=#{self.commented.course.id}").count + # if count == 0 + # content = strip_html self.comments.html_safe, 200 + # ws.comment_template self.commented.author_id, "course_notice", self.id, "#{l(:label_notice_comment_template)}", self.author.try(:realname), format_time(self.created_on), content + # end end else # 项目相关 if self.author_id != self.commented.author_id diff --git a/app/models/homework_common.rb b/app/models/homework_common.rb index e4426e78f..325b599e3 100644 --- a/app/models/homework_common.rb +++ b/app/models/homework_common.rb @@ -63,7 +63,7 @@ class HomeworkCommon < ActiveRecord::Base count = ShieldWechatMessage.where("container_type='User' and container_id=#{m.user_id} and shield_type='Course' and shield_id=#{self.course_id}").count if count == 0 ws = WechatService.new - ws.homework_template(m.user_id, "homework", self.id, "#{l(:label_new_homework_template)}", self.course.name, self.name.html_safe, self.end_time.to_s + " 23:59:59") + ws.homework_message_notice(m.user_id, "homework", self.id, "#{m.user.show_name},#{l(:label_new_homework_template)}:", self.course.name, "新作业:"+ self.name.html_safe, "作业内容请点击“详情”查看。") end # end end @@ -108,15 +108,15 @@ class HomeworkCommon < ActiveRecord::Base end #修改作业后发送微信模板消息 - def wechat_message - self.course.members.each do |member| - count = ShieldWechatMessage.where("container_type='User' and container_id=#{member.user_id} and shield_type='Course' and shield_id=#{self.course_id}").count - if count == 0 - ws = WechatService.new - ws.homework_template(member.user_id, "homework", self.id, "#{l(:label_update_homework_template)}", self.course.name, self.name.html_safe, self.end_time.to_s + " 23:59:59") - end - end - end + # def wechat_message + # self.course.members.each do |member| + # count = ShieldWechatMessage.where("container_type='User' and container_id=#{member.user_id} and shield_type='Course' and shield_id=#{self.course_id}").count + # if count == 0 + # ws = WechatService.new + # ws.homework_template(member.user_id, "homework", self.id, "#{l(:label_update_homework_template)}", self.course.name, self.name.html_safe, self.end_time.to_s + " 23:59:59") + # end + # end + # end delegate :language_name, :language, :to => :homework_detail_programing diff --git a/app/models/issue.rb b/app/models/issue.rb index b5e87feea..4cfea1f43 100644 --- a/app/models/issue.rb +++ b/app/models/issue.rb @@ -160,27 +160,27 @@ class Issue < ActiveRecord::Base unless self.author_id == self.assigned_to_id self.forge_messages << ForgeMessage.new(:user_id => self.assigned_to_id, :project_id => self.project_id, :viewed => false) end - self.project.members.each do |m| - count = ShieldWechatMessage.where("container_type='User' and container_id=#{m.user_id} and shield_type='Project' and shield_id=#{self.project_id}").count - if m.user_id != self.author_id && count == 0 - ws = WechatService.new - str = " 有新缺陷了: " - case self.tracker_id - when 1 - str = " 有新缺陷了: " - when 2 - str = " 有新功能了: " - when 3 - str = " 有新支持了: " - when 4 - str = " 有新任务了: " - when 5 - str = " 有新周报了: " - end - content = strip_html self.project.name + str + self.subject.html_safe, 200 - ws.message_update_template m.user_id, "issues", self.id, "#{l(:label_new_issue_template)}", content, format_time(self.created_on) - end - end + # self.project.members.each do |m| + # count = ShieldWechatMessage.where("container_type='User' and container_id=#{m.user_id} and shield_type='Project' and shield_id=#{self.project_id}").count + # if m.user_id != self.author_id && count == 0 + # ws = WechatService.new + # str = " 有新缺陷了: " + # case self.tracker_id + # when 1 + # str = " 有新缺陷了: " + # when 2 + # str = " 有新功能了: " + # when 3 + # str = " 有新支持了: " + # when 4 + # str = " 有新任务了: " + # when 5 + # str = " 有新周报了: " + # end + # content = strip_html self.project.name + str + self.subject.html_safe, 200 + # ws.message_update_template m.user_id, "issues", self.id, "#{l(:label_new_issue_template)}", content, format_time(self.created_on) + # end + # end if self.tracker_id == 5 self.project.members.each do |m| if m.roles.first.to_s.include?("Manager") && m.user_id != self.author_id && m.user_id != self.assigned_to_id diff --git a/app/models/journal.rb b/app/models/journal.rb index eeaa17dd6..6d59c7414 100644 --- a/app/models/journal.rb +++ b/app/models/journal.rb @@ -238,11 +238,11 @@ class Journal < ActiveRecord::Base end #缺陷回复微信模板消息 - def issue_wechat_message - if !self.notes.nil? && self.notes.gsub(' ','') != '' - ws = WechatService.new - content = strip_html self.notes.html_safe, 200 - ws.comment_template self.issue.author_id, "issues", self.journalized_id, "#{l(:label_issue_comment_template)}", self.user.try(:realname), format_time(self.created_on), content - end - end + # def issue_wechat_message + # if !self.notes.nil? && self.notes.gsub(' ','') != '' + # ws = WechatService.new + # content = strip_html self.notes.html_safe, 200 + # ws.comment_template self.issue.author_id, "issues", self.journalized_id, "#{l(:label_issue_comment_template)}", self.user.try(:realname), format_time(self.created_on), content + # end + # end end diff --git a/app/models/journals_for_message.rb b/app/models/journals_for_message.rb index d0113744c..d8819515c 100644 --- a/app/models/journals_for_message.rb +++ b/app/models/journals_for_message.rb @@ -259,24 +259,24 @@ class JournalsForMessage < ActiveRecord::Base if self.m_parent_id.nil? if self.user_id != self.jour.user_id self.course_messages << CourseMessage.new(:user_id => self.jour.user_id,:course_id => self.jour.course.id, :viewed => false) - count = ShieldWechatMessage.where("container_type='User' and container_id=#{self.jour.user_id} and shield_type='Course' and shield_id=#{self.jour.course_id}").count - if count == 0 - ws = WechatService.new - #content = truncate(strip_tags(self.notes.to_s), length: 200) - content = strip_html self.notes.html_safe, 200 - ws.comment_template self.jour.user_id, "homework", self.jour_id, "#{l(:label_homework_comment_template)}", self.user.try(:realname), format_time(self.created_on), content - end + # count = ShieldWechatMessage.where("container_type='User' and container_id=#{self.jour.user_id} and shield_type='Course' and shield_id=#{self.jour.course_id}").count + # if count == 0 + # ws = WechatService.new + # #content = truncate(strip_tags(self.notes.to_s), length: 200) + # content = strip_html self.notes.html_safe, 200 + # ws.comment_template self.jour.user_id, "homework", self.jour_id, "#{l(:label_homework_comment_template)}", self.user.try(:realname), format_time(self.created_on), content + # end end else if self.user_id != self.parent.user_id self.course_messages << CourseMessage.new(:user_id => self.parent.user_id,:course_id => self.jour.course.id, :viewed => false) - count = ShieldWechatMessage.where("container_type='User' and container_id=#{self.parent.user_id} and shield_type='Course' and shield_id=#{self.jour.course_id}").count - if count == 0 - ws = WechatService.new - #content = truncate(strip_tags(self.notes.to_s), length: 200) - content = strip_html self.notes.html_safe, 200 - ws.comment_template self.parent.user_id, "homework", self.jour_id, "#{l(:label_new_second_comment_template)}", self.user.try(:realname), format_time(self.created_on), content - end + # count = ShieldWechatMessage.where("container_type='User' and container_id=#{self.parent.user_id} and shield_type='Course' and shield_id=#{self.jour.course_id}").count + # if count == 0 + # ws = WechatService.new + # #content = truncate(strip_tags(self.notes.to_s), length: 200) + # content = strip_html self.notes.html_safe, 200 + # ws.comment_template self.parent.user_id, "homework", self.jour_id, "#{l(:label_new_second_comment_template)}", self.user.try(:realname), format_time(self.created_on), content + # end end end end @@ -293,7 +293,7 @@ class JournalsForMessage < ActiveRecord::Base if self.user_id != self.jour_id # 过滤自己给自己的留言消息 receivers << self.jour content = strip_html self.notes, 200 - ws.message_update_template self.jour_id, "journal_for_message", self.id, "#{l(:label_new_journals_template)}", content, format_time(self.created_on) + ws.journal_notice self.jour_id, "journal_for_message", self.id, "#{l(:label_new_journals_template)}", self.user.show_name, format_time(self.created_on),content end else # 留言回复 reply_to = User.find(self.reply_id) @@ -303,8 +303,8 @@ class JournalsForMessage < ActiveRecord::Base if self.user_id != self.parent.jour_id && self.reply_id != self.parent.jour_id # 给东家发信息,如果回复的对象是东家则不发 receivers << self.parent.jour end - content = strip_html self.notes, 200 - ws.comment_template self.reply_id, "journal_for_message", self.parent.id, "#{l(:label_journals_comment_template)}", self.user.try(:realname), format_time(self.created_on), content + #content = strip_html self.notes, 200 + #ws.comment_template self.reply_id, "journal_for_message", self.parent.id, "#{l(:label_journals_comment_template)}", self.user.try(:realname), format_time(self.created_on), content end receivers.each do |r| self.user_feedback_messages << UserFeedbackMessage.new(:user_id => r.id, :journals_for_message_id => self.id, :journals_for_message_type => "Principal", :viewed => false) diff --git a/app/models/message.rb b/app/models/message.rb index cf9adab4e..393fd3a60 100644 --- a/app/models/message.rb +++ b/app/models/message.rb @@ -258,28 +258,28 @@ class Message < ActiveRecord::Base # 主贴项目成员都能收到 # 回帖:帖子的发布人收到 def act_as_system_message - ws = WechatService.new + #ws = WechatService.new if self.course if self.parent_id.nil? # 主贴 self.course.members.includes(:user).each do |m| if self.author.allowed_to?(:as_teacher, self.course) && m.user_id != self.author_id # 老师 自己的帖子不给自己发送消息 #self.course_messages << CourseMessage.new(:user_id => m.user_id, :course_id => self.board.course_id, :viewed => false) - count = ShieldWechatMessage.where("container_type='User' and container_id=#{m.user_id} and shield_type='Course' and shield_id=#{self.course.id}").count - if count == 0 - content = strip_html self.subject, 200 - ws.topic_publish_template m.user_id, "course_discussion", self.id, "#{l(:label_course_topic_template)}", content, self.author.try(:realname), format_time(self.created_on) - end + # count = ShieldWechatMessage.where("container_type='User' and container_id=#{m.user_id} and shield_type='Course' and shield_id=#{self.course.id}").count + # if count == 0 + # content = strip_html self.subject, 200 + # ws.topic_publish_template m.user_id, "course_discussion", self.id, "#{l(:label_course_topic_template)}", content, self.author.try(:realname), format_time(self.created_on) + # end end end else # 回帖 parent_author_id = Message.find(self.parent_id).author_id if parent_author_id != self.author_id # 只针对主贴回复,回复自己的帖子不发消息 self.course_messages << CourseMessage.new(:user_id => parent_author_id, :course_id => self.board.course_id, :viewed => false) - count = ShieldWechatMessage.where("container_type='User' and container_id=#{parent_author_id} and shield_type='Course' and shield_id=#{self.board.course_id}").count - if count == 0 - content = strip_html self.content.html_safe, 200 - ws.comment_template parent_author_id, "course_discussion", self.parent_id, "#{l(:label_topic_comment_template)}", self.author.try(:realname), format_time(self.created_on), content - end + # count = ShieldWechatMessage.where("container_type='User' and container_id=#{parent_author_id} and shield_type='Course' and shield_id=#{self.board.course_id}").count + # if count == 0 + # content = strip_html self.content.html_safe, 200 + # ws.comment_template parent_author_id, "course_discussion", self.parent_id, "#{l(:label_topic_comment_template)}", self.author.try(:realname), format_time(self.created_on), content + # end end end elsif self.project # 项目相关 @@ -287,22 +287,22 @@ class Message < ActiveRecord::Base self.project.members.includes(:user).each do |m| if m.user_id != self.author_id #self.forge_messages << ForgeMessage.new(:user_id => m.user_id, :project_id => self.board.project_id, :viewed => false) - count = ShieldWechatMessage.where("container_type='User' and container_id=#{m.user_id} and shield_type='Project' and shield_id=#{self.project.id}").count - if count == 0 - content = strip_html self.subject, 200 - ws.topic_publish_template m.user_id, "project_discussion", self.id, "#{l(:label_project_topic_template)}", content, self.author.try(:realname), format_time(self.created_on) - end + # count = ShieldWechatMessage.where("container_type='User' and container_id=#{m.user_id} and shield_type='Project' and shield_id=#{self.project.id}").count + # if count == 0 + # content = strip_html self.subject, 200 + # ws.topic_publish_template m.user_id, "project_discussion", self.id, "#{l(:label_project_topic_template)}", content, self.author.try(:realname), format_time(self.created_on) + # end end end else # 回帖 parent_author_id = Message.find(self.parent_id).author_id if parent_author_id != self.author_id # 只针对主贴回复,回复自己的帖子不发消息 self.forge_messages << ForgeMessage.new(:user_id => parent_author_id, :project_id => self.board.project_id, :viewed => false) - count = ShieldWechatMessage.where("container_type='User' and container_id=#{parent_author_id} and shield_type='Project' and shield_id=#{self.board.project_id}").count - if count == 0 - content = strip_html self.content.html_safe, 200 - ws.comment_template parent_author_id, "project_discussion", self.parent_id, "#{l(:label_topic_comment_template)}", self.author.try(:realname), format_time(self.created_on), content - end + # count = ShieldWechatMessage.where("container_type='User' and container_id=#{parent_author_id} and shield_type='Project' and shield_id=#{self.board.project_id}").count + # if count == 0 + # content = strip_html self.content.html_safe, 200 + # ws.comment_template parent_author_id, "project_discussion", self.parent_id, "#{l(:label_topic_comment_template)}", self.author.try(:realname), format_time(self.created_on), content + # end end end end diff --git a/app/models/news.rb b/app/models/news.rb index 0b03dcc48..54f6fce08 100644 --- a/app/models/news.rb +++ b/app/models/news.rb @@ -174,7 +174,7 @@ class News < ActiveRecord::Base if count == 0 ws = WechatService.new content = strip_html self.author.try(:realname) + " 发布了通知:" + self.title.html_safe, 200 - ws.message_update_template m.user_id, "course_notice", self.id, "#{l(:label_new_notice_template)}", content, format_time(self.created_on) + ws.class_notice m.user_id, "course_notice", self.id, "#{l(:label_new_notice_template)}", self.course.name, self.author.show_name, format_time(self.created_on), content, "点击查看通知详情" end end end diff --git a/app/services/wechat_service.rb b/app/services/wechat_service.rb index 6d8c0f234..e0c7811fd 100644 --- a/app/services/wechat_service.rb +++ b/app/services/wechat_service.rb @@ -110,4 +110,144 @@ class WechatService Rails.logger.info "send over. #{req}" end end + + def two_keys_template(openid, template_id, type, id, first, key1, key2, remark="") + data = { + touser:openid, + template_id:template_id, + url:"https://open.weixin.qq.com/connect/oauth2/authorize?appid=#{Wechat.config.appid}&redirect_uri=#{Setting.protocol}://#{Setting.host_name}/assets/wechat/app.html#/#{type}/#{id}?response_type=code&scope=snsapi_base&state=123#wechat_redirect", + topcolor:"#FF0000", + data:{ + first: { + value:first, + color:"#707070" + }, + keyword1:{ + value:key1, + color:"#707070" + }, + keyword2:{ + value:key2, + color:"#707070" + }, + remark:{ + value:remark, + color:"#707070" + } + } + } + data + end + + def four_keys_template(openid, template_id, type, id, first, key1, key2, key3, key4, remark="") + data = { + touser:openid, + template_id:template_id, + url:"https://open.weixin.qq.com/connect/oauth2/authorize?appid=#{Wechat.config.appid}&redirect_uri=#{Setting.protocol}://#{Setting.host_name}/assets/wechat/app.html#/#{type}/#{id}?response_type=code&scope=snsapi_base&state=123#wechat_redirect", + topcolor:"#FF0000", + data:{ + first: { + value:first, + color:"#707070" + }, + keyword1:{ + value:key1, + color:"#707070" + }, + keyword2:{ + value:key2, + color:"#707070" + }, + keyword3:{ + value:key3, + color:"#707070" + }, + keyword4:{ + value:key4, + color:"#707070" + }, + remark:{ + value:remark, + color:"#707070" + } + } + } + data + end + + def binding_succ_notice(user_id, first, key1, key2) + uw = UserWechat.where(user_id: user_id).first + unless uw.nil? + data = { + touser:uw.openid, + template_id:Wechat.config.binding_succ_notice, + url:"https://open.weixin.qq.com/connect/oauth2/authorize?appid=#{Wechat.config.appid}&redirect_uri=#{Setting.protocol}://#{Setting.host_name}/assets/wechat/app.html#/activities?response_type=code&scope=snsapi_base&state=123#wechat_redirect", + topcolor:"#FF0000", + data:{ + first: { + value:first, + color:"#707070" + }, + keyword1:{ + value:key1, + color:"#707070" + }, + keyword2:{ + value:key2, + color:"#707070" + }, + remark:{ + value:"绑定成功后可使用微信查看Trustie平台最新动态", + color:"#707070" + } + } + } + begin + req = Wechat.api.template_message_send Wechat::Message.to(uw.openid).template(data) + rescue Exception => e + Rails.logger.error "[homework] ===> #{e}" + end + Rails.logger.info "send over. #{req}" + end + end + + def journal_notice(user_id, type, id, first, key1, key2, remark="") + uw = UserWechat.where(user_id: user_id).first + unless uw.nil? + data = two_keys_template uw.openid,Wechat.config.journal_notice, type, id, first, key1, key2, remark + begin + req = Wechat.api.template_message_send Wechat::Message.to(uw.openid).template(data) + rescue Exception => e + Rails.logger.error "[homework] ===> #{e}" + end + Rails.logger.info "send over. #{req}" + end + end + + def homework_message_notice(user_id, type, id, first, key1, key2, remark="") + uw = UserWechat.where(user_id: user_id).first + unless uw.nil? + data = two_keys_template uw.openid,Wechat.config.homework_message_notice, type, id, first, key1, key2, remark + begin + req = Wechat.api.template_message_send Wechat::Message.to(uw.openid).template(data) + rescue Exception => e + Rails.logger.error "[homework] ===> #{e}" + end + Rails.logger.info "send over. #{req}" + end + end + + def class_notice(user_id, type, id, first, key1, key2, key3, key4, remark="") + uw = UserWechat.where(user_id: user_id).first + unless uw.nil? + data = four_keys_template uw.openid,Wechat.config.class_notice, type, id, first, key1, key2, key3, key4, remark + begin + req = Wechat.api.template_message_send Wechat::Message.to(uw.openid).template(data) + rescue Exception => e + Rails.logger.error "[homework] ===> #{e}" + end + Rails.logger.info "send over. #{req}" + end + end + end \ No newline at end of file diff --git a/config/locales/zh.yml b/config/locales/zh.yml index a347359bb..94be8af6d 100644 --- a/config/locales/zh.yml +++ b/config/locales/zh.yml @@ -2128,7 +2128,7 @@ zh: label_resource_belongs_project: 所属项目 #微信模板消息 - label_new_homework_template: 您的课程有新作业了 + label_new_homework_template: 您有新作业了 label_update_homework_template: 您的作业已被修改 label_course_topic_template: 课程问答区有新帖子发布了 label_topic_comment_template: 您的帖子有新回复了 diff --git a/config/wechat.yml b/config/wechat.yml index 5b528487b..3d679c4ce 100644 --- a/config/wechat.yml +++ b/config/wechat.yml @@ -11,6 +11,12 @@ default: &default encoding_aes_key: "QyocNOkRmrT5HzBpCG54EVPUQjk86nJapXNVDQm6Yy6" jsapi_ticket: "C:/Users/[user_name]/wechat_jsapi_ticket" + #template + binding_succ_notice: "n4KLwcWNrIMYkKxWL2hUwzunm5RTT54EbWem2MIUapU" + journal_notice: "XpHHYkqSGkwuF9vHthRdmPQLvCFRQ4_NbRBP12T7ciE" + homework_message_notice: "Kom0TsYYKsNKCS6luweYVRo9z-mH0wRPr24b1clGCPQ" + class_notice: "8LVu33l6bP-56SDomVgHn-yJc57YpCwwJ81rAJgRONk" + production: <<: *default From b20dc06e231a8ce68646b4fd2ce6d483013f0e9f Mon Sep 17 00:00:00 2001 From: cxt Date: Thu, 2 Jun 2016 10:56:04 +0800 Subject: [PATCH 243/668] =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E7=89=88=E9=85=8D=E7=BD=AE=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/wechat_service.rb | 2 +- config/menu.yml | 2 +- public/javascripts/wechat/app.js | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/app/services/wechat_service.rb b/app/services/wechat_service.rb index e0c7811fd..f9a59e080 100644 --- a/app/services/wechat_service.rb +++ b/app/services/wechat_service.rb @@ -181,7 +181,7 @@ class WechatService data = { touser:uw.openid, template_id:Wechat.config.binding_succ_notice, - url:"https://open.weixin.qq.com/connect/oauth2/authorize?appid=#{Wechat.config.appid}&redirect_uri=#{Setting.protocol}://#{Setting.host_name}/assets/wechat/app.html#/activities?response_type=code&scope=snsapi_base&state=123#wechat_redirect", + url:"https://open.weixin.qq.com/connect/oauth2/authorize?appid=#{Wechat.config.appid}&redirect_uri=#{Setting.protocol}://#{Setting.host_name}/wechat/user_activities&response_type=code&scope=snsapi_base&state=123#wechat_redirect", topcolor:"#FF0000", data:{ first: { diff --git a/config/menu.yml b/config/menu.yml index 83b892037..79659fb90 100644 --- a/config/menu.yml +++ b/config/menu.yml @@ -2,7 +2,7 @@ button: - type: "view" name: "最新动态" - url: "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxf694495398c7d470&redirect_uri=http://wechat.trustie.net/wechat/user_activities&response_type=code&scope=snsapi_base&state=123#wechat_redirect" + url: "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxc09454f171153c2d&redirect_uri=https://test.course.trustie.net/wechat/user_activities&response_type=code&scope=snsapi_base&state=123#wechat_redirect" - type: "click" name: "意见反馈" diff --git a/public/javascripts/wechat/app.js b/public/javascripts/wechat/app.js index 9d0b045c3..ee849aad8 100644 --- a/public/javascripts/wechat/app.js +++ b/public/javascripts/wechat/app.js @@ -1,10 +1,10 @@ var app = angular.module('wechat', ['ngRoute','ngCookies']); var apiUrl = '/api/v1/'; -var debug = true; //调试标志,如果在本地请置为true +var debug = false; //调试标志,如果在本地请置为true if(debug===true){ - apiUrl = 'http://localhost:3000/api/v1/'; - //apiUrl = 'https://www.trustie.net/api/v1/'; + //apiUrl = 'http://localhost:3000/api/v1/'; + apiUrl = 'https://www.trustie.net/api/v1/'; } From 76732a3034b4ea0b17cf80dfb317986f97f479c3 Mon Sep 17 00:00:00 2001 From: huang Date: Thu, 2 Jun 2016 13:17:38 +0800 Subject: [PATCH 244/668] =?UTF-8?q?=E6=96=B0=E6=A8=A1=E5=BC=8F=E6=9C=89?= =?UTF-8?q?=E4=B8=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/organizations_controller.rb | 33 +++-- app/helpers/organizations_helper.rb | 16 ++- .../organizations/_org_custom_right1.html.erb | 115 +++++++----------- .../_organization_content_extension.html.erb | 18 ++- public/stylesheets/org_custom.css | 2 +- 5 files changed, 94 insertions(+), 90 deletions(-) diff --git a/app/controllers/organizations_controller.rb b/app/controllers/organizations_controller.rb index c63cf8c7f..4021560bf 100644 --- a/app/controllers/organizations_controller.rb +++ b/app/controllers/organizations_controller.rb @@ -79,19 +79,28 @@ class OrganizationsController < ApplicationController # 组织新类型 show_mode:判断标准 1为新类型,0为旧 if @organization.switch_type && params[:org_subfield_id].nil? && params[:list] .nil? if @organization.is_public? || User.current.admin? || User.current.member_of_org?(@organization) - # REDO:时间紧,暂时先这样 - @org_logo_attchment = Attachment.find_by_sql("SELECT * from attachments WHERE container_id = #{@organization.id} and container_type = 'Organization' and attachtype = 0 and filename REGEXP '(.jpg|.png|.bmp|.gif|.jpeg)' ORDER BY created_on desc limit 1").first - @org_banner_attchment = Attachment.find_by_sql("SELECT * from attachments WHERE container_id = #{@organization.id} and container_type = 'Organization' and attachtype = 1 and filename REGEXP '(.jpg|.png|.bmp|.gif|.jpeg)' ORDER BY created_on desc limit 1").first - @subfield_content = @organization.org_subfields.order("priority") - @organization = Organization.find(params[:id]) - shield_project_ids = ShieldActivity.where("container_type='Organization' and container_id=#{@organization.id} and shield_type='Project'").map(&:shield_id) - shield_course_ids = ShieldActivity.where("container_type='Organization' and container_id=#{@organization.id} and shield_type='Course'").map(&:shield_id) - project_ids = (@organization.projects.map(&:id)-shield_project_ids) << 0 - course_ids = (@organization.courses.map(&:id)-shield_course_ids) << 0 - course_types = "('Message','News','HomeworkCommon','Poll','Course')" - @project_acts = get_project_activities_org @organization, project_ids - @course_acts = get_course_activities_org @organization, course_ids + shield_project_ids = ShieldActivity.where("container_type='Organization' and container_id=#{@organization.id} and shield_type='Project'").map(&:shield_id) + shield_course_ids = ShieldActivity.where("container_type='Organization' and container_id=#{@organization.id} and shield_type='Course'").map(&:shield_id) + project_ids = (@organization.projects.map(&:id) - shield_project_ids) << 0 + course_ids = (@organization.courses.map(&:id) - shield_course_ids) << 0 + course_types = "('Message','News','HomeworkCommon','Poll','Course')" + @project_acts = get_project_activities_org @organization, project_ids + @course_acts = get_course_activities_org @organization, course_ids + # 精品课程, 不符合条件的组织则不查询 + if @organization.org_subfields.where(:field_type => "Compcou", :hide => 0).count > 0 + @excellent_courses = Course.where(:is_public => true, :is_delete => false, :is_excellent => true) + end + # 热门项目 + if @organization.org_subfields.where(:field_type => "Comppro", :hide => 0).count > 0 + @excellent_courses = Course.where(:is_public => true, :status => true) + end + # 最新动态, 来自我关联的项目和课程 + if @organization.org_subfields.where(:field_type => "Compact", :hide => 0).count > 0 + @acts = UserActivity.find_by_sql("SELECT * FROM `user_activities` where act_type in ('HomeworkCommon', 'News', 'Message', 'Issue') and + ((container_type = 'Course' and container_id in (#{course_ids.join(',')})) or (container_type = 'Project' and container_id in (#{project_ids.join(',')}))) + order by created_at desc limit 6;") + end render :layout => 'base_org_custom' else render_403 diff --git a/app/helpers/organizations_helper.rb b/app/helpers/organizations_helper.rb index 8e75ec5d1..4c6089b51 100644 --- a/app/helpers/organizations_helper.rb +++ b/app/helpers/organizations_helper.rb @@ -63,6 +63,16 @@ module OrganizationsHelper end end + def org_user_by_type obj + case obj.act_type + when "Message" + when "News" + when "HomeworkCommon" + when "Issue" + end + + end + #排列下拉框 def subfield_status_option type = [] @@ -176,9 +186,9 @@ module OrganizationsHelper end # 获取最新动态 - def get_latest_acts - acts = UserActivity.find_by_sql("SELECT * FROM `user_activities` where act_type in ('HomeworkCommon', 'news', 'message', 'Issue') and (container_type = 'Course' or container_type = 'Project') order by created_at limit 10;") - end + # def get_latest_acts + # acts = UserActivity.find_by_sql("SELECT * FROM `user_activities` where act_type in ('HomeworkCommon', 'news', 'message', 'Issue') and (container_type = 'Course' or container_type = 'Project') order by created_at limit 10;") + # end def org_teacher_resource_count user results = Attachment.find_by_sql("SELECT * FROM attachments where author_id = #{user.id};").count diff --git a/app/views/organizations/_org_custom_right1.html.erb b/app/views/organizations/_org_custom_right1.html.erb index 6fc24555f..4fed81a6b 100644 --- a/app/views/organizations/_org_custom_right1.html.erb +++ b/app/views/organizations/_org_custom_right1.html.erb @@ -1,71 +1,48 @@
        -

        最新动态更多>

        -
          -
        • - -
          -

          - 叮当当  :  - Trustie社区新版上线了必须支持一下,比以前好用很多.... -

          -

          1分钟前 500

          -
          -
          -
        • -
        • - -
          -

          - 叮当叮当叮当叮当  :  - Trustie社区新版上线了必须支持一下,比以前好用很多了。Trustie社区新版上线了必须支持一下,比以前好用很多了... -

          -

          1分钟前 500

          -
          -
          -
        • -
        • - -
          -

          - 叮当叮当叮当叮当  :  - Trustie社区新版上线了必须支持一下,比以前好用很多了。Trustie社区新版上线了必须支持一下,比以前好用很多了... -

          -

          1分钟前 500

          -
          -
          -
        • -
        • - -
          -

          - 当叮当  :  - Trustie社区新版上线了必须支持一下,比以前好用很多了。Trustie社区新版上线了必须支持一下,比以前好用很多了... -

          -

          1分钟前 500

          -
          -
          -
        • -
        • - -
          -

          - 叮当叮当叮当叮当  :  - Trustie社区新版上线了必须支持一下很多了... -

          -

          1分钟前 500

          -
          -
          -
        • -
        • - -
          -

          - 叮当叮当叮当叮当  :  - Trustie社区新版上线了必须支持一下,比以前好用很多了。Trustie社区新版上线了必须支持一下,比以前好用很多了... -

          -

          1分钟前 500

          -
          -
          -
        • -
        +

        <%= field.name %>

        + <% if @acts.blank? %> +

        该模块暂时没有相关内容

        + <% else %> +
          + <% @acts.each do |obj| %> + <% if obj.act_type = "Message" %> + <% user = org_user_by_type(obj) %> + <% title = org_title_by_type(obj) %> + <% content = org_content_by_type(obj) %> + <% message = obj.act %> + <% title = message.parent_id.nil? ? message.subject : message.parent.subject %> +
        • + <%= link_to image_tag(url_to_avatar(user),:width => "43", :height => "43", :class => "por_users_img"), user_path(user), :target => "_blank", :class => "fl" %> +
          +

          + <%= link_to message.author.show_name, user_path(message.author), :class => "por_hot_name fl", :target => "_blank" %> +  :  + <%=render :partial =>"organizations/organization_content_extension", :locals => {:user_activity_id => message.id, :content=> message.content, :maxheight => 40, :maxwordsnum => 28, :maxwidth => 0, :cl => ""} %> +

          +

          <%= time_from_now(message.created_on) %> + +

          +
          +
          +
        • + <% elsif obj.act_type = "News" %> + + <% elsif obj.act_type = "HomeworkCommon" %> + <% elsif obj.act_type = "Issue" %> + <% end %> + <% end %> +
        • + +
          +

          + 叮当当  :  + Trustie社区新版上线了必须支持一下,比以前好用很多.... +

          +

          1分钟前 500

          +
          +
          +
        • + +
        + <% end %>
        \ No newline at end of file diff --git a/app/views/organizations/_organization_content_extension.html.erb b/app/views/organizations/_organization_content_extension.html.erb index a486edd65..be5343d61 100644 --- a/app/views/organizations/_organization_content_extension.html.erb +++ b/app/views/organizations/_organization_content_extension.html.erb @@ -1,8 +1,16 @@ -

        - - <%= content.to_s.html_safe%> - -

        +<% if cl.nil? %> + + + <%= content.to_s.html_safe%> + + +<% else %> +

        + + <%= content.to_s.html_safe%> + +

        +<% end %> -
        +
        <%= form_tag organization_org_document_comments_path(:organization_id => @organization.id), :id => 'new_org_document_form' do |f| %>
        diff --git a/app/views/org_document_comments/show.html.erb b/app/views/org_document_comments/show.html.erb index 3d9527b8b..c7adc39fb 100644 --- a/app/views/org_document_comments/show.html.erb +++ b/app/views/org_document_comments/show.html.erb @@ -5,7 +5,7 @@ showNormalImage('message_description_<%= @document.id %>'); }); -
        +
        <%= link_to image_tag(url_to_avatar(User.find(@document.creator_id)), :width => 45, :heigth => 45), user_url_in_org(@document.creator_id) %> diff --git a/app/views/sub_document_comments/_new.html.erb b/app/views/sub_document_comments/_new.html.erb index c6cc13164..aec91c878 100644 --- a/app/views/sub_document_comments/_new.html.erb +++ b/app/views/sub_document_comments/_new.html.erb @@ -36,7 +36,7 @@ $('#doc_title_hint').hide(); } -
        +
        <%= form_tag org_subfield_sub_domain_sub_document_comments_path(:org_subfield_id => @org_subfield.id, :sub_domain_id => @subdomain.id), :id => 'new_sub_document_form' do |f| %>
        diff --git a/app/views/sub_document_comments/show.html.erb b/app/views/sub_document_comments/show.html.erb index 7050c1c66..f85f3ed25 100644 --- a/app/views/sub_document_comments/show.html.erb +++ b/app/views/sub_document_comments/show.html.erb @@ -8,7 +8,7 @@ showNormalImage('message_description_<%= @document.id %>'); }); -
        +
        <%= link_to image_tag(url_to_avatar(User.find(@document.creator_id)), :width => 45, :heigth => 45), user_url_in_org(@document.creator_id) %> @@ -138,7 +138,7 @@
        <%# end %> - <% if User.current.logged?%> + <%# if User.current.logged?%>
        @@ -151,7 +151,7 @@
        - <% end %> + <%# end %>
        From 0b3ec0322f80c7036a88af1dcc9295491e958a4c Mon Sep 17 00:00:00 2001 From: huang Date: Thu, 2 Jun 2016 18:41:00 +0800 Subject: [PATCH 263/668] =?UTF-8?q?=E5=8F=B3=E4=B8=80=E6=A8=A1=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/helpers/organizations_helper.rb | 29 +++++++++ .../organizations/_org_custom_right1.html.erb | 62 ++++++++----------- .../_organization_content_extension.html.erb | 13 +--- 3 files changed, 57 insertions(+), 47 deletions(-) diff --git a/app/helpers/organizations_helper.rb b/app/helpers/organizations_helper.rb index 4c6089b51..a5a3d6aaa 100644 --- a/app/helpers/organizations_helper.rb +++ b/app/helpers/organizations_helper.rb @@ -66,11 +66,40 @@ module OrganizationsHelper def org_user_by_type obj case obj.act_type when "Message" + user = obj.act.author when "News" + user = obj.act.author when "HomeworkCommon" + user = obj.act.user when "Issue" + user = obj.act.author end + end + def org_title_by_type obj + case obj.act_type + when "Message" + user = obj.act.parent_id.nil? ? obj.act.subject : obj.act.parent.subject + when "News" + user = obj.act.title + when "HomeworkCommon" + user = obj.act.name + when "Issue" + user = obj.act.subject + end + end + + def org_content_by_type obj + case obj.act_type + when "Message" + user = obj.act.parent_id.nil? ? obj.act.content : obj.act.parent.content + when "News" + user = obj.act.description + when "HomeworkCommon" + user = obj.act.description + when "Issue" + user = obj.act.description + end end #排列下拉框 diff --git a/app/views/organizations/_org_custom_right1.html.erb b/app/views/organizations/_org_custom_right1.html.erb index 4fed81a6b..882c994cc 100644 --- a/app/views/organizations/_org_custom_right1.html.erb +++ b/app/views/organizations/_org_custom_right1.html.erb @@ -5,44 +5,32 @@ <% else %>
          <% @acts.each do |obj| %> - <% if obj.act_type = "Message" %> - <% user = org_user_by_type(obj) %> - <% title = org_title_by_type(obj) %> - <% content = org_content_by_type(obj) %> - <% message = obj.act %> - <% title = message.parent_id.nil? ? message.subject : message.parent.subject %> -
        • - <%= link_to image_tag(url_to_avatar(user),:width => "43", :height => "43", :class => "por_users_img"), user_path(user), :target => "_blank", :class => "fl" %> -
          -

          - <%= link_to message.author.show_name, user_path(message.author), :class => "por_hot_name fl", :target => "_blank" %> -  :  - <%=render :partial =>"organizations/organization_content_extension", :locals => {:user_activity_id => message.id, :content=> message.content, :maxheight => 40, :maxwordsnum => 28, :maxwidth => 0, :cl => ""} %> -

          -

          <%= time_from_now(message.created_on) %> - -

          -
          -
          -
        • - <% elsif obj.act_type = "News" %> - - <% elsif obj.act_type = "HomeworkCommon" %> - <% elsif obj.act_type = "Issue" %> - <% end %> + <% user = org_user_by_type(obj) %> + <% title = org_title_by_type(obj) %> + <% content = org_content_by_type(obj) %> +
        • + <%= link_to image_tag(url_to_avatar(user),:width => "43", :height => "43", :class => "por_users_img"), user_path(user), :target => "_blank", :class => "fl" %> +
          +

          + <%= link_to user.show_name, user_path(user), :class => "por_hot_name fl", :target => "_blank" %> +  :  + <% if obj.act_type = "Message" %> + <%= link_to title, board_message_path(obj.act.board.id, obj.act.id) %> + <% elsif obj.act_type = "News" %> + <%= link_to title, news_path(obj.act.id) %> + <% elsif obj.act_type = "HomeworkCommon" %> + <%= link_to title, student_work_index_url_in_org(obj.act.id) %> + <% elsif obj.act_type = "Issue" %> + <%= link_to title, issue_path(obj.act.id) %> + <% end %> +

          +

          <%= time_from_now(obj.act.created_on) %> + +

          +
          +
          +
        • <% end %> -
        • - -
          -

          - 叮当当  :  - Trustie社区新版上线了必须支持一下,比以前好用很多.... -

          -

          1分钟前 500

          -
          -
          -
        • -
        <% end %>
        \ No newline at end of file diff --git a/app/views/organizations/_organization_content_extension.html.erb b/app/views/organizations/_organization_content_extension.html.erb index be5343d61..48abd48b9 100644 --- a/app/views/organizations/_organization_content_extension.html.erb +++ b/app/views/organizations/_organization_content_extension.html.erb @@ -1,16 +1,9 @@ -<% if cl.nil? %> - +

        <%= content.to_s.html_safe%> - -<% else %> -

        - - <%= content.to_s.html_safe%> - -

        -<% end %> +

        + + + + \ No newline at end of file diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/darkX.css b/public/plugin_assets/redmine_code_review/stylesheets/window_js/darkX.css index 2f83cfd46..e3df3e0a4 100644 --- a/public/plugin_assets/redmine_code_review/stylesheets/window_js/darkX.css +++ b/public/plugin_assets/redmine_code_review/stylesheets/window_js/darkX.css @@ -1,121 +1,121 @@ -.overlay_darkX { - background-color: #85BBEF; - filter:alpha(opacity=60); - -moz-opacity: 0.6; - opacity: 0.6; -} - -.darkX_nw { - background: transparent url(darkX/titlebar-left-focused.png) no-repeat 0 0; - width:6px; - height:21px; -} -.darkX_n { - background: transparent url(darkX/titlebar-mid-focused.png) repeat-x 0 0; - height:21px; -} -.darkX_ne { - background: transparent url(darkX/titlebar-right-focused.png) no-repeat 0 0; - width:6px; - height:21px; -} -.darkX_w { - background: transparent url(darkX/frame-left-focused.png) repeat-y top left; - width:3px; -} - -.darkX_e { - background: transparent url(darkX/frame-right-focused.png) repeat-y top right; - width:3px; -} - -.darkX_sw { - background: transparent url(darkX/frame-bottom-left-focused.png) no-repeat 0 0; - width:5px; - height:3px; -} -.darkX_s { - background: transparent url(darkX/frame-bottom-mid-focused.png) repeat-x 0 0; - height:3px; -} -.darkX_se, .darkX_sizer { - background: transparent url(darkX/frame-bottom-right-focused.png) no-repeat 0 0; - width:5px; - height:3px; -} - -.darkX_sizer { - cursor:se-resize; -} - -.darkX_close { - width: 21px; - height: 21px; - background: transparent url(darkX/button-close-focused.png) no-repeat 0 0; - position:absolute; - top:0px; - right:5px; - cursor:pointer; - z-index:1000; -} - -.darkX_minimize { - width: 21px; - height: 21px; - background: transparent url(darkX/button-minimize-focused.png) no-repeat 0 0; - position:absolute; - top:0px; - right:26px; - cursor:pointer; - z-index:1000; -} - -.darkX_maximize { - width: 21px; - height: 21px; - background: transparent url(darkX/button-maximize-focused.png) no-repeat 0 0; - position:absolute; - top:0px; - right:47px; - cursor:pointer; - z-index:1000; -} - - -.darkX_title { - float:left; - height:14px; - font-size:12px; - text-align:center; - margin-top:2px; - width:100%; - color:#FFF; -} - -.darkX_content { - overflow:auto; - color: #E6DF2A; - font-family: Tahoma, Arial, sans-serif; - font-size: 14px; - background:#5E5148; -} - - -/* FOR IE */ -* html .darkX_minimize { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/darkX/button-minimize-focused.png", sizingMethod="crop"); -} - -* html .darkX_maximize { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/darkX/button-maximize-focused.png", sizingMethod="scale"); -} - -* html .darkX_close { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/darkX/button-close-focused.png", sizingMethod="crop"); -} +.overlay_darkX { + background-color: #85BBEF; + filter:alpha(opacity=60); + -moz-opacity: 0.6; + opacity: 0.6; +} + +.darkX_nw { + background: transparent url(darkX/titlebar-left-focused.png) no-repeat 0 0; + width:6px; + height:21px; +} +.darkX_n { + background: transparent url(darkX/titlebar-mid-focused.png) repeat-x 0 0; + height:21px; +} +.darkX_ne { + background: transparent url(darkX/titlebar-right-focused.png) no-repeat 0 0; + width:6px; + height:21px; +} +.darkX_w { + background: transparent url(darkX/frame-left-focused.png) repeat-y top left; + width:3px; +} + +.darkX_e { + background: transparent url(darkX/frame-right-focused.png) repeat-y top right; + width:3px; +} + +.darkX_sw { + background: transparent url(darkX/frame-bottom-left-focused.png) no-repeat 0 0; + width:5px; + height:3px; +} +.darkX_s { + background: transparent url(darkX/frame-bottom-mid-focused.png) repeat-x 0 0; + height:3px; +} +.darkX_se, .darkX_sizer { + background: transparent url(darkX/frame-bottom-right-focused.png) no-repeat 0 0; + width:5px; + height:3px; +} + +.darkX_sizer { + cursor:se-resize; +} + +.darkX_close { + width: 21px; + height: 21px; + background: transparent url(darkX/button-close-focused.png) no-repeat 0 0; + position:absolute; + top:0px; + right:5px; + cursor:pointer; + z-index:1000; +} + +.darkX_minimize { + width: 21px; + height: 21px; + background: transparent url(darkX/button-minimize-focused.png) no-repeat 0 0; + position:absolute; + top:0px; + right:26px; + cursor:pointer; + z-index:1000; +} + +.darkX_maximize { + width: 21px; + height: 21px; + background: transparent url(darkX/button-maximize-focused.png) no-repeat 0 0; + position:absolute; + top:0px; + right:47px; + cursor:pointer; + z-index:1000; +} + + +.darkX_title { + float:left; + height:14px; + font-size:12px; + text-align:center; + margin-top:2px; + width:100%; + color:#FFF; +} + +.darkX_content { + overflow:auto; + color: #E6DF2A; + font-family: Tahoma, Arial, sans-serif; + font-size: 14px; + background:#5E5148; +} + + +/* FOR IE */ +* html .darkX_minimize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/darkX/button-minimize-focused.png", sizingMethod="crop"); +} + +* html .darkX_maximize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/darkX/button-maximize-focused.png", sizingMethod="scale"); +} + +* html .darkX_close { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/darkX/button-close-focused.png", sizingMethod="crop"); +} diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/debug.css b/public/plugin_assets/redmine_code_review/stylesheets/window_js/debug.css index 69e3b7fc2..d7981e9ca 100644 --- a/public/plugin_assets/redmine_code_review/stylesheets/window_js/debug.css +++ b/public/plugin_assets/redmine_code_review/stylesheets/window_js/debug.css @@ -1,25 +1,25 @@ -div.inspector div.inspectable { - padding: 0.25em 0 0.25em 1em; - background-color: Gray; - color: white; - border: outset 2px white; - cursor: pointer; -} - -div.inspector div.child { - margin: 0 0 0 1em; -} - -#debug_window_content { /* DIV container for debug sizing*/ - width:250px; - height:100px; - background-color:#000; -} - -#debug { /* DIV container for debug contents*/ - padding:3px; - color:#0f0; - font-family:monaco, Tahoma, Verdana, Arial, Helvetica, sans-serif; - font-size:10px; -} - +div.inspector div.inspectable { + padding: 0.25em 0 0.25em 1em; + background-color: Gray; + color: white; + border: outset 2px white; + cursor: pointer; +} + +div.inspector div.child { + margin: 0 0 0 1em; +} + +#debug_window_content { /* DIV container for debug sizing*/ + width:250px; + height:100px; + background-color:#000; +} + +#debug { /* DIV container for debug contents*/ + padding:3px; + color:#0f0; + font-family:monaco, Tahoma, Verdana, Arial, Helvetica, sans-serif; + font-size:10px; +} + diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/default.css b/public/plugin_assets/redmine_code_review/stylesheets/window_js/default.css index 6ab13789d..591451723 100644 --- a/public/plugin_assets/redmine_code_review/stylesheets/window_js/default.css +++ b/public/plugin_assets/redmine_code_review/stylesheets/window_js/default.css @@ -1,155 +1,155 @@ -.overlay_dialog { - background-color: #666666; - filter:alpha(opacity=60); - -moz-opacity: 0.6; - opacity: 0.6; -} - -.overlay___invisible__ { - background-color: #666666; - filter:alpha(opacity=0); - -moz-opacity: 0; - opacity: 0; -} - -.dialog_nw { - width: 9px; - height: 23px; - background: transparent url(default/top_left.gif) no-repeat 0 0; -} - -.dialog_n { - background: transparent url(default/top_mid.gif) repeat-x 0 0; - height: 23px; -} - -.dialog_ne { - width: 9px; - height: 23px; - background: transparent url(default/top_right.gif) no-repeat 0 0; -} - -.dialog_e { - width: 2px; - background: transparent url(default/center_right.gif) repeat-y 0 0; -} - -.dialog_w { - width: 2px; - background: transparent url(default/center_left.gif) repeat-y 0 0; -} - -.dialog_sw { - width: 9px; - height: 19px; - background: transparent url(default/bottom_left.gif) no-repeat 0 0; -} - -.dialog_s { - background: transparent url(default/bottom_mid.gif) repeat-x 0 0; - height: 19px; -} - -.dialog_se { - width: 9px; - height: 19px; - background: transparent url(default/bottom_right.gif) no-repeat 0 0; -} - -.dialog_sizer { - width: 9px; - height: 19px; - background: transparent url(default/sizer.gif) no-repeat 0 0; - cursor:se-resize; -} - -.dialog_close { - width: 14px; - height: 14px; - background: transparent url(default/close.gif) no-repeat 0 0; - position:absolute; - top:5px; - left:8px; - cursor:pointer; - z-index:2000; -} - -.dialog_minimize { - width: 14px; - height: 15px; - background: transparent url(default/minimize.gif) no-repeat 0 0; - position:absolute; - top:5px; - left:28px; - cursor:pointer; - z-index:2000; -} - -.dialog_maximize { - width: 14px; - height: 15px; - background: transparent url(default/maximize.gif) no-repeat 0 0; - position:absolute; - top:5px; - left:49px; - cursor:pointer; - z-index:2000; -} - -.dialog_title { - float:left; - height:14px; - font-family: Tahoma, Arial, sans-serif; - font-size:12px; - text-align:center; - width:100%; - color:#000; -} - -.dialog_content { - overflow:auto; - color: #DDD; - font-family: Tahoma, Arial, sans-serif; - font-size: 10px; - background-color:#123; -} - -.top_draggable, .bottom_draggable { - cursor:move; -} - -.status_bar { - font-size:12px; -} -.status_bar input{ - font-size:12px; -} - -.wired_frame { - display: block; - position: absolute; - border: 1px #000 dashed; -} - -/* DO NOT CHANGE THESE VALUES*/ -.dialog { - display: block; - position: absolute; -} - -.dialog table.table_window { - border-collapse: collapse; - border-spacing: 0; - width: 100%; - margin: 0px; - padding:0px; -} - -.dialog table.table_window td , .dialog table.table_window th { - padding: 0; -} - -.dialog .title_window { - -moz-user-select:none; -} - +.overlay_dialog { + background-color: #666666; + filter:alpha(opacity=60); + -moz-opacity: 0.6; + opacity: 0.6; +} + +.overlay___invisible__ { + background-color: #666666; + filter:alpha(opacity=0); + -moz-opacity: 0; + opacity: 0; +} + +.dialog_nw { + width: 9px; + height: 23px; + background: transparent url(default/top_left.gif) no-repeat 0 0; +} + +.dialog_n { + background: transparent url(default/top_mid.gif) repeat-x 0 0; + height: 23px; +} + +.dialog_ne { + width: 9px; + height: 23px; + background: transparent url(default/top_right.gif) no-repeat 0 0; +} + +.dialog_e { + width: 2px; + background: transparent url(default/center_right.gif) repeat-y 0 0; +} + +.dialog_w { + width: 2px; + background: transparent url(default/center_left.gif) repeat-y 0 0; +} + +.dialog_sw { + width: 9px; + height: 19px; + background: transparent url(default/bottom_left.gif) no-repeat 0 0; +} + +.dialog_s { + background: transparent url(default/bottom_mid.gif) repeat-x 0 0; + height: 19px; +} + +.dialog_se { + width: 9px; + height: 19px; + background: transparent url(default/bottom_right.gif) no-repeat 0 0; +} + +.dialog_sizer { + width: 9px; + height: 19px; + background: transparent url(default/sizer.gif) no-repeat 0 0; + cursor:se-resize; +} + +.dialog_close { + width: 14px; + height: 14px; + background: transparent url(default/close.gif) no-repeat 0 0; + position:absolute; + top:5px; + left:8px; + cursor:pointer; + z-index:2000; +} + +.dialog_minimize { + width: 14px; + height: 15px; + background: transparent url(default/minimize.gif) no-repeat 0 0; + position:absolute; + top:5px; + left:28px; + cursor:pointer; + z-index:2000; +} + +.dialog_maximize { + width: 14px; + height: 15px; + background: transparent url(default/maximize.gif) no-repeat 0 0; + position:absolute; + top:5px; + left:49px; + cursor:pointer; + z-index:2000; +} + +.dialog_title { + float:left; + height:14px; + font-family: Tahoma, Arial, sans-serif; + font-size:12px; + text-align:center; + width:100%; + color:#000; +} + +.dialog_content { + overflow:auto; + color: #DDD; + font-family: Tahoma, Arial, sans-serif; + font-size: 10px; + background-color:#123; +} + +.top_draggable, .bottom_draggable { + cursor:move; +} + +.status_bar { + font-size:12px; +} +.status_bar input{ + font-size:12px; +} + +.wired_frame { + display: block; + position: absolute; + border: 1px #000 dashed; +} + +/* DO NOT CHANGE THESE VALUES*/ +.dialog { + display: block; + position: absolute; +} + +.dialog table.table_window { + border-collapse: collapse; + border-spacing: 0; + width: 100%; + margin: 0px; + padding:0px; +} + +.dialog table.table_window td , .dialog table.table_window th { + padding: 0; +} + +.dialog .title_window { + -moz-user-select:none; +} + diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/iefix/iepngfix.css b/public/plugin_assets/redmine_code_review/stylesheets/window_js/iefix/iepngfix.css index 257a1b1e3..249388be5 100644 --- a/public/plugin_assets/redmine_code_review/stylesheets/window_js/iefix/iepngfix.css +++ b/public/plugin_assets/redmine_code_review/stylesheets/window_js/iefix/iepngfix.css @@ -1,3 +1,3 @@ -/* PNG fix for all themes that uses PNG images on IE */ -td, div { behavior: url(../themes/iefix/iepngfix.htc) } - +/* PNG fix for all themes that uses PNG images on IE */ +td, div { behavior: url(../themes/iefix/iepngfix.htc) } + diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/iefix/iepngfix.htc b/public/plugin_assets/redmine_code_review/stylesheets/window_js/iefix/iepngfix.htc index a6c683b9f..9a13f32bf 100644 --- a/public/plugin_assets/redmine_code_review/stylesheets/window_js/iefix/iepngfix.htc +++ b/public/plugin_assets/redmine_code_review/stylesheets/window_js/iefix/iepngfix.htc @@ -1,54 +1,54 @@ - - - - + + + + \ No newline at end of file diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting.css b/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting.css index 95ec287a9..0d955c3d7 100644 --- a/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting.css +++ b/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting.css @@ -1,960 +1,960 @@ -.overlay___invisible__ { - background-color: #666; - filter:alpha(opacity=0); - -moz-opacity: 0; - opacity: 0; -} - -.top_draggable, .bottom_draggable { - cursor:move; -} - -.status_bar { - font-size:12px; -} -.status_bar input{ - font-size:12px; -} - -.wired_frame { - display:block; - position:absolute; - border:1px #000 dashed; -} - - - -.overlay_bluelighting { - background-color:#FFF; - filter:alpha(opacity=60); - -moz-opacity:0.6; - opacity:0.6; -} - -.bluelighting_wired_frame { - background:#FFF; - filter:alpha(opacity=60); - -moz-opacity:0.6; - opacity:0.6; -} - -.bluelighting_nw { - background:transparent url(lighting/top-left-blue.png) no-repeat 0 0; - width:9px; - height:28px; -} - -.bluelighting_n { - background:transparent url(lighting/top-middle-blue.png) repeat-x 0 0; - height:28px; -} - -.bluelighting_ne { - background:transparent url(lighting/top-right-blue.png) no-repeat 0 0; - width:15px; - height:28px; -} - -.bluelighting_w { - background:transparent url(lighting/left-blue.png) repeat-y top left; - width:9px; -} - -.bluelighting_e { - background:transparent url(lighting/right-blue.png) repeat-y top right; - width:15px; -} - -.bluelighting_sw { - background:transparent url(lighting/bottom-left-blue.png) no-repeat 0 0; - width:9px; - height:15px; -} - -.bluelighting_s { - background:transparent url(lighting/bottom-middle-blue.png) repeat-x 0 0; - height:15px; -} - -.bluelighting_se, .bluelighting_sizer { - background:transparent url(lighting/bottom-right-blue.png) no-repeat 0 0; - width:15px; - height:15px; -} - -.bluelighting_sizer { - cursor:se-resize; -} - -.bluelighting_close { - width:15px; - height:9px; - background:transparent url(lighting/button-close-blue.png) no-repeat 0 0; - position:absolute; - top:11px; - right:10px; - cursor:pointer; - z-index:1000; -} - -.bluelighting_maximize { - width:15px; - height:9px; - background:transparent url(lighting/button-maximize-blue.png) no-repeat 0 0; - position:absolute; - top:11px; - right:25px; - cursor:pointer; - z-index:1000; -} - -.bluelighting_minimize { - width:15px; - height:9px; - background:transparent url(lighting/button-minimize-blue.png) no-repeat 0 0; - position:absolute; - top:11px; - right:40px; - cursor:pointer; - z-index:1000; -} - -.bluelighting_title { - float:left; - height:14px; - font-size:14px; - font-weight:bold; - font-family:Verdana, Arial, sans-serif; - text-align:center; - margin-top:2px; - width:100%; - color:#17385B; -} - -.bluelighting_content { - overflow:auto; - color:#000; - font-family:Verdana, Arial, sans-serif; - font-size:12px; - background:#BFDBFF; -} - -/* For alert/confirm dialog */ -.bluelighting_window { - border:1px solid #F00; - background:#FFF; - padding:20px; - margin-left:auto; - margin-right:auto; - width:400px; -} - -.bluelighting_message { - font-size:12px; - text-align:center; - width:100%; - padding-bottom:10px; -} - -.bluelighting_buttons { - text-align:center; - width:100%; -} - -.bluelighting_buttons input { - border:1px solid #999; - border-top-color:#CCC; - border-left-color:#CCC; - padding:2px; - background-color:#FFF; - color:#333; - background-image:url(lighting/background_buttons.gif); - background-repeat:repeat-x; - font-family:Verdana, Arial, sans-serif; - font-size:10px; - font-weight:bold; - text-align:center; -} - -.bluelighting_progress { - float:left; - margin:auto; - text-align:center; - width:100%; - height:16px; - background:transparent url('lighting/spinner.gif') no-repeat center center -} - -/* FOR IE */ -* html .bluelighting_nw { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-left-blue.png", sizingMethod="crop"); -} - -* html .bluelighting_n { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-middle-blue.png", sizingMethod="scale"); -} - -* html .bluelighting_ne { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-right-blue.png", sizingMethod="crop"); -} - -* html .bluelighting_w { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/left-blue.png", sizingMethod="scale"); -} - -* html .bluelighting_e { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/right-blue.png", sizingMethod="scale"); -} - -* html .bluelighting_sw { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-left-blue.png", sizingMethod="crop"); -} - -* html .bluelighting_s { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-middle-blue.png", sizingMethod="scale"); -} - -* html .bluelighting_se, * html .bluelighting_sizer { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-right-blue.png", sizingMethod="crop"); -} - -* html .bluelighting_close { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-close-blue.png", sizingMethod="crop"); -} - -* html .bluelighting_minimize { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-minimize-blue.png", sizingMethod="crop"); -} - -* html .bluelighting_maximize { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-maximize-blue.png", sizingMethod="crop"); -} - -* html .bluelighting_content { - background:#B8D7FF; -} - - - -.overlay_greylighting { - background-color:#FFF; - filter:alpha(opacity=60); - -moz-opacity:0.6; - opacity:0.6; -} - -.greylighting_wired_frame { - background:#FFF; - filter:alpha(opacity=60); - -moz-opacity:0.6; - opacity:0.6; -} - -.greylighting_nw { - background:transparent url(lighting/top-left-grey.png) no-repeat 0 0; - width:9px; - height:28px; -} - -.greylighting_n { - background:transparent url(lighting/top-middle-grey.png) repeat-x 0 0; - height:28px; -} - -.greylighting_ne { - background:transparent url(lighting/top-right-grey.png) no-repeat 0 0; - width:15px; - height:28px; -} - -.greylighting_w { - background:transparent url(lighting/left-grey.png) repeat-y top left; - width:9px; -} - -.greylighting_e { - background:transparent url(lighting/right-grey.png) repeat-y top right; - width:15px; -} - -.greylighting_sw { - background:transparent url(lighting/bottom-left-grey.png) no-repeat 0 0; - width:9px; - height:15px; -} - -.greylighting_s { - background:transparent url(lighting/bottom-middle-grey.png) repeat-x 0 0; - height:15px; -} - -.greylighting_se, .greylighting_sizer { - background:transparent url(lighting/bottom-right-grey.png) no-repeat 0 0; - width:15px; - height:15px; -} - -.greylighting_sizer { - cursor:se-resize; -} - -.greylighting_close { - width:15px; - height:9px; - background:transparent url(lighting/button-close-grey.png) no-repeat 0 0; - position:absolute; - top:11px; - right:10px; - cursor:pointer; - z-index:1000; -} - -.greylighting_maximize { - width:15px; - height:9px; - background:transparent url(lighting/button-maximize-grey.png) no-repeat 0 0; - position:absolute; - top:11px; - right:25px; - cursor:pointer; - z-index:1000; -} - -.greylighting_minimize { - width:15px; - height:9px; - background:transparent url(lighting/button-minimize-grey.png) no-repeat 0 0; - position:absolute; - top:11px; - right:40px; - cursor:pointer; - z-index:1000; -} - -.greylighting_title { - float:left; - height:14px; - font-size:14px; - font-weight:bold; - font-family:Verdana, Arial, sans-serif; - text-align:center; - margin-top:2px; - width:100%; - color:#525252; -} - -.greylighting_content { - overflow:auto; - color:#000; - font-family:Verdana, Arial, sans-serif; - font-size:12px; - background:#CDCDCD; -} - -/* For alert/confirm dialog */ -.greylighting_window { - border:1px solid #F00; - background:#FFF; - padding:20px; - margin-left:auto; - margin-right:auto; - width:400px; -} - -.greylighting_message { - font-size:12px; - text-align:center; - width:100%; - padding-bottom:10px; -} - -.greylighting_buttons { - text-align:center; - width:100%; -} - -.greylighting_buttons input { - border:1px solid #999; - border-top-color:#CCC; - border-left-color:#CCC; - padding:2px; - background-color:#FFF; - color:#333; - background-image:url(lighting/background_buttons.gif); - background-repeat:repeat-x; - font-family:Verdana, Arial, sans-serif; - font-size:10px; - font-weight:bold; - text-align:center; -} - -.greylighting_progress { - float:left; - margin:auto; - text-align:center; - width:100%; - height:16px; - background:transparent url('lighting/spinner.gif') no-repeat center center -} - -/* FOR IE */ -* html .greylighting_nw { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-left-grey.png", sizingMethod="crop"); -} - -* html .greylighting_n { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-middle-grey.png", sizingMethod="scale"); -} - -* html .greylighting_ne { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-right-grey.png", sizingMethod="crop"); -} - -* html .greylighting_w { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/left-grey.png", sizingMethod="scale"); -} - -* html .greylighting_e { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/right-grey.png", sizingMethod="scale"); -} - -* html .greylighting_sw { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-left-grey.png", sizingMethod="crop"); -} - -* html .greylighting_s { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-middle-grey.png", sizingMethod="scale"); -} - -* html greylighting_se, * html .greylighting_sizer { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-right-grey.png", sizingMethod="crop"); -} - -* html .greylighting_close { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-close-grey.png", sizingMethod="crop"); -} - -* html .greylighting_minimize { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-minimize-grey.png", sizingMethod="crop"); -} - -* html .greylighting_maximize { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-maximize-grey.png", sizingMethod="crop"); -} - -* html .greylighting_content { - background:#C7C7C7; -} - - - -.overlay_greenlighting { - background-color:#FFF; - filter:alpha(opacity=60); - -moz-opacity:0.6; - opacity:0.6; -} - -.greenlighting_wired_frame { - background:#FFF; - filter:alpha(opacity=60); - -moz-opacity:0.6; - opacity:0.6; -} - -.greenlighting_nw { - background:transparent url(lighting/top-left-green.png) no-repeat 0 0; - width:9px; - height:28px; -} - -.greenlighting_n { - background:transparent url(lighting/top-middle-green.png) repeat-x 0 0; - height:28px; -} - -.greenlighting_ne { - background:transparent url(lighting/top-right-green.png) no-repeat 0 0; - width:15px; - height:28px; -} - -.greenlighting_w { - background:transparent url(lighting/left-green.png) repeat-y top left; - width:9px; -} - -.greenlighting_e { - background:transparent url(lighting/right-green.png) repeat-y top right; - width:15px; -} - -.greenlighting_sw { - background:transparent url(lighting/bottom-left-green.png) no-repeat 0 0; - width:9px; - height:15px; -} - -.greenlighting_s { - background:transparent url(lighting/bottom-middle-green.png) repeat-x 0 0; - height:15px; -} - -.greenlighting_se, .greenlighting_sizer { - background:transparent url(lighting/bottom-right-green.png) no-repeat 0 0; - width:15px; - height:15px; -} - -.greenlighting_sizer { - cursor:se-resize; -} - -.greenlighting_close { - width:15px; - height:9px; - background:transparent url(lighting/button-close-green.png) no-repeat 0 0; - position:absolute; - top:11px; - right:10px; - cursor:pointer; - z-index:1000; -} - -.greenlighting_maximize { - width:15px; - height:9px; - background:transparent url(lighting/button-maximize-green.png) no-repeat 0 0; - position:absolute; - top:11px; - right:25px; - cursor:pointer; - z-index:1000; -} - -.greenlighting_minimize { - width:15px; - height:9px; - background:transparent url(lighting/button-minimize-green.png) no-repeat 0 0; - position:absolute; - top:11px; - right:40px; - cursor:pointer; - z-index:1000; -} - -.greenlighting_title { - float:left; - height:14px; - font-size:14px; - font-weight:bold; - font-family:Verdana, Arial, sans-serif; - text-align:center; - margin-top:2px; - width:100%; - color:#2A6002; -} - -.greenlighting_content { - overflow:auto; - color:#000; - font-family:Verdana, Arial, sans-serif; - font-size:12px; - background:#ACFCAF; -} - -/* For alert/confirm dialog */ -.greenlighting_window { - border:1px solid #F00; - background:#FFF; - padding:20px; - margin-left:auto; - margin-right:auto; - width:400px; -} - -.greenlighting_message { - font-size:12px; - text-align:center; - width:100%; - padding-bottom:10px; -} - -.greenlighting_buttons { - text-align:center; - width:100%; -} - -.greenlighting_buttons input { - border:1px solid #999; - border-top-color:#CCC; - border-left-color:#CCC; - padding:2px; - background-color:#FFF; - color:#333; - background-image:url(lighting/background_buttons.gif); - background-repeat:repeat-x; - font-family:Verdana, Arial, sans-serif; - font-size:10px; - font-weight:bold; - text-align:center; -} - -.greenlighting_progress { - float:left; - margin:auto; - text-align:center; - width:100%; - height:16px; - background:transparent url('lighting/spinner.gif') no-repeat center center -} - -/* FOR IE */ -* html .greenlighting_nw { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-left-green.png", sizingMethod="crop"); -} - -* html .greenlighting_n { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-middle-green.png", sizingMethod="scale"); -} - -* html .greenlighting_ne { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-right-green.png", sizingMethod="crop"); -} - -* html .greenlighting_w { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/left-green.png", sizingMethod="scale"); -} - -* html .greenlighting_e { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/right-green.png", sizingMethod="scale"); -} - -* html .greenlighting_sw { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-left-green.png", sizingMethod="crop"); -} - -* html .greenlighting_s { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-middle-green.png", sizingMethod="scale"); -} - -* html greenlighting_se, * html .greenlighting_sizer { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-right-green.png", sizingMethod="crop"); -} - -* html .greenlighting_close { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-close-green.png", sizingMethod="crop"); -} - -* html .greenlighting_minimize { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-minimize-green.png", sizingMethod="crop"); -} - -* html .greenlighting_maximize { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-maximize-green.png", sizingMethod="crop"); -} - -* html .greenlighting_content { - background:#A4FCA7; -} - - - -.overlay_darkbluelighting { - background-color:#FFF; - filter:alpha(opacity=60); - -moz-opacity:0.6; - opacity:0.6; -} - -.darkbluelighting_wired_frame { - background:#FFF; - filter:alpha(opacity=60); - -moz-opacity:0.6; - opacity:0.6; -} - -.darkbluelighting_nw { - background:transparent url(lighting/top-left-darkblue.png) no-repeat 0 0; - width:9px; - height:28px; -} - -.darkbluelighting_n { - background:transparent url(lighting/top-middle-darkblue.png) repeat-x 0 0; - height:28px; -} - -.darkbluelighting_ne { - background:transparent url(lighting/top-right-darkblue.png) no-repeat 0 0; - width:15px; - height:28px; -} - -.darkbluelighting_w { - background:transparent url(lighting/left-darkblue.png) repeat-y top left; - width:9px; -} - -.darkbluelighting_e { - background:transparent url(lighting/right-darkblue.png) repeat-y top right; - width:15px; -} - -.darkbluelighting_sw { - background:transparent url(lighting/bottom-left-darkblue.png) no-repeat 0 0; - width:9px; - height:15px; -} - -.darkbluelighting_s { - background:transparent url(lighting/bottom-middle-darkblue.png) repeat-x 0 0; - height:15px; -} - -.darkbluelighting_se, .darkbluelighting_sizer { - background:transparent url(lighting/bottom-right-darkblue.png) no-repeat 0 0; - width:15px; - height:15px; -} - -.darkbluelighting_sizer { - cursor:se-resize; -} - -.darkbluelighting_close { - width:15px; - height:9px; - background:transparent url(lighting/button-close-darkblue.png) no-repeat 0 0; - position:absolute; - top:11px; - right:10px; - cursor:pointer; - z-index:1000; -} - -.darkbluelighting_maximize { - width:15px; - height:9px; - background:transparent url(lighting/button-maximize-darkblue.png) no-repeat 0 0; - position:absolute; - top:11px; - right:25px; - cursor:pointer; - z-index:1000; -} - -.darkbluelighting_minimize { - width:15px; - height:9px; - background:transparent url(lighting/button-minimize-darkblue.png) no-repeat 0 0; - position:absolute; - top:11px; - right:40px; - cursor:pointer; - z-index:1000; -} - -.darkbluelighting_title { - float:left; - height:14px; - font-size:14px; - font-weight:bold; - font-family:Verdana, Arial, sans-serif; - text-align:center; - margin-top:2px; - width:100%; - color:#E4EFFD; -} - -.darkbluelighting_content { - overflow:auto; - color:#FFF; - font-family:Verdana, Arial, sans-serif; - font-size:12px; - background:#0413C0; -} - -/* For alert/confirm dialog */ -.darkbluelighting_window { - border:1px solid #F00; - background:#FFF; - padding:20px; - margin-left:auto; - margin-right:auto; - width:400px; -} - -.darkbluelighting_message { - font-size:12px; - text-align:center; - width:100%; - padding-bottom:10px; -} - -.darkbluelighting_buttons { - text-align:center; - width:100%; -} - -.darkbluelighting_buttons input { - border:1px solid #999; - border-top-color:#CCC; - border-left-color:#CCC; - padding:2px; - background-color:#FFF; - color:#333; - background-image:url(lighting/background_buttons.gif); - background-repeat:repeat-x; - font-family:Verdana, Arial, sans-serif; - font-size:10px; - font-weight:bold; - text-align:center; -} - -.darkbluelighting_progress { - float:left; - margin:auto; - text-align:center; - width:100%; - height:16px; - background:transparent url('lighting/spinner.gif') no-repeat center center -} - -/* FOR IE */ -* html .darkbluelighting_nw { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-left-darkblue.png", sizingMethod="crop"); -} - -* html .darkbluelighting_n { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-middle-darkblue.png", sizingMethod="scale"); -} - -* html .darkbluelighting_ne { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-right-darkblue.png", sizingMethod="crop"); -} - -* html .darkbluelighting_w { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/left-darkblue.png", sizingMethod="scale"); -} - -* html .darkbluelighting_e { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/right-darkblue.png", sizingMethod="scale"); -} - -* html .darkbluelighting_sw { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-left-darkblue.png", sizingMethod="crop"); -} - -* html .darkbluelighting_s { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-middle-darkblue.png", sizingMethod="scale"); -} - -* html darkbluelighting_se, * html .darkbluelighting_sizer { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-right-darkblue.png", sizingMethod="crop"); -} - -* html .darkbluelighting_close { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-close-darkblue.png", sizingMethod="crop"); -} - -* html .darkbluelighting_minimize { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-minimize-darkblue.png", sizingMethod="crop"); -} - -* html .darkbluelighting_maximize { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-maximize-darkblue.png", sizingMethod="crop"); -} - -* html .darkbluelighting_content { - background:#020EBA; -} - +.overlay___invisible__ { + background-color: #666; + filter:alpha(opacity=0); + -moz-opacity: 0; + opacity: 0; +} + +.top_draggable, .bottom_draggable { + cursor:move; +} + +.status_bar { + font-size:12px; +} +.status_bar input{ + font-size:12px; +} + +.wired_frame { + display:block; + position:absolute; + border:1px #000 dashed; +} + + + +.overlay_bluelighting { + background-color:#FFF; + filter:alpha(opacity=60); + -moz-opacity:0.6; + opacity:0.6; +} + +.bluelighting_wired_frame { + background:#FFF; + filter:alpha(opacity=60); + -moz-opacity:0.6; + opacity:0.6; +} + +.bluelighting_nw { + background:transparent url(lighting/top-left-blue.png) no-repeat 0 0; + width:9px; + height:28px; +} + +.bluelighting_n { + background:transparent url(lighting/top-middle-blue.png) repeat-x 0 0; + height:28px; +} + +.bluelighting_ne { + background:transparent url(lighting/top-right-blue.png) no-repeat 0 0; + width:15px; + height:28px; +} + +.bluelighting_w { + background:transparent url(lighting/left-blue.png) repeat-y top left; + width:9px; +} + +.bluelighting_e { + background:transparent url(lighting/right-blue.png) repeat-y top right; + width:15px; +} + +.bluelighting_sw { + background:transparent url(lighting/bottom-left-blue.png) no-repeat 0 0; + width:9px; + height:15px; +} + +.bluelighting_s { + background:transparent url(lighting/bottom-middle-blue.png) repeat-x 0 0; + height:15px; +} + +.bluelighting_se, .bluelighting_sizer { + background:transparent url(lighting/bottom-right-blue.png) no-repeat 0 0; + width:15px; + height:15px; +} + +.bluelighting_sizer { + cursor:se-resize; +} + +.bluelighting_close { + width:15px; + height:9px; + background:transparent url(lighting/button-close-blue.png) no-repeat 0 0; + position:absolute; + top:11px; + right:10px; + cursor:pointer; + z-index:1000; +} + +.bluelighting_maximize { + width:15px; + height:9px; + background:transparent url(lighting/button-maximize-blue.png) no-repeat 0 0; + position:absolute; + top:11px; + right:25px; + cursor:pointer; + z-index:1000; +} + +.bluelighting_minimize { + width:15px; + height:9px; + background:transparent url(lighting/button-minimize-blue.png) no-repeat 0 0; + position:absolute; + top:11px; + right:40px; + cursor:pointer; + z-index:1000; +} + +.bluelighting_title { + float:left; + height:14px; + font-size:14px; + font-weight:bold; + font-family:Verdana, Arial, sans-serif; + text-align:center; + margin-top:2px; + width:100%; + color:#17385B; +} + +.bluelighting_content { + overflow:auto; + color:#000; + font-family:Verdana, Arial, sans-serif; + font-size:12px; + background:#BFDBFF; +} + +/* For alert/confirm dialog */ +.bluelighting_window { + border:1px solid #F00; + background:#FFF; + padding:20px; + margin-left:auto; + margin-right:auto; + width:400px; +} + +.bluelighting_message { + font-size:12px; + text-align:center; + width:100%; + padding-bottom:10px; +} + +.bluelighting_buttons { + text-align:center; + width:100%; +} + +.bluelighting_buttons input { + border:1px solid #999; + border-top-color:#CCC; + border-left-color:#CCC; + padding:2px; + background-color:#FFF; + color:#333; + background-image:url(lighting/background_buttons.gif); + background-repeat:repeat-x; + font-family:Verdana, Arial, sans-serif; + font-size:10px; + font-weight:bold; + text-align:center; +} + +.bluelighting_progress { + float:left; + margin:auto; + text-align:center; + width:100%; + height:16px; + background:transparent url('lighting/spinner.gif') no-repeat center center +} + +/* FOR IE */ +* html .bluelighting_nw { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-left-blue.png", sizingMethod="crop"); +} + +* html .bluelighting_n { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-middle-blue.png", sizingMethod="scale"); +} + +* html .bluelighting_ne { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-right-blue.png", sizingMethod="crop"); +} + +* html .bluelighting_w { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/left-blue.png", sizingMethod="scale"); +} + +* html .bluelighting_e { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/right-blue.png", sizingMethod="scale"); +} + +* html .bluelighting_sw { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-left-blue.png", sizingMethod="crop"); +} + +* html .bluelighting_s { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-middle-blue.png", sizingMethod="scale"); +} + +* html .bluelighting_se, * html .bluelighting_sizer { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-right-blue.png", sizingMethod="crop"); +} + +* html .bluelighting_close { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-close-blue.png", sizingMethod="crop"); +} + +* html .bluelighting_minimize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-minimize-blue.png", sizingMethod="crop"); +} + +* html .bluelighting_maximize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-maximize-blue.png", sizingMethod="crop"); +} + +* html .bluelighting_content { + background:#B8D7FF; +} + + + +.overlay_greylighting { + background-color:#FFF; + filter:alpha(opacity=60); + -moz-opacity:0.6; + opacity:0.6; +} + +.greylighting_wired_frame { + background:#FFF; + filter:alpha(opacity=60); + -moz-opacity:0.6; + opacity:0.6; +} + +.greylighting_nw { + background:transparent url(lighting/top-left-grey.png) no-repeat 0 0; + width:9px; + height:28px; +} + +.greylighting_n { + background:transparent url(lighting/top-middle-grey.png) repeat-x 0 0; + height:28px; +} + +.greylighting_ne { + background:transparent url(lighting/top-right-grey.png) no-repeat 0 0; + width:15px; + height:28px; +} + +.greylighting_w { + background:transparent url(lighting/left-grey.png) repeat-y top left; + width:9px; +} + +.greylighting_e { + background:transparent url(lighting/right-grey.png) repeat-y top right; + width:15px; +} + +.greylighting_sw { + background:transparent url(lighting/bottom-left-grey.png) no-repeat 0 0; + width:9px; + height:15px; +} + +.greylighting_s { + background:transparent url(lighting/bottom-middle-grey.png) repeat-x 0 0; + height:15px; +} + +.greylighting_se, .greylighting_sizer { + background:transparent url(lighting/bottom-right-grey.png) no-repeat 0 0; + width:15px; + height:15px; +} + +.greylighting_sizer { + cursor:se-resize; +} + +.greylighting_close { + width:15px; + height:9px; + background:transparent url(lighting/button-close-grey.png) no-repeat 0 0; + position:absolute; + top:11px; + right:10px; + cursor:pointer; + z-index:1000; +} + +.greylighting_maximize { + width:15px; + height:9px; + background:transparent url(lighting/button-maximize-grey.png) no-repeat 0 0; + position:absolute; + top:11px; + right:25px; + cursor:pointer; + z-index:1000; +} + +.greylighting_minimize { + width:15px; + height:9px; + background:transparent url(lighting/button-minimize-grey.png) no-repeat 0 0; + position:absolute; + top:11px; + right:40px; + cursor:pointer; + z-index:1000; +} + +.greylighting_title { + float:left; + height:14px; + font-size:14px; + font-weight:bold; + font-family:Verdana, Arial, sans-serif; + text-align:center; + margin-top:2px; + width:100%; + color:#525252; +} + +.greylighting_content { + overflow:auto; + color:#000; + font-family:Verdana, Arial, sans-serif; + font-size:12px; + background:#CDCDCD; +} + +/* For alert/confirm dialog */ +.greylighting_window { + border:1px solid #F00; + background:#FFF; + padding:20px; + margin-left:auto; + margin-right:auto; + width:400px; +} + +.greylighting_message { + font-size:12px; + text-align:center; + width:100%; + padding-bottom:10px; +} + +.greylighting_buttons { + text-align:center; + width:100%; +} + +.greylighting_buttons input { + border:1px solid #999; + border-top-color:#CCC; + border-left-color:#CCC; + padding:2px; + background-color:#FFF; + color:#333; + background-image:url(lighting/background_buttons.gif); + background-repeat:repeat-x; + font-family:Verdana, Arial, sans-serif; + font-size:10px; + font-weight:bold; + text-align:center; +} + +.greylighting_progress { + float:left; + margin:auto; + text-align:center; + width:100%; + height:16px; + background:transparent url('lighting/spinner.gif') no-repeat center center +} + +/* FOR IE */ +* html .greylighting_nw { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-left-grey.png", sizingMethod="crop"); +} + +* html .greylighting_n { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-middle-grey.png", sizingMethod="scale"); +} + +* html .greylighting_ne { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-right-grey.png", sizingMethod="crop"); +} + +* html .greylighting_w { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/left-grey.png", sizingMethod="scale"); +} + +* html .greylighting_e { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/right-grey.png", sizingMethod="scale"); +} + +* html .greylighting_sw { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-left-grey.png", sizingMethod="crop"); +} + +* html .greylighting_s { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-middle-grey.png", sizingMethod="scale"); +} + +* html greylighting_se, * html .greylighting_sizer { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-right-grey.png", sizingMethod="crop"); +} + +* html .greylighting_close { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-close-grey.png", sizingMethod="crop"); +} + +* html .greylighting_minimize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-minimize-grey.png", sizingMethod="crop"); +} + +* html .greylighting_maximize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-maximize-grey.png", sizingMethod="crop"); +} + +* html .greylighting_content { + background:#C7C7C7; +} + + + +.overlay_greenlighting { + background-color:#FFF; + filter:alpha(opacity=60); + -moz-opacity:0.6; + opacity:0.6; +} + +.greenlighting_wired_frame { + background:#FFF; + filter:alpha(opacity=60); + -moz-opacity:0.6; + opacity:0.6; +} + +.greenlighting_nw { + background:transparent url(lighting/top-left-green.png) no-repeat 0 0; + width:9px; + height:28px; +} + +.greenlighting_n { + background:transparent url(lighting/top-middle-green.png) repeat-x 0 0; + height:28px; +} + +.greenlighting_ne { + background:transparent url(lighting/top-right-green.png) no-repeat 0 0; + width:15px; + height:28px; +} + +.greenlighting_w { + background:transparent url(lighting/left-green.png) repeat-y top left; + width:9px; +} + +.greenlighting_e { + background:transparent url(lighting/right-green.png) repeat-y top right; + width:15px; +} + +.greenlighting_sw { + background:transparent url(lighting/bottom-left-green.png) no-repeat 0 0; + width:9px; + height:15px; +} + +.greenlighting_s { + background:transparent url(lighting/bottom-middle-green.png) repeat-x 0 0; + height:15px; +} + +.greenlighting_se, .greenlighting_sizer { + background:transparent url(lighting/bottom-right-green.png) no-repeat 0 0; + width:15px; + height:15px; +} + +.greenlighting_sizer { + cursor:se-resize; +} + +.greenlighting_close { + width:15px; + height:9px; + background:transparent url(lighting/button-close-green.png) no-repeat 0 0; + position:absolute; + top:11px; + right:10px; + cursor:pointer; + z-index:1000; +} + +.greenlighting_maximize { + width:15px; + height:9px; + background:transparent url(lighting/button-maximize-green.png) no-repeat 0 0; + position:absolute; + top:11px; + right:25px; + cursor:pointer; + z-index:1000; +} + +.greenlighting_minimize { + width:15px; + height:9px; + background:transparent url(lighting/button-minimize-green.png) no-repeat 0 0; + position:absolute; + top:11px; + right:40px; + cursor:pointer; + z-index:1000; +} + +.greenlighting_title { + float:left; + height:14px; + font-size:14px; + font-weight:bold; + font-family:Verdana, Arial, sans-serif; + text-align:center; + margin-top:2px; + width:100%; + color:#2A6002; +} + +.greenlighting_content { + overflow:auto; + color:#000; + font-family:Verdana, Arial, sans-serif; + font-size:12px; + background:#ACFCAF; +} + +/* For alert/confirm dialog */ +.greenlighting_window { + border:1px solid #F00; + background:#FFF; + padding:20px; + margin-left:auto; + margin-right:auto; + width:400px; +} + +.greenlighting_message { + font-size:12px; + text-align:center; + width:100%; + padding-bottom:10px; +} + +.greenlighting_buttons { + text-align:center; + width:100%; +} + +.greenlighting_buttons input { + border:1px solid #999; + border-top-color:#CCC; + border-left-color:#CCC; + padding:2px; + background-color:#FFF; + color:#333; + background-image:url(lighting/background_buttons.gif); + background-repeat:repeat-x; + font-family:Verdana, Arial, sans-serif; + font-size:10px; + font-weight:bold; + text-align:center; +} + +.greenlighting_progress { + float:left; + margin:auto; + text-align:center; + width:100%; + height:16px; + background:transparent url('lighting/spinner.gif') no-repeat center center +} + +/* FOR IE */ +* html .greenlighting_nw { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-left-green.png", sizingMethod="crop"); +} + +* html .greenlighting_n { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-middle-green.png", sizingMethod="scale"); +} + +* html .greenlighting_ne { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-right-green.png", sizingMethod="crop"); +} + +* html .greenlighting_w { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/left-green.png", sizingMethod="scale"); +} + +* html .greenlighting_e { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/right-green.png", sizingMethod="scale"); +} + +* html .greenlighting_sw { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-left-green.png", sizingMethod="crop"); +} + +* html .greenlighting_s { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-middle-green.png", sizingMethod="scale"); +} + +* html greenlighting_se, * html .greenlighting_sizer { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-right-green.png", sizingMethod="crop"); +} + +* html .greenlighting_close { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-close-green.png", sizingMethod="crop"); +} + +* html .greenlighting_minimize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-minimize-green.png", sizingMethod="crop"); +} + +* html .greenlighting_maximize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-maximize-green.png", sizingMethod="crop"); +} + +* html .greenlighting_content { + background:#A4FCA7; +} + + + +.overlay_darkbluelighting { + background-color:#FFF; + filter:alpha(opacity=60); + -moz-opacity:0.6; + opacity:0.6; +} + +.darkbluelighting_wired_frame { + background:#FFF; + filter:alpha(opacity=60); + -moz-opacity:0.6; + opacity:0.6; +} + +.darkbluelighting_nw { + background:transparent url(lighting/top-left-darkblue.png) no-repeat 0 0; + width:9px; + height:28px; +} + +.darkbluelighting_n { + background:transparent url(lighting/top-middle-darkblue.png) repeat-x 0 0; + height:28px; +} + +.darkbluelighting_ne { + background:transparent url(lighting/top-right-darkblue.png) no-repeat 0 0; + width:15px; + height:28px; +} + +.darkbluelighting_w { + background:transparent url(lighting/left-darkblue.png) repeat-y top left; + width:9px; +} + +.darkbluelighting_e { + background:transparent url(lighting/right-darkblue.png) repeat-y top right; + width:15px; +} + +.darkbluelighting_sw { + background:transparent url(lighting/bottom-left-darkblue.png) no-repeat 0 0; + width:9px; + height:15px; +} + +.darkbluelighting_s { + background:transparent url(lighting/bottom-middle-darkblue.png) repeat-x 0 0; + height:15px; +} + +.darkbluelighting_se, .darkbluelighting_sizer { + background:transparent url(lighting/bottom-right-darkblue.png) no-repeat 0 0; + width:15px; + height:15px; +} + +.darkbluelighting_sizer { + cursor:se-resize; +} + +.darkbluelighting_close { + width:15px; + height:9px; + background:transparent url(lighting/button-close-darkblue.png) no-repeat 0 0; + position:absolute; + top:11px; + right:10px; + cursor:pointer; + z-index:1000; +} + +.darkbluelighting_maximize { + width:15px; + height:9px; + background:transparent url(lighting/button-maximize-darkblue.png) no-repeat 0 0; + position:absolute; + top:11px; + right:25px; + cursor:pointer; + z-index:1000; +} + +.darkbluelighting_minimize { + width:15px; + height:9px; + background:transparent url(lighting/button-minimize-darkblue.png) no-repeat 0 0; + position:absolute; + top:11px; + right:40px; + cursor:pointer; + z-index:1000; +} + +.darkbluelighting_title { + float:left; + height:14px; + font-size:14px; + font-weight:bold; + font-family:Verdana, Arial, sans-serif; + text-align:center; + margin-top:2px; + width:100%; + color:#E4EFFD; +} + +.darkbluelighting_content { + overflow:auto; + color:#FFF; + font-family:Verdana, Arial, sans-serif; + font-size:12px; + background:#0413C0; +} + +/* For alert/confirm dialog */ +.darkbluelighting_window { + border:1px solid #F00; + background:#FFF; + padding:20px; + margin-left:auto; + margin-right:auto; + width:400px; +} + +.darkbluelighting_message { + font-size:12px; + text-align:center; + width:100%; + padding-bottom:10px; +} + +.darkbluelighting_buttons { + text-align:center; + width:100%; +} + +.darkbluelighting_buttons input { + border:1px solid #999; + border-top-color:#CCC; + border-left-color:#CCC; + padding:2px; + background-color:#FFF; + color:#333; + background-image:url(lighting/background_buttons.gif); + background-repeat:repeat-x; + font-family:Verdana, Arial, sans-serif; + font-size:10px; + font-weight:bold; + text-align:center; +} + +.darkbluelighting_progress { + float:left; + margin:auto; + text-align:center; + width:100%; + height:16px; + background:transparent url('lighting/spinner.gif') no-repeat center center +} + +/* FOR IE */ +* html .darkbluelighting_nw { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-left-darkblue.png", sizingMethod="crop"); +} + +* html .darkbluelighting_n { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-middle-darkblue.png", sizingMethod="scale"); +} + +* html .darkbluelighting_ne { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-right-darkblue.png", sizingMethod="crop"); +} + +* html .darkbluelighting_w { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/left-darkblue.png", sizingMethod="scale"); +} + +* html .darkbluelighting_e { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/right-darkblue.png", sizingMethod="scale"); +} + +* html .darkbluelighting_sw { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-left-darkblue.png", sizingMethod="crop"); +} + +* html .darkbluelighting_s { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-middle-darkblue.png", sizingMethod="scale"); +} + +* html darkbluelighting_se, * html .darkbluelighting_sizer { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-right-darkblue.png", sizingMethod="crop"); +} + +* html .darkbluelighting_close { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-close-darkblue.png", sizingMethod="crop"); +} + +* html .darkbluelighting_minimize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-minimize-darkblue.png", sizingMethod="crop"); +} + +* html .darkbluelighting_maximize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-maximize-darkblue.png", sizingMethod="crop"); +} + +* html .darkbluelighting_content { + background:#020EBA; +} + diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/pngbehavior.htc b/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/pngbehavior.htc index 36ea182e7..92248c665 100644 --- a/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/pngbehavior.htc +++ b/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/pngbehavior.htc @@ -1,67 +1,67 @@ - - - - + + + \ No newline at end of file diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/darkX.css b/public/plugin_assets/redmine_code_review/stylesheets/window_js/darkX.css index 2f83cfd46..e3df3e0a4 100644 --- a/public/plugin_assets/redmine_code_review/stylesheets/window_js/darkX.css +++ b/public/plugin_assets/redmine_code_review/stylesheets/window_js/darkX.css @@ -1,121 +1,121 @@ -.overlay_darkX { - background-color: #85BBEF; - filter:alpha(opacity=60); - -moz-opacity: 0.6; - opacity: 0.6; -} - -.darkX_nw { - background: transparent url(darkX/titlebar-left-focused.png) no-repeat 0 0; - width:6px; - height:21px; -} -.darkX_n { - background: transparent url(darkX/titlebar-mid-focused.png) repeat-x 0 0; - height:21px; -} -.darkX_ne { - background: transparent url(darkX/titlebar-right-focused.png) no-repeat 0 0; - width:6px; - height:21px; -} -.darkX_w { - background: transparent url(darkX/frame-left-focused.png) repeat-y top left; - width:3px; -} - -.darkX_e { - background: transparent url(darkX/frame-right-focused.png) repeat-y top right; - width:3px; -} - -.darkX_sw { - background: transparent url(darkX/frame-bottom-left-focused.png) no-repeat 0 0; - width:5px; - height:3px; -} -.darkX_s { - background: transparent url(darkX/frame-bottom-mid-focused.png) repeat-x 0 0; - height:3px; -} -.darkX_se, .darkX_sizer { - background: transparent url(darkX/frame-bottom-right-focused.png) no-repeat 0 0; - width:5px; - height:3px; -} - -.darkX_sizer { - cursor:se-resize; -} - -.darkX_close { - width: 21px; - height: 21px; - background: transparent url(darkX/button-close-focused.png) no-repeat 0 0; - position:absolute; - top:0px; - right:5px; - cursor:pointer; - z-index:1000; -} - -.darkX_minimize { - width: 21px; - height: 21px; - background: transparent url(darkX/button-minimize-focused.png) no-repeat 0 0; - position:absolute; - top:0px; - right:26px; - cursor:pointer; - z-index:1000; -} - -.darkX_maximize { - width: 21px; - height: 21px; - background: transparent url(darkX/button-maximize-focused.png) no-repeat 0 0; - position:absolute; - top:0px; - right:47px; - cursor:pointer; - z-index:1000; -} - - -.darkX_title { - float:left; - height:14px; - font-size:12px; - text-align:center; - margin-top:2px; - width:100%; - color:#FFF; -} - -.darkX_content { - overflow:auto; - color: #E6DF2A; - font-family: Tahoma, Arial, sans-serif; - font-size: 14px; - background:#5E5148; -} - - -/* FOR IE */ -* html .darkX_minimize { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/darkX/button-minimize-focused.png", sizingMethod="crop"); -} - -* html .darkX_maximize { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/darkX/button-maximize-focused.png", sizingMethod="scale"); -} - -* html .darkX_close { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/darkX/button-close-focused.png", sizingMethod="crop"); -} +.overlay_darkX { + background-color: #85BBEF; + filter:alpha(opacity=60); + -moz-opacity: 0.6; + opacity: 0.6; +} + +.darkX_nw { + background: transparent url(darkX/titlebar-left-focused.png) no-repeat 0 0; + width:6px; + height:21px; +} +.darkX_n { + background: transparent url(darkX/titlebar-mid-focused.png) repeat-x 0 0; + height:21px; +} +.darkX_ne { + background: transparent url(darkX/titlebar-right-focused.png) no-repeat 0 0; + width:6px; + height:21px; +} +.darkX_w { + background: transparent url(darkX/frame-left-focused.png) repeat-y top left; + width:3px; +} + +.darkX_e { + background: transparent url(darkX/frame-right-focused.png) repeat-y top right; + width:3px; +} + +.darkX_sw { + background: transparent url(darkX/frame-bottom-left-focused.png) no-repeat 0 0; + width:5px; + height:3px; +} +.darkX_s { + background: transparent url(darkX/frame-bottom-mid-focused.png) repeat-x 0 0; + height:3px; +} +.darkX_se, .darkX_sizer { + background: transparent url(darkX/frame-bottom-right-focused.png) no-repeat 0 0; + width:5px; + height:3px; +} + +.darkX_sizer { + cursor:se-resize; +} + +.darkX_close { + width: 21px; + height: 21px; + background: transparent url(darkX/button-close-focused.png) no-repeat 0 0; + position:absolute; + top:0px; + right:5px; + cursor:pointer; + z-index:1000; +} + +.darkX_minimize { + width: 21px; + height: 21px; + background: transparent url(darkX/button-minimize-focused.png) no-repeat 0 0; + position:absolute; + top:0px; + right:26px; + cursor:pointer; + z-index:1000; +} + +.darkX_maximize { + width: 21px; + height: 21px; + background: transparent url(darkX/button-maximize-focused.png) no-repeat 0 0; + position:absolute; + top:0px; + right:47px; + cursor:pointer; + z-index:1000; +} + + +.darkX_title { + float:left; + height:14px; + font-size:12px; + text-align:center; + margin-top:2px; + width:100%; + color:#FFF; +} + +.darkX_content { + overflow:auto; + color: #E6DF2A; + font-family: Tahoma, Arial, sans-serif; + font-size: 14px; + background:#5E5148; +} + + +/* FOR IE */ +* html .darkX_minimize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/darkX/button-minimize-focused.png", sizingMethod="crop"); +} + +* html .darkX_maximize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/darkX/button-maximize-focused.png", sizingMethod="scale"); +} + +* html .darkX_close { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/darkX/button-close-focused.png", sizingMethod="crop"); +} diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/debug.css b/public/plugin_assets/redmine_code_review/stylesheets/window_js/debug.css index 69e3b7fc2..d7981e9ca 100644 --- a/public/plugin_assets/redmine_code_review/stylesheets/window_js/debug.css +++ b/public/plugin_assets/redmine_code_review/stylesheets/window_js/debug.css @@ -1,25 +1,25 @@ -div.inspector div.inspectable { - padding: 0.25em 0 0.25em 1em; - background-color: Gray; - color: white; - border: outset 2px white; - cursor: pointer; -} - -div.inspector div.child { - margin: 0 0 0 1em; -} - -#debug_window_content { /* DIV container for debug sizing*/ - width:250px; - height:100px; - background-color:#000; -} - -#debug { /* DIV container for debug contents*/ - padding:3px; - color:#0f0; - font-family:monaco, Tahoma, Verdana, Arial, Helvetica, sans-serif; - font-size:10px; -} - +div.inspector div.inspectable { + padding: 0.25em 0 0.25em 1em; + background-color: Gray; + color: white; + border: outset 2px white; + cursor: pointer; +} + +div.inspector div.child { + margin: 0 0 0 1em; +} + +#debug_window_content { /* DIV container for debug sizing*/ + width:250px; + height:100px; + background-color:#000; +} + +#debug { /* DIV container for debug contents*/ + padding:3px; + color:#0f0; + font-family:monaco, Tahoma, Verdana, Arial, Helvetica, sans-serif; + font-size:10px; +} + diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/default.css b/public/plugin_assets/redmine_code_review/stylesheets/window_js/default.css index 6ab13789d..591451723 100644 --- a/public/plugin_assets/redmine_code_review/stylesheets/window_js/default.css +++ b/public/plugin_assets/redmine_code_review/stylesheets/window_js/default.css @@ -1,155 +1,155 @@ -.overlay_dialog { - background-color: #666666; - filter:alpha(opacity=60); - -moz-opacity: 0.6; - opacity: 0.6; -} - -.overlay___invisible__ { - background-color: #666666; - filter:alpha(opacity=0); - -moz-opacity: 0; - opacity: 0; -} - -.dialog_nw { - width: 9px; - height: 23px; - background: transparent url(default/top_left.gif) no-repeat 0 0; -} - -.dialog_n { - background: transparent url(default/top_mid.gif) repeat-x 0 0; - height: 23px; -} - -.dialog_ne { - width: 9px; - height: 23px; - background: transparent url(default/top_right.gif) no-repeat 0 0; -} - -.dialog_e { - width: 2px; - background: transparent url(default/center_right.gif) repeat-y 0 0; -} - -.dialog_w { - width: 2px; - background: transparent url(default/center_left.gif) repeat-y 0 0; -} - -.dialog_sw { - width: 9px; - height: 19px; - background: transparent url(default/bottom_left.gif) no-repeat 0 0; -} - -.dialog_s { - background: transparent url(default/bottom_mid.gif) repeat-x 0 0; - height: 19px; -} - -.dialog_se { - width: 9px; - height: 19px; - background: transparent url(default/bottom_right.gif) no-repeat 0 0; -} - -.dialog_sizer { - width: 9px; - height: 19px; - background: transparent url(default/sizer.gif) no-repeat 0 0; - cursor:se-resize; -} - -.dialog_close { - width: 14px; - height: 14px; - background: transparent url(default/close.gif) no-repeat 0 0; - position:absolute; - top:5px; - left:8px; - cursor:pointer; - z-index:2000; -} - -.dialog_minimize { - width: 14px; - height: 15px; - background: transparent url(default/minimize.gif) no-repeat 0 0; - position:absolute; - top:5px; - left:28px; - cursor:pointer; - z-index:2000; -} - -.dialog_maximize { - width: 14px; - height: 15px; - background: transparent url(default/maximize.gif) no-repeat 0 0; - position:absolute; - top:5px; - left:49px; - cursor:pointer; - z-index:2000; -} - -.dialog_title { - float:left; - height:14px; - font-family: Tahoma, Arial, sans-serif; - font-size:12px; - text-align:center; - width:100%; - color:#000; -} - -.dialog_content { - overflow:auto; - color: #DDD; - font-family: Tahoma, Arial, sans-serif; - font-size: 10px; - background-color:#123; -} - -.top_draggable, .bottom_draggable { - cursor:move; -} - -.status_bar { - font-size:12px; -} -.status_bar input{ - font-size:12px; -} - -.wired_frame { - display: block; - position: absolute; - border: 1px #000 dashed; -} - -/* DO NOT CHANGE THESE VALUES*/ -.dialog { - display: block; - position: absolute; -} - -.dialog table.table_window { - border-collapse: collapse; - border-spacing: 0; - width: 100%; - margin: 0px; - padding:0px; -} - -.dialog table.table_window td , .dialog table.table_window th { - padding: 0; -} - -.dialog .title_window { - -moz-user-select:none; -} - +.overlay_dialog { + background-color: #666666; + filter:alpha(opacity=60); + -moz-opacity: 0.6; + opacity: 0.6; +} + +.overlay___invisible__ { + background-color: #666666; + filter:alpha(opacity=0); + -moz-opacity: 0; + opacity: 0; +} + +.dialog_nw { + width: 9px; + height: 23px; + background: transparent url(default/top_left.gif) no-repeat 0 0; +} + +.dialog_n { + background: transparent url(default/top_mid.gif) repeat-x 0 0; + height: 23px; +} + +.dialog_ne { + width: 9px; + height: 23px; + background: transparent url(default/top_right.gif) no-repeat 0 0; +} + +.dialog_e { + width: 2px; + background: transparent url(default/center_right.gif) repeat-y 0 0; +} + +.dialog_w { + width: 2px; + background: transparent url(default/center_left.gif) repeat-y 0 0; +} + +.dialog_sw { + width: 9px; + height: 19px; + background: transparent url(default/bottom_left.gif) no-repeat 0 0; +} + +.dialog_s { + background: transparent url(default/bottom_mid.gif) repeat-x 0 0; + height: 19px; +} + +.dialog_se { + width: 9px; + height: 19px; + background: transparent url(default/bottom_right.gif) no-repeat 0 0; +} + +.dialog_sizer { + width: 9px; + height: 19px; + background: transparent url(default/sizer.gif) no-repeat 0 0; + cursor:se-resize; +} + +.dialog_close { + width: 14px; + height: 14px; + background: transparent url(default/close.gif) no-repeat 0 0; + position:absolute; + top:5px; + left:8px; + cursor:pointer; + z-index:2000; +} + +.dialog_minimize { + width: 14px; + height: 15px; + background: transparent url(default/minimize.gif) no-repeat 0 0; + position:absolute; + top:5px; + left:28px; + cursor:pointer; + z-index:2000; +} + +.dialog_maximize { + width: 14px; + height: 15px; + background: transparent url(default/maximize.gif) no-repeat 0 0; + position:absolute; + top:5px; + left:49px; + cursor:pointer; + z-index:2000; +} + +.dialog_title { + float:left; + height:14px; + font-family: Tahoma, Arial, sans-serif; + font-size:12px; + text-align:center; + width:100%; + color:#000; +} + +.dialog_content { + overflow:auto; + color: #DDD; + font-family: Tahoma, Arial, sans-serif; + font-size: 10px; + background-color:#123; +} + +.top_draggable, .bottom_draggable { + cursor:move; +} + +.status_bar { + font-size:12px; +} +.status_bar input{ + font-size:12px; +} + +.wired_frame { + display: block; + position: absolute; + border: 1px #000 dashed; +} + +/* DO NOT CHANGE THESE VALUES*/ +.dialog { + display: block; + position: absolute; +} + +.dialog table.table_window { + border-collapse: collapse; + border-spacing: 0; + width: 100%; + margin: 0px; + padding:0px; +} + +.dialog table.table_window td , .dialog table.table_window th { + padding: 0; +} + +.dialog .title_window { + -moz-user-select:none; +} + diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/iefix/iepngfix.css b/public/plugin_assets/redmine_code_review/stylesheets/window_js/iefix/iepngfix.css index 257a1b1e3..249388be5 100644 --- a/public/plugin_assets/redmine_code_review/stylesheets/window_js/iefix/iepngfix.css +++ b/public/plugin_assets/redmine_code_review/stylesheets/window_js/iefix/iepngfix.css @@ -1,3 +1,3 @@ -/* PNG fix for all themes that uses PNG images on IE */ -td, div { behavior: url(../themes/iefix/iepngfix.htc) } - +/* PNG fix for all themes that uses PNG images on IE */ +td, div { behavior: url(../themes/iefix/iepngfix.htc) } + diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/iefix/iepngfix.htc b/public/plugin_assets/redmine_code_review/stylesheets/window_js/iefix/iepngfix.htc index a6c683b9f..9a13f32bf 100644 --- a/public/plugin_assets/redmine_code_review/stylesheets/window_js/iefix/iepngfix.htc +++ b/public/plugin_assets/redmine_code_review/stylesheets/window_js/iefix/iepngfix.htc @@ -1,54 +1,54 @@ - - - - + + + + \ No newline at end of file diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting.css b/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting.css index 95ec287a9..0d955c3d7 100644 --- a/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting.css +++ b/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting.css @@ -1,960 +1,960 @@ -.overlay___invisible__ { - background-color: #666; - filter:alpha(opacity=0); - -moz-opacity: 0; - opacity: 0; -} - -.top_draggable, .bottom_draggable { - cursor:move; -} - -.status_bar { - font-size:12px; -} -.status_bar input{ - font-size:12px; -} - -.wired_frame { - display:block; - position:absolute; - border:1px #000 dashed; -} - - - -.overlay_bluelighting { - background-color:#FFF; - filter:alpha(opacity=60); - -moz-opacity:0.6; - opacity:0.6; -} - -.bluelighting_wired_frame { - background:#FFF; - filter:alpha(opacity=60); - -moz-opacity:0.6; - opacity:0.6; -} - -.bluelighting_nw { - background:transparent url(lighting/top-left-blue.png) no-repeat 0 0; - width:9px; - height:28px; -} - -.bluelighting_n { - background:transparent url(lighting/top-middle-blue.png) repeat-x 0 0; - height:28px; -} - -.bluelighting_ne { - background:transparent url(lighting/top-right-blue.png) no-repeat 0 0; - width:15px; - height:28px; -} - -.bluelighting_w { - background:transparent url(lighting/left-blue.png) repeat-y top left; - width:9px; -} - -.bluelighting_e { - background:transparent url(lighting/right-blue.png) repeat-y top right; - width:15px; -} - -.bluelighting_sw { - background:transparent url(lighting/bottom-left-blue.png) no-repeat 0 0; - width:9px; - height:15px; -} - -.bluelighting_s { - background:transparent url(lighting/bottom-middle-blue.png) repeat-x 0 0; - height:15px; -} - -.bluelighting_se, .bluelighting_sizer { - background:transparent url(lighting/bottom-right-blue.png) no-repeat 0 0; - width:15px; - height:15px; -} - -.bluelighting_sizer { - cursor:se-resize; -} - -.bluelighting_close { - width:15px; - height:9px; - background:transparent url(lighting/button-close-blue.png) no-repeat 0 0; - position:absolute; - top:11px; - right:10px; - cursor:pointer; - z-index:1000; -} - -.bluelighting_maximize { - width:15px; - height:9px; - background:transparent url(lighting/button-maximize-blue.png) no-repeat 0 0; - position:absolute; - top:11px; - right:25px; - cursor:pointer; - z-index:1000; -} - -.bluelighting_minimize { - width:15px; - height:9px; - background:transparent url(lighting/button-minimize-blue.png) no-repeat 0 0; - position:absolute; - top:11px; - right:40px; - cursor:pointer; - z-index:1000; -} - -.bluelighting_title { - float:left; - height:14px; - font-size:14px; - font-weight:bold; - font-family:Verdana, Arial, sans-serif; - text-align:center; - margin-top:2px; - width:100%; - color:#17385B; -} - -.bluelighting_content { - overflow:auto; - color:#000; - font-family:Verdana, Arial, sans-serif; - font-size:12px; - background:#BFDBFF; -} - -/* For alert/confirm dialog */ -.bluelighting_window { - border:1px solid #F00; - background:#FFF; - padding:20px; - margin-left:auto; - margin-right:auto; - width:400px; -} - -.bluelighting_message { - font-size:12px; - text-align:center; - width:100%; - padding-bottom:10px; -} - -.bluelighting_buttons { - text-align:center; - width:100%; -} - -.bluelighting_buttons input { - border:1px solid #999; - border-top-color:#CCC; - border-left-color:#CCC; - padding:2px; - background-color:#FFF; - color:#333; - background-image:url(lighting/background_buttons.gif); - background-repeat:repeat-x; - font-family:Verdana, Arial, sans-serif; - font-size:10px; - font-weight:bold; - text-align:center; -} - -.bluelighting_progress { - float:left; - margin:auto; - text-align:center; - width:100%; - height:16px; - background:transparent url('lighting/spinner.gif') no-repeat center center -} - -/* FOR IE */ -* html .bluelighting_nw { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-left-blue.png", sizingMethod="crop"); -} - -* html .bluelighting_n { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-middle-blue.png", sizingMethod="scale"); -} - -* html .bluelighting_ne { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-right-blue.png", sizingMethod="crop"); -} - -* html .bluelighting_w { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/left-blue.png", sizingMethod="scale"); -} - -* html .bluelighting_e { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/right-blue.png", sizingMethod="scale"); -} - -* html .bluelighting_sw { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-left-blue.png", sizingMethod="crop"); -} - -* html .bluelighting_s { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-middle-blue.png", sizingMethod="scale"); -} - -* html .bluelighting_se, * html .bluelighting_sizer { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-right-blue.png", sizingMethod="crop"); -} - -* html .bluelighting_close { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-close-blue.png", sizingMethod="crop"); -} - -* html .bluelighting_minimize { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-minimize-blue.png", sizingMethod="crop"); -} - -* html .bluelighting_maximize { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-maximize-blue.png", sizingMethod="crop"); -} - -* html .bluelighting_content { - background:#B8D7FF; -} - - - -.overlay_greylighting { - background-color:#FFF; - filter:alpha(opacity=60); - -moz-opacity:0.6; - opacity:0.6; -} - -.greylighting_wired_frame { - background:#FFF; - filter:alpha(opacity=60); - -moz-opacity:0.6; - opacity:0.6; -} - -.greylighting_nw { - background:transparent url(lighting/top-left-grey.png) no-repeat 0 0; - width:9px; - height:28px; -} - -.greylighting_n { - background:transparent url(lighting/top-middle-grey.png) repeat-x 0 0; - height:28px; -} - -.greylighting_ne { - background:transparent url(lighting/top-right-grey.png) no-repeat 0 0; - width:15px; - height:28px; -} - -.greylighting_w { - background:transparent url(lighting/left-grey.png) repeat-y top left; - width:9px; -} - -.greylighting_e { - background:transparent url(lighting/right-grey.png) repeat-y top right; - width:15px; -} - -.greylighting_sw { - background:transparent url(lighting/bottom-left-grey.png) no-repeat 0 0; - width:9px; - height:15px; -} - -.greylighting_s { - background:transparent url(lighting/bottom-middle-grey.png) repeat-x 0 0; - height:15px; -} - -.greylighting_se, .greylighting_sizer { - background:transparent url(lighting/bottom-right-grey.png) no-repeat 0 0; - width:15px; - height:15px; -} - -.greylighting_sizer { - cursor:se-resize; -} - -.greylighting_close { - width:15px; - height:9px; - background:transparent url(lighting/button-close-grey.png) no-repeat 0 0; - position:absolute; - top:11px; - right:10px; - cursor:pointer; - z-index:1000; -} - -.greylighting_maximize { - width:15px; - height:9px; - background:transparent url(lighting/button-maximize-grey.png) no-repeat 0 0; - position:absolute; - top:11px; - right:25px; - cursor:pointer; - z-index:1000; -} - -.greylighting_minimize { - width:15px; - height:9px; - background:transparent url(lighting/button-minimize-grey.png) no-repeat 0 0; - position:absolute; - top:11px; - right:40px; - cursor:pointer; - z-index:1000; -} - -.greylighting_title { - float:left; - height:14px; - font-size:14px; - font-weight:bold; - font-family:Verdana, Arial, sans-serif; - text-align:center; - margin-top:2px; - width:100%; - color:#525252; -} - -.greylighting_content { - overflow:auto; - color:#000; - font-family:Verdana, Arial, sans-serif; - font-size:12px; - background:#CDCDCD; -} - -/* For alert/confirm dialog */ -.greylighting_window { - border:1px solid #F00; - background:#FFF; - padding:20px; - margin-left:auto; - margin-right:auto; - width:400px; -} - -.greylighting_message { - font-size:12px; - text-align:center; - width:100%; - padding-bottom:10px; -} - -.greylighting_buttons { - text-align:center; - width:100%; -} - -.greylighting_buttons input { - border:1px solid #999; - border-top-color:#CCC; - border-left-color:#CCC; - padding:2px; - background-color:#FFF; - color:#333; - background-image:url(lighting/background_buttons.gif); - background-repeat:repeat-x; - font-family:Verdana, Arial, sans-serif; - font-size:10px; - font-weight:bold; - text-align:center; -} - -.greylighting_progress { - float:left; - margin:auto; - text-align:center; - width:100%; - height:16px; - background:transparent url('lighting/spinner.gif') no-repeat center center -} - -/* FOR IE */ -* html .greylighting_nw { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-left-grey.png", sizingMethod="crop"); -} - -* html .greylighting_n { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-middle-grey.png", sizingMethod="scale"); -} - -* html .greylighting_ne { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-right-grey.png", sizingMethod="crop"); -} - -* html .greylighting_w { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/left-grey.png", sizingMethod="scale"); -} - -* html .greylighting_e { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/right-grey.png", sizingMethod="scale"); -} - -* html .greylighting_sw { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-left-grey.png", sizingMethod="crop"); -} - -* html .greylighting_s { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-middle-grey.png", sizingMethod="scale"); -} - -* html greylighting_se, * html .greylighting_sizer { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-right-grey.png", sizingMethod="crop"); -} - -* html .greylighting_close { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-close-grey.png", sizingMethod="crop"); -} - -* html .greylighting_minimize { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-minimize-grey.png", sizingMethod="crop"); -} - -* html .greylighting_maximize { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-maximize-grey.png", sizingMethod="crop"); -} - -* html .greylighting_content { - background:#C7C7C7; -} - - - -.overlay_greenlighting { - background-color:#FFF; - filter:alpha(opacity=60); - -moz-opacity:0.6; - opacity:0.6; -} - -.greenlighting_wired_frame { - background:#FFF; - filter:alpha(opacity=60); - -moz-opacity:0.6; - opacity:0.6; -} - -.greenlighting_nw { - background:transparent url(lighting/top-left-green.png) no-repeat 0 0; - width:9px; - height:28px; -} - -.greenlighting_n { - background:transparent url(lighting/top-middle-green.png) repeat-x 0 0; - height:28px; -} - -.greenlighting_ne { - background:transparent url(lighting/top-right-green.png) no-repeat 0 0; - width:15px; - height:28px; -} - -.greenlighting_w { - background:transparent url(lighting/left-green.png) repeat-y top left; - width:9px; -} - -.greenlighting_e { - background:transparent url(lighting/right-green.png) repeat-y top right; - width:15px; -} - -.greenlighting_sw { - background:transparent url(lighting/bottom-left-green.png) no-repeat 0 0; - width:9px; - height:15px; -} - -.greenlighting_s { - background:transparent url(lighting/bottom-middle-green.png) repeat-x 0 0; - height:15px; -} - -.greenlighting_se, .greenlighting_sizer { - background:transparent url(lighting/bottom-right-green.png) no-repeat 0 0; - width:15px; - height:15px; -} - -.greenlighting_sizer { - cursor:se-resize; -} - -.greenlighting_close { - width:15px; - height:9px; - background:transparent url(lighting/button-close-green.png) no-repeat 0 0; - position:absolute; - top:11px; - right:10px; - cursor:pointer; - z-index:1000; -} - -.greenlighting_maximize { - width:15px; - height:9px; - background:transparent url(lighting/button-maximize-green.png) no-repeat 0 0; - position:absolute; - top:11px; - right:25px; - cursor:pointer; - z-index:1000; -} - -.greenlighting_minimize { - width:15px; - height:9px; - background:transparent url(lighting/button-minimize-green.png) no-repeat 0 0; - position:absolute; - top:11px; - right:40px; - cursor:pointer; - z-index:1000; -} - -.greenlighting_title { - float:left; - height:14px; - font-size:14px; - font-weight:bold; - font-family:Verdana, Arial, sans-serif; - text-align:center; - margin-top:2px; - width:100%; - color:#2A6002; -} - -.greenlighting_content { - overflow:auto; - color:#000; - font-family:Verdana, Arial, sans-serif; - font-size:12px; - background:#ACFCAF; -} - -/* For alert/confirm dialog */ -.greenlighting_window { - border:1px solid #F00; - background:#FFF; - padding:20px; - margin-left:auto; - margin-right:auto; - width:400px; -} - -.greenlighting_message { - font-size:12px; - text-align:center; - width:100%; - padding-bottom:10px; -} - -.greenlighting_buttons { - text-align:center; - width:100%; -} - -.greenlighting_buttons input { - border:1px solid #999; - border-top-color:#CCC; - border-left-color:#CCC; - padding:2px; - background-color:#FFF; - color:#333; - background-image:url(lighting/background_buttons.gif); - background-repeat:repeat-x; - font-family:Verdana, Arial, sans-serif; - font-size:10px; - font-weight:bold; - text-align:center; -} - -.greenlighting_progress { - float:left; - margin:auto; - text-align:center; - width:100%; - height:16px; - background:transparent url('lighting/spinner.gif') no-repeat center center -} - -/* FOR IE */ -* html .greenlighting_nw { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-left-green.png", sizingMethod="crop"); -} - -* html .greenlighting_n { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-middle-green.png", sizingMethod="scale"); -} - -* html .greenlighting_ne { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-right-green.png", sizingMethod="crop"); -} - -* html .greenlighting_w { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/left-green.png", sizingMethod="scale"); -} - -* html .greenlighting_e { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/right-green.png", sizingMethod="scale"); -} - -* html .greenlighting_sw { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-left-green.png", sizingMethod="crop"); -} - -* html .greenlighting_s { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-middle-green.png", sizingMethod="scale"); -} - -* html greenlighting_se, * html .greenlighting_sizer { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-right-green.png", sizingMethod="crop"); -} - -* html .greenlighting_close { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-close-green.png", sizingMethod="crop"); -} - -* html .greenlighting_minimize { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-minimize-green.png", sizingMethod="crop"); -} - -* html .greenlighting_maximize { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-maximize-green.png", sizingMethod="crop"); -} - -* html .greenlighting_content { - background:#A4FCA7; -} - - - -.overlay_darkbluelighting { - background-color:#FFF; - filter:alpha(opacity=60); - -moz-opacity:0.6; - opacity:0.6; -} - -.darkbluelighting_wired_frame { - background:#FFF; - filter:alpha(opacity=60); - -moz-opacity:0.6; - opacity:0.6; -} - -.darkbluelighting_nw { - background:transparent url(lighting/top-left-darkblue.png) no-repeat 0 0; - width:9px; - height:28px; -} - -.darkbluelighting_n { - background:transparent url(lighting/top-middle-darkblue.png) repeat-x 0 0; - height:28px; -} - -.darkbluelighting_ne { - background:transparent url(lighting/top-right-darkblue.png) no-repeat 0 0; - width:15px; - height:28px; -} - -.darkbluelighting_w { - background:transparent url(lighting/left-darkblue.png) repeat-y top left; - width:9px; -} - -.darkbluelighting_e { - background:transparent url(lighting/right-darkblue.png) repeat-y top right; - width:15px; -} - -.darkbluelighting_sw { - background:transparent url(lighting/bottom-left-darkblue.png) no-repeat 0 0; - width:9px; - height:15px; -} - -.darkbluelighting_s { - background:transparent url(lighting/bottom-middle-darkblue.png) repeat-x 0 0; - height:15px; -} - -.darkbluelighting_se, .darkbluelighting_sizer { - background:transparent url(lighting/bottom-right-darkblue.png) no-repeat 0 0; - width:15px; - height:15px; -} - -.darkbluelighting_sizer { - cursor:se-resize; -} - -.darkbluelighting_close { - width:15px; - height:9px; - background:transparent url(lighting/button-close-darkblue.png) no-repeat 0 0; - position:absolute; - top:11px; - right:10px; - cursor:pointer; - z-index:1000; -} - -.darkbluelighting_maximize { - width:15px; - height:9px; - background:transparent url(lighting/button-maximize-darkblue.png) no-repeat 0 0; - position:absolute; - top:11px; - right:25px; - cursor:pointer; - z-index:1000; -} - -.darkbluelighting_minimize { - width:15px; - height:9px; - background:transparent url(lighting/button-minimize-darkblue.png) no-repeat 0 0; - position:absolute; - top:11px; - right:40px; - cursor:pointer; - z-index:1000; -} - -.darkbluelighting_title { - float:left; - height:14px; - font-size:14px; - font-weight:bold; - font-family:Verdana, Arial, sans-serif; - text-align:center; - margin-top:2px; - width:100%; - color:#E4EFFD; -} - -.darkbluelighting_content { - overflow:auto; - color:#FFF; - font-family:Verdana, Arial, sans-serif; - font-size:12px; - background:#0413C0; -} - -/* For alert/confirm dialog */ -.darkbluelighting_window { - border:1px solid #F00; - background:#FFF; - padding:20px; - margin-left:auto; - margin-right:auto; - width:400px; -} - -.darkbluelighting_message { - font-size:12px; - text-align:center; - width:100%; - padding-bottom:10px; -} - -.darkbluelighting_buttons { - text-align:center; - width:100%; -} - -.darkbluelighting_buttons input { - border:1px solid #999; - border-top-color:#CCC; - border-left-color:#CCC; - padding:2px; - background-color:#FFF; - color:#333; - background-image:url(lighting/background_buttons.gif); - background-repeat:repeat-x; - font-family:Verdana, Arial, sans-serif; - font-size:10px; - font-weight:bold; - text-align:center; -} - -.darkbluelighting_progress { - float:left; - margin:auto; - text-align:center; - width:100%; - height:16px; - background:transparent url('lighting/spinner.gif') no-repeat center center -} - -/* FOR IE */ -* html .darkbluelighting_nw { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-left-darkblue.png", sizingMethod="crop"); -} - -* html .darkbluelighting_n { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-middle-darkblue.png", sizingMethod="scale"); -} - -* html .darkbluelighting_ne { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-right-darkblue.png", sizingMethod="crop"); -} - -* html .darkbluelighting_w { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/left-darkblue.png", sizingMethod="scale"); -} - -* html .darkbluelighting_e { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/right-darkblue.png", sizingMethod="scale"); -} - -* html .darkbluelighting_sw { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-left-darkblue.png", sizingMethod="crop"); -} - -* html .darkbluelighting_s { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-middle-darkblue.png", sizingMethod="scale"); -} - -* html darkbluelighting_se, * html .darkbluelighting_sizer { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-right-darkblue.png", sizingMethod="crop"); -} - -* html .darkbluelighting_close { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-close-darkblue.png", sizingMethod="crop"); -} - -* html .darkbluelighting_minimize { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-minimize-darkblue.png", sizingMethod="crop"); -} - -* html .darkbluelighting_maximize { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-maximize-darkblue.png", sizingMethod="crop"); -} - -* html .darkbluelighting_content { - background:#020EBA; -} - +.overlay___invisible__ { + background-color: #666; + filter:alpha(opacity=0); + -moz-opacity: 0; + opacity: 0; +} + +.top_draggable, .bottom_draggable { + cursor:move; +} + +.status_bar { + font-size:12px; +} +.status_bar input{ + font-size:12px; +} + +.wired_frame { + display:block; + position:absolute; + border:1px #000 dashed; +} + + + +.overlay_bluelighting { + background-color:#FFF; + filter:alpha(opacity=60); + -moz-opacity:0.6; + opacity:0.6; +} + +.bluelighting_wired_frame { + background:#FFF; + filter:alpha(opacity=60); + -moz-opacity:0.6; + opacity:0.6; +} + +.bluelighting_nw { + background:transparent url(lighting/top-left-blue.png) no-repeat 0 0; + width:9px; + height:28px; +} + +.bluelighting_n { + background:transparent url(lighting/top-middle-blue.png) repeat-x 0 0; + height:28px; +} + +.bluelighting_ne { + background:transparent url(lighting/top-right-blue.png) no-repeat 0 0; + width:15px; + height:28px; +} + +.bluelighting_w { + background:transparent url(lighting/left-blue.png) repeat-y top left; + width:9px; +} + +.bluelighting_e { + background:transparent url(lighting/right-blue.png) repeat-y top right; + width:15px; +} + +.bluelighting_sw { + background:transparent url(lighting/bottom-left-blue.png) no-repeat 0 0; + width:9px; + height:15px; +} + +.bluelighting_s { + background:transparent url(lighting/bottom-middle-blue.png) repeat-x 0 0; + height:15px; +} + +.bluelighting_se, .bluelighting_sizer { + background:transparent url(lighting/bottom-right-blue.png) no-repeat 0 0; + width:15px; + height:15px; +} + +.bluelighting_sizer { + cursor:se-resize; +} + +.bluelighting_close { + width:15px; + height:9px; + background:transparent url(lighting/button-close-blue.png) no-repeat 0 0; + position:absolute; + top:11px; + right:10px; + cursor:pointer; + z-index:1000; +} + +.bluelighting_maximize { + width:15px; + height:9px; + background:transparent url(lighting/button-maximize-blue.png) no-repeat 0 0; + position:absolute; + top:11px; + right:25px; + cursor:pointer; + z-index:1000; +} + +.bluelighting_minimize { + width:15px; + height:9px; + background:transparent url(lighting/button-minimize-blue.png) no-repeat 0 0; + position:absolute; + top:11px; + right:40px; + cursor:pointer; + z-index:1000; +} + +.bluelighting_title { + float:left; + height:14px; + font-size:14px; + font-weight:bold; + font-family:Verdana, Arial, sans-serif; + text-align:center; + margin-top:2px; + width:100%; + color:#17385B; +} + +.bluelighting_content { + overflow:auto; + color:#000; + font-family:Verdana, Arial, sans-serif; + font-size:12px; + background:#BFDBFF; +} + +/* For alert/confirm dialog */ +.bluelighting_window { + border:1px solid #F00; + background:#FFF; + padding:20px; + margin-left:auto; + margin-right:auto; + width:400px; +} + +.bluelighting_message { + font-size:12px; + text-align:center; + width:100%; + padding-bottom:10px; +} + +.bluelighting_buttons { + text-align:center; + width:100%; +} + +.bluelighting_buttons input { + border:1px solid #999; + border-top-color:#CCC; + border-left-color:#CCC; + padding:2px; + background-color:#FFF; + color:#333; + background-image:url(lighting/background_buttons.gif); + background-repeat:repeat-x; + font-family:Verdana, Arial, sans-serif; + font-size:10px; + font-weight:bold; + text-align:center; +} + +.bluelighting_progress { + float:left; + margin:auto; + text-align:center; + width:100%; + height:16px; + background:transparent url('lighting/spinner.gif') no-repeat center center +} + +/* FOR IE */ +* html .bluelighting_nw { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-left-blue.png", sizingMethod="crop"); +} + +* html .bluelighting_n { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-middle-blue.png", sizingMethod="scale"); +} + +* html .bluelighting_ne { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-right-blue.png", sizingMethod="crop"); +} + +* html .bluelighting_w { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/left-blue.png", sizingMethod="scale"); +} + +* html .bluelighting_e { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/right-blue.png", sizingMethod="scale"); +} + +* html .bluelighting_sw { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-left-blue.png", sizingMethod="crop"); +} + +* html .bluelighting_s { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-middle-blue.png", sizingMethod="scale"); +} + +* html .bluelighting_se, * html .bluelighting_sizer { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-right-blue.png", sizingMethod="crop"); +} + +* html .bluelighting_close { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-close-blue.png", sizingMethod="crop"); +} + +* html .bluelighting_minimize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-minimize-blue.png", sizingMethod="crop"); +} + +* html .bluelighting_maximize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-maximize-blue.png", sizingMethod="crop"); +} + +* html .bluelighting_content { + background:#B8D7FF; +} + + + +.overlay_greylighting { + background-color:#FFF; + filter:alpha(opacity=60); + -moz-opacity:0.6; + opacity:0.6; +} + +.greylighting_wired_frame { + background:#FFF; + filter:alpha(opacity=60); + -moz-opacity:0.6; + opacity:0.6; +} + +.greylighting_nw { + background:transparent url(lighting/top-left-grey.png) no-repeat 0 0; + width:9px; + height:28px; +} + +.greylighting_n { + background:transparent url(lighting/top-middle-grey.png) repeat-x 0 0; + height:28px; +} + +.greylighting_ne { + background:transparent url(lighting/top-right-grey.png) no-repeat 0 0; + width:15px; + height:28px; +} + +.greylighting_w { + background:transparent url(lighting/left-grey.png) repeat-y top left; + width:9px; +} + +.greylighting_e { + background:transparent url(lighting/right-grey.png) repeat-y top right; + width:15px; +} + +.greylighting_sw { + background:transparent url(lighting/bottom-left-grey.png) no-repeat 0 0; + width:9px; + height:15px; +} + +.greylighting_s { + background:transparent url(lighting/bottom-middle-grey.png) repeat-x 0 0; + height:15px; +} + +.greylighting_se, .greylighting_sizer { + background:transparent url(lighting/bottom-right-grey.png) no-repeat 0 0; + width:15px; + height:15px; +} + +.greylighting_sizer { + cursor:se-resize; +} + +.greylighting_close { + width:15px; + height:9px; + background:transparent url(lighting/button-close-grey.png) no-repeat 0 0; + position:absolute; + top:11px; + right:10px; + cursor:pointer; + z-index:1000; +} + +.greylighting_maximize { + width:15px; + height:9px; + background:transparent url(lighting/button-maximize-grey.png) no-repeat 0 0; + position:absolute; + top:11px; + right:25px; + cursor:pointer; + z-index:1000; +} + +.greylighting_minimize { + width:15px; + height:9px; + background:transparent url(lighting/button-minimize-grey.png) no-repeat 0 0; + position:absolute; + top:11px; + right:40px; + cursor:pointer; + z-index:1000; +} + +.greylighting_title { + float:left; + height:14px; + font-size:14px; + font-weight:bold; + font-family:Verdana, Arial, sans-serif; + text-align:center; + margin-top:2px; + width:100%; + color:#525252; +} + +.greylighting_content { + overflow:auto; + color:#000; + font-family:Verdana, Arial, sans-serif; + font-size:12px; + background:#CDCDCD; +} + +/* For alert/confirm dialog */ +.greylighting_window { + border:1px solid #F00; + background:#FFF; + padding:20px; + margin-left:auto; + margin-right:auto; + width:400px; +} + +.greylighting_message { + font-size:12px; + text-align:center; + width:100%; + padding-bottom:10px; +} + +.greylighting_buttons { + text-align:center; + width:100%; +} + +.greylighting_buttons input { + border:1px solid #999; + border-top-color:#CCC; + border-left-color:#CCC; + padding:2px; + background-color:#FFF; + color:#333; + background-image:url(lighting/background_buttons.gif); + background-repeat:repeat-x; + font-family:Verdana, Arial, sans-serif; + font-size:10px; + font-weight:bold; + text-align:center; +} + +.greylighting_progress { + float:left; + margin:auto; + text-align:center; + width:100%; + height:16px; + background:transparent url('lighting/spinner.gif') no-repeat center center +} + +/* FOR IE */ +* html .greylighting_nw { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-left-grey.png", sizingMethod="crop"); +} + +* html .greylighting_n { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-middle-grey.png", sizingMethod="scale"); +} + +* html .greylighting_ne { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-right-grey.png", sizingMethod="crop"); +} + +* html .greylighting_w { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/left-grey.png", sizingMethod="scale"); +} + +* html .greylighting_e { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/right-grey.png", sizingMethod="scale"); +} + +* html .greylighting_sw { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-left-grey.png", sizingMethod="crop"); +} + +* html .greylighting_s { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-middle-grey.png", sizingMethod="scale"); +} + +* html greylighting_se, * html .greylighting_sizer { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-right-grey.png", sizingMethod="crop"); +} + +* html .greylighting_close { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-close-grey.png", sizingMethod="crop"); +} + +* html .greylighting_minimize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-minimize-grey.png", sizingMethod="crop"); +} + +* html .greylighting_maximize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-maximize-grey.png", sizingMethod="crop"); +} + +* html .greylighting_content { + background:#C7C7C7; +} + + + +.overlay_greenlighting { + background-color:#FFF; + filter:alpha(opacity=60); + -moz-opacity:0.6; + opacity:0.6; +} + +.greenlighting_wired_frame { + background:#FFF; + filter:alpha(opacity=60); + -moz-opacity:0.6; + opacity:0.6; +} + +.greenlighting_nw { + background:transparent url(lighting/top-left-green.png) no-repeat 0 0; + width:9px; + height:28px; +} + +.greenlighting_n { + background:transparent url(lighting/top-middle-green.png) repeat-x 0 0; + height:28px; +} + +.greenlighting_ne { + background:transparent url(lighting/top-right-green.png) no-repeat 0 0; + width:15px; + height:28px; +} + +.greenlighting_w { + background:transparent url(lighting/left-green.png) repeat-y top left; + width:9px; +} + +.greenlighting_e { + background:transparent url(lighting/right-green.png) repeat-y top right; + width:15px; +} + +.greenlighting_sw { + background:transparent url(lighting/bottom-left-green.png) no-repeat 0 0; + width:9px; + height:15px; +} + +.greenlighting_s { + background:transparent url(lighting/bottom-middle-green.png) repeat-x 0 0; + height:15px; +} + +.greenlighting_se, .greenlighting_sizer { + background:transparent url(lighting/bottom-right-green.png) no-repeat 0 0; + width:15px; + height:15px; +} + +.greenlighting_sizer { + cursor:se-resize; +} + +.greenlighting_close { + width:15px; + height:9px; + background:transparent url(lighting/button-close-green.png) no-repeat 0 0; + position:absolute; + top:11px; + right:10px; + cursor:pointer; + z-index:1000; +} + +.greenlighting_maximize { + width:15px; + height:9px; + background:transparent url(lighting/button-maximize-green.png) no-repeat 0 0; + position:absolute; + top:11px; + right:25px; + cursor:pointer; + z-index:1000; +} + +.greenlighting_minimize { + width:15px; + height:9px; + background:transparent url(lighting/button-minimize-green.png) no-repeat 0 0; + position:absolute; + top:11px; + right:40px; + cursor:pointer; + z-index:1000; +} + +.greenlighting_title { + float:left; + height:14px; + font-size:14px; + font-weight:bold; + font-family:Verdana, Arial, sans-serif; + text-align:center; + margin-top:2px; + width:100%; + color:#2A6002; +} + +.greenlighting_content { + overflow:auto; + color:#000; + font-family:Verdana, Arial, sans-serif; + font-size:12px; + background:#ACFCAF; +} + +/* For alert/confirm dialog */ +.greenlighting_window { + border:1px solid #F00; + background:#FFF; + padding:20px; + margin-left:auto; + margin-right:auto; + width:400px; +} + +.greenlighting_message { + font-size:12px; + text-align:center; + width:100%; + padding-bottom:10px; +} + +.greenlighting_buttons { + text-align:center; + width:100%; +} + +.greenlighting_buttons input { + border:1px solid #999; + border-top-color:#CCC; + border-left-color:#CCC; + padding:2px; + background-color:#FFF; + color:#333; + background-image:url(lighting/background_buttons.gif); + background-repeat:repeat-x; + font-family:Verdana, Arial, sans-serif; + font-size:10px; + font-weight:bold; + text-align:center; +} + +.greenlighting_progress { + float:left; + margin:auto; + text-align:center; + width:100%; + height:16px; + background:transparent url('lighting/spinner.gif') no-repeat center center +} + +/* FOR IE */ +* html .greenlighting_nw { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-left-green.png", sizingMethod="crop"); +} + +* html .greenlighting_n { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-middle-green.png", sizingMethod="scale"); +} + +* html .greenlighting_ne { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-right-green.png", sizingMethod="crop"); +} + +* html .greenlighting_w { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/left-green.png", sizingMethod="scale"); +} + +* html .greenlighting_e { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/right-green.png", sizingMethod="scale"); +} + +* html .greenlighting_sw { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-left-green.png", sizingMethod="crop"); +} + +* html .greenlighting_s { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-middle-green.png", sizingMethod="scale"); +} + +* html greenlighting_se, * html .greenlighting_sizer { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-right-green.png", sizingMethod="crop"); +} + +* html .greenlighting_close { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-close-green.png", sizingMethod="crop"); +} + +* html .greenlighting_minimize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-minimize-green.png", sizingMethod="crop"); +} + +* html .greenlighting_maximize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-maximize-green.png", sizingMethod="crop"); +} + +* html .greenlighting_content { + background:#A4FCA7; +} + + + +.overlay_darkbluelighting { + background-color:#FFF; + filter:alpha(opacity=60); + -moz-opacity:0.6; + opacity:0.6; +} + +.darkbluelighting_wired_frame { + background:#FFF; + filter:alpha(opacity=60); + -moz-opacity:0.6; + opacity:0.6; +} + +.darkbluelighting_nw { + background:transparent url(lighting/top-left-darkblue.png) no-repeat 0 0; + width:9px; + height:28px; +} + +.darkbluelighting_n { + background:transparent url(lighting/top-middle-darkblue.png) repeat-x 0 0; + height:28px; +} + +.darkbluelighting_ne { + background:transparent url(lighting/top-right-darkblue.png) no-repeat 0 0; + width:15px; + height:28px; +} + +.darkbluelighting_w { + background:transparent url(lighting/left-darkblue.png) repeat-y top left; + width:9px; +} + +.darkbluelighting_e { + background:transparent url(lighting/right-darkblue.png) repeat-y top right; + width:15px; +} + +.darkbluelighting_sw { + background:transparent url(lighting/bottom-left-darkblue.png) no-repeat 0 0; + width:9px; + height:15px; +} + +.darkbluelighting_s { + background:transparent url(lighting/bottom-middle-darkblue.png) repeat-x 0 0; + height:15px; +} + +.darkbluelighting_se, .darkbluelighting_sizer { + background:transparent url(lighting/bottom-right-darkblue.png) no-repeat 0 0; + width:15px; + height:15px; +} + +.darkbluelighting_sizer { + cursor:se-resize; +} + +.darkbluelighting_close { + width:15px; + height:9px; + background:transparent url(lighting/button-close-darkblue.png) no-repeat 0 0; + position:absolute; + top:11px; + right:10px; + cursor:pointer; + z-index:1000; +} + +.darkbluelighting_maximize { + width:15px; + height:9px; + background:transparent url(lighting/button-maximize-darkblue.png) no-repeat 0 0; + position:absolute; + top:11px; + right:25px; + cursor:pointer; + z-index:1000; +} + +.darkbluelighting_minimize { + width:15px; + height:9px; + background:transparent url(lighting/button-minimize-darkblue.png) no-repeat 0 0; + position:absolute; + top:11px; + right:40px; + cursor:pointer; + z-index:1000; +} + +.darkbluelighting_title { + float:left; + height:14px; + font-size:14px; + font-weight:bold; + font-family:Verdana, Arial, sans-serif; + text-align:center; + margin-top:2px; + width:100%; + color:#E4EFFD; +} + +.darkbluelighting_content { + overflow:auto; + color:#FFF; + font-family:Verdana, Arial, sans-serif; + font-size:12px; + background:#0413C0; +} + +/* For alert/confirm dialog */ +.darkbluelighting_window { + border:1px solid #F00; + background:#FFF; + padding:20px; + margin-left:auto; + margin-right:auto; + width:400px; +} + +.darkbluelighting_message { + font-size:12px; + text-align:center; + width:100%; + padding-bottom:10px; +} + +.darkbluelighting_buttons { + text-align:center; + width:100%; +} + +.darkbluelighting_buttons input { + border:1px solid #999; + border-top-color:#CCC; + border-left-color:#CCC; + padding:2px; + background-color:#FFF; + color:#333; + background-image:url(lighting/background_buttons.gif); + background-repeat:repeat-x; + font-family:Verdana, Arial, sans-serif; + font-size:10px; + font-weight:bold; + text-align:center; +} + +.darkbluelighting_progress { + float:left; + margin:auto; + text-align:center; + width:100%; + height:16px; + background:transparent url('lighting/spinner.gif') no-repeat center center +} + +/* FOR IE */ +* html .darkbluelighting_nw { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-left-darkblue.png", sizingMethod="crop"); +} + +* html .darkbluelighting_n { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-middle-darkblue.png", sizingMethod="scale"); +} + +* html .darkbluelighting_ne { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-right-darkblue.png", sizingMethod="crop"); +} + +* html .darkbluelighting_w { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/left-darkblue.png", sizingMethod="scale"); +} + +* html .darkbluelighting_e { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/right-darkblue.png", sizingMethod="scale"); +} + +* html .darkbluelighting_sw { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-left-darkblue.png", sizingMethod="crop"); +} + +* html .darkbluelighting_s { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-middle-darkblue.png", sizingMethod="scale"); +} + +* html darkbluelighting_se, * html .darkbluelighting_sizer { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-right-darkblue.png", sizingMethod="crop"); +} + +* html .darkbluelighting_close { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-close-darkblue.png", sizingMethod="crop"); +} + +* html .darkbluelighting_minimize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-minimize-darkblue.png", sizingMethod="crop"); +} + +* html .darkbluelighting_maximize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-maximize-darkblue.png", sizingMethod="crop"); +} + +* html .darkbluelighting_content { + background:#020EBA; +} + diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/pngbehavior.htc b/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/pngbehavior.htc index 36ea182e7..92248c665 100644 --- a/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/pngbehavior.htc +++ b/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/pngbehavior.htc @@ -1,67 +1,67 @@ - - - - \ No newline at end of file diff --git a/app/views/org_document_comments/show.html.erb b/app/views/org_document_comments/show.html.erb index c7adc39fb..dfa37bfb6 100644 --- a/app/views/org_document_comments/show.html.erb +++ b/app/views/org_document_comments/show.html.erb @@ -1,72 +1,75 @@ -<%= javascript_include_tag "/assets/kindeditor/kindeditor",'/assets/kindeditor/pasteimg',"create_kindeditor",'blog' %> - -
        -
        -
        - <%= link_to image_tag(url_to_avatar(User.find(@document.creator_id)), :width => 45, :heigth => 45), user_url_in_org(@document.creator_id) %> -
        -
        -
        - <%= link_to User.find(@document.creator_id), user_url_in_org(@document.creator_id), :class => "newsBlue mr15" %> - TO  <%= link_to @document.organization.name, organization_path(@document.organization), :class => "newsBlue" %> - | - <% if @document.organization.home_id == @document.id %> - 首页 - <% else %> - 组织文章 - <% end %> -
        -
        <%= link_to @document.title, org_document_comment_path(:id => @document.id, :organization_id => @document.organization.id) %>
        -
        - 发布时间:<%= format_activity_day(@document.created_at) %> <%= format_time(@document.created_at, false) %>
        - <% unless @document.content.blank? %> -
        - <%= @document.content.html_safe %> +<% if @organization.switch_type %> + <%= render :partial => 'show_custom_org_document_comment' %> +<% else %> + <%= javascript_include_tag "/assets/kindeditor/kindeditor",'/assets/kindeditor/pasteimg',"create_kindeditor",'blog' %> + +
        +
        +
        + <%= link_to image_tag(url_to_avatar(User.find(@document.creator_id)), :width => 45, :heigth => 45), user_url_in_org(@document.creator_id) %> +
        +
        +
        + <%= link_to User.find(@document.creator_id), user_url_in_org(@document.creator_id), :class => "newsBlue mr15" %> + TO  <%= link_to @document.organization.name, organization_path(@document.organization), :class => "newsBlue" %> + | + <% if @document.organization.home_id == @document.id %> + 首页 + <% else %> + 组织文章 + <% end %>
        - <% end %> -
        - <%= render :partial=>"attachments/activity_attach", :locals=>{:activity => @document} %> - <%#= link_to_attachments_course @document, :author => false %> -
        - - <% if User.current.admin? || User.current.admin_of_org?(Organization.find(@document.organization_id) || User.current.id == @document.creator_id) %> -
        -
          -
        • -
            -
          • - <%= form_for('new_form', :url => {:controller => 'organizations', :action => 'set_homepage', :id => @document.organization_id, :home_id => @document.id}, :method => "put", :remote => true) do |f| %> - 设为首页 - <% end %> -
          • -
          • - <%= link_to "编辑文章", edit_org_document_comment_path(:id => @document.id, :organization_id => @document.organization_id, :flag => 1), :class => "postOptionLink" %> -
          • -
          • - <%= link_to "删除文章", org_document_comment_path(:id => @document.id, :organization_id => @document.organization_id, :detail_page => 1), :method => 'delete', - :data => {:confirm => l(:text_are_you_sure)}, - :remote => true, :class => 'postOptionLink' %> + <% if User.current.admin? || User.current.admin_of_org?(Organization.find(@document.organization_id) || User.current.id == @document.creator_id) %> +
            +
              +
            • +
                +
              • + <%= form_for('new_form', :url => {:controller => 'organizations', :action => 'set_homepage', :id => @document.organization_id, :home_id => @document.id}, :method => "put", :remote => true) do |f| %> + 设为首页 + <% end %> +
              • +
              • + <%= link_to "编辑文章", edit_org_document_comment_path(:id => @document.id, :organization_id => @document.organization_id, :flag => 1), :class => "postOptionLink" %> +
              • +
              • + <%= link_to "删除文章", org_document_comment_path(:id => @document.id, :organization_id => @document.organization_id, :detail_page => 1), :method => 'delete', + :data => {:confirm => l(:text_are_you_sure)}, + :remote => true, :class => 'postOptionLink' %> +
              • +
            -
          • -
          -
        -
        - <% end %> -
        -
        - <% comments_for_doc = @document.children.reorder("created_at desc") %> - <% count = @document.children.count() %> +
        +
        + <% end %> +
        +
        + <% comments_for_doc = @document.children.reorder("created_at desc") %> + <% count = @document.children.count() %> -
        - <%# if count > 0 %> +
        + <%# if count > 0 %>
        回复 <%= count>0 ? "(#{count})" : "" %> @@ -123,50 +126,51 @@ <% end %>
        - <%# end %> - <%# if User.current.logged?%> + <%# end %> + <%# if User.current.logged?%>
        <%= form_for :org_comment, :url => {:action => 'add_reply_in_doc',:controller => 'org_document_comments', :id => @document.id}, :html => {:multipart => true, :id => 'message_form'} do |f| %> - <%= f.kindeditor :org_content,:width=>'99%',:height => '100px;',:editor_id=>'message_content_editor' %> + <%= f.kindeditor :org_content,:width=>'99%',:height => '100px;',:editor_id=>'message_content_editor' %> <%= link_to l(:button_cancel), "javascript:void(0)", :onclick => 'message_content_editor.html("");', :class => " grey_btn fr c_white mt10 mr5" %> <%= link_to l(:button_reply), "javascript:void(0)", :onclick => "message_content_editor.sync();$('#message_form').submit();", :class => "blue_btn fr c_white mt10 mb10", :style => "margin-right: 5px;" %> <% end %>
        - <%# end %> -
        -
        + <%# end %> +
        +
        - \ No newline at end of file + +<% end %> From 196c92f9c4c0c0c514010e566886a8a13421e4ea Mon Sep 17 00:00:00 2001 From: cxt Date: Tue, 7 Jun 2016 16:02:00 +0800 Subject: [PATCH 319/668] =?UTF-8?q?=E5=8A=A8=E6=80=81=E5=9B=9E=E5=A4=8D?= =?UTF-8?q?=E6=9C=80=E5=A4=9A=E5=8F=AA=E5=8A=A0=E8=B5=9E=E4=B8=89=E6=9D=A1?= =?UTF-8?q?=EF=BC=8C=E7=82=B9=E5=87=BB=E5=B1=95=E5=BC=80=E6=9B=B4=E5=A4=9A?= =?UTF-8?q?=E6=97=B6=E6=89=8D=E5=8A=A0=E8=BD=BD=E4=BD=99=E4=B8=8B=E7=9A=84?= =?UTF-8?q?=E5=9B=9E=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/users_controller.rb | 34 +++++++- app/models/blog_comment.rb | 12 +++ app/models/comment.rb | 12 +++ app/models/journal.rb | 12 +++ app/models/journals_for_message.rb | 12 +++ app/models/message.rb | 12 +++ app/models/org_document_comment.rb | 11 +++ app/views/courses/_course_activity.html.erb | 17 ---- app/views/news/_project_news_detail.html.erb | 17 ---- .../organizations/_org_activities.html.erb | 20 ++--- .../_org_subfield_message.html.erb | 37 +------- .../organizations/_org_subfield_news.html.erb | 37 +------- .../organizations/_show_org_document.html.erb | 51 +---------- .../projects/_project_activities.html.erb | 17 ---- app/views/projects/_project_news.html.erb | 37 +------- app/views/users/_all_replies.html.erb | 39 +++++++++ app/views/users/_comment_reply.html.erb | 21 +---- app/views/users/_course_homework.html.erb | 80 +----------------- .../users/_course_journalsformessage.html.erb | 39 +-------- app/views/users/_course_message.html.erb | 39 +-------- app/views/users/_course_news.html.erb | 37 +------- app/views/users/_homework_replies.html.erb | 78 +++++++++++++++++ app/views/users/_project_issue_reply.html.erb | 43 +--------- app/views/users/_project_message.html.erb | 37 +------- app/views/users/_project_news.html.erb | 37 +------- app/views/users/_user_activities.html.erb | 17 ---- app/views/users/_user_blog.html.erb | 37 +------- .../users/_user_homework_detail.html.erb | 84 +------------------ .../users/_user_journalsformessage.html.erb | 46 +--------- app/views/users/_user_jours_list.html.erb | 16 ---- app/views/users/all_journals.js.erb | 5 ++ config/routes.rb | 1 + public/javascripts/application.js | 81 ++++++++++++++---- 33 files changed, 347 insertions(+), 728 deletions(-) create mode 100644 app/views/users/_all_replies.html.erb create mode 100644 app/views/users/_homework_replies.html.erb create mode 100644 app/views/users/all_journals.js.erb diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 88a524d1e..cad57b49f 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -100,7 +100,7 @@ class UsersController < ApplicationController else @user_activity_id = -1 end - @is_in_course = params[:is_in_course] + @is_in_course = params[:is_in_course].to_i @course_activity = params[:course_activity].to_i end respond_to do |format| @@ -3236,6 +3236,38 @@ class UsersController < ApplicationController end end + def all_journals + if params[:type].present? + case params[:type] + when 'OrgDocumentComment' + obj = OrgDocumentComment.where('id = ?', params[:id].to_i).first + @journals = obj.children.reorder("created_at desc") + when 'Message' + obj = Message.where('id = ?', params[:id].to_i).first + @journals = obj.children.reorder("created_on desc") + when 'News' + obj = News.where('id = ?', params[:id].to_i).first + @journals = obj.comments.reorder("created_on desc") + when 'JournalsForMessage' + obj = JournalsForMessage.where('id = ?', params[:id].to_i).first + @journals = obj.children.reorder("created_on desc") + when 'Issue' + obj = Issue.where('id = ?', params[:id].to_i).first + @journals = obj.journals.reorder("created_on desc") + when 'BlogComment' + obj = BlogComment.where('id = ?', params[:id].to_i).first + @journals = obj.children.reorder("created_on desc") + when 'HomeworkCommon' + obj = HomeworkCommon.where('id = ?', params[:id].to_i).first + @journals = obj.journals_for_messages.reorder("created_on desc") + @is_in_course = params[:is_in_course].to_i if params[:is_in_course] + @course_activity = params[:course_activity].to_i if params[:course_activity] + @is_teacher = User.current.allowed_to?(:as_teacher,obj.course) + @user_activity_id = params[:user_activity_id].to_i if params[:user_activity_id] + end + end + end + private def find_user diff --git a/app/models/blog_comment.rb b/app/models/blog_comment.rb index 05ae02fe2..8959e9c29 100644 --- a/app/models/blog_comment.rb +++ b/app/models/blog_comment.rb @@ -76,6 +76,18 @@ class BlogComment < ActiveRecord::Base def project end + def creator_user + self.author + end + + def created_time + self.created_at + end + + def content_detail + self.content + end + #博客回复微信模板消息 # def blog_wechat_message # ws = WechatService.new diff --git a/app/models/comment.rb b/app/models/comment.rb index edb5e472f..80b52a8f4 100644 --- a/app/models/comment.rb +++ b/app/models/comment.rb @@ -104,4 +104,16 @@ class Comment < ActiveRecord::Base end end + def creator_user + self.author + end + + def created_time + self.created_on + end + + def content_detail + self.comments + end + end diff --git a/app/models/journal.rb b/app/models/journal.rb index bea273a41..0f88fcb7f 100644 --- a/app/models/journal.rb +++ b/app/models/journal.rb @@ -137,6 +137,18 @@ class Journal < ActiveRecord::Base end ## + def creator_user + self.user + end + + def created_time + self.created_on + end + + def content_detail + self.notes + end + private def split_private_notes diff --git a/app/models/journals_for_message.rb b/app/models/journals_for_message.rb index d8819515c..68cb9da15 100644 --- a/app/models/journals_for_message.rb +++ b/app/models/journals_for_message.rb @@ -329,4 +329,16 @@ class JournalsForMessage < ActiveRecord::Base down_course_score_num(self.jour.course_id, self.user_id, "HomeworkCommon") end end + + def creator_user + self.user + end + + def created_time + self.created_on + end + + def content_detail + self.notes + end end diff --git a/app/models/message.rb b/app/models/message.rb index 393fd3a60..14add0d02 100644 --- a/app/models/message.rb +++ b/app/models/message.rb @@ -221,6 +221,18 @@ class Message < ActiveRecord::Base update_org_activity(self.class, self.id) end + def creator_user + self.author + end + + def created_time + self.created_on + end + + def content_detail + self.content + end + private def add_author_as_watcher diff --git a/app/models/org_document_comment.rb b/app/models/org_document_comment.rb index dd070c825..dd7734a54 100644 --- a/app/models/org_document_comment.rb +++ b/app/models/org_document_comment.rb @@ -35,4 +35,15 @@ class OrgDocumentComment < ActiveRecord::Base end + def creator_user + self.creator + end + + def created_time + self.created_at + end + + def content_detail + self.content + end end diff --git a/app/views/courses/_course_activity.html.erb b/app/views/courses/_course_activity.html.erb index 763748ad7..16d151d83 100644 --- a/app/views/courses/_course_activity.html.erb +++ b/app/views/courses/_course_activity.html.erb @@ -52,23 +52,6 @@ <% course_activities.includes(:course_act).each do |activity| if course_activities %> - <% replies_all_i=replies_all_i+1 %> -
      • -
        - <%= link_to image_tag(url_to_avatar(reply.author), :width => "33", :height => "33"), user_url_in_org(reply.author_id), :alt => "用户头像" %> -
        -
        -
        - <% if reply.try(:author).try(:realname) == ' ' %> - <%= link_to reply.try(:author), user_url_in_org(reply.author_id), :class => "newsBlue mr10 f14" %> - <% else %> - <%= link_to reply.try(:author).try(:realname), user_url_in_org(reply.author_id), :class => "newsBlue mr10 f14" %> - <% end %> - <%= format_time(reply.created_on) %> - - <%=render :partial=> "praise_tread/praise", :locals => {:activity=>reply, :user_activity_id=>reply.id,:type=>"reply"}%> - -
        -
        - <%= reply.content.html_safe %>
        -
        -
        -
      • - <% end %> - + <%= render :partial => 'users/all_replies', :locals => {:comments => comments}%>
        <% end %> diff --git a/app/views/organizations/_org_subfield_news.html.erb b/app/views/organizations/_org_subfield_news.html.erb index 662a965e9..a822b4a0d 100644 --- a/app/views/organizations/_org_subfield_news.html.erb +++ b/app/views/organizations/_org_subfield_news.html.erb @@ -70,48 +70,17 @@
        <%#= format_date(activity.updated_on) %>
        <%if count>3 %> <% end %>
        - <% replies_all_i = 0 %> + <% comments = activity.comments.reorder("created_on desc").limit(3) %> <% if count > 0 %>
        -
          - <% activity.comments.reorder("created_on desc").each do |comment| %> - - <% replies_all_i = replies_all_i + 1 %> -
        • -
          - <%= link_to image_tag(url_to_avatar(comment.author), :width => "33", :height => "33"), user_url_in_org(comment.author_id), :alt => "用户头像" %> -
          -
          -
          - <% if comment.try(:author).try(:realname) == ' ' %> - <%= link_to comment.try(:author), user_url_in_org(comment.author_id), :class => "newsBlue mr10 f14" %> - <% else %> - <%= link_to comment.try(:author).try(:realname), user_url_in_org(comment.author_id), :class => "newsBlue mr10 f14" %> - <% end %> - <%= format_time(comment.created_on) %> - - <%=render :partial=> "praise_tread/praise", :locals => {:activity=>comment, :user_activity_id=>comment.id,:type=>"reply"}%> - -
          -
          - <%= comment.comments.html_safe %>
          -
          -
          -
        • - <% end %> -
        + <%= render :partial => 'users/all_replies', :locals => {:comments => comments}%>
        <% end %> diff --git a/app/views/organizations/_show_org_document.html.erb b/app/views/organizations/_show_org_document.html.erb index 3042ca9ae..f9ca06d90 100644 --- a/app/views/organizations/_show_org_document.html.erb +++ b/app/views/organizations/_show_org_document.html.erb @@ -6,7 +6,7 @@
        - <%= link_to User.find(document.creator_id), user_url_in_org(document.creator.id), :class => "newsBlue mr15" %> + <%= link_to document.creator.show_name, user_url_in_org(document.creator.id), :class => "newsBlue mr15" %> TO  <%= link_to document.organization.name, organization_path(document.organization), :class => "newsBlue" %> | <%= document.org_subfield_id.nil? ? "组织文章" :"#{OrgSubfield.find(document.org_subfield_id).name}" %> @@ -61,7 +61,7 @@ <% end %>
        - <% comments_for_doc = document.children.reorder("created_at desc") %> + <% comments_for_doc = document.children.reorder("created_at desc").limit(3) %> <% count = document.children.count() %>
        @@ -74,41 +74,14 @@
        <% if count > 3 %> <% end %>
        -
          - <% reply_id = 0 %> - <% comments_for_doc.each do |comment| %> - - <% reply_id += 1 %> -
        • -
          <%= link_to image_tag(url_to_avatar(User.find(comment.creator_id)), :width => 33, :height => 33, :alt => "用户头像"), user_url_in_org(comment.creator_id) %>
          -
          -
          - <%= link_to User.find(comment.creator_id), user_url_in_org(comment.creator_id), :class => "newsBlue mr10 f14" %> - <%= format_activity_day(comment.created_at) %> <%= format_time(comment.created_at, false) %> - - <%=render :partial=> "praise_tread/praise", :locals => {:activity=>comment, :user_activity_id=>comment.id,:type=>"reply"}%> - -
          - <% unless comment.content.blank? %> -
          <%= comment.content.html_safe %>
          - <% end %> -
          -
          -
        • - <% end %> -
        + <%= render :partial => 'users/all_replies', :locals => {:comments => comments_for_doc}%>
        @@ -134,22 +107,6 @@
        - <% replies_all_i = replies_all_i + 1 %> -
      • -
        - <%= link_to image_tag(url_to_avatar(comment.author), :width => "33", :height => "33"), user_path(comment.author_id), :alt => "用户头像" %> -
        -
        -
        - <% if comment.try(:author).try(:realname) == ' ' %> - <%= link_to comment.try(:author), user_path(comment.author_id), :class => "newsBlue mr10 f14" %> - <% else %> - <%= link_to comment.try(:author).try(:realname), user_path(comment.author_id), :class => "newsBlue mr10 f14" %> - <% end %> - <%= format_time(comment.created_on) %> - - <%=render :partial=> "praise_tread/praise", :locals => {:activity=>comment, :user_activity_id=>comment.id,:type=>"reply"}%> - -
        -
        - <%= comment.comments.html_safe %>
        -
        -
        -
      • - <% end %> - + <%= render :partial => 'users/all_replies', :locals => {:comments => comments}%>
        <% end %> diff --git a/app/views/users/_all_replies.html.erb b/app/views/users/_all_replies.html.erb new file mode 100644 index 000000000..15c8944fd --- /dev/null +++ b/app/views/users/_all_replies.html.erb @@ -0,0 +1,39 @@ +
          + <% comments.each do |comment| %> + +
        • +
          + <%= link_to image_tag(url_to_avatar(comment.creator_user), :width => 33, :height => 33, :alt => "用户头像"), user_url_in_org(comment.creator_user.id) %> +
          +
          +
          + <%= link_to comment.creator_user.show_name, user_url_in_org(comment.creator_user.id), :class => "newsBlue mr10 f14" %> + <%= format_activity_day(comment.created_time) %> <%= format_time(comment.created_time, false) %> + + <%=render :partial=> "praise_tread/praise", :locals => {:activity=>comment, :user_activity_id=>comment.id,:type=>"reply"}%> + +
          + <% unless comment.content_detail.blank? %> +
          + <% if comment.class == 'Journal' %> + <% if comment.details.any? %> + <% details_to_strings(comment.details).each do |string| %> +

          <%= string %>

          + <% end %> + <% end %> +

          <%= comment.notes.html_safe %>

          + <% else %> + <%= comment.content_detail.html_safe %> + <% end %> +
          + <% end %> +
          +
          +
        • + <% end %> +
        \ No newline at end of file diff --git a/app/views/users/_comment_reply.html.erb b/app/views/users/_comment_reply.html.erb index 895eda8a9..77dcea1f2 100644 --- a/app/views/users/_comment_reply.html.erb +++ b/app/views/users/_comment_reply.html.erb @@ -4,24 +4,5 @@ <%=render :partial => 'users/comment_reply', :locals => {:comment => comment.parent} %>
        <% end %> - -
        - <%= link_to image_tag(url_to_avatar(comment.user), :width => "33", :height => "33"), user_path(comment.user_id), :alt => "用户头像" %> -
        -
        - <% if comment.try(:user).try(:realname) == ' ' %> - <%= link_to comment.try(:user), user_path(comment.user_id), :class => "content-username" %> - <% else %> - <%= link_to comment.try(:user).try(:realname), user_path(comment.user_id), :class => "content-username" %> - <% end %> - <%= time_from_now(comment.created_on) %> -
        <%= comment.notes.html_safe %>
        -
        -
        + <%=render :partial => 'users/comment_reply_detail', :locals => {:comment => comment} %>
        \ No newline at end of file diff --git a/app/views/users/_course_homework.html.erb b/app/views/users/_course_homework.html.erb index e694f471e..701f81da1 100644 --- a/app/views/users/_course_homework.html.erb +++ b/app/views/users/_course_homework.html.erb @@ -302,91 +302,17 @@
        <%if count>3 %> <% end %>
        - <% replies_all_i = 0 %> + <% comments = activity.journals_for_messages.reorder("created_on desc").limit(3) %> <% if count > 0 %>
        -
          - <% activity.journals_for_messages.reorder("created_on desc").each do |comment| %> - - <% replies_all_i = replies_all_i + 1 %> -
        • -
          - <%= link_to image_tag(url_to_avatar(comment.user), :width => "33", :height => "33", :class =>"mt8"), user_path(comment.user_id), :alt => "用户头像" %> -
          -
          -
          - <% if comment.try(:user).try(:realname) == ' ' %> - <%= link_to comment.try(:user), user_path(comment.user_id), :class => "newsBlue mr10 f14" %> - <% else %> - <%= link_to comment.try(:user).try(:realname), user_path(comment.user_id), :class => "newsBlue mr10 f14" %> - <% end %> - <%= time_from_now(comment.created_on) %> -
          - <% unless comment.m_parent_id.nil? %> - <% parents_rely = [] %> - <% parents_rely = get_reply_parents parents_rely, comment %> - <% length = parents_rely.length %> -
          - <% if length <= 3 %> - <%=render :partial => 'users/comment_reply', :locals => {:comment => comment.parent} %> - <% else %> -
          -
          -
          - <%=render :partial => 'users/comment_reply', :locals => {:comment => parents_rely[length - 1]} %> -
          - <%=render :partial => 'users/comment_reply_detail', :locals => {:comment => parents_rely[length - 2]} %> -
          -
          <%= link_to '点击展开隐藏楼层', show_all_replies_users_path(:comment => comment),:remote=>true %>
          - <%=render :partial => 'users/comment_reply_detail', :locals => {:comment => parents_rely[0]} %> -
          - <% end %> -
          - <% end %> -
          - <%= comment.notes.html_safe %>
          -
          -
          - - - <%=render :partial=> "praise_tread/praise", :locals => {:activity=>comment, :user_activity_id=>comment.id,:type=>"reply"}%> - - - <%= link_to( - l(:button_reply), - {:controller => 'users' ,:action => 'reply_to', :reply_id => comment.id, :type => 'HomeworkCommon', :is_in_course => -1, :user_activity_id => user_activity_id, :course_activity=>course_activity}, - :remote => true, - :method => 'get', - :title => l(:button_reply)) %> - - - - <% if User.current.admin? ||is_teacher || comment.user == User.current%> - <%= link_to('删除', {:controller => 'words', :action => 'destroy', :object_id => comment, :user_id => comment.user,:is_in_course => -1, :user_activity_id => user_activity_id, :course_activity=>course_activity}, - :remote => true, :confirm => l(:text_are_you_sure), :method => 'delete', :class => "fr mr20", :title => l(:button_delete)) %> - <% end %> - -
          -
          -
          -

          -
          -
          -
        • - <% end %> -
        + <%=render :partial => 'users/homework_replies', :locals => {:comments => comments, :is_in_course => -1,:course_activity=>course_activity, :is_teacher => is_teacher, :user_activity_id => user_activity_id} %>
        <% end %> diff --git a/app/views/users/_course_journalsformessage.html.erb b/app/views/users/_course_journalsformessage.html.erb index a76081859..e04dd3006 100644 --- a/app/views/users/_course_journalsformessage.html.erb +++ b/app/views/users/_course_journalsformessage.html.erb @@ -43,50 +43,17 @@
        <%if count>3 %> <% end %>
        - <% replies_all_i = 0 %> + <% comments = activity.children.reorder("created_on desc").limit(3) %> <% if count > 0 %>
        -
          - <% fetch_user_leaveWord_reply(activity).each do |comment| unless fetch_user_leaveWord_reply(activity).nil? %> - - <% replies_all_i = replies_all_i + 1 %> -
        • -
          - <%= link_to image_tag(url_to_avatar(comment.user), :width => "33", :height => "33", :class =>"mt8"), user_path(comment.user_id), :alt => "用户头像" %> -
          -
          -
          - <% if comment.try(:user).try(:realname) == ' ' %> - <%= link_to comment.try(:user), user_path(comment.user_id), :class => "newsBlue mr10 f14" %> - <% else %> - <%= link_to comment.try(:user).try(:realname), user_path(comment.user_id), :class => "newsBlue mr10 f14" %> - <% end %> - <%= format_time(comment.created_on) %> - - <%=render :partial=> "praise_tread/praise", :locals => {:activity=>comment, :user_activity_id=>comment.id,:type=>"reply"}%> - -
          -
          - <%= comment.notes.html_safe %> -
          -
          -
          -
        • - <% end %> - <% end %> -
        + <%= render :partial => 'users/all_replies', :locals => {:comments => comments}%>
        <% end %> diff --git a/app/views/users/_course_message.html.erb b/app/views/users/_course_message.html.erb index c0e667396..76971e240 100644 --- a/app/views/users/_course_message.html.erb +++ b/app/views/users/_course_message.html.erb @@ -97,7 +97,7 @@
        <%#=format_date(activity.updated_on)%>
        <%if count > 3 %> @@ -105,43 +105,10 @@
        <% activity= activity.parent ? activity.parent : activity%> - <% replies_all_i = 0 %> + <% comments = activity.children.reorder("created_on desc").limit(3) %> <% if count > 0 %>
        -
          - <% activity.children.includes(:author).reorder("created_on desc").each do |reply|%> - - <% replies_all_i=replies_all_i+1 %> -
        • -
          - <%= link_to image_tag(url_to_avatar(reply.author), :width => "33", :height => "33"), user_path(reply.author_id,:host=>Setting.host_user), :alt => "用户头像" %> -
          -
          -
          - <% if reply.try(:author).try(:realname) == ' ' %> - <%= link_to reply.try(:author), user_path(reply.author_id,:host=>Setting.host_user), :class => "newsBlue mr10 f14" %> - <% else %> - <%= link_to reply.try(:author).try(:realname), user_path(reply.author_id,:host=>Setting.host_user), :class => "newsBlue mr10 f14" %> - <% end %> - <%= format_time(reply.created_on) %> - - <%=render :partial=> "praise_tread/praise", :locals => {:activity=>reply, :user_activity_id=>reply.id,:type=>"reply"}%> - - -
          -
          - <%= reply.content.html_safe %> -
          -
          -
          -
        • - <% end %> -
        + <%= render :partial => 'users/all_replies', :locals => {:comments => comments}%>
        <% end %> diff --git a/app/views/users/_course_news.html.erb b/app/views/users/_course_news.html.erb index b89873b43..5ffa78158 100644 --- a/app/views/users/_course_news.html.erb +++ b/app/views/users/_course_news.html.erb @@ -75,48 +75,17 @@
        <%#= format_date(activity.updated_on) %>
        <%if count>3 %> <% end %>
        - <% replies_all_i = 0 %> + <% comments = activity.comments.reorder("created_on desc").limit(3) %> <% if count > 0 %>
        -
          - <% activity.comments.reorder("created_on desc").each do |comment| %> - - <% replies_all_i = replies_all_i + 1 %> -
        • -
          - <%= link_to image_tag(url_to_avatar(comment.author), :width => "33", :height => "33"), user_path(comment.author_id), :alt => "用户头像" %> -
          -
          -
          - <% if comment.try(:author).try(:realname) == ' ' %> - <%= link_to comment.try(:author), user_path(comment.author_id), :class => "newsBlue mr10 f14" %> - <% else %> - <%= link_to comment.try(:author).try(:realname), user_path(comment.author_id), :class => "newsBlue mr10 f14" %> - <% end %> - <%= format_time(comment.created_on) %> - - <%=render :partial=> "praise_tread/praise", :locals => {:activity=>comment, :user_activity_id=>comment.id,:type=>"reply"}%> - -
          -
          - <%= comment.comments.html_safe %>
          -
          -
          -
        • - <% end %> -
        + <%= render :partial => 'users/all_replies', :locals => {:comments => comments}%>
        <% end %> diff --git a/app/views/users/_homework_replies.html.erb b/app/views/users/_homework_replies.html.erb new file mode 100644 index 000000000..de6e96ae3 --- /dev/null +++ b/app/views/users/_homework_replies.html.erb @@ -0,0 +1,78 @@ +
          + <% comments.reorder("created_on desc").each do |comment| %> + +
        • +
          + <%= link_to image_tag(url_to_avatar(comment.user), :width => "33", :height => "33", :class =>"mt8"), user_path(comment.user_id), :alt => "用户头像" %> +
          +
          +
          + <% if comment.try(:user).try(:realname) == ' ' %> + <%= link_to comment.try(:user), user_path(comment.user_id), :class => "newsBlue mr10 f14" %> + <% else %> + <%= link_to comment.try(:user).try(:realname), user_path(comment.user_id), :class => "newsBlue mr10 f14" %> + <% end %> + <%= time_from_now(comment.created_on) %> +
          + <% unless comment.m_parent_id.nil? %> + <% parents_rely = [] %> + <% parents_rely = get_reply_parents parents_rely, comment %> + <% length = parents_rely.length %> +
          + <% if length <= 3 %> + <%=render :partial => 'users/comment_reply', :locals => {:comment => comment.parent} %> + <% else %> +
          +
          +
          + <%=render :partial => 'users/comment_reply', :locals => {:comment => parents_rely[length - 1]} %> +
          + <%=render :partial => 'users/comment_reply_detail', :locals => {:comment => parents_rely[length - 2]} %> +
          +
          + + + <%= link_to '点击展开隐藏楼层', show_all_replies_users_path(:comment => comment),:remote=>true %> +
          + <%=render :partial => 'users/comment_reply_detail', :locals => {:comment => parents_rely[0]} %> +
          + <% end %> +
          + <% end %> +
          + <%= comment.notes.html_safe %>
          +
          +
          + + + <%=render :partial=> "praise_tread/praise", :locals => {:activity=>comment, :user_activity_id=>comment.id,:type=>"reply"}%> + + + <%= link_to( + l(:button_reply), + {:controller => 'users' ,:action => 'reply_to', :reply_id => comment.id, :type => 'HomeworkCommon', :is_in_course => is_in_course, :user_activity_id => user_activity_id, :course_activity => course_activity}, + :remote => true, + :method => 'get', + :title => l(:button_reply)) %> + + + + <% if User.current.admin? ||is_teacher || comment.user == User.current%> + <%= link_to('删除', {:controller => 'words', :action => 'destroy', :object_id => comment, :user_id => comment.user,:is_in_course => is_in_course, :course_activity => course_activity}, + :remote => true, :confirm => l(:text_are_you_sure), :method => 'delete', :class => "fr mr20", :title => l(:button_delete)) %> + <% end %> + +
          +
          +
          +

          +
          +
          +
        • + <% end %> +
        \ No newline at end of file diff --git a/app/views/users/_project_issue_reply.html.erb b/app/views/users/_project_issue_reply.html.erb index 2b43d8acf..1f4c4b44b 100644 --- a/app/views/users/_project_issue_reply.html.erb +++ b/app/views/users/_project_issue_reply.html.erb @@ -10,54 +10,17 @@
        <%#= format_date(activity.updated_on) %>
        <% if count > 3 %> <% end %>
        - <% replies_all_i = 0 %> + <% comments = activity.journals.includes(:user, :details).reorder("created_on desc").limit(3) %> <% if count > 0 %>
        -
          - <% activity.journals.includes(:user, :details).reorder("created_on desc").each do |reply| %> - - <% replies_all_i=replies_all_i + 1 %> -
        • -
          - <%= link_to image_tag(url_to_avatar(reply.user), :width => "33", :height => "33"), user_path(reply.user_id), :alt => "用户头像" %> -
          -
          -
          - <% if reply.try(:user).try(:realname) == ' ' %> - <%= link_to reply.try(:user), user_path(reply.user_id), :class => "newsBlue mr10 f14" %> - <% else %> - <%= link_to reply.try(:user).try(:realname), user_path(reply.user_id), :class => "newsBlue mr10 f14" %> - <% end %> - <%= format_time(reply.created_on) %> - - <%=render :partial=> "praise_tread/praise", :locals => {:activity=>reply, :user_activity_id=>reply.id,:type=>"reply"}%> - -
          -
          - <% if reply.details.any? %> - <% details_to_strings(reply.details).each do |string| %> -

          <%= string %>

          - <% end %> - <% end %> -

          <%= reply.notes.html_safe %>

          -
          -
          -
          -
        • - <% end %> -
        + <%= render :partial => 'users/all_replies', :locals => {:comments => comments}%>
        <% end %> diff --git a/app/views/users/_project_message.html.erb b/app/views/users/_project_message.html.erb index b3c2fea59..f82dc35e7 100644 --- a/app/views/users/_project_message.html.erb +++ b/app/views/users/_project_message.html.erb @@ -95,46 +95,15 @@
        <%#=format_date(activity.updated_on)%>
        <%if count>3 %> - + <% end %>
        <% activity= activity.parent_id.nil? ? activity : activity.parent %> - <% replies_all_i = 0 %> + <% comments = activity.children.reorder("created_on desc").limit(3) %> <% if count > 0 %>
        -
          - <% activity.children.includes(:author).reorder("created_on desc").each do |reply| %> - - <% replies_all_i=replies_all_i+1 %> -
        • -
          - <%= link_to image_tag(url_to_avatar(reply.author), :width => "33", :height => "33"), user_path(reply.author_id), :alt => "用户头像" %> -
          -
          -
          - <% if reply.try(:author).try(:realname) == ' ' %> - <%= link_to reply.try(:author), user_path(reply.author_id), :class => "newsBlue mr10 f14" %> - <% else %> - <%= link_to reply.try(:author).try(:realname), user_path(reply.author_id), :class => "newsBlue mr10 f14" %> - <% end %> - <%= format_time(reply.created_on) %> - - <%=render :partial=> "praise_tread/praise", :locals => {:activity=>reply, :user_activity_id=>reply.id,:type=>"reply"}%> - -
          -
          - <%= reply.content.html_safe %>
          -
          -
          -
        • - <% end %> -
        + <%= render :partial => 'users/all_replies', :locals => {:comments => comments}%>
        <% end %> diff --git a/app/views/users/_project_news.html.erb b/app/views/users/_project_news.html.erb index b354bc668..43b22b193 100644 --- a/app/views/users/_project_news.html.erb +++ b/app/views/users/_project_news.html.erb @@ -72,48 +72,17 @@
        <%#= format_date(activity.updated_on) %>
        <%if count>3 %> <% end %>
        - <% replies_all_i = 0 %> + <% comments = activity.comments.reorder("created_on desc").limit(3) %> <% if count > 0 %>
        -
          - <% activity.comments.reorder("created_on desc").each do |comment| %> - - <% replies_all_i = replies_all_i + 1 %> -
        • -
          - <%= link_to image_tag(url_to_avatar(comment.author), :width => "33", :height => "33"), user_path(comment.author_id), :alt => "用户头像" %> -
          -
          -
          - <% if comment.try(:author).try(:realname) == ' ' %> - <%= link_to comment.try(:author), user_path(comment.author_id), :class => "newsBlue mr10 f14" %> - <% else %> - <%= link_to comment.try(:author).try(:realname), user_path(comment.author_id), :class => "newsBlue mr10 f14" %> - <% end %> - <%= format_time(comment.created_on) %> - - <%=render :partial=> "praise_tread/praise", :locals => {:activity=>comment, :user_activity_id=>comment.id,:type=>"reply"}%> - -
          -
          - <%= comment.comments.html_safe %>
          -
          -
          -
        • - <% end %> -
        + <%= render :partial => 'users/all_replies', :locals => {:comments => comments}%>
        <% end %> diff --git a/app/views/users/_user_activities.html.erb b/app/views/users/_user_activities.html.erb index 432074191..3b327c080 100644 --- a/app/views/users/_user_activities.html.erb +++ b/app/views/users/_user_activities.html.erb @@ -29,23 +29,6 @@ <% user_activities.each do |user_activity| if user_activities %> - <% replies_all_i = replies_all_i + 1 %> -
      • -
        - <%= link_to image_tag(url_to_avatar(comment.author), :width => "33", :height => "33"), user_path(comment.author_id), :alt => "用户头像" %> -
        -
        -
        - <% if comment.try(:author).try(:realname) == ' ' %> - <%= link_to comment.try(:author), user_path(comment.author_id), :class => "newsBlue mr10 f14" %> - <% else %> - <%= link_to comment.try(:author).try(:realname), user_path(comment.author_id), :class => "newsBlue mr10 f14" %> - <% end %> - <%= format_time(comment.created_on) %> - - <%=render :partial=> "praise_tread/praise", :locals => {:activity=>comment, :user_activity_id=>comment.id,:type=>"reply"}%> - -
        -
        - <%= comment.content.html_safe %>
        -
        -
        -
      • - <% end %> - + <%= render :partial => 'users/all_replies', :locals => {:comments => comments}%>
        <% end %> diff --git a/app/views/users/_user_homework_detail.html.erb b/app/views/users/_user_homework_detail.html.erb index a01418d2f..97eeec89f 100644 --- a/app/views/users/_user_homework_detail.html.erb +++ b/app/views/users/_user_homework_detail.html.erb @@ -312,95 +312,17 @@
        <%if count>3 %> <% end %>
        - <% replies_all_i = 0 %> + <% comments = homework_common.journals_for_messages.reorder("created_on desc").limit(3) %> <% if count > 0 %>
        -
          - <% homework_common.journals_for_messages.reorder("created_on desc").each do |comment| %> - - <% replies_all_i = replies_all_i + 1 %> -
        • -
          - <%= link_to image_tag(url_to_avatar(comment.user), :width => "33", :height => "33", :class =>"mt8"), user_path(comment.user_id), :alt => "用户头像" %> -
          -
          -
          - <% if comment.try(:user).try(:realname) == ' ' %> - <%= link_to comment.try(:user), user_path(comment.user_id), :class => "newsBlue mr10 f14" %> - <% else %> - <%= link_to comment.try(:user).try(:realname), user_path(comment.user_id), :class => "newsBlue mr10 f14" %> - <% end %> - <%= time_from_now(comment.created_on) %> -
          - <% unless comment.m_parent_id.nil? %> - <% parents_rely = [] %> - <% parents_rely = get_reply_parents parents_rely, comment %> - <% length = parents_rely.length %> -
          - <% if length <= 3 %> - <%=render :partial => 'users/comment_reply', :locals => {:comment => comment.parent} %> - <% else %> -
          -
          -
          - <%=render :partial => 'users/comment_reply', :locals => {:comment => parents_rely[length - 1]} %> -
          - <%=render :partial => 'users/comment_reply_detail', :locals => {:comment => parents_rely[length - 2]} %> -
          -
          - - - <%= link_to '点击展开隐藏楼层', show_all_replies_users_path(:comment => comment),:remote=>true %> -
          - <%=render :partial => 'users/comment_reply_detail', :locals => {:comment => parents_rely[0]} %> -
          - <% end %> -
          - <% end %> -
          - <%= comment.notes.html_safe %>
          -
          -
          - - - <%=render :partial=> "praise_tread/praise", :locals => {:activity=>comment, :user_activity_id=>comment.id,:type=>"reply"}%> - - - <%= link_to( - l(:button_reply), - {:controller => 'users' ,:action => 'reply_to', :reply_id => comment.id, :type => 'HomeworkCommon', :is_in_course => is_in_course, :course_activity => -1}, - :remote => true, - :method => 'get', - :title => l(:button_reply)) %> - - - - <% if User.current.admin? ||is_teacher || comment.user == User.current%> - <%= link_to('删除', {:controller => 'words', :action => 'destroy', :object_id => comment, :user_id => comment.user,:is_in_course => is_in_course, :course_activity => -1}, - :remote => true, :confirm => l(:text_are_you_sure), :method => 'delete', :class => "fr mr20", :title => l(:button_delete)) %> - <% end %> - -
          -
          -
          -

          -
          -
          -
        • - <% end %> -
        + <%=render :partial => 'users/homework_replies', :locals => {:comments => comments, :is_in_course => is_in_course, :course_activity=> -1, :is_teacher => is_teacher, :user_activity_id => -1} %>
        <% end %> diff --git a/app/views/users/_user_journalsformessage.html.erb b/app/views/users/_user_journalsformessage.html.erb index 6967bb398..e7f42c661 100644 --- a/app/views/users/_user_journalsformessage.html.erb +++ b/app/views/users/_user_journalsformessage.html.erb @@ -70,57 +70,17 @@
        <%if count>3 %> <% end %>
        - <% replies_all_i = 0 %> + <% comments = activity.children.reorder("created_on desc").limit(3) %> <% if count > 0 %>
        -
          - <% fetch_user_leaveWord_reply(activity).reorder("created_on desc").each do |comment| %> - - <% replies_all_i = replies_all_i + 1 %> -
        • -
          - <%= link_to image_tag(url_to_avatar(comment.user), :width => "33", :height => "33", :class =>"mt8"), user_path(comment.user_id), :alt => "用户头像" %> -
          -
          -
          - <% if comment.try(:user).try(:realname) == ' ' %> - <%= link_to comment.try(:user), user_path(comment.user_id), :class => "newsBlue mr10 f14" %> - <% else %> - <%= link_to comment.try(:user).try(:realname), user_path(comment.user_id), :class => "newsBlue mr10 f14" %> - <% end %> - <%= format_time(comment.created_on) %> - - <%=render :partial=> "praise_tread/praise", :locals => {:activity=>comment, :user_activity_id=>comment.id,:type=>"reply"}%> - - -
          -
          - <%= comment.notes.html_safe %> -
          -
          -
          -
        • - <% end %> -
        + <%= render :partial => 'users/all_replies', :locals => {:comments => comments}%>
        <% end %> diff --git a/app/views/users/_user_jours_list.html.erb b/app/views/users/_user_jours_list.html.erb index 94d2998ae..afd498d06 100644 --- a/app/views/users/_user_jours_list.html.erb +++ b/app/views/users/_user_jours_list.html.erb @@ -7,22 +7,6 @@ <% jours.each do |jour|%> <% unless jour.private == 1 && (!User.current || (User.current && jour.jour_id != User.current.id && jour.user_id != User.current.id)) %> + + + \ No newline at end of file diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/darkX.css b/public/plugin_assets/redmine_code_review/stylesheets/window_js/darkX.css index e3df3e0a4..2f83cfd46 100644 --- a/public/plugin_assets/redmine_code_review/stylesheets/window_js/darkX.css +++ b/public/plugin_assets/redmine_code_review/stylesheets/window_js/darkX.css @@ -1,121 +1,121 @@ -.overlay_darkX { - background-color: #85BBEF; - filter:alpha(opacity=60); - -moz-opacity: 0.6; - opacity: 0.6; -} - -.darkX_nw { - background: transparent url(darkX/titlebar-left-focused.png) no-repeat 0 0; - width:6px; - height:21px; -} -.darkX_n { - background: transparent url(darkX/titlebar-mid-focused.png) repeat-x 0 0; - height:21px; -} -.darkX_ne { - background: transparent url(darkX/titlebar-right-focused.png) no-repeat 0 0; - width:6px; - height:21px; -} -.darkX_w { - background: transparent url(darkX/frame-left-focused.png) repeat-y top left; - width:3px; -} - -.darkX_e { - background: transparent url(darkX/frame-right-focused.png) repeat-y top right; - width:3px; -} - -.darkX_sw { - background: transparent url(darkX/frame-bottom-left-focused.png) no-repeat 0 0; - width:5px; - height:3px; -} -.darkX_s { - background: transparent url(darkX/frame-bottom-mid-focused.png) repeat-x 0 0; - height:3px; -} -.darkX_se, .darkX_sizer { - background: transparent url(darkX/frame-bottom-right-focused.png) no-repeat 0 0; - width:5px; - height:3px; -} - -.darkX_sizer { - cursor:se-resize; -} - -.darkX_close { - width: 21px; - height: 21px; - background: transparent url(darkX/button-close-focused.png) no-repeat 0 0; - position:absolute; - top:0px; - right:5px; - cursor:pointer; - z-index:1000; -} - -.darkX_minimize { - width: 21px; - height: 21px; - background: transparent url(darkX/button-minimize-focused.png) no-repeat 0 0; - position:absolute; - top:0px; - right:26px; - cursor:pointer; - z-index:1000; -} - -.darkX_maximize { - width: 21px; - height: 21px; - background: transparent url(darkX/button-maximize-focused.png) no-repeat 0 0; - position:absolute; - top:0px; - right:47px; - cursor:pointer; - z-index:1000; -} - - -.darkX_title { - float:left; - height:14px; - font-size:12px; - text-align:center; - margin-top:2px; - width:100%; - color:#FFF; -} - -.darkX_content { - overflow:auto; - color: #E6DF2A; - font-family: Tahoma, Arial, sans-serif; - font-size: 14px; - background:#5E5148; -} - - -/* FOR IE */ -* html .darkX_minimize { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/darkX/button-minimize-focused.png", sizingMethod="crop"); -} - -* html .darkX_maximize { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/darkX/button-maximize-focused.png", sizingMethod="scale"); -} - -* html .darkX_close { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/darkX/button-close-focused.png", sizingMethod="crop"); -} +.overlay_darkX { + background-color: #85BBEF; + filter:alpha(opacity=60); + -moz-opacity: 0.6; + opacity: 0.6; +} + +.darkX_nw { + background: transparent url(darkX/titlebar-left-focused.png) no-repeat 0 0; + width:6px; + height:21px; +} +.darkX_n { + background: transparent url(darkX/titlebar-mid-focused.png) repeat-x 0 0; + height:21px; +} +.darkX_ne { + background: transparent url(darkX/titlebar-right-focused.png) no-repeat 0 0; + width:6px; + height:21px; +} +.darkX_w { + background: transparent url(darkX/frame-left-focused.png) repeat-y top left; + width:3px; +} + +.darkX_e { + background: transparent url(darkX/frame-right-focused.png) repeat-y top right; + width:3px; +} + +.darkX_sw { + background: transparent url(darkX/frame-bottom-left-focused.png) no-repeat 0 0; + width:5px; + height:3px; +} +.darkX_s { + background: transparent url(darkX/frame-bottom-mid-focused.png) repeat-x 0 0; + height:3px; +} +.darkX_se, .darkX_sizer { + background: transparent url(darkX/frame-bottom-right-focused.png) no-repeat 0 0; + width:5px; + height:3px; +} + +.darkX_sizer { + cursor:se-resize; +} + +.darkX_close { + width: 21px; + height: 21px; + background: transparent url(darkX/button-close-focused.png) no-repeat 0 0; + position:absolute; + top:0px; + right:5px; + cursor:pointer; + z-index:1000; +} + +.darkX_minimize { + width: 21px; + height: 21px; + background: transparent url(darkX/button-minimize-focused.png) no-repeat 0 0; + position:absolute; + top:0px; + right:26px; + cursor:pointer; + z-index:1000; +} + +.darkX_maximize { + width: 21px; + height: 21px; + background: transparent url(darkX/button-maximize-focused.png) no-repeat 0 0; + position:absolute; + top:0px; + right:47px; + cursor:pointer; + z-index:1000; +} + + +.darkX_title { + float:left; + height:14px; + font-size:12px; + text-align:center; + margin-top:2px; + width:100%; + color:#FFF; +} + +.darkX_content { + overflow:auto; + color: #E6DF2A; + font-family: Tahoma, Arial, sans-serif; + font-size: 14px; + background:#5E5148; +} + + +/* FOR IE */ +* html .darkX_minimize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/darkX/button-minimize-focused.png", sizingMethod="crop"); +} + +* html .darkX_maximize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/darkX/button-maximize-focused.png", sizingMethod="scale"); +} + +* html .darkX_close { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/darkX/button-close-focused.png", sizingMethod="crop"); +} diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/debug.css b/public/plugin_assets/redmine_code_review/stylesheets/window_js/debug.css index d7981e9ca..69e3b7fc2 100644 --- a/public/plugin_assets/redmine_code_review/stylesheets/window_js/debug.css +++ b/public/plugin_assets/redmine_code_review/stylesheets/window_js/debug.css @@ -1,25 +1,25 @@ -div.inspector div.inspectable { - padding: 0.25em 0 0.25em 1em; - background-color: Gray; - color: white; - border: outset 2px white; - cursor: pointer; -} - -div.inspector div.child { - margin: 0 0 0 1em; -} - -#debug_window_content { /* DIV container for debug sizing*/ - width:250px; - height:100px; - background-color:#000; -} - -#debug { /* DIV container for debug contents*/ - padding:3px; - color:#0f0; - font-family:monaco, Tahoma, Verdana, Arial, Helvetica, sans-serif; - font-size:10px; -} - +div.inspector div.inspectable { + padding: 0.25em 0 0.25em 1em; + background-color: Gray; + color: white; + border: outset 2px white; + cursor: pointer; +} + +div.inspector div.child { + margin: 0 0 0 1em; +} + +#debug_window_content { /* DIV container for debug sizing*/ + width:250px; + height:100px; + background-color:#000; +} + +#debug { /* DIV container for debug contents*/ + padding:3px; + color:#0f0; + font-family:monaco, Tahoma, Verdana, Arial, Helvetica, sans-serif; + font-size:10px; +} + diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/default.css b/public/plugin_assets/redmine_code_review/stylesheets/window_js/default.css index 591451723..6ab13789d 100644 --- a/public/plugin_assets/redmine_code_review/stylesheets/window_js/default.css +++ b/public/plugin_assets/redmine_code_review/stylesheets/window_js/default.css @@ -1,155 +1,155 @@ -.overlay_dialog { - background-color: #666666; - filter:alpha(opacity=60); - -moz-opacity: 0.6; - opacity: 0.6; -} - -.overlay___invisible__ { - background-color: #666666; - filter:alpha(opacity=0); - -moz-opacity: 0; - opacity: 0; -} - -.dialog_nw { - width: 9px; - height: 23px; - background: transparent url(default/top_left.gif) no-repeat 0 0; -} - -.dialog_n { - background: transparent url(default/top_mid.gif) repeat-x 0 0; - height: 23px; -} - -.dialog_ne { - width: 9px; - height: 23px; - background: transparent url(default/top_right.gif) no-repeat 0 0; -} - -.dialog_e { - width: 2px; - background: transparent url(default/center_right.gif) repeat-y 0 0; -} - -.dialog_w { - width: 2px; - background: transparent url(default/center_left.gif) repeat-y 0 0; -} - -.dialog_sw { - width: 9px; - height: 19px; - background: transparent url(default/bottom_left.gif) no-repeat 0 0; -} - -.dialog_s { - background: transparent url(default/bottom_mid.gif) repeat-x 0 0; - height: 19px; -} - -.dialog_se { - width: 9px; - height: 19px; - background: transparent url(default/bottom_right.gif) no-repeat 0 0; -} - -.dialog_sizer { - width: 9px; - height: 19px; - background: transparent url(default/sizer.gif) no-repeat 0 0; - cursor:se-resize; -} - -.dialog_close { - width: 14px; - height: 14px; - background: transparent url(default/close.gif) no-repeat 0 0; - position:absolute; - top:5px; - left:8px; - cursor:pointer; - z-index:2000; -} - -.dialog_minimize { - width: 14px; - height: 15px; - background: transparent url(default/minimize.gif) no-repeat 0 0; - position:absolute; - top:5px; - left:28px; - cursor:pointer; - z-index:2000; -} - -.dialog_maximize { - width: 14px; - height: 15px; - background: transparent url(default/maximize.gif) no-repeat 0 0; - position:absolute; - top:5px; - left:49px; - cursor:pointer; - z-index:2000; -} - -.dialog_title { - float:left; - height:14px; - font-family: Tahoma, Arial, sans-serif; - font-size:12px; - text-align:center; - width:100%; - color:#000; -} - -.dialog_content { - overflow:auto; - color: #DDD; - font-family: Tahoma, Arial, sans-serif; - font-size: 10px; - background-color:#123; -} - -.top_draggable, .bottom_draggable { - cursor:move; -} - -.status_bar { - font-size:12px; -} -.status_bar input{ - font-size:12px; -} - -.wired_frame { - display: block; - position: absolute; - border: 1px #000 dashed; -} - -/* DO NOT CHANGE THESE VALUES*/ -.dialog { - display: block; - position: absolute; -} - -.dialog table.table_window { - border-collapse: collapse; - border-spacing: 0; - width: 100%; - margin: 0px; - padding:0px; -} - -.dialog table.table_window td , .dialog table.table_window th { - padding: 0; -} - -.dialog .title_window { - -moz-user-select:none; -} - +.overlay_dialog { + background-color: #666666; + filter:alpha(opacity=60); + -moz-opacity: 0.6; + opacity: 0.6; +} + +.overlay___invisible__ { + background-color: #666666; + filter:alpha(opacity=0); + -moz-opacity: 0; + opacity: 0; +} + +.dialog_nw { + width: 9px; + height: 23px; + background: transparent url(default/top_left.gif) no-repeat 0 0; +} + +.dialog_n { + background: transparent url(default/top_mid.gif) repeat-x 0 0; + height: 23px; +} + +.dialog_ne { + width: 9px; + height: 23px; + background: transparent url(default/top_right.gif) no-repeat 0 0; +} + +.dialog_e { + width: 2px; + background: transparent url(default/center_right.gif) repeat-y 0 0; +} + +.dialog_w { + width: 2px; + background: transparent url(default/center_left.gif) repeat-y 0 0; +} + +.dialog_sw { + width: 9px; + height: 19px; + background: transparent url(default/bottom_left.gif) no-repeat 0 0; +} + +.dialog_s { + background: transparent url(default/bottom_mid.gif) repeat-x 0 0; + height: 19px; +} + +.dialog_se { + width: 9px; + height: 19px; + background: transparent url(default/bottom_right.gif) no-repeat 0 0; +} + +.dialog_sizer { + width: 9px; + height: 19px; + background: transparent url(default/sizer.gif) no-repeat 0 0; + cursor:se-resize; +} + +.dialog_close { + width: 14px; + height: 14px; + background: transparent url(default/close.gif) no-repeat 0 0; + position:absolute; + top:5px; + left:8px; + cursor:pointer; + z-index:2000; +} + +.dialog_minimize { + width: 14px; + height: 15px; + background: transparent url(default/minimize.gif) no-repeat 0 0; + position:absolute; + top:5px; + left:28px; + cursor:pointer; + z-index:2000; +} + +.dialog_maximize { + width: 14px; + height: 15px; + background: transparent url(default/maximize.gif) no-repeat 0 0; + position:absolute; + top:5px; + left:49px; + cursor:pointer; + z-index:2000; +} + +.dialog_title { + float:left; + height:14px; + font-family: Tahoma, Arial, sans-serif; + font-size:12px; + text-align:center; + width:100%; + color:#000; +} + +.dialog_content { + overflow:auto; + color: #DDD; + font-family: Tahoma, Arial, sans-serif; + font-size: 10px; + background-color:#123; +} + +.top_draggable, .bottom_draggable { + cursor:move; +} + +.status_bar { + font-size:12px; +} +.status_bar input{ + font-size:12px; +} + +.wired_frame { + display: block; + position: absolute; + border: 1px #000 dashed; +} + +/* DO NOT CHANGE THESE VALUES*/ +.dialog { + display: block; + position: absolute; +} + +.dialog table.table_window { + border-collapse: collapse; + border-spacing: 0; + width: 100%; + margin: 0px; + padding:0px; +} + +.dialog table.table_window td , .dialog table.table_window th { + padding: 0; +} + +.dialog .title_window { + -moz-user-select:none; +} + diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/iefix/iepngfix.css b/public/plugin_assets/redmine_code_review/stylesheets/window_js/iefix/iepngfix.css index 249388be5..257a1b1e3 100644 --- a/public/plugin_assets/redmine_code_review/stylesheets/window_js/iefix/iepngfix.css +++ b/public/plugin_assets/redmine_code_review/stylesheets/window_js/iefix/iepngfix.css @@ -1,3 +1,3 @@ -/* PNG fix for all themes that uses PNG images on IE */ -td, div { behavior: url(../themes/iefix/iepngfix.htc) } - +/* PNG fix for all themes that uses PNG images on IE */ +td, div { behavior: url(../themes/iefix/iepngfix.htc) } + diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/iefix/iepngfix.htc b/public/plugin_assets/redmine_code_review/stylesheets/window_js/iefix/iepngfix.htc index 9a13f32bf..a6c683b9f 100644 --- a/public/plugin_assets/redmine_code_review/stylesheets/window_js/iefix/iepngfix.htc +++ b/public/plugin_assets/redmine_code_review/stylesheets/window_js/iefix/iepngfix.htc @@ -1,54 +1,54 @@ - - - - + + + + \ No newline at end of file diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting.css b/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting.css index 0d955c3d7..95ec287a9 100644 --- a/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting.css +++ b/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting.css @@ -1,960 +1,960 @@ -.overlay___invisible__ { - background-color: #666; - filter:alpha(opacity=0); - -moz-opacity: 0; - opacity: 0; -} - -.top_draggable, .bottom_draggable { - cursor:move; -} - -.status_bar { - font-size:12px; -} -.status_bar input{ - font-size:12px; -} - -.wired_frame { - display:block; - position:absolute; - border:1px #000 dashed; -} - - - -.overlay_bluelighting { - background-color:#FFF; - filter:alpha(opacity=60); - -moz-opacity:0.6; - opacity:0.6; -} - -.bluelighting_wired_frame { - background:#FFF; - filter:alpha(opacity=60); - -moz-opacity:0.6; - opacity:0.6; -} - -.bluelighting_nw { - background:transparent url(lighting/top-left-blue.png) no-repeat 0 0; - width:9px; - height:28px; -} - -.bluelighting_n { - background:transparent url(lighting/top-middle-blue.png) repeat-x 0 0; - height:28px; -} - -.bluelighting_ne { - background:transparent url(lighting/top-right-blue.png) no-repeat 0 0; - width:15px; - height:28px; -} - -.bluelighting_w { - background:transparent url(lighting/left-blue.png) repeat-y top left; - width:9px; -} - -.bluelighting_e { - background:transparent url(lighting/right-blue.png) repeat-y top right; - width:15px; -} - -.bluelighting_sw { - background:transparent url(lighting/bottom-left-blue.png) no-repeat 0 0; - width:9px; - height:15px; -} - -.bluelighting_s { - background:transparent url(lighting/bottom-middle-blue.png) repeat-x 0 0; - height:15px; -} - -.bluelighting_se, .bluelighting_sizer { - background:transparent url(lighting/bottom-right-blue.png) no-repeat 0 0; - width:15px; - height:15px; -} - -.bluelighting_sizer { - cursor:se-resize; -} - -.bluelighting_close { - width:15px; - height:9px; - background:transparent url(lighting/button-close-blue.png) no-repeat 0 0; - position:absolute; - top:11px; - right:10px; - cursor:pointer; - z-index:1000; -} - -.bluelighting_maximize { - width:15px; - height:9px; - background:transparent url(lighting/button-maximize-blue.png) no-repeat 0 0; - position:absolute; - top:11px; - right:25px; - cursor:pointer; - z-index:1000; -} - -.bluelighting_minimize { - width:15px; - height:9px; - background:transparent url(lighting/button-minimize-blue.png) no-repeat 0 0; - position:absolute; - top:11px; - right:40px; - cursor:pointer; - z-index:1000; -} - -.bluelighting_title { - float:left; - height:14px; - font-size:14px; - font-weight:bold; - font-family:Verdana, Arial, sans-serif; - text-align:center; - margin-top:2px; - width:100%; - color:#17385B; -} - -.bluelighting_content { - overflow:auto; - color:#000; - font-family:Verdana, Arial, sans-serif; - font-size:12px; - background:#BFDBFF; -} - -/* For alert/confirm dialog */ -.bluelighting_window { - border:1px solid #F00; - background:#FFF; - padding:20px; - margin-left:auto; - margin-right:auto; - width:400px; -} - -.bluelighting_message { - font-size:12px; - text-align:center; - width:100%; - padding-bottom:10px; -} - -.bluelighting_buttons { - text-align:center; - width:100%; -} - -.bluelighting_buttons input { - border:1px solid #999; - border-top-color:#CCC; - border-left-color:#CCC; - padding:2px; - background-color:#FFF; - color:#333; - background-image:url(lighting/background_buttons.gif); - background-repeat:repeat-x; - font-family:Verdana, Arial, sans-serif; - font-size:10px; - font-weight:bold; - text-align:center; -} - -.bluelighting_progress { - float:left; - margin:auto; - text-align:center; - width:100%; - height:16px; - background:transparent url('lighting/spinner.gif') no-repeat center center -} - -/* FOR IE */ -* html .bluelighting_nw { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-left-blue.png", sizingMethod="crop"); -} - -* html .bluelighting_n { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-middle-blue.png", sizingMethod="scale"); -} - -* html .bluelighting_ne { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-right-blue.png", sizingMethod="crop"); -} - -* html .bluelighting_w { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/left-blue.png", sizingMethod="scale"); -} - -* html .bluelighting_e { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/right-blue.png", sizingMethod="scale"); -} - -* html .bluelighting_sw { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-left-blue.png", sizingMethod="crop"); -} - -* html .bluelighting_s { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-middle-blue.png", sizingMethod="scale"); -} - -* html .bluelighting_se, * html .bluelighting_sizer { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-right-blue.png", sizingMethod="crop"); -} - -* html .bluelighting_close { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-close-blue.png", sizingMethod="crop"); -} - -* html .bluelighting_minimize { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-minimize-blue.png", sizingMethod="crop"); -} - -* html .bluelighting_maximize { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-maximize-blue.png", sizingMethod="crop"); -} - -* html .bluelighting_content { - background:#B8D7FF; -} - - - -.overlay_greylighting { - background-color:#FFF; - filter:alpha(opacity=60); - -moz-opacity:0.6; - opacity:0.6; -} - -.greylighting_wired_frame { - background:#FFF; - filter:alpha(opacity=60); - -moz-opacity:0.6; - opacity:0.6; -} - -.greylighting_nw { - background:transparent url(lighting/top-left-grey.png) no-repeat 0 0; - width:9px; - height:28px; -} - -.greylighting_n { - background:transparent url(lighting/top-middle-grey.png) repeat-x 0 0; - height:28px; -} - -.greylighting_ne { - background:transparent url(lighting/top-right-grey.png) no-repeat 0 0; - width:15px; - height:28px; -} - -.greylighting_w { - background:transparent url(lighting/left-grey.png) repeat-y top left; - width:9px; -} - -.greylighting_e { - background:transparent url(lighting/right-grey.png) repeat-y top right; - width:15px; -} - -.greylighting_sw { - background:transparent url(lighting/bottom-left-grey.png) no-repeat 0 0; - width:9px; - height:15px; -} - -.greylighting_s { - background:transparent url(lighting/bottom-middle-grey.png) repeat-x 0 0; - height:15px; -} - -.greylighting_se, .greylighting_sizer { - background:transparent url(lighting/bottom-right-grey.png) no-repeat 0 0; - width:15px; - height:15px; -} - -.greylighting_sizer { - cursor:se-resize; -} - -.greylighting_close { - width:15px; - height:9px; - background:transparent url(lighting/button-close-grey.png) no-repeat 0 0; - position:absolute; - top:11px; - right:10px; - cursor:pointer; - z-index:1000; -} - -.greylighting_maximize { - width:15px; - height:9px; - background:transparent url(lighting/button-maximize-grey.png) no-repeat 0 0; - position:absolute; - top:11px; - right:25px; - cursor:pointer; - z-index:1000; -} - -.greylighting_minimize { - width:15px; - height:9px; - background:transparent url(lighting/button-minimize-grey.png) no-repeat 0 0; - position:absolute; - top:11px; - right:40px; - cursor:pointer; - z-index:1000; -} - -.greylighting_title { - float:left; - height:14px; - font-size:14px; - font-weight:bold; - font-family:Verdana, Arial, sans-serif; - text-align:center; - margin-top:2px; - width:100%; - color:#525252; -} - -.greylighting_content { - overflow:auto; - color:#000; - font-family:Verdana, Arial, sans-serif; - font-size:12px; - background:#CDCDCD; -} - -/* For alert/confirm dialog */ -.greylighting_window { - border:1px solid #F00; - background:#FFF; - padding:20px; - margin-left:auto; - margin-right:auto; - width:400px; -} - -.greylighting_message { - font-size:12px; - text-align:center; - width:100%; - padding-bottom:10px; -} - -.greylighting_buttons { - text-align:center; - width:100%; -} - -.greylighting_buttons input { - border:1px solid #999; - border-top-color:#CCC; - border-left-color:#CCC; - padding:2px; - background-color:#FFF; - color:#333; - background-image:url(lighting/background_buttons.gif); - background-repeat:repeat-x; - font-family:Verdana, Arial, sans-serif; - font-size:10px; - font-weight:bold; - text-align:center; -} - -.greylighting_progress { - float:left; - margin:auto; - text-align:center; - width:100%; - height:16px; - background:transparent url('lighting/spinner.gif') no-repeat center center -} - -/* FOR IE */ -* html .greylighting_nw { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-left-grey.png", sizingMethod="crop"); -} - -* html .greylighting_n { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-middle-grey.png", sizingMethod="scale"); -} - -* html .greylighting_ne { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-right-grey.png", sizingMethod="crop"); -} - -* html .greylighting_w { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/left-grey.png", sizingMethod="scale"); -} - -* html .greylighting_e { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/right-grey.png", sizingMethod="scale"); -} - -* html .greylighting_sw { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-left-grey.png", sizingMethod="crop"); -} - -* html .greylighting_s { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-middle-grey.png", sizingMethod="scale"); -} - -* html greylighting_se, * html .greylighting_sizer { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-right-grey.png", sizingMethod="crop"); -} - -* html .greylighting_close { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-close-grey.png", sizingMethod="crop"); -} - -* html .greylighting_minimize { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-minimize-grey.png", sizingMethod="crop"); -} - -* html .greylighting_maximize { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-maximize-grey.png", sizingMethod="crop"); -} - -* html .greylighting_content { - background:#C7C7C7; -} - - - -.overlay_greenlighting { - background-color:#FFF; - filter:alpha(opacity=60); - -moz-opacity:0.6; - opacity:0.6; -} - -.greenlighting_wired_frame { - background:#FFF; - filter:alpha(opacity=60); - -moz-opacity:0.6; - opacity:0.6; -} - -.greenlighting_nw { - background:transparent url(lighting/top-left-green.png) no-repeat 0 0; - width:9px; - height:28px; -} - -.greenlighting_n { - background:transparent url(lighting/top-middle-green.png) repeat-x 0 0; - height:28px; -} - -.greenlighting_ne { - background:transparent url(lighting/top-right-green.png) no-repeat 0 0; - width:15px; - height:28px; -} - -.greenlighting_w { - background:transparent url(lighting/left-green.png) repeat-y top left; - width:9px; -} - -.greenlighting_e { - background:transparent url(lighting/right-green.png) repeat-y top right; - width:15px; -} - -.greenlighting_sw { - background:transparent url(lighting/bottom-left-green.png) no-repeat 0 0; - width:9px; - height:15px; -} - -.greenlighting_s { - background:transparent url(lighting/bottom-middle-green.png) repeat-x 0 0; - height:15px; -} - -.greenlighting_se, .greenlighting_sizer { - background:transparent url(lighting/bottom-right-green.png) no-repeat 0 0; - width:15px; - height:15px; -} - -.greenlighting_sizer { - cursor:se-resize; -} - -.greenlighting_close { - width:15px; - height:9px; - background:transparent url(lighting/button-close-green.png) no-repeat 0 0; - position:absolute; - top:11px; - right:10px; - cursor:pointer; - z-index:1000; -} - -.greenlighting_maximize { - width:15px; - height:9px; - background:transparent url(lighting/button-maximize-green.png) no-repeat 0 0; - position:absolute; - top:11px; - right:25px; - cursor:pointer; - z-index:1000; -} - -.greenlighting_minimize { - width:15px; - height:9px; - background:transparent url(lighting/button-minimize-green.png) no-repeat 0 0; - position:absolute; - top:11px; - right:40px; - cursor:pointer; - z-index:1000; -} - -.greenlighting_title { - float:left; - height:14px; - font-size:14px; - font-weight:bold; - font-family:Verdana, Arial, sans-serif; - text-align:center; - margin-top:2px; - width:100%; - color:#2A6002; -} - -.greenlighting_content { - overflow:auto; - color:#000; - font-family:Verdana, Arial, sans-serif; - font-size:12px; - background:#ACFCAF; -} - -/* For alert/confirm dialog */ -.greenlighting_window { - border:1px solid #F00; - background:#FFF; - padding:20px; - margin-left:auto; - margin-right:auto; - width:400px; -} - -.greenlighting_message { - font-size:12px; - text-align:center; - width:100%; - padding-bottom:10px; -} - -.greenlighting_buttons { - text-align:center; - width:100%; -} - -.greenlighting_buttons input { - border:1px solid #999; - border-top-color:#CCC; - border-left-color:#CCC; - padding:2px; - background-color:#FFF; - color:#333; - background-image:url(lighting/background_buttons.gif); - background-repeat:repeat-x; - font-family:Verdana, Arial, sans-serif; - font-size:10px; - font-weight:bold; - text-align:center; -} - -.greenlighting_progress { - float:left; - margin:auto; - text-align:center; - width:100%; - height:16px; - background:transparent url('lighting/spinner.gif') no-repeat center center -} - -/* FOR IE */ -* html .greenlighting_nw { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-left-green.png", sizingMethod="crop"); -} - -* html .greenlighting_n { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-middle-green.png", sizingMethod="scale"); -} - -* html .greenlighting_ne { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-right-green.png", sizingMethod="crop"); -} - -* html .greenlighting_w { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/left-green.png", sizingMethod="scale"); -} - -* html .greenlighting_e { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/right-green.png", sizingMethod="scale"); -} - -* html .greenlighting_sw { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-left-green.png", sizingMethod="crop"); -} - -* html .greenlighting_s { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-middle-green.png", sizingMethod="scale"); -} - -* html greenlighting_se, * html .greenlighting_sizer { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-right-green.png", sizingMethod="crop"); -} - -* html .greenlighting_close { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-close-green.png", sizingMethod="crop"); -} - -* html .greenlighting_minimize { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-minimize-green.png", sizingMethod="crop"); -} - -* html .greenlighting_maximize { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-maximize-green.png", sizingMethod="crop"); -} - -* html .greenlighting_content { - background:#A4FCA7; -} - - - -.overlay_darkbluelighting { - background-color:#FFF; - filter:alpha(opacity=60); - -moz-opacity:0.6; - opacity:0.6; -} - -.darkbluelighting_wired_frame { - background:#FFF; - filter:alpha(opacity=60); - -moz-opacity:0.6; - opacity:0.6; -} - -.darkbluelighting_nw { - background:transparent url(lighting/top-left-darkblue.png) no-repeat 0 0; - width:9px; - height:28px; -} - -.darkbluelighting_n { - background:transparent url(lighting/top-middle-darkblue.png) repeat-x 0 0; - height:28px; -} - -.darkbluelighting_ne { - background:transparent url(lighting/top-right-darkblue.png) no-repeat 0 0; - width:15px; - height:28px; -} - -.darkbluelighting_w { - background:transparent url(lighting/left-darkblue.png) repeat-y top left; - width:9px; -} - -.darkbluelighting_e { - background:transparent url(lighting/right-darkblue.png) repeat-y top right; - width:15px; -} - -.darkbluelighting_sw { - background:transparent url(lighting/bottom-left-darkblue.png) no-repeat 0 0; - width:9px; - height:15px; -} - -.darkbluelighting_s { - background:transparent url(lighting/bottom-middle-darkblue.png) repeat-x 0 0; - height:15px; -} - -.darkbluelighting_se, .darkbluelighting_sizer { - background:transparent url(lighting/bottom-right-darkblue.png) no-repeat 0 0; - width:15px; - height:15px; -} - -.darkbluelighting_sizer { - cursor:se-resize; -} - -.darkbluelighting_close { - width:15px; - height:9px; - background:transparent url(lighting/button-close-darkblue.png) no-repeat 0 0; - position:absolute; - top:11px; - right:10px; - cursor:pointer; - z-index:1000; -} - -.darkbluelighting_maximize { - width:15px; - height:9px; - background:transparent url(lighting/button-maximize-darkblue.png) no-repeat 0 0; - position:absolute; - top:11px; - right:25px; - cursor:pointer; - z-index:1000; -} - -.darkbluelighting_minimize { - width:15px; - height:9px; - background:transparent url(lighting/button-minimize-darkblue.png) no-repeat 0 0; - position:absolute; - top:11px; - right:40px; - cursor:pointer; - z-index:1000; -} - -.darkbluelighting_title { - float:left; - height:14px; - font-size:14px; - font-weight:bold; - font-family:Verdana, Arial, sans-serif; - text-align:center; - margin-top:2px; - width:100%; - color:#E4EFFD; -} - -.darkbluelighting_content { - overflow:auto; - color:#FFF; - font-family:Verdana, Arial, sans-serif; - font-size:12px; - background:#0413C0; -} - -/* For alert/confirm dialog */ -.darkbluelighting_window { - border:1px solid #F00; - background:#FFF; - padding:20px; - margin-left:auto; - margin-right:auto; - width:400px; -} - -.darkbluelighting_message { - font-size:12px; - text-align:center; - width:100%; - padding-bottom:10px; -} - -.darkbluelighting_buttons { - text-align:center; - width:100%; -} - -.darkbluelighting_buttons input { - border:1px solid #999; - border-top-color:#CCC; - border-left-color:#CCC; - padding:2px; - background-color:#FFF; - color:#333; - background-image:url(lighting/background_buttons.gif); - background-repeat:repeat-x; - font-family:Verdana, Arial, sans-serif; - font-size:10px; - font-weight:bold; - text-align:center; -} - -.darkbluelighting_progress { - float:left; - margin:auto; - text-align:center; - width:100%; - height:16px; - background:transparent url('lighting/spinner.gif') no-repeat center center -} - -/* FOR IE */ -* html .darkbluelighting_nw { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-left-darkblue.png", sizingMethod="crop"); -} - -* html .darkbluelighting_n { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-middle-darkblue.png", sizingMethod="scale"); -} - -* html .darkbluelighting_ne { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-right-darkblue.png", sizingMethod="crop"); -} - -* html .darkbluelighting_w { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/left-darkblue.png", sizingMethod="scale"); -} - -* html .darkbluelighting_e { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/right-darkblue.png", sizingMethod="scale"); -} - -* html .darkbluelighting_sw { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-left-darkblue.png", sizingMethod="crop"); -} - -* html .darkbluelighting_s { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-middle-darkblue.png", sizingMethod="scale"); -} - -* html darkbluelighting_se, * html .darkbluelighting_sizer { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-right-darkblue.png", sizingMethod="crop"); -} - -* html .darkbluelighting_close { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-close-darkblue.png", sizingMethod="crop"); -} - -* html .darkbluelighting_minimize { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-minimize-darkblue.png", sizingMethod="crop"); -} - -* html .darkbluelighting_maximize { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-maximize-darkblue.png", sizingMethod="crop"); -} - -* html .darkbluelighting_content { - background:#020EBA; -} - +.overlay___invisible__ { + background-color: #666; + filter:alpha(opacity=0); + -moz-opacity: 0; + opacity: 0; +} + +.top_draggable, .bottom_draggable { + cursor:move; +} + +.status_bar { + font-size:12px; +} +.status_bar input{ + font-size:12px; +} + +.wired_frame { + display:block; + position:absolute; + border:1px #000 dashed; +} + + + +.overlay_bluelighting { + background-color:#FFF; + filter:alpha(opacity=60); + -moz-opacity:0.6; + opacity:0.6; +} + +.bluelighting_wired_frame { + background:#FFF; + filter:alpha(opacity=60); + -moz-opacity:0.6; + opacity:0.6; +} + +.bluelighting_nw { + background:transparent url(lighting/top-left-blue.png) no-repeat 0 0; + width:9px; + height:28px; +} + +.bluelighting_n { + background:transparent url(lighting/top-middle-blue.png) repeat-x 0 0; + height:28px; +} + +.bluelighting_ne { + background:transparent url(lighting/top-right-blue.png) no-repeat 0 0; + width:15px; + height:28px; +} + +.bluelighting_w { + background:transparent url(lighting/left-blue.png) repeat-y top left; + width:9px; +} + +.bluelighting_e { + background:transparent url(lighting/right-blue.png) repeat-y top right; + width:15px; +} + +.bluelighting_sw { + background:transparent url(lighting/bottom-left-blue.png) no-repeat 0 0; + width:9px; + height:15px; +} + +.bluelighting_s { + background:transparent url(lighting/bottom-middle-blue.png) repeat-x 0 0; + height:15px; +} + +.bluelighting_se, .bluelighting_sizer { + background:transparent url(lighting/bottom-right-blue.png) no-repeat 0 0; + width:15px; + height:15px; +} + +.bluelighting_sizer { + cursor:se-resize; +} + +.bluelighting_close { + width:15px; + height:9px; + background:transparent url(lighting/button-close-blue.png) no-repeat 0 0; + position:absolute; + top:11px; + right:10px; + cursor:pointer; + z-index:1000; +} + +.bluelighting_maximize { + width:15px; + height:9px; + background:transparent url(lighting/button-maximize-blue.png) no-repeat 0 0; + position:absolute; + top:11px; + right:25px; + cursor:pointer; + z-index:1000; +} + +.bluelighting_minimize { + width:15px; + height:9px; + background:transparent url(lighting/button-minimize-blue.png) no-repeat 0 0; + position:absolute; + top:11px; + right:40px; + cursor:pointer; + z-index:1000; +} + +.bluelighting_title { + float:left; + height:14px; + font-size:14px; + font-weight:bold; + font-family:Verdana, Arial, sans-serif; + text-align:center; + margin-top:2px; + width:100%; + color:#17385B; +} + +.bluelighting_content { + overflow:auto; + color:#000; + font-family:Verdana, Arial, sans-serif; + font-size:12px; + background:#BFDBFF; +} + +/* For alert/confirm dialog */ +.bluelighting_window { + border:1px solid #F00; + background:#FFF; + padding:20px; + margin-left:auto; + margin-right:auto; + width:400px; +} + +.bluelighting_message { + font-size:12px; + text-align:center; + width:100%; + padding-bottom:10px; +} + +.bluelighting_buttons { + text-align:center; + width:100%; +} + +.bluelighting_buttons input { + border:1px solid #999; + border-top-color:#CCC; + border-left-color:#CCC; + padding:2px; + background-color:#FFF; + color:#333; + background-image:url(lighting/background_buttons.gif); + background-repeat:repeat-x; + font-family:Verdana, Arial, sans-serif; + font-size:10px; + font-weight:bold; + text-align:center; +} + +.bluelighting_progress { + float:left; + margin:auto; + text-align:center; + width:100%; + height:16px; + background:transparent url('lighting/spinner.gif') no-repeat center center +} + +/* FOR IE */ +* html .bluelighting_nw { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-left-blue.png", sizingMethod="crop"); +} + +* html .bluelighting_n { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-middle-blue.png", sizingMethod="scale"); +} + +* html .bluelighting_ne { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-right-blue.png", sizingMethod="crop"); +} + +* html .bluelighting_w { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/left-blue.png", sizingMethod="scale"); +} + +* html .bluelighting_e { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/right-blue.png", sizingMethod="scale"); +} + +* html .bluelighting_sw { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-left-blue.png", sizingMethod="crop"); +} + +* html .bluelighting_s { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-middle-blue.png", sizingMethod="scale"); +} + +* html .bluelighting_se, * html .bluelighting_sizer { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-right-blue.png", sizingMethod="crop"); +} + +* html .bluelighting_close { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-close-blue.png", sizingMethod="crop"); +} + +* html .bluelighting_minimize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-minimize-blue.png", sizingMethod="crop"); +} + +* html .bluelighting_maximize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-maximize-blue.png", sizingMethod="crop"); +} + +* html .bluelighting_content { + background:#B8D7FF; +} + + + +.overlay_greylighting { + background-color:#FFF; + filter:alpha(opacity=60); + -moz-opacity:0.6; + opacity:0.6; +} + +.greylighting_wired_frame { + background:#FFF; + filter:alpha(opacity=60); + -moz-opacity:0.6; + opacity:0.6; +} + +.greylighting_nw { + background:transparent url(lighting/top-left-grey.png) no-repeat 0 0; + width:9px; + height:28px; +} + +.greylighting_n { + background:transparent url(lighting/top-middle-grey.png) repeat-x 0 0; + height:28px; +} + +.greylighting_ne { + background:transparent url(lighting/top-right-grey.png) no-repeat 0 0; + width:15px; + height:28px; +} + +.greylighting_w { + background:transparent url(lighting/left-grey.png) repeat-y top left; + width:9px; +} + +.greylighting_e { + background:transparent url(lighting/right-grey.png) repeat-y top right; + width:15px; +} + +.greylighting_sw { + background:transparent url(lighting/bottom-left-grey.png) no-repeat 0 0; + width:9px; + height:15px; +} + +.greylighting_s { + background:transparent url(lighting/bottom-middle-grey.png) repeat-x 0 0; + height:15px; +} + +.greylighting_se, .greylighting_sizer { + background:transparent url(lighting/bottom-right-grey.png) no-repeat 0 0; + width:15px; + height:15px; +} + +.greylighting_sizer { + cursor:se-resize; +} + +.greylighting_close { + width:15px; + height:9px; + background:transparent url(lighting/button-close-grey.png) no-repeat 0 0; + position:absolute; + top:11px; + right:10px; + cursor:pointer; + z-index:1000; +} + +.greylighting_maximize { + width:15px; + height:9px; + background:transparent url(lighting/button-maximize-grey.png) no-repeat 0 0; + position:absolute; + top:11px; + right:25px; + cursor:pointer; + z-index:1000; +} + +.greylighting_minimize { + width:15px; + height:9px; + background:transparent url(lighting/button-minimize-grey.png) no-repeat 0 0; + position:absolute; + top:11px; + right:40px; + cursor:pointer; + z-index:1000; +} + +.greylighting_title { + float:left; + height:14px; + font-size:14px; + font-weight:bold; + font-family:Verdana, Arial, sans-serif; + text-align:center; + margin-top:2px; + width:100%; + color:#525252; +} + +.greylighting_content { + overflow:auto; + color:#000; + font-family:Verdana, Arial, sans-serif; + font-size:12px; + background:#CDCDCD; +} + +/* For alert/confirm dialog */ +.greylighting_window { + border:1px solid #F00; + background:#FFF; + padding:20px; + margin-left:auto; + margin-right:auto; + width:400px; +} + +.greylighting_message { + font-size:12px; + text-align:center; + width:100%; + padding-bottom:10px; +} + +.greylighting_buttons { + text-align:center; + width:100%; +} + +.greylighting_buttons input { + border:1px solid #999; + border-top-color:#CCC; + border-left-color:#CCC; + padding:2px; + background-color:#FFF; + color:#333; + background-image:url(lighting/background_buttons.gif); + background-repeat:repeat-x; + font-family:Verdana, Arial, sans-serif; + font-size:10px; + font-weight:bold; + text-align:center; +} + +.greylighting_progress { + float:left; + margin:auto; + text-align:center; + width:100%; + height:16px; + background:transparent url('lighting/spinner.gif') no-repeat center center +} + +/* FOR IE */ +* html .greylighting_nw { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-left-grey.png", sizingMethod="crop"); +} + +* html .greylighting_n { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-middle-grey.png", sizingMethod="scale"); +} + +* html .greylighting_ne { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-right-grey.png", sizingMethod="crop"); +} + +* html .greylighting_w { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/left-grey.png", sizingMethod="scale"); +} + +* html .greylighting_e { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/right-grey.png", sizingMethod="scale"); +} + +* html .greylighting_sw { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-left-grey.png", sizingMethod="crop"); +} + +* html .greylighting_s { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-middle-grey.png", sizingMethod="scale"); +} + +* html greylighting_se, * html .greylighting_sizer { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-right-grey.png", sizingMethod="crop"); +} + +* html .greylighting_close { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-close-grey.png", sizingMethod="crop"); +} + +* html .greylighting_minimize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-minimize-grey.png", sizingMethod="crop"); +} + +* html .greylighting_maximize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-maximize-grey.png", sizingMethod="crop"); +} + +* html .greylighting_content { + background:#C7C7C7; +} + + + +.overlay_greenlighting { + background-color:#FFF; + filter:alpha(opacity=60); + -moz-opacity:0.6; + opacity:0.6; +} + +.greenlighting_wired_frame { + background:#FFF; + filter:alpha(opacity=60); + -moz-opacity:0.6; + opacity:0.6; +} + +.greenlighting_nw { + background:transparent url(lighting/top-left-green.png) no-repeat 0 0; + width:9px; + height:28px; +} + +.greenlighting_n { + background:transparent url(lighting/top-middle-green.png) repeat-x 0 0; + height:28px; +} + +.greenlighting_ne { + background:transparent url(lighting/top-right-green.png) no-repeat 0 0; + width:15px; + height:28px; +} + +.greenlighting_w { + background:transparent url(lighting/left-green.png) repeat-y top left; + width:9px; +} + +.greenlighting_e { + background:transparent url(lighting/right-green.png) repeat-y top right; + width:15px; +} + +.greenlighting_sw { + background:transparent url(lighting/bottom-left-green.png) no-repeat 0 0; + width:9px; + height:15px; +} + +.greenlighting_s { + background:transparent url(lighting/bottom-middle-green.png) repeat-x 0 0; + height:15px; +} + +.greenlighting_se, .greenlighting_sizer { + background:transparent url(lighting/bottom-right-green.png) no-repeat 0 0; + width:15px; + height:15px; +} + +.greenlighting_sizer { + cursor:se-resize; +} + +.greenlighting_close { + width:15px; + height:9px; + background:transparent url(lighting/button-close-green.png) no-repeat 0 0; + position:absolute; + top:11px; + right:10px; + cursor:pointer; + z-index:1000; +} + +.greenlighting_maximize { + width:15px; + height:9px; + background:transparent url(lighting/button-maximize-green.png) no-repeat 0 0; + position:absolute; + top:11px; + right:25px; + cursor:pointer; + z-index:1000; +} + +.greenlighting_minimize { + width:15px; + height:9px; + background:transparent url(lighting/button-minimize-green.png) no-repeat 0 0; + position:absolute; + top:11px; + right:40px; + cursor:pointer; + z-index:1000; +} + +.greenlighting_title { + float:left; + height:14px; + font-size:14px; + font-weight:bold; + font-family:Verdana, Arial, sans-serif; + text-align:center; + margin-top:2px; + width:100%; + color:#2A6002; +} + +.greenlighting_content { + overflow:auto; + color:#000; + font-family:Verdana, Arial, sans-serif; + font-size:12px; + background:#ACFCAF; +} + +/* For alert/confirm dialog */ +.greenlighting_window { + border:1px solid #F00; + background:#FFF; + padding:20px; + margin-left:auto; + margin-right:auto; + width:400px; +} + +.greenlighting_message { + font-size:12px; + text-align:center; + width:100%; + padding-bottom:10px; +} + +.greenlighting_buttons { + text-align:center; + width:100%; +} + +.greenlighting_buttons input { + border:1px solid #999; + border-top-color:#CCC; + border-left-color:#CCC; + padding:2px; + background-color:#FFF; + color:#333; + background-image:url(lighting/background_buttons.gif); + background-repeat:repeat-x; + font-family:Verdana, Arial, sans-serif; + font-size:10px; + font-weight:bold; + text-align:center; +} + +.greenlighting_progress { + float:left; + margin:auto; + text-align:center; + width:100%; + height:16px; + background:transparent url('lighting/spinner.gif') no-repeat center center +} + +/* FOR IE */ +* html .greenlighting_nw { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-left-green.png", sizingMethod="crop"); +} + +* html .greenlighting_n { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-middle-green.png", sizingMethod="scale"); +} + +* html .greenlighting_ne { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-right-green.png", sizingMethod="crop"); +} + +* html .greenlighting_w { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/left-green.png", sizingMethod="scale"); +} + +* html .greenlighting_e { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/right-green.png", sizingMethod="scale"); +} + +* html .greenlighting_sw { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-left-green.png", sizingMethod="crop"); +} + +* html .greenlighting_s { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-middle-green.png", sizingMethod="scale"); +} + +* html greenlighting_se, * html .greenlighting_sizer { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-right-green.png", sizingMethod="crop"); +} + +* html .greenlighting_close { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-close-green.png", sizingMethod="crop"); +} + +* html .greenlighting_minimize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-minimize-green.png", sizingMethod="crop"); +} + +* html .greenlighting_maximize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-maximize-green.png", sizingMethod="crop"); +} + +* html .greenlighting_content { + background:#A4FCA7; +} + + + +.overlay_darkbluelighting { + background-color:#FFF; + filter:alpha(opacity=60); + -moz-opacity:0.6; + opacity:0.6; +} + +.darkbluelighting_wired_frame { + background:#FFF; + filter:alpha(opacity=60); + -moz-opacity:0.6; + opacity:0.6; +} + +.darkbluelighting_nw { + background:transparent url(lighting/top-left-darkblue.png) no-repeat 0 0; + width:9px; + height:28px; +} + +.darkbluelighting_n { + background:transparent url(lighting/top-middle-darkblue.png) repeat-x 0 0; + height:28px; +} + +.darkbluelighting_ne { + background:transparent url(lighting/top-right-darkblue.png) no-repeat 0 0; + width:15px; + height:28px; +} + +.darkbluelighting_w { + background:transparent url(lighting/left-darkblue.png) repeat-y top left; + width:9px; +} + +.darkbluelighting_e { + background:transparent url(lighting/right-darkblue.png) repeat-y top right; + width:15px; +} + +.darkbluelighting_sw { + background:transparent url(lighting/bottom-left-darkblue.png) no-repeat 0 0; + width:9px; + height:15px; +} + +.darkbluelighting_s { + background:transparent url(lighting/bottom-middle-darkblue.png) repeat-x 0 0; + height:15px; +} + +.darkbluelighting_se, .darkbluelighting_sizer { + background:transparent url(lighting/bottom-right-darkblue.png) no-repeat 0 0; + width:15px; + height:15px; +} + +.darkbluelighting_sizer { + cursor:se-resize; +} + +.darkbluelighting_close { + width:15px; + height:9px; + background:transparent url(lighting/button-close-darkblue.png) no-repeat 0 0; + position:absolute; + top:11px; + right:10px; + cursor:pointer; + z-index:1000; +} + +.darkbluelighting_maximize { + width:15px; + height:9px; + background:transparent url(lighting/button-maximize-darkblue.png) no-repeat 0 0; + position:absolute; + top:11px; + right:25px; + cursor:pointer; + z-index:1000; +} + +.darkbluelighting_minimize { + width:15px; + height:9px; + background:transparent url(lighting/button-minimize-darkblue.png) no-repeat 0 0; + position:absolute; + top:11px; + right:40px; + cursor:pointer; + z-index:1000; +} + +.darkbluelighting_title { + float:left; + height:14px; + font-size:14px; + font-weight:bold; + font-family:Verdana, Arial, sans-serif; + text-align:center; + margin-top:2px; + width:100%; + color:#E4EFFD; +} + +.darkbluelighting_content { + overflow:auto; + color:#FFF; + font-family:Verdana, Arial, sans-serif; + font-size:12px; + background:#0413C0; +} + +/* For alert/confirm dialog */ +.darkbluelighting_window { + border:1px solid #F00; + background:#FFF; + padding:20px; + margin-left:auto; + margin-right:auto; + width:400px; +} + +.darkbluelighting_message { + font-size:12px; + text-align:center; + width:100%; + padding-bottom:10px; +} + +.darkbluelighting_buttons { + text-align:center; + width:100%; +} + +.darkbluelighting_buttons input { + border:1px solid #999; + border-top-color:#CCC; + border-left-color:#CCC; + padding:2px; + background-color:#FFF; + color:#333; + background-image:url(lighting/background_buttons.gif); + background-repeat:repeat-x; + font-family:Verdana, Arial, sans-serif; + font-size:10px; + font-weight:bold; + text-align:center; +} + +.darkbluelighting_progress { + float:left; + margin:auto; + text-align:center; + width:100%; + height:16px; + background:transparent url('lighting/spinner.gif') no-repeat center center +} + +/* FOR IE */ +* html .darkbluelighting_nw { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-left-darkblue.png", sizingMethod="crop"); +} + +* html .darkbluelighting_n { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-middle-darkblue.png", sizingMethod="scale"); +} + +* html .darkbluelighting_ne { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-right-darkblue.png", sizingMethod="crop"); +} + +* html .darkbluelighting_w { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/left-darkblue.png", sizingMethod="scale"); +} + +* html .darkbluelighting_e { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/right-darkblue.png", sizingMethod="scale"); +} + +* html .darkbluelighting_sw { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-left-darkblue.png", sizingMethod="crop"); +} + +* html .darkbluelighting_s { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-middle-darkblue.png", sizingMethod="scale"); +} + +* html darkbluelighting_se, * html .darkbluelighting_sizer { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-right-darkblue.png", sizingMethod="crop"); +} + +* html .darkbluelighting_close { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-close-darkblue.png", sizingMethod="crop"); +} + +* html .darkbluelighting_minimize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-minimize-darkblue.png", sizingMethod="crop"); +} + +* html .darkbluelighting_maximize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-maximize-darkblue.png", sizingMethod="crop"); +} + +* html .darkbluelighting_content { + background:#020EBA; +} + diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/pngbehavior.htc b/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/pngbehavior.htc index 92248c665..36ea182e7 100644 --- a/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/pngbehavior.htc +++ b/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/pngbehavior.htc @@ -1,67 +1,67 @@ - - - - - - - + diff --git a/public/assets/wechat/app.html b/public/assets/wechat/app.html index 0b68eb0e8..8e3d38005 100644 --- a/public/assets/wechat/app.html +++ b/public/assets/wechat/app.html @@ -17,12 +17,8 @@
        - - - - - + diff --git a/public/javascripts/wechat/app.js b/public/javascripts/wechat/app.js index 4e1df0381..1a734b8e8 100644 --- a/public/javascripts/wechat/app.js +++ b/public/javascripts/wechat/app.js @@ -4,7 +4,7 @@ var debug = false; //调试标志,如果在本地请置为true if(debug===true){ //apiUrl = 'http://localhost:3000/api/v1/'; - apiUrl = 'https://www.trustie.net/api/v1/'; + apiUrl = 'http://www.trustie.net/api/v1/'; } @@ -16,7 +16,7 @@ app.factory('auth', function($http,$routeParams, $cookies, $q){ } if(debug===true){ - _openid = "1"; + _openid = "orgVLv8TlS6e7FDiI6xdTGHRaaRo"; //guange的帐号 } var getOpenId = function() { @@ -478,24 +478,13 @@ app.directive('inputAuto',function(){ } }); -app.directive('loadingSpinner', function ($http) { +app.directive('loadingSpinner', ['$http', function ($http) { return { restrict: 'A', replace: true, - template: '
        加载中...
        ', - link: function (scope, element, attrs) { - - scope.$watch('activeCalls', function (newVal, oldVal) { - if (newVal == 0) { - $(element).hide(); - } - else { - $(element).show(); - } - }); - } + template: '
        加载中...
        ', }; -}); +}]); app.config(['$routeProvider',"$httpProvider", "$locationProvider",function ($routeProvider, $httpProvider, $locationProvider) { var rootPath = '/assets/wechat/' diff --git a/public/javascripts/wechat/build/angular.all.min.js b/public/javascripts/wechat/build/angular.all.min.js new file mode 100644 index 000000000..72e4e89cd --- /dev/null +++ b/public/javascripts/wechat/build/angular.all.min.js @@ -0,0 +1,8 @@ +!function(e,t,n){"use strict";function r(e,t){return t=t||Error,function(){var n,r,i=2,o=arguments,a=o[0],s="["+(e?e+":":"")+a+"] ",u=o[1];for(s+=u.replace(/\{\d+\}/g,function(e){var t=+e.slice(1,-1),n=t+i;return n0&&t-1 in e}function o(e,t,n){var r,a;if(e)if(k(e))for(r in e)"prototype"==r||"length"==r||"name"==r||e.hasOwnProperty&&!e.hasOwnProperty(r)||t.call(n,e[r],r,e);else if(Ir(e)||i(e)){var s="object"!=typeof e;for(r=0,a=e.length;a>r;r++)(s||r in e)&&t.call(n,e[r],r,e)}else if(e.forEach&&e.forEach!==o)e.forEach(t,n,e);else if(x(e))for(r in e)t.call(n,e[r],r,e);else if("function"==typeof e.hasOwnProperty)for(r in e)e.hasOwnProperty(r)&&t.call(n,e[r],r,e);else for(r in e)yr.call(e,r)&&t.call(n,e[r],r,e);return e}function a(e,t,n){for(var r=Object.keys(e).sort(),i=0;ii;++i){var a=t[i];if(w(a)||k(a))for(var s=Object.keys(a),u=0,f=s.length;f>u;u++){var h=s[u],p=a[h];n&&w(p)?C(p)?e[h]=new Date(p.valueOf()):A(p)?e[h]=new RegExp(p):(w(e[h])||(e[h]=Ir(p)?[]:{}),l(e[h],[p],!0)):e[h]=p}}return c(e,r),e}function f(e){return l(e,Ar.call(arguments,1),!1)}function h(e){return l(e,Ar.call(arguments,1),!0)}function p(e){return parseInt(e,10)}function d(e,t){return f(Object.create(e),t)}function $(){}function v(e){return e}function m(e){return function(){return e}}function g(e){return k(e.toString)&&e.toString!==Object.prototype.toString}function y(e){return"undefined"==typeof e}function b(e){return"undefined"!=typeof e}function w(e){return null!==e&&"object"==typeof e}function x(e){return null!==e&&"object"==typeof e&&!Nr(e)}function S(e){return"string"==typeof e}function E(e){return"number"==typeof e}function C(e){return"[object Date]"===Tr.call(e)}function k(e){return"function"==typeof e}function A(e){return"[object RegExp]"===Tr.call(e)}function O(e){return e&&e.window===e}function M(e){return e&&e.$evalAsync&&e.$watch}function T(e){return"[object File]"===Tr.call(e)}function N(e){return"[object FormData]"===Tr.call(e)}function V(e){return"[object Blob]"===Tr.call(e)}function j(e){return"boolean"==typeof e}function P(e){return e&&k(e.then)}function D(e){return Rr.test(Tr.call(e))}function I(e){return!(!e||!(e.nodeName||e.prop&&e.attr&&e.find))}function R(e){var t,n={},r=e.split(",");for(t=0;t=0&&e.splice(n,1),n}function F(e,t,n,r){if(O(e)||M(e))throw Vr("cpws","Can't copy! Making copies of Window or Scope instances is not supported.");if(D(t))throw Vr("cpta","Can't copy! TypedArray destination cannot be mutated.");if(t){if(e===t)throw Vr("cpi","Can't copy! Source and destination are identical.");n=n||[],r=r||[],w(e)&&(n.push(e),r.push(t));var i;if(Ir(e)){t.length=0;for(var a=0;an;n++)t[n]=e[n]}else if(w(e)){t=t||{};for(var i in e)"$"===i.charAt(0)&&"$"===i.charAt(1)||(t[i]=e[i])}return t||e}function B(e,t){if(e===t)return!0;if(null===e||null===t)return!1;if(e!==e&&t!==t)return!0;var n,r,i,o=typeof e,a=typeof t;if(o==a&&"object"==o){if(!Ir(e)){if(C(e))return C(t)?B(e.getTime(),t.getTime()):!1;if(A(e))return A(t)?e.toString()==t.toString():!1;if(M(e)||M(t)||O(e)||O(t)||Ir(t)||C(t)||A(t))return!1;i=ve();for(r in e)if("$"!==r.charAt(0)&&!k(e[r])){if(!B(e[r],t[r]))return!1;i[r]=!0}for(r in t)if(!(r in i)&&"$"!==r.charAt(0)&&b(t[r])&&!k(t[r]))return!1;return!0}if(!Ir(t))return!1;if((n=e.length)==t.length){for(r=0;n>r;r++)if(!B(e[r],t[r]))return!1;return!0}}return!1}function H(e,t,n){return e.concat(Ar.call(t,n))}function L(e,t){return Ar.call(e,t||0)}function z(e,t){var n=arguments.length>2?L(arguments,2):[];return!k(t)||t instanceof RegExp?t:n.length?function(){return arguments.length?t.apply(e,H(n,arguments,0)):t.apply(e,n)}:function(){return arguments.length?t.apply(e,arguments):t.call(e)}}function W(e,r){var i=r;return"string"==typeof e&&"$"===e.charAt(0)&&"$"===e.charAt(1)?i=n:O(r)?i="$WINDOW":r&&t===r?i="$DOCUMENT":M(r)&&(i="$SCOPE"),i}function G(e,t){return"undefined"==typeof e?n:(E(t)||(t=t?2:null),JSON.stringify(e,W,t))}function Y(e){return S(e)?JSON.parse(e):e}function J(e,t){var n=Date.parse("Jan 01, 1970 00:00:00 "+e)/6e4;return isNaN(n)?t:n}function K(e,t){return e=new Date(e.getTime()),e.setMinutes(e.getMinutes()+t),e}function Z(e,t,n){n=n?-1:1;var r=J(t,e.getTimezoneOffset());return K(e,n*(r-e.getTimezoneOffset()))}function X(e){e=Er(e).clone();try{e.empty()}catch(t){}var n=Er("
        ").append(e).html();try{return e[0].nodeType===Gr?gr(n):n.match(/^(<[^>]+>)/)[1].replace(/^<([\w\-]+)/,function(e,t){return"<"+gr(t)})}catch(t){return gr(n)}}function Q(e){try{return decodeURIComponent(e)}catch(t){}}function ee(e){var t={};return o((e||"").split("&"),function(e){var n,r,i;e&&(r=e=e.replace(/\+/g,"%20"),n=e.indexOf("="),-1!==n&&(r=e.substring(0,n),i=e.substring(n+1)),r=Q(r),b(r)&&(i=b(i)?Q(i):!0,yr.call(t,r)?Ir(t[r])?t[r].push(i):t[r]=[t[r],i]:t[r]=i))}),t}function te(e){var t=[];return o(e,function(e,n){Ir(e)?o(e,function(e){t.push(re(n,!0)+(e===!0?"":"="+re(e,!0)))}):t.push(re(n,!0)+(e===!0?"":"="+re(e,!0)))}),t.length?t.join("&"):""}function ne(e){return re(e,!0).replace(/%26/gi,"&").replace(/%3D/gi,"=").replace(/%2B/gi,"+")}function re(e,t){return encodeURIComponent(e).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%3B/gi,";").replace(/%20/g,t?"%20":"+")}function ie(e,t){var n,r,i=Br.length;for(r=0;i>r;++r)if(n=Br[r]+t,S(n=e.getAttribute(n)))return n;return null}function oe(e,t){var n,r,i={};o(Br,function(t){var i=t+"app";!n&&e.hasAttribute&&e.hasAttribute(i)&&(n=e,r=e.getAttribute(i))}),o(Br,function(t){var i,o=t+"app";!n&&(i=e.querySelector("["+o.replace(":","\\:")+"]"))&&(n=i,r=i.getAttribute(o))}),n&&(i.strictDi=null!==ie(n,"strict-di"),t(n,r?[r]:[],i))}function ae(n,r,i){w(i)||(i={});var a={strictDi:!1};i=f(a,i);var s=function(){if(n=Er(n),n.injector()){var e=n[0]===t?"document":X(n);throw Vr("btstrpd","App Already Bootstrapped with this Element '{0}'",e.replace(//,">"))}r=r||[],r.unshift(["$provide",function(e){e.value("$rootElement",n)}]),i.debugInfoEnabled&&r.push(["$compileProvider",function(e){e.debugInfoEnabled(!0)}]),r.unshift("ng");var o=Xe(r,i.strictDi);return o.invoke(["$rootScope","$rootElement","$compile","$injector",function(e,t,n,r){e.$apply(function(){t.data("$injector",r),n(t)(e)})}]),o},u=/^NG_ENABLE_DEBUG_INFO!/,c=/^NG_DEFER_BOOTSTRAP!/;return e&&u.test(e.name)&&(i.debugInfoEnabled=!0,e.name=e.name.replace(u,"")),e&&!c.test(e.name)?s():(e.name=e.name.replace(c,""),jr.resumeBootstrap=function(e){return o(e,function(e){r.push(e)}),s()},void(k(jr.resumeDeferredBootstrap)&&jr.resumeDeferredBootstrap()))}function se(){e.name="NG_ENABLE_DEBUG_INFO!"+e.name,e.location.reload()}function ue(e){var t=jr.element(e).injector();if(!t)throw Vr("test","no injector found for element argument to getTestability");return t.get("$$testability")}function ce(e,t){return t=t||"_",e.replace(Hr,function(e,n){return(n?t:"")+e.toLowerCase()})}function le(){var t;if(!Lr){var r=Ur();Cr=y(r)?e.jQuery:r?e[r]:n,Cr&&Cr.fn.on?(Er=Cr,f(Cr.fn,{scope:fi.scope,isolateScope:fi.isolateScope,controller:fi.controller,injector:fi.injector,inheritedData:fi.inheritedData}),t=Cr.cleanData,Cr.cleanData=function(e){var n;if(Dr)Dr=!1;else for(var r,i=0;null!=(r=e[i]);i++)n=Cr._data(r,"events"),n&&n.$destroy&&Cr(r).triggerHandler("$destroy");t(e)}):Er=Oe,jr.element=Er,Lr=!0}}function fe(e,t,n){if(!e)throw Vr("areq","Argument '{0}' is {1}",t||"?",n||"required");return e}function he(e,t,n){return n&&Ir(e)&&(e=e[e.length-1]),fe(k(e),t,"not a function, got "+(e&&"object"==typeof e?e.constructor.name||"Object":typeof e)),e}function pe(e,t){if("hasOwnProperty"===e)throw Vr("badname","hasOwnProperty is not a valid {0} name",t)}function de(e,t,n){if(!t)return e;for(var r,i=t.split("."),o=e,a=i.length,s=0;a>s;s++)r=i[s],e&&(e=(o=e)[r]);return!n&&k(e)?z(o,e):e}function $e(e){for(var t,n=e[0],r=e[e.length-1],i=1;n!==r&&(n=n.nextSibling);i++)(t||e[i]!==n)&&(t||(t=Er(Ar.call(e,0,i))),t.push(n));return t||e}function ve(){return Object.create(null)}function me(e){function t(e,t,n){return e[t]||(e[t]=n())}var n=r("$injector"),i=r("ng"),o=t(e,"angular",Object);return o.$$minErr=o.$$minErr||r,t(o,"module",function(){var e={};return function(r,o,a){var s=function(e,t){if("hasOwnProperty"===e)throw i("badname","hasOwnProperty is not a valid {0} name",t)};return s(r,"module"),o&&e.hasOwnProperty(r)&&(e[r]=null),t(e,r,function(){function e(e,t,n,r){return r||(r=i),function(){return r[n||"push"]([e,t,arguments]),l}}function t(e,t){return function(n,o){return o&&k(o)&&(o.$$moduleName=r),i.push([e,t,arguments]),l}}if(!o)throw n("nomod","Module '{0}' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.",r);var i=[],s=[],u=[],c=e("$injector","invoke","push",s),l={_invokeQueue:i,_configBlocks:s,_runBlocks:u,requires:o,name:r,provider:t("$provide","provider"),factory:t("$provide","factory"),service:t("$provide","service"),value:e("$provide","value"),constant:e("$provide","constant","unshift"),decorator:t("$provide","decorator"),animation:t("$animateProvider","register"),filter:t("$filterProvider","register"),controller:t("$controllerProvider","register"),directive:t("$compileProvider","directive"),config:c,run:function(e){return u.push(e),this}};return a&&c(a),l})}})}function ge(e){var t=[];return JSON.stringify(e,function(e,n){if(n=W(e,n),w(n)){if(t.indexOf(n)>=0)return"...";t.push(n)}return n})}function ye(e){return"function"==typeof e?e.toString().replace(/ \{[\s\S]*$/,""):y(e)?"undefined":"string"!=typeof e?ge(e):e}function be(t){f(t,{bootstrap:ae,copy:F,extend:f,merge:h,equals:B,element:Er,forEach:o,injector:Xe,noop:$,bind:z,toJson:G,fromJson:Y,identity:v,isUndefined:y,isDefined:b,isString:S,isFunction:k,isObject:w,isNumber:E,isElement:I,isArray:Ir,version:Zr,isDate:C,lowercase:gr,uppercase:br,callbacks:{counter:0},getTestability:ue,$$minErr:r,$$csp:Fr,reloadWithDebugInfo:se}),(kr=me(e))("ng",["ngLocale"],["$provide",function(e){e.provider({$$sanitizeUri:$n}),e.provider("$compile",ut).directive({a:fo,input:Mo,textarea:Mo,form:mo,script:wa,select:Ea,style:ka,option:Ca,ngBind:Vo,ngBindHtml:Po,ngBindTemplate:jo,ngClass:Io,ngClassEven:_o,ngClassOdd:Ro,ngCloak:qo,ngController:Fo,ngForm:go,ngHide:$a,ngIf:Ho,ngInclude:Lo,ngInit:Wo,ngNonBindable:aa,ngPluralize:la,ngRepeat:fa,ngShow:da,ngStyle:va,ngSwitch:ma,ngSwitchWhen:ga,ngSwitchDefault:ya,ngOptions:ca,ngTransclude:ba,ngModel:ra,ngList:Go,ngChange:Do,pattern:Oa,ngPattern:Oa,required:Aa,ngRequired:Aa,minlength:Ta,ngMinlength:Ta,maxlength:Ma,ngMaxlength:Ma,ngValue:No,ngModelOptions:oa}).directive({ngInclude:zo}).directive(ho).directive(Uo),e.provider({$anchorScroll:Qe,$animate:ki,$animateCss:Ai,$$animateQueue:Ci,$$AnimateRunner:Ei,$browser:ot,$cacheFactory:at,$controller:pt,$document:dt,$exceptionHandler:$t,$filter:Mn,$$forceReflow:Vi,$interpolate:Mt,$interval:Tt,$http:Ct,$httpParamSerializer:mt,$httpParamSerializerJQLike:gt,$httpBackend:At,$location:Lt,$log:zt,$parse:cn,$rootScope:dn,$q:ln,$$q:fn,$sce:yn,$sceDelegate:gn,$sniffer:bn,$templateCache:st,$templateRequest:wn,$$testability:xn,$timeout:Sn,$window:kn,$$rAF:pn,$$jqLite:Ge,$$HashMap:$i,$$cookieReader:On})}])}function we(){return++Qr}function xe(e){return e.replace(ni,function(e,t,n,r){return r?n.toUpperCase():n}).replace(ri,"Moz$1")}function Se(e){return!si.test(e)}function Ee(e){var t=e.nodeType;return t===zr||!t||t===Jr}function Ce(e){for(var t in Xr[e.ng339])return!0;return!1}function ke(e,t){var n,r,i,a,s=t.createDocumentFragment(),u=[];if(Se(e))u.push(t.createTextNode(e));else{for(n=n||s.appendChild(t.createElement("div")),r=(ui.exec(e)||["",""])[1].toLowerCase(),i=li[r]||li._default,n.innerHTML=i[1]+e.replace(ci,"<$1>")+i[2],a=i[0];a--;)n=n.lastChild;u=H(u,n.childNodes),n=s.firstChild,n.textContent=""}return s.textContent="",s.innerHTML="",o(u,function(e){s.appendChild(e)}),s}function Ae(e,n){n=n||t;var r;return(r=ai.exec(e))?[n.createElement(r[1])]:(r=ke(e,n))?r.childNodes:[]}function Oe(e){if(e instanceof Oe)return e;var t;if(S(e)&&(e=_r(e),t=!0),!(this instanceof Oe)){if(t&&"<"!=e.charAt(0))throw oi("nosel","Looking up elements via selectors is not supported by jqLite! See: http://docs.angularjs.org/api/angular.element");return new Oe(e)}t?_e(this,Ae(e)):_e(this,e)}function Me(e){return e.cloneNode(!0)}function Te(e,t){if(t||Ve(e),e.querySelectorAll)for(var n=e.querySelectorAll("*"),r=0,i=n.length;i>r;r++)Ve(n[r])}function Ne(e,t,n,r){if(b(r))throw oi("offargs","jqLite#off() does not support the `selector` argument");var i=je(e),a=i&&i.events,s=i&&i.handle;if(s)if(t)o(t.split(" "),function(t){if(b(n)){var r=a[t];if(q(r||[],n),r&&r.length>0)return}ti(e,t,s),delete a[t]});else for(t in a)"$destroy"!==t&&ti(e,t,s),delete a[t]}function Ve(e,t){var r=e.ng339,i=r&&Xr[r];if(i){if(t)return void delete i.data[t];i.handle&&(i.events.$destroy&&i.handle({},"$destroy"),Ne(e)),delete Xr[r],e.ng339=n}}function je(e,t){var r=e.ng339,i=r&&Xr[r];return t&&!i&&(e.ng339=r=we(),i=Xr[r]={events:{},data:{},handle:n}),i}function Pe(e,t,n){if(Ee(e)){var r=b(n),i=!r&&t&&!w(t),o=!t,a=je(e,!i),s=a&&a.data;if(r)s[t]=n;else{if(o)return s;if(i)return s&&s[t];f(s,t)}}}function De(e,t){return e.getAttribute?(" "+(e.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ").indexOf(" "+t+" ")>-1:!1}function Ie(e,t){t&&e.setAttribute&&o(t.split(" "),function(t){e.setAttribute("class",_r((" "+(e.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ").replace(" "+_r(t)+" "," ")))})}function Re(e,t){if(t&&e.setAttribute){var n=(" "+(e.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ");o(t.split(" "),function(e){e=_r(e),-1===n.indexOf(" "+e+" ")&&(n+=e+" ")}),e.setAttribute("class",_r(n))}}function _e(e,t){if(t)if(t.nodeType)e[e.length++]=t;else{var n=t.length;if("number"==typeof n&&t.window!==t){if(n)for(var r=0;n>r;r++)e[e.length++]=t[r]}else e[e.length++]=t}}function qe(e,t){return Fe(e,"$"+(t||"ngController")+"Controller")}function Fe(e,t,n){e.nodeType==Jr&&(e=e.documentElement);for(var r=Ir(t)?t:[t];e;){for(var i=0,o=r.length;o>i;i++)if(b(n=Er.data(e,r[i])))return n;e=e.parentNode||e.nodeType===Kr&&e.host}}function Ue(e){for(Te(e,!0);e.firstChild;)e.removeChild(e.firstChild)}function Be(e,t){t||Te(e);var n=e.parentNode;n&&n.removeChild(e)}function He(t,n){n=n||e,"complete"===n.document.readyState?n.setTimeout(t):Er(n).on("load",t)}function Le(e,t){var n=hi[t.toLowerCase()];return n&&pi[_(e)]&&n}function ze(e){return di[e]}function We(e,t){var n=function(n,r){n.isDefaultPrevented=function(){return n.defaultPrevented};var i=t[r||n.type],o=i?i.length:0;if(o){if(y(n.immediatePropagationStopped)){var a=n.stopImmediatePropagation;n.stopImmediatePropagation=function(){n.immediatePropagationStopped=!0,n.stopPropagation&&n.stopPropagation(),a&&a.call(n)}}n.isImmediatePropagationStopped=function(){return n.immediatePropagationStopped===!0},o>1&&(i=U(i));for(var s=0;o>s;s++)n.isImmediatePropagationStopped()||i[s].call(e,n)}};return n.elem=e,n}function Ge(){this.$get=function(){return f(Oe,{hasClass:function(e,t){return e.attr&&(e=e[0]),De(e,t)},addClass:function(e,t){return e.attr&&(e=e[0]),Re(e,t)},removeClass:function(e,t){return e.attr&&(e=e[0]),Ie(e,t)}})}}function Ye(e,t){var n=e&&e.$$hashKey;if(n)return"function"==typeof n&&(n=e.$$hashKey()),n;var r=typeof e;return n="function"==r||"object"==r&&null!==e?e.$$hashKey=r+":"+(t||u)():r+":"+e}function Je(e,t){if(t){var n=0;this.nextUid=function(){return++n}}o(e,this.put,this)}function Ke(e){var t=e.toString().replace(yi,""),n=t.match(vi);return n?"function("+(n[1]||"").replace(/[\s\r\n]+/," ")+")":"fn"}function Ze(e,t,n){var r,i,a,s;if("function"==typeof e){if(!(r=e.$inject)){if(r=[],e.length){if(t)throw S(n)&&n||(n=e.name||Ke(e)),bi("strictdi","{0} is not using explicit annotation and cannot be invoked in strict mode",n);i=e.toString().replace(yi,""),a=i.match(vi),o(a[1].split(mi),function(e){e.replace(gi,function(e,t,n){r.push(n)})})}e.$inject=r}}else Ir(e)?(s=e.length-1,he(e[s],"fn"),r=e.slice(0,s)):he(e,"fn",!0);return r}function Xe(e,t){function r(e){return function(t,n){return w(t)?void o(t,s(e)):e(t,n)}}function i(e,t){if(pe(e,"service"),(k(t)||Ir(t))&&(t=E.instantiate(t)),!t.$get)throw bi("pget","Provider '{0}' must define $get factory method.",e);return x[e+v]=t}function a(e,t){return function(){var n=A.invoke(t,this);if(y(n))throw bi("undef","Provider '{0}' must return a value from $get factory method.",e);return n}}function u(e,t,n){return i(e,{$get:n!==!1?a(e,t):t})}function c(e,t){return u(e,["$injector",function(e){return e.instantiate(t)}])}function l(e,t){return u(e,m(t),!1)}function f(e,t){pe(e,"constant"),x[e]=t,C[e]=t}function h(e,t){var n=E.get(e+v),r=n.$get;n.$get=function(){var e=A.invoke(r,n);return A.invoke(t,null,{$delegate:e})}}function p(e){fe(y(e)||Ir(e),"modulesToLoad","not an array");var t,n=[];return o(e,function(e){function r(e){var t,n;for(t=0,n=e.length;n>t;t++){var r=e[t],i=E.get(r[0]);i[r[1]].apply(i,r[2])}}if(!b.get(e)){b.put(e,!0);try{S(e)?(t=kr(e),n=n.concat(p(t.requires)).concat(t._runBlocks),r(t._invokeQueue),r(t._configBlocks)):k(e)?n.push(E.invoke(e)):Ir(e)?n.push(E.invoke(e)):he(e,"module")}catch(i){throw Ir(e)&&(e=e[e.length-1]),i.message&&i.stack&&-1==i.stack.indexOf(i.message)&&(i=i.message+"\n"+i.stack),bi("modulerr","Failed to instantiate module {0} due to:\n{1}",e,i.stack||i.message||i)}}}),n}function d(e,n){function r(t,r){if(e.hasOwnProperty(t)){if(e[t]===$)throw bi("cdep","Circular dependency found: {0}",t+" <- "+g.join(" <- "));return e[t]}try{return g.unshift(t),e[t]=$,e[t]=n(t,r)}catch(i){throw e[t]===$&&delete e[t],i}finally{g.shift()}}function i(e,n,i,o){"string"==typeof i&&(o=i,i=null);var a,s,u,c=[],l=Xe.$$annotate(e,t,o);for(s=0,a=l.length;a>s;s++){if(u=l[s],"string"!=typeof u)throw bi("itkn","Incorrect injection token! Expected service name as string, got {0}",u);c.push(i&&i.hasOwnProperty(u)?i[u]:r(u,o))}return Ir(e)&&(e=e[a]),e.apply(n,c)}function o(e,t,n){var r=Object.create((Ir(e)?e[e.length-1]:e).prototype||null),o=i(e,r,t,n);return w(o)||k(o)?o:r}return{invoke:i,instantiate:o,get:r,annotate:Xe.$$annotate,has:function(t){return x.hasOwnProperty(t+v)||e.hasOwnProperty(t)}}}t=t===!0;var $={},v="Provider",g=[],b=new Je([],!0),x={$provide:{provider:r(i),factory:r(u),service:r(c),value:r(l),constant:r(f),decorator:h}},E=x.$injector=d(x,function(e,t){throw jr.isString(t)&&g.push(t),bi("unpr","Unknown provider: {0}",g.join(" <- "))}),C={},A=C.$injector=d(C,function(e,t){var r=E.get(e+v,t);return A.invoke(r.$get,r,n,e)});return o(p(e),function(e){e&&A.invoke(e)}),A}function Qe(){var e=!0;this.disableAutoScrolling=function(){e=!1},this.$get=["$window","$location","$rootScope",function(t,n,r){function i(e){var t=null;return Array.prototype.some.call(e,function(e){return"a"===_(e)?(t=e,!0):void 0}),t}function o(){var e=s.yOffset;if(k(e))e=e();else if(I(e)){var n=e[0],r=t.getComputedStyle(n);e="fixed"!==r.position?0:n.getBoundingClientRect().bottom}else E(e)||(e=0);return e}function a(e){if(e){e.scrollIntoView();var n=o();if(n){var r=e.getBoundingClientRect().top;t.scrollBy(0,r-n)}}else t.scrollTo(0,0)}function s(e){e=S(e)?e:n.hash();var t;e?(t=u.getElementById(e))?a(t):(t=i(u.getElementsByName(e)))?a(t):"top"===e&&a(null):a(null)}var u=t.document;return e&&r.$watch(function(){return n.hash()},function(e,t){e===t&&""===e||He(function(){r.$evalAsync(s)})}),s}]}function et(e,t){return e||t?e?t?(Ir(e)&&(e=e.join(" ")),Ir(t)&&(t=t.join(" ")),e+" "+t):e:t:""}function tt(e){for(var t=0;tc&&this.remove(p.key),t}},get:function(e){if(c").parent()[0])});var a=P(e,t,e,n,r,i);V.$$addScopeClass(e);var s=null;return function(t,n,r){fe(t,"scope"),r=r||{};var i=r.parentBoundTranscludeFn,o=r.transcludeControllers,u=r.futureParentElement;i&&i.$$boundTransclude&&(i=i.$$boundTransclude),s||(s=j(u));var c;if(c="html"!==s?Er(Q(s,Er("
        ").append(e).html())):n?fi.clone.call(e):e,o)for(var l in o)c.data("$"+l+"Controller",o[l].instance);return V.$$addScopeInfo(c,t),n&&n(c,t),a&&a(t,c,c,i),c}}function j(e){var t=e&&e[0];return t&&"foreignobject"!==_(t)&&t.toString().match(/SVG/)?"svg":"html"}function P(e,t,r,i,o,a){function s(e,r,i,o){var a,s,u,c,l,f,h,p,v;if(d){var m=r.length;for(v=new Array(m),l=0;l<$.length;l+=3)h=$[l],v[h]=r[h]}else v=r;for(l=0,f=$.length;f>l;)if(u=v[$[l++]],a=$[l++],s=$[l++],a){if(a.scope){c=e.$new(),V.$$addScopeInfo(Er(u),c);var g=a.$$destroyBindings;g&&(a.$$destroyBindings=null,c.$on("$destroyed",g))}else c=e;p=a.transcludeOnThisElement?D(e,a.transclude,o):!a.templateOnThisElement&&o?o:!o&&t?D(e,t):null,a(s,c,u,i,p,a)}else s&&s(e,u.childNodes,n,o)}for(var u,c,l,f,h,p,d,$=[],v=0;vg;g++){var b=!1,x=!1;c=m[g],l=c.name,$=_r(c.value),d=ct(l),(v=he.test(d))&&(l=l.replace(Mi,"").substr(8).replace(/_(.)/g,function(e,t){return t.toUpperCase()}));var E=d.replace(/(Start|End)$/,"");W(E)&&d===E+"Start"&&(b=l,x=l.substr(0,l.length-5)+"end",l=l.substr(0,l.length-6)),f=ct(l.toLowerCase()),u[f]=l,!v&&n.hasOwnProperty(f)||(n[f]=$,Le(e,f)&&(n[f]=!0)),te(e,t,$,f,v),z(t,f,"A",r,i,b,x)}if(a=e.className,w(a)&&(a=a.animVal),S(a)&&""!==a)for(;o=p.exec(a);)f=ct(o[2]),z(t,f,"C",r,i)&&(n[f]=_r(o[3])),a=a.substr(o.index+o[0].length);break;case Gr:if(11===Sr)for(;e.parentNode&&e.nextSibling&&e.nextSibling.nodeType===Gr;)e.nodeValue=e.nodeValue+e.nextSibling.nodeValue,e.parentNode.removeChild(e.nextSibling);Z(t,e.nodeValue);break;case Yr:try{o=h.exec(e.nodeValue),o&&(f=ct(o[1]),z(t,f,"M",r,i)&&(n[f]=_r(o[2])))}catch(C){}}return t.sort(J),t}function R(e,t,n){var r=[],i=0;if(t&&e.hasAttribute&&e.hasAttribute(t)){do{if(!e)throw Oi("uterdir","Unterminated attribute, found '{0}' but no matching '{1}' found.",t,n);e.nodeType==zr&&(e.hasAttribute(t)&&i++,e.hasAttribute(n)&&i--),r.push(e),e=e.nextSibling}while(i>0)}else r.push(e);return Er(r)}function F(e,t,n){return function(r,i,o,a,s){return i=R(i[0],t,n),e(r,i,o,a,s)}}function U(e,r,o,a,s,c,l,f,h){function p(e,t,n,r){e&&(n&&(e=F(e,n,r)),e.require=m.require,e.directiveName=g,(T===m||m.$$isolateScope)&&(e=re(e,{isolateScope:!0})),l.push(e)),t&&(n&&(t=F(t,n,r)),t.require=m.require,t.directiveName=g,(T===m||m.$$isolateScope)&&(t=re(t,{isolateScope:!0})),f.push(t))}function d(e,t,n,r){var i;if(S(t)){var o=t.match(x),a=t.substring(o[0].length),s=o[1]||o[3],u="?"===o[2];if("^^"===s?n=n.parent():(i=r&&r[a],i=i&&i.instance),!i){var c="$"+a+"Controller";i=s?n.inheritedData(c):n.data(c)}if(!i&&!u)throw Oi("ctreq","Controller '{0}', required by directive '{1}', can't be found!",a,e)}else if(Ir(t)){i=[];for(var l=0,f=t.length;f>l;l++)i[l]=d(e,t[l],n,r)}return i||null}function $(e,t,n,r,i,o){var a=ve();for(var s in r){var c=r[s],l={$scope:c===T||c.$$isolateScope?i:o,$element:e,$attrs:t,$transclude:n},f=c.controller;"@"==f&&(f=t[c.name]);var h=u(f,l,!0,c.controllerAs);a[c.name]=h,_||e.data("$"+c.name+"Controller",h.instance)}return a}function v(e,t,i,a,s,u){function c(e,t,r){var i;return M(e)||(r=t,t=e,e=n),_&&(i=y),r||(r=_?w.parent():w),s(e,t,i,r,j)}var h,p,v,m,g,y,b,w,x;if(r===i?(x=o,w=o.$$element):(w=Er(i),x=new ae(w,o)),T&&(g=t.$new(!0)),s&&(b=c,b.$$boundTransclude=s),O&&(y=$(w,x,b,O,g,t)),T&&(V.$$addScopeInfo(w,g,!0,!(N&&(N===T||N===T.$$originalDirective))),V.$$addScopeClass(w,!0),g.$$isolateBindings=T.$$isolateBindings,oe(t,x,g,g.$$isolateBindings,T,g)),y){var S,E,C=T||A;C&&y[C.name]&&(S=C.$$bindings.bindToController,m=y[C.name],m&&m.identifier&&S&&(E=m,u.$$destroyBindings=oe(t,x,m.instance,S,C)));for(h in y){m=y[h];var k=m();k!==m.instance&&(m.instance=k,w.data("$"+h+"Controller",k),m===E&&(u.$$destroyBindings(),u.$$destroyBindings=oe(t,x,k,S,C)))}}for(h=0,p=l.length;p>h;h++)v=l[h],ie(v,v.isolateScope?g:t,w,x,v.require&&d(v.directiveName,v.require,w,y),b);var j=t;for(T&&(T.template||null===T.templateUrl)&&(j=g),e&&e(j,i.childNodes,n,s),h=f.length-1;h>=0;h--)v=f[h],ie(v,v.isolateScope?g:t,w,x,v.require&&d(v.directiveName,v.require,w,y),b)}h=h||{};for(var m,g,y,b,E,C=-Number.MAX_VALUE,A=h.newScopeDirective,O=h.controllerDirectives,T=h.newIsolateScopeDirective,N=h.templateDirective,j=h.nonTlbTranscludeDirective,P=!1,D=!1,_=h.hasElementTranscludeDirective,q=o.$$element=Er(r),U=c,B=a,z=0,W=e.length;W>z;z++){m=e[z];var J=m.$$start,Z=m.$$end;if(J&&(q=R(r,J,Z)),y=n,C>m.priority)break;if((E=m.scope)&&(m.templateUrl||(w(E)?(K("new/isolated scope",T||A,m,q),T=m):K("new/isolated scope",T,m,q)),A=A||m),g=m.name,!m.templateUrl&&m.controller&&(E=m.controller,O=O||ve(),K("'"+g+"' controller",O[g],m,q),O[g]=m), +(E=m.transclude)&&(P=!0,m.$$tlb||(K("transclusion",j,m,q),j=m),"element"==E?(_=!0,C=m.priority,y=q,q=o.$$element=Er(t.createComment(" "+g+": "+o[g]+" ")),r=q[0],ne(s,L(y),r),B=V(y,a,C,U&&U.name,{nonTlbTranscludeDirective:j})):(y=Er(Me(r)).contents(),q.empty(),B=V(y,a))),m.template)if(D=!0,K("template",N,m,q),N=m,E=k(m.template)?m.template(q,o):m.template,E=le(E),m.replace){if(U=m,y=Se(E)?[]:ft(Q(m.templateNamespace,_r(E))),r=y[0],1!=y.length||r.nodeType!==zr)throw Oi("tplrt","Template for directive '{0}' must have exactly one root element. {1}",g,"");ne(s,q,r);var ee={$attr:{}},te=I(r,[],ee),se=e.splice(z+1,e.length-(z+1));T&&H(te),e=e.concat(te).concat(se),G(o,ee),W=e.length}else q.html(E);if(m.templateUrl)D=!0,K("template",N,m,q),N=m,m.replace&&(U=m),v=Y(e.splice(z,e.length-z),q,o,s,P&&B,l,f,{controllerDirectives:O,newScopeDirective:A!==m&&A,newIsolateScopeDirective:T,templateDirective:N,nonTlbTranscludeDirective:j}),W=e.length;else if(m.compile)try{b=m.compile(q,o,B),k(b)?p(null,b,J,Z):b&&p(b.pre,b.post,J,Z)}catch(ue){i(ue,X(q))}m.terminal&&(v.terminal=!0,C=Math.max(C,m.priority))}return v.scope=A&&A.scope===!0,v.transcludeOnThisElement=P,v.templateOnThisElement=D,v.transclude=B,h.hasElementTranscludeDirective=_,v}function H(e){for(var t=0,n=e.length;n>t;t++)e[t]=d(e[t],{$$isolateScope:!0})}function z(t,n,r,o,a,s,u){if(n===a)return null;var f=null;if(c.hasOwnProperty(n))for(var h,p=e.get(n+l),$=0,v=p.length;v>$;$++)try{h=p[$],(y(o)||o>h.priority)&&-1!=h.restrict.indexOf(r)&&(s&&(h=d(h,{$$start:s,$$end:u})),t.push(h),f=h)}catch(m){i(m)}return f}function W(t){if(c.hasOwnProperty(t))for(var n,r=e.get(t+l),i=0,o=r.length;o>i;i++)if(n=r[i],n.multiElement)return!0;return!1}function G(e,t){var n=t.$attr,r=e.$attr,i=e.$$element;o(e,function(r,i){"$"!=i.charAt(0)&&(t[i]&&t[i]!==r&&(r+=("style"===i?";":" ")+t[i]),e.$set(i,r,!0,n[i]))}),o(t,function(t,o){"class"==o?(N(i,t),e["class"]=(e["class"]?e["class"]+" ":"")+t):"style"==o?(i.attr("style",i.attr("style")+";"+t),e.style=(e.style?e.style+";":"")+t):"$"==o.charAt(0)||e.hasOwnProperty(o)||(e[o]=t,r[o]=n[o])})}function Y(e,t,n,r,i,s,u,c){var l,f,h=[],p=t[0],$=e.shift(),v=d($,{templateUrl:null,transclude:null,replace:null,$$originalDirective:$}),m=k($.templateUrl)?$.templateUrl(t,n):$.templateUrl,g=$.templateNamespace;return t.empty(),a(m).then(function(a){var d,y,b,x;if(a=le(a),$.replace){if(b=Se(a)?[]:ft(Q(g,_r(a))),d=b[0],1!=b.length||d.nodeType!==zr)throw Oi("tplrt","Template for directive '{0}' must have exactly one root element. {1}",$.name,m);y={$attr:{}},ne(r,t,d);var S=I(d,[],y);w($.scope)&&H(S),e=S.concat(e),G(n,y)}else d=p,t.html(a);for(e.unshift(v),l=U(e,d,n,i,t,$,s,u,c),o(r,function(e,n){e==d&&(r[n]=t[0])}),f=P(t[0].childNodes,i);h.length;){var E=h.shift(),C=h.shift(),k=h.shift(),A=h.shift(),O=t[0];if(!E.$$destroyed){if(C!==p){var M=C.className;c.hasElementTranscludeDirective&&$.replace||(O=Me(d)),ne(k,Er(C),O),N(Er(O),M)}x=l.transcludeOnThisElement?D(E,l.transclude,A):A,l(f,E,O,r,x,l)}}h=null}),function(e,t,n,r,i){var o=i;t.$$destroyed||(h?h.push(t,n,r,o):(l.transcludeOnThisElement&&(o=D(t,l.transclude,i)),l(f,t,n,r,o,l)))}}function J(e,t){var n=t.priority-e.priority;return 0!==n?n:e.name!==t.name?e.name"+n+"",r.childNodes[0].childNodes;default:return n}}function ee(e,t){if("srcdoc"==t)return A.HTML;var n=_(e);return"xlinkHref"==t||"form"==n&&"action"==t||"img"!=n&&("src"==t||"ngSrc"==t)?A.RESOURCE_URL:void 0}function te(e,t,n,i,o){var a=ee(e,i);o=g[i]||o;var s=r(n,!0,a,o);if(s){if("multiple"===i&&"select"===_(e))throw Oi("selmulti","Binding to the 'multiple' attribute is not supported. Element: {0}",X(e));t.push({priority:100,compile:function(){return{pre:function(e,t,u){var c=u.$$observers||(u.$$observers={});if(E.test(i))throw Oi("nodomevents","Interpolations for HTML DOM event attributes are disallowed. Please use the ng- versions (such as ng-click instead of onclick) instead.");var l=u[i];l!==n&&(s=l&&r(l,!0,a,o),n=l),s&&(u[i]=s(e),(c[i]||(c[i]=[])).$$inter=!0,(u.$$observers&&u.$$observers[i].$$scope||e).$watch(s,function(e,t){"class"===i&&e!=t?u.$updateClass(e,t):u.$set(i,e)}))}}}})}}function ne(e,n,r){var i,o,a=n[0],s=n.length,u=a.parentNode;if(e)for(i=0,o=e.length;o>i;i++)if(e[i]==a){e[i++]=r;for(var c=i,l=c+s-1,f=e.length;f>c;c++,l++)f>l?e[c]=e[l]:delete e[c];e.length-=s-1,e.context===a&&(e.context=r);break}u&&u.replaceChild(r,a);var h=t.createDocumentFragment();h.appendChild(a),Er.hasData(a)&&(Er(r).data(Er(a).data()),Cr?(Dr=!0,Cr.cleanData([a])):delete Er.cache[a[Er.expando]]);for(var p=1,d=n.length;d>p;p++){var $=n[p];Er($).remove(),h.appendChild($),delete n[p]}n[0]=r,n.length=1}function re(e,t){return f(function(){return e.apply(null,arguments)},e,t)}function ie(e,t,n,r,o,a){try{e(t,n,r,o,a)}catch(s){i(s,X(n))}}function oe(e,t,n,i,a,u){var c;o(i,function(i,o){var u,l,f,h,p=i.attrName,d=i.optional,v=i.mode;switch(v){case"@":d||yr.call(t,p)||(n[o]=t[p]=void 0),t.$observe(p,function(e){S(e)&&(n[o]=e)}),t.$$observers[p].$$scope=e,S(t[p])&&(n[o]=r(t[p])(e));break;case"=":if(!yr.call(t,p)){if(d)break;t[p]=void 0}if(d&&!t[p])break;l=s(t[p]),h=l.literal?B:function(e,t){return e===t||e!==e&&t!==t},f=l.assign||function(){throw u=n[o]=l(e),Oi("nonassign","Expression '{0}' used with directive '{1}' is non-assignable!",t[p],a.name)},u=n[o]=l(e);var m=function(t){return h(t,n[o])||(h(t,u)?f(e,t=n[o]):n[o]=t),u=t};m.$stateful=!0;var g;g=i.collection?e.$watchCollection(t[p],m):e.$watch(s(t[p],m),null,l.literal),c=c||[],c.push(g);break;case"&":if(l=t.hasOwnProperty(p)?s(t[p]):$,l===$&&d)break;n[o]=function(t){return l(e,t)}}});var l=c?function(){for(var e=0,t=c.length;t>e;++e)c[e]()}:$;return u&&l!==$?(u.$on("$destroy",l),$):l}var ae=function(e,t){if(t){var n,r,i,o=Object.keys(t);for(n=0,r=o.length;r>n;n++)i=o[n],this[i]=t[i]}else this.$attr={};this.$$element=e};ae.prototype={$normalize:ct,$addClass:function(e){e&&e.length>0&&O.addClass(this.$$element,e)},$removeClass:function(e){e&&e.length>0&&O.removeClass(this.$$element,e)},$updateClass:function(e,t){var n=lt(e,t);n&&n.length&&O.addClass(this.$$element,n);var r=lt(t,e);r&&r.length&&O.removeClass(this.$$element,r)},$set:function(e,t,n,r){var a,s=this.$$element[0],u=Le(s,e),c=ze(e),l=e;if(u?(this.$$element.prop(e,t),r=u):c&&(this[c]=t,l=c),this[e]=t,r?this.$attr[e]=r:(r=this.$attr[e],r||(this.$attr[e]=r=ce(e,"-"))),a=_(this.$$element),"a"===a&&"href"===e||"img"===a&&"src"===e)this[e]=t=T(t,"src"===e);else if("img"===a&&"srcset"===e){for(var f="",h=_r(t),p=/(\s+\d+x\s*,|\s+\d+w\s*,|\s+,|,\s+)/,d=/\s/.test(h)?p:/(,)/,$=h.split(d),v=Math.floor($.length/2),m=0;v>m;m++){var g=2*m;f+=T(_r($[g]),!0),f+=" "+_r($[g+1])}var b=_r($[2*m]).split(/\s/);f+=T(_r(b[0]),!0),2===b.length&&(f+=" "+_r(b[1])),this[e]=t=f}n!==!1&&(null===t||y(t)?this.$$element.removeAttr(r):this.$$element.attr(r,t));var w=this.$$observers;w&&o(w[l],function(e){try{e(t)}catch(n){i(n)}})},$observe:function(e,t){var n=this,r=n.$$observers||(n.$$observers=ve()),i=r[e]||(r[e]=[]);return i.push(t),m.$evalAsync(function(){i.$$inter||!n.hasOwnProperty(e)||y(n[e])||t(n[e])}),function(){q(i,t)}}};var se=r.startSymbol(),ue=r.endSymbol(),le="{{"==se||"}}"==ue?v:function(e){return e.replace(/\{\{/g,se).replace(/}}/g,ue)},he=/^ngAttr[A-Z]/;return V.$$addBindingInfo=C?function(e,t){var n=e.data("$binding")||[];Ir(t)?n=n.concat(t):n.push(t),e.data("$binding",n)}:$,V.$$addBindingClass=C?function(e){N(e,"ng-binding")}:$,V.$$addScopeInfo=C?function(e,t,n,r){var i=n?r?"$isolateScopeNoTemplate":"$isolateScope":"$scope";e.data(i,t)}:$,V.$$addScopeClass=C?function(e,t){N(e,t?"ng-isolate-scope":"ng-scope")}:$,V}]}function ct(e){return xe(e.replace(Mi,""))}function lt(e,t){var n="",r=e.split(/\s+/),i=t.split(/\s+/);e:for(var o=0;o0?" ":"")+a}return n}function ft(e){e=Er(e);var t=e.length;if(1>=t)return e;for(;t--;){var n=e[t];n.nodeType===Yr&&Or.call(e,t,1)}return e}function ht(e,t){if(t&&S(t))return t;if(S(e)){var n=Ni.exec(e);if(n)return n[3]}}function pt(){var e={},t=!1;this.register=function(t,n){pe(t,"controller"),w(t)?f(e,t):e[t]=n},this.allowGlobals=function(){t=!0},this.$get=["$injector","$window",function(i,o){function a(e,t,n,i){if(!e||!w(e.$scope))throw r("$controller")("noscp","Cannot export controller '{0}' as '{1}'! No $scope object provided via `locals`.",i,t);e.$scope[t]=n}return function(r,s,u,c){var l,h,p,d;if(u=u===!0,c&&S(c)&&(d=c),S(r)){if(h=r.match(Ni),!h)throw Ti("ctrlfmt","Badly formed controller string '{0}'. Must match `__name__ as __id__` or `__name__`.",r);p=h[1],d=d||h[3],r=e.hasOwnProperty(p)?e[p]:de(s.$scope,p,!0)||(t?de(o,p,!0):n),he(r,p,!0)}if(u){var $=(Ir(r)?r[r.length-1]:r).prototype;l=Object.create($||null),d&&a(s,d,l,p||r.name);var v;return v=f(function(){var e=i.invoke(r,l,s,p);return e!==l&&(w(e)||k(e))&&(l=e,d&&a(s,d,l,p||r.name)),l},{instance:l,identifier:d})}return l=i.instantiate(r,s,p),d&&a(s,d,l,p||r.name),l}}]}function dt(){this.$get=["$window",function(e){return Er(e.document)}]}function $t(){this.$get=["$log",function(e){return function(t,n){e.error.apply(e,arguments)}}]}function vt(e){return w(e)?C(e)?e.toISOString():G(e):e}function mt(){this.$get=function(){return function(e){if(!e)return"";var t=[];return a(e,function(e,n){null===e||y(e)||(Ir(e)?o(e,function(e,r){t.push(re(n)+"="+re(vt(e)))}):t.push(re(n)+"="+re(vt(e))))}),t.join("&")}}}function gt(){this.$get=function(){return function(e){function t(e,r,i){null===e||y(e)||(Ir(e)?o(e,function(e,n){t(e,r+"["+(w(e)?n:"")+"]")}):w(e)&&!C(e)?a(e,function(e,n){t(e,r+(i?"":"[")+n+(i?"":"]"))}):n.push(re(r)+"="+re(vt(e))))}if(!e)return"";var n=[];return t(e,"",!0),n.join("&")}}}function yt(e,t){if(S(e)){var n=e.replace(Ri,"").trim();if(n){var r=t("Content-Type");(r&&0===r.indexOf(ji)||bt(n))&&(e=Y(n))}}return e}function bt(e){var t=e.match(Di);return t&&Ii[t[0]].test(e)}function wt(e){function t(e,t){e&&(r[e]=r[e]?r[e]+", "+t:t)}var n,r=ve();return S(e)?o(e.split("\n"),function(e){n=e.indexOf(":"),t(gr(_r(e.substr(0,n))),_r(e.substr(n+1)))}):w(e)&&o(e,function(e,n){t(gr(n),_r(e))}),r}function xt(e){var t;return function(n){if(t||(t=wt(e)),n){var r=t[gr(n)];return void 0===r&&(r=null),r}return t}}function St(e,t,n,r){return k(r)?r(e,t,n):(o(r,function(r){e=r(e,t,n)}),e)}function Et(e){return e>=200&&300>e}function Ct(){var e=this.defaults={transformResponse:[yt],transformRequest:[function(e){return!w(e)||T(e)||V(e)||N(e)?e:G(e)}],headers:{common:{Accept:"application/json, text/plain, */*"},post:U(Pi),put:U(Pi),patch:U(Pi)},xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",paramSerializer:"$httpParamSerializer"},t=!1;this.useApplyAsync=function(e){return b(e)?(t=!!e,this):t};var i=!0;this.useLegacyPromiseExtensions=function(e){return b(e)?(i=!!e,this):i};var a=this.interceptors=[];this.$get=["$httpBackend","$$cookieReader","$cacheFactory","$rootScope","$q","$injector",function(s,u,c,l,h,p){function d(t){function a(e){var t=f({},e);return e.data?t.data=St(e.data,e.headers,e.status,c.transformResponse):t.data=e.data,Et(e.status)?t:h.reject(t)}function s(e,t){var n,r={};return o(e,function(e,i){k(e)?(n=e(t),null!=n&&(r[i]=n)):r[i]=e}),r}function u(t){var n,r,i,o=e.headers,a=f({},t.headers);o=f({},o.common,o[gr(t.method)]);e:for(n in o){r=gr(n);for(i in a)if(gr(i)===r)continue e;a[n]=o[n]}return s(a,U(t))}if(!jr.isObject(t))throw r("$http")("badreq","Http request configuration must be an object. Received: {0}",t);var c=f({method:"get",transformRequest:e.transformRequest,transformResponse:e.transformResponse,paramSerializer:e.paramSerializer},t);c.headers=u(t),c.method=br(c.method),c.paramSerializer=S(c.paramSerializer)?p.get(c.paramSerializer):c.paramSerializer;var l=function(t){var r=t.headers,i=St(t.data,xt(r),n,t.transformRequest);return y(i)&&o(r,function(e,t){"content-type"===gr(t)&&delete r[t]}),y(t.withCredentials)&&!y(e.withCredentials)&&(t.withCredentials=e.withCredentials),m(t,i).then(a,a)},d=[l,n],$=h.when(c);for(o(E,function(e){(e.request||e.requestError)&&d.unshift(e.request,e.requestError),(e.response||e.responseError)&&d.push(e.response,e.responseError)});d.length;){var v=d.shift(),g=d.shift();$=$.then(v,g)}return i?($.success=function(e){return he(e,"fn"),$.then(function(t){e(t.data,t.status,t.headers,c)}),$},$.error=function(e){return he(e,"fn"),$.then(null,function(t){e(t.data,t.status,t.headers,c)}),$}):($.success=qi("success"),$.error=qi("error")),$}function $(e){o(arguments,function(e){d[e]=function(t,n){return d(f({},n||{},{method:e,url:t}))}})}function v(e){o(arguments,function(e){d[e]=function(t,n,r){return d(f({},r||{},{method:e,url:t,data:n}))}})}function m(r,i){function o(e,n,r,i){function o(){a(n,e,r,i)}p&&(Et(e)?p.put(E,[e,n,wt(r),i]):p.remove(E)),t?l.$applyAsync(o):(o(),l.$$phase||l.$apply())}function a(e,t,n,i){t=t>=-1?t:0,(Et(t)?v.resolve:v.reject)({data:e,status:t,headers:xt(n),config:r,statusText:i})}function c(e){a(e.data,e.status,U(e.headers()),e.statusText)}function f(){var e=d.pendingRequests.indexOf(r);-1!==e&&d.pendingRequests.splice(e,1)}var p,$,v=h.defer(),m=v.promise,S=r.headers,E=g(r.url,r.paramSerializer(r.params));if(d.pendingRequests.push(r),m.then(f,f),!r.cache&&!e.cache||r.cache===!1||"GET"!==r.method&&"JSONP"!==r.method||(p=w(r.cache)?r.cache:w(e.cache)?e.cache:x),p&&($=p.get(E),b($)?P($)?$.then(c,c):Ir($)?a($[1],$[0],U($[2]),$[3]):a($,200,{},"OK"):p.put(E,m)),y($)){var C=Cn(r.url)?u()[r.xsrfCookieName||e.xsrfCookieName]:n;C&&(S[r.xsrfHeaderName||e.xsrfHeaderName]=C),s(r.method,E,i,o,S,r.timeout,r.withCredentials,r.responseType)}return m}function g(e,t){return t.length>0&&(e+=(-1==e.indexOf("?")?"?":"&")+t),e}var x=c("$http");e.paramSerializer=S(e.paramSerializer)?p.get(e.paramSerializer):e.paramSerializer;var E=[];return o(a,function(e){E.unshift(S(e)?p.get(e):p.invoke(e))}),d.pendingRequests=[],$("get","delete","head","jsonp"),v("post","put","patch"),d.defaults=e,d}]}function kt(){return new e.XMLHttpRequest}function At(){this.$get=["$browser","$window","$document",function(e,t,n){return Ot(e,kt,e.defer,t.angular.callbacks,n[0])}]}function Ot(e,t,n,r,i){function a(e,t,n){var o=i.createElement("script"),a=null;return o.type="text/javascript",o.src=e,o.async=!0,a=function(e){ti(o,"load",a),ti(o,"error",a),i.body.removeChild(o),o=null;var s=-1,u="unknown";e&&("load"!==e.type||r[t].called||(e={type:"error"}),u=e.type,s="error"===e.type?404:200),n&&n(s,u)},ei(o,"load",a),ei(o,"error",a),i.body.appendChild(o),a}return function(i,s,u,c,l,f,h,p){function d(){g&&g(),w&&w.abort()}function v(t,r,i,o,a){b(E)&&n.cancel(E),g=w=null,t(r,i,o,a),e.$$completeOutstandingRequest($)}if(e.$$incOutstandingRequestCount(),s=s||e.url(),"jsonp"==gr(i)){var m="_"+(r.counter++).toString(36);r[m]=function(e){r[m].data=e,r[m].called=!0};var g=a(s.replace("JSON_CALLBACK","angular.callbacks."+m),m,function(e,t){v(c,e,r[m].data,"",t),r[m]=$})}else{var w=t();w.open(i,s,!0),o(l,function(e,t){b(e)&&w.setRequestHeader(t,e)}),w.onload=function(){var e=w.statusText||"",t="response"in w?w.response:w.responseText,n=1223===w.status?204:w.status;0===n&&(n=t?200:"file"==En(s).protocol?404:0),v(c,n,t,w.getAllResponseHeaders(),e)};var x=function(){v(c,-1,null,null,"")};if(w.onerror=x,w.onabort=x,h&&(w.withCredentials=!0),p)try{w.responseType=p}catch(S){if("json"!==p)throw S}w.send(y(u)?null:u)}if(f>0)var E=n(d,f);else P(f)&&f.then(d)}}function Mt(){var e="{{",t="}}";this.startSymbol=function(t){return t?(e=t,this):e},this.endSymbol=function(e){return e?(t=e,this):t},this.$get=["$parse","$exceptionHandler","$sce",function(n,r,i){function o(e){return"\\\\\\"+e}function a(n){return n.replace(h,e).replace(p,t)}function s(e){if(null==e)return"";switch(typeof e){case"string":break;case"number":e=""+e;break;default:e=G(e)}return e}function u(o,u,h,p){function d(e){try{return e=O(e),p&&!b(e)?e:s(e)}catch(t){r(Fi.interr(o,t))}}p=!!p;for(var $,v,m,g=0,w=[],x=[],S=o.length,E=[],C=[];S>g;){if(-1==($=o.indexOf(e,g))||-1==(v=o.indexOf(t,$+c))){g!==S&&E.push(a(o.substring(g)));break}g!==$&&E.push(a(o.substring(g,$))),m=o.substring($+c,v),w.push(m),x.push(n(m,d)),g=v+l,C.push(E.length),E.push("")}if(h&&E.length>1&&Fi.throwNoconcat(o),!u||w.length){var A=function(e){for(var t=0,n=w.length;n>t;t++){if(p&&y(e[t]))return;E[C[t]]=e[t]}return E.join("")},O=function(e){return h?i.getTrusted(h,e):i.valueOf(e)};return f(function(e){var t=0,n=w.length,i=new Array(n);try{for(;n>t;t++)i[t]=x[t](e);return A(i)}catch(a){r(Fi.interr(o,a))}},{exp:o,expressions:w,$$watchDelegate:function(e,t){var n;return e.$watchGroup(x,function(r,i){var o=A(r);k(t)&&t.call(this,o,r!==i?n:o,e),n=o})}})}}var c=e.length,l=t.length,h=new RegExp(e.replace(/./g,o),"g"),p=new RegExp(t.replace(/./g,o),"g");return u.startSymbol=function(){return e},u.endSymbol=function(){return t},u}]}function Tt(){this.$get=["$rootScope","$window","$q","$$q",function(e,t,n,r){function i(i,a,s,u){var c=arguments.length>4,l=c?L(arguments,4):[],f=t.setInterval,h=t.clearInterval,p=0,d=b(u)&&!u,$=(d?r:n).defer(),v=$.promise;return s=b(s)?s:0,v.then(null,null,c?function(){i.apply(null,l)}:i),v.$$intervalId=f(function(){$.notify(p++),s>0&&p>=s&&($.resolve(p),h(v.$$intervalId),delete o[v.$$intervalId]),d||e.$apply()},a),o[v.$$intervalId]=$,v}var o={};return i.cancel=function(e){return e&&e.$$intervalId in o?(o[e.$$intervalId].reject("canceled"),t.clearInterval(e.$$intervalId),delete o[e.$$intervalId],!0):!1},i}]}function Nt(e){for(var t=e.split("/"),n=t.length;n--;)t[n]=ne(t[n]);return t.join("/")}function Vt(e,t){var n=En(e);t.$$protocol=n.protocol,t.$$host=n.hostname,t.$$port=p(n.port)||Bi[n.protocol]||null}function jt(e,t){var n="/"!==e.charAt(0);n&&(e="/"+e);var r=En(e);t.$$path=decodeURIComponent(n&&"/"===r.pathname.charAt(0)?r.pathname.substring(1):r.pathname),t.$$search=ee(r.search),t.$$hash=decodeURIComponent(r.hash),t.$$path&&"/"!=t.$$path.charAt(0)&&(t.$$path="/"+t.$$path)}function Pt(e,t){return 0===t.indexOf(e)?t.substr(e.length):void 0}function Dt(e){var t=e.indexOf("#");return-1==t?e:e.substr(0,t)}function It(e){return e.replace(/(#.+)|#$/,"$1")}function Rt(e){return e.substr(0,Dt(e).lastIndexOf("/")+1)}function _t(e){return e.substring(0,e.indexOf("/",e.indexOf("//")+2))}function qt(e,t,n){this.$$html5=!0,n=n||"",Vt(e,this),this.$$parse=function(e){var n=Pt(t,e);if(!S(n))throw Hi("ipthprfx",'Invalid url "{0}", missing path prefix "{1}".',e,t);jt(n,this),this.$$path||(this.$$path="/"),this.$$compose()},this.$$compose=function(){var e=te(this.$$search),n=this.$$hash?"#"+ne(this.$$hash):"";this.$$url=Nt(this.$$path)+(e?"?"+e:"")+n,this.$$absUrl=t+this.$$url.substr(1)},this.$$parseLinkUrl=function(r,i){if(i&&"#"===i[0])return this.hash(i.slice(1)),!0;var o,a,s;return b(o=Pt(e,r))?(a=o,s=b(o=Pt(n,o))?t+(Pt("/",o)||o):e+a):b(o=Pt(t,r))?s=t+o:t==r+"/"&&(s=t),s&&this.$$parse(s),!!s}}function Ft(e,t,n){Vt(e,this),this.$$parse=function(r){function i(e,t,n){var r,i=/^\/[A-Z]:(\/.*)/;return 0===t.indexOf(n)&&(t=t.replace(n,"")),i.exec(t)?e:(r=i.exec(e),r?r[1]:e)}var o,a=Pt(e,r)||Pt(t,r);y(a)||"#"!==a.charAt(0)?this.$$html5?o=a:(o="",y(a)&&(e=r,this.replace())):(o=Pt(n,a),y(o)&&(o=a)),jt(o,this),this.$$path=i(this.$$path,o,e),this.$$compose()},this.$$compose=function(){var t=te(this.$$search),r=this.$$hash?"#"+ne(this.$$hash):"";this.$$url=Nt(this.$$path)+(t?"?"+t:"")+r,this.$$absUrl=e+(this.$$url?n+this.$$url:"")},this.$$parseLinkUrl=function(t,n){return Dt(e)==Dt(t)?(this.$$parse(t),!0):!1}}function Ut(e,t,n){this.$$html5=!0,Ft.apply(this,arguments),this.$$parseLinkUrl=function(r,i){if(i&&"#"===i[0])return this.hash(i.slice(1)),!0;var o,a;return e==Dt(r)?o=r:(a=Pt(t,r))?o=e+n+a:t===r+"/"&&(o=t),o&&this.$$parse(o),!!o},this.$$compose=function(){var t=te(this.$$search),r=this.$$hash?"#"+ne(this.$$hash):"";this.$$url=Nt(this.$$path)+(t?"?"+t:"")+r,this.$$absUrl=e+n+this.$$url}}function Bt(e){return function(){return this[e]}}function Ht(e,t){return function(n){return y(n)?this[e]:(this[e]=t(n),this.$$compose(),this)}}function Lt(){var e="",t={enabled:!1,requireBase:!0,rewriteLinks:!0};this.hashPrefix=function(t){return b(t)?(e=t,this):e},this.html5Mode=function(e){return j(e)?(t.enabled=e,this):w(e)?(j(e.enabled)&&(t.enabled=e.enabled),j(e.requireBase)&&(t.requireBase=e.requireBase),j(e.rewriteLinks)&&(t.rewriteLinks=e.rewriteLinks),this):t},this.$get=["$rootScope","$browser","$sniffer","$rootElement","$window",function(n,r,i,o,a){function s(e,t,n){var i=c.url(),o=c.$$state;try{r.url(e,t,n),c.$$state=r.state()}catch(a){throw c.url(i),c.$$state=o,a}}function u(e,t){n.$broadcast("$locationChangeSuccess",c.absUrl(),e,c.$$state,t)}var c,l,f,h=r.baseHref(),p=r.url();if(t.enabled){if(!h&&t.requireBase)throw Hi("nobase","$location in HTML5 mode requires a tag to be present!");f=_t(p)+(h||"/"),l=i.history?qt:Ut}else f=Dt(p),l=Ft;var d=Rt(f);c=new l(f,d,"#"+e),c.$$parseLinkUrl(p,p),c.$$state=r.state();var $=/^\s*(javascript|mailto):/i;o.on("click",function(e){if(t.rewriteLinks&&!e.ctrlKey&&!e.metaKey&&!e.shiftKey&&2!=e.which&&2!=e.button){for(var i=Er(e.target);"a"!==_(i[0]);)if(i[0]===o[0]||!(i=i.parent())[0])return;var s=i.prop("href"),u=i.attr("href")||i.attr("xlink:href");w(s)&&"[object SVGAnimatedString]"===s.toString()&&(s=En(s.animVal).href),$.test(s)||!s||i.attr("target")||e.isDefaultPrevented()||c.$$parseLinkUrl(s,u)&&(e.preventDefault(),c.absUrl()!=r.url()&&(n.$apply(),a.angular["ff-684208-preventDefault"]=!0))}}),It(c.absUrl())!=It(p)&&r.url(c.absUrl(),!0);var v=!0;return r.onUrlChange(function(e,t){return y(Pt(d,e))?void(a.location.href=e):(n.$evalAsync(function(){var r,i=c.absUrl(),o=c.$$state;c.$$parse(e),c.$$state=t,r=n.$broadcast("$locationChangeStart",e,i,t,o).defaultPrevented,c.absUrl()===e&&(r?(c.$$parse(i),c.$$state=o,s(i,!1,o)):(v=!1,u(i,o)))}),void(n.$$phase||n.$digest()))}),n.$watch(function(){var e=It(r.url()),t=It(c.absUrl()),o=r.state(),a=c.$$replace,l=e!==t||c.$$html5&&i.history&&o!==c.$$state;(v||l)&&(v=!1,n.$evalAsync(function(){var t=c.absUrl(),r=n.$broadcast("$locationChangeStart",t,e,c.$$state,o).defaultPrevented;c.absUrl()===t&&(r?(c.$$parse(e),c.$$state=o):(l&&s(t,a,o===c.$$state?null:c.$$state),u(e,o)))})),c.$$replace=!1}),c}]}function zt(){var e=!0,t=this;this.debugEnabled=function(t){return b(t)?(e=t,this):e},this.$get=["$window",function(n){function r(e){return e instanceof Error&&(e.stack?e=e.message&&-1===e.stack.indexOf(e.message)?"Error: "+e.message+"\n"+e.stack:e.stack:e.sourceURL&&(e=e.message+"\n"+e.sourceURL+":"+e.line)),e}function i(e){var t=n.console||{},i=t[e]||t.log||$,a=!1;try{a=!!i.apply}catch(s){}return a?function(){var e=[];return o(arguments,function(t){e.push(r(t))}),i.apply(t,e)}:function(e,t){i(e,null==t?"":t)}}return{log:i("log"),info:i("info"),warn:i("warn"),error:i("error"),debug:function(){var n=i("debug");return function(){e&&n.apply(t,arguments)}}()}}]}function Wt(e,t){if(e=w(e)&&e.toString?e.toString():e,"__defineGetter__"===e||"__defineSetter__"===e||"__lookupGetter__"===e||"__lookupSetter__"===e||"__proto__"===e)throw zi("isecfld","Attempting to access a disallowed field in Angular expressions! Expression: {0}",t);return e}function Gt(e,t){if(e){if(e.constructor===e)throw zi("isecfn","Referencing Function in Angular expressions is disallowed! Expression: {0}",t);if(e.window===e)throw zi("isecwindow","Referencing the Window in Angular expressions is disallowed! Expression: {0}",t);if(e.children&&(e.nodeName||e.prop&&e.attr&&e.find))throw zi("isecdom","Referencing DOM nodes in Angular expressions is disallowed! Expression: {0}",t);if(e===Object)throw zi("isecobj","Referencing Object in Angular expressions is disallowed! Expression: {0}",t)}return e}function Yt(e,t){if(e){if(e.constructor===e)throw zi("isecfn","Referencing Function in Angular expressions is disallowed! Expression: {0}",t);if(e===Wi||e===Gi||e===Yi)throw zi("isecff","Referencing call, apply or bind in Angular expressions is disallowed! Expression: {0}",t)}}function Jt(e,t){return"undefined"!=typeof e?e:t}function Kt(e,t){return"undefined"==typeof e?t:"undefined"==typeof t?e:e+t}function Zt(e,t){var n=e(t);return!n.$stateful}function Xt(e,t){var n,r;switch(e.type){case Xi.Program:n=!0,o(e.body,function(e){Xt(e.expression,t),n=n&&e.expression.constant}),e.constant=n;break;case Xi.Literal:e.constant=!0,e.toWatch=[];break;case Xi.UnaryExpression:Xt(e.argument,t),e.constant=e.argument.constant,e.toWatch=e.argument.toWatch;break;case Xi.BinaryExpression:Xt(e.left,t),Xt(e.right,t),e.constant=e.left.constant&&e.right.constant,e.toWatch=e.left.toWatch.concat(e.right.toWatch);break;case Xi.LogicalExpression:Xt(e.left,t),Xt(e.right,t),e.constant=e.left.constant&&e.right.constant,e.toWatch=e.constant?[]:[e];break;case Xi.ConditionalExpression:Xt(e.test,t),Xt(e.alternate,t),Xt(e.consequent,t),e.constant=e.test.constant&&e.alternate.constant&&e.consequent.constant,e.toWatch=e.constant?[]:[e];break;case Xi.Identifier:e.constant=!1,e.toWatch=[e];break;case Xi.MemberExpression:Xt(e.object,t),e.computed&&Xt(e.property,t),e.constant=e.object.constant&&(!e.computed||e.property.constant),e.toWatch=[e];break;case Xi.CallExpression:n=e.filter?Zt(t,e.callee.name):!1,r=[],o(e.arguments,function(e){Xt(e,t),n=n&&e.constant,e.constant||r.push.apply(r,e.toWatch)}),e.constant=n,e.toWatch=e.filter&&Zt(t,e.callee.name)?r:[e];break;case Xi.AssignmentExpression:Xt(e.left,t),Xt(e.right,t),e.constant=e.left.constant&&e.right.constant,e.toWatch=[e];break;case Xi.ArrayExpression:n=!0,r=[],o(e.elements,function(e){Xt(e,t),n=n&&e.constant,e.constant||r.push.apply(r,e.toWatch)}),e.constant=n,e.toWatch=r;break;case Xi.ObjectExpression:n=!0,r=[],o(e.properties,function(e){Xt(e.value,t),n=n&&e.value.constant,e.value.constant||r.push.apply(r,e.value.toWatch)}),e.constant=n,e.toWatch=r;break;case Xi.ThisExpression:e.constant=!1,e.toWatch=[]}}function Qt(e){if(1==e.length){var t=e[0].expression,r=t.toWatch;return 1!==r.length?r:r[0]!==t?r:n}}function en(e){return e.type===Xi.Identifier||e.type===Xi.MemberExpression}function tn(e){return 1===e.body.length&&en(e.body[0].expression)?{type:Xi.AssignmentExpression,left:e.body[0].expression,right:{type:Xi.NGValueParameter},operator:"="}:void 0}function nn(e){return 0===e.body.length||1===e.body.length&&(e.body[0].expression.type===Xi.Literal||e.body[0].expression.type===Xi.ArrayExpression||e.body[0].expression.type===Xi.ObjectExpression)}function rn(e){return e.constant}function on(e,t){this.astBuilder=e,this.$filter=t}function an(e,t){this.astBuilder=e,this.$filter=t}function sn(e){return"constructor"==e}function un(e){return k(e.valueOf)?e.valueOf():eo.call(e)}function cn(){var e=ve(),t=ve();this.$get=["$filter",function(r){function i(e,t){return null==e||null==t?e===t:"object"==typeof e&&(e=un(e),"object"==typeof e)?!1:e===t||e!==e&&t!==t}function a(e,t,r,o,a){var s,u=o.inputs;if(1===u.length){var c=i;return u=u[0],e.$watch(function(e){var t=u(e);return i(t,c)||(s=o(e,n,n,[t]),c=t&&un(t)),s},t,r,a)}for(var l=[],f=[],h=0,p=u.length;p>h;h++)l[h]=i,f[h]=null;return e.$watch(function(e){for(var t=!1,r=0,a=u.length;a>r;r++){var c=u[r](e);(t||(t=!i(c,l[r])))&&(f[r]=c,l[r]=c&&un(c))}return t&&(s=o(e,n,n,f)),s},t,r,a)}function s(e,t,n,r){var i,o;return i=e.$watch(function(e){return r(e)},function(e,n,r){o=e,k(t)&&t.apply(this,arguments),b(e)&&r.$$postDigest(function(){b(o)&&i()})},n)}function u(e,t,n,r){function i(e){var t=!0;return o(e,function(e){b(e)||(t=!1)}),t}var a,s;return a=e.$watch(function(e){return r(e)},function(e,n,r){s=e,k(t)&&t.call(this,e,n,r),i(e)&&r.$$postDigest(function(){i(s)&&a()})},n)}function c(e,t,n,r){var i;return i=e.$watch(function(e){return r(e)},function(e,n,r){k(t)&&t.apply(this,arguments),i()},n)}function l(e,t){if(!t)return e;var n=e.$$watchDelegate,r=n!==u&&n!==s,i=r?function(n,r,i,o){var a=e(n,r,i,o);return t(a,n,r)}:function(n,r,i,o){var a=e(n,r,i,o),s=t(a,n,r);return b(a)?s:a};return e.$$watchDelegate&&e.$$watchDelegate!==a?i.$$watchDelegate=e.$$watchDelegate:t.$stateful||(i.$$watchDelegate=a,i.inputs=e.inputs?e.inputs:[e]),i}var f=Fr().noUnsafeEval,h={csp:f,expensiveChecks:!1},p={csp:f,expensiveChecks:!0};return function(n,i,o){var f,d,v;switch(typeof n){case"string":n=n.trim(),v=n;var m=o?t:e;if(f=m[v],!f){":"===n.charAt(0)&&":"===n.charAt(1)&&(d=!0,n=n.substring(2));var g=o?p:h,y=new Zi(g),b=new Qi(y,r,g);f=b.parse(n),f.constant?f.$$watchDelegate=c:d?f.$$watchDelegate=f.literal?u:s:f.inputs&&(f.$$watchDelegate=a),m[v]=f}return l(f,i);case"function":return l(n,i);default:return $}}}]}function ln(){this.$get=["$rootScope","$exceptionHandler",function(e,t){return hn(function(t){e.$evalAsync(t)},t)}]}function fn(){this.$get=["$browser","$exceptionHandler",function(e,t){return hn(function(t){e.defer(t)},t)}]}function hn(e,t){function i(e,t,n){function r(t){return function(n){i||(i=!0,t.call(e,n))}}var i=!1;return[r(t),r(n)]}function a(){this.$$state={status:0}}function s(e,t){return function(n){t.call(e,n)}}function u(e){var r,i,o;o=e.pending,e.processScheduled=!1,e.pending=n;for(var a=0,s=o.length;s>a;++a){i=o[a][0],r=o[a][e.status];try{k(r)?i.resolve(r(e.value)):1===e.status?i.resolve(e.value):i.reject(e.value)}catch(u){i.reject(u),t(u)}}}function c(t){!t.processScheduled&&t.pending&&(t.processScheduled=!0,e(function(){u(t)}))}function l(){this.promise=new a,this.resolve=s(this,this.resolve),this.reject=s(this,this.reject),this.notify=s(this,this.notify)}function h(e){var t=new l,n=0,r=Ir(e)?[]:{};return o(e,function(e,i){n++,g(e).then(function(e){r.hasOwnProperty(i)||(r[i]=e,--n||t.resolve(r))},function(e){r.hasOwnProperty(i)||t.reject(e)})}),0===n&&t.resolve(r),t.promise}var p=r("$q",TypeError),d=function(){return new l};f(a.prototype,{then:function(e,t,n){if(y(e)&&y(t)&&y(n))return this;var r=new l;return this.$$state.pending=this.$$state.pending||[],this.$$state.pending.push([r,e,t,n]),this.$$state.status>0&&c(this.$$state),r.promise},"catch":function(e){return this.then(null,e)},"finally":function(e,t){return this.then(function(t){return m(t,!0,e)},function(t){return m(t,!1,e)},t)}}),f(l.prototype,{resolve:function(e){this.promise.$$state.status||(e===this.promise?this.$$reject(p("qcycle","Expected promise to be resolved with value other than itself '{0}'",e)):this.$$resolve(e))},$$resolve:function(e){var n,r;r=i(this,this.$$resolve,this.$$reject);try{(w(e)||k(e))&&(n=e&&e.then),k(n)?(this.promise.$$state.status=-1,n.call(e,r[0],r[1],this.notify)):(this.promise.$$state.value=e,this.promise.$$state.status=1,c(this.promise.$$state))}catch(o){r[1](o),t(o)}},reject:function(e){this.promise.$$state.status||this.$$reject(e)},$$reject:function(e){this.promise.$$state.value=e,this.promise.$$state.status=2,c(this.promise.$$state)},notify:function(n){var r=this.promise.$$state.pending;this.promise.$$state.status<=0&&r&&r.length&&e(function(){for(var e,i,o=0,a=r.length;a>o;o++){i=r[o][0],e=r[o][3];try{i.notify(k(e)?e(n):n)}catch(s){t(s)}}})}});var $=function(e){var t=new l;return t.reject(e),t.promise},v=function(e,t){var n=new l;return t?n.resolve(e):n.reject(e),n.promise},m=function(e,t,n){var r=null;try{k(n)&&(r=n())}catch(i){return v(i,!1)}return P(r)?r.then(function(){return v(e,t)},function(e){return v(e,!1)}):v(e,t)},g=function(e,t,n,r){var i=new l;return i.resolve(e),i.promise.then(t,n,r)},b=g,x=function S(e){function t(e){r.resolve(e)}function n(e){r.reject(e)}if(!k(e))throw p("norslvr","Expected resolverFn, got '{0}'",e);if(!(this instanceof S))return new S(e); +var r=new l;return e(t,n),r.promise};return x.defer=d,x.reject=$,x.when=g,x.resolve=b,x.all=h,x}function pn(){this.$get=["$window","$timeout",function(e,t){var n=e.requestAnimationFrame||e.webkitRequestAnimationFrame,r=e.cancelAnimationFrame||e.webkitCancelAnimationFrame||e.webkitCancelRequestAnimationFrame,i=!!n,o=i?function(e){var t=n(e);return function(){r(t)}}:function(e){var n=t(e,16.66,!1);return function(){t.cancel(n)}};return o.supported=i,o}]}function dn(){function e(e){function t(){this.$$watchers=this.$$nextSibling=this.$$childHead=this.$$childTail=null,this.$$listeners={},this.$$listenerCount={},this.$$watchersCount=0,this.$id=u(),this.$$ChildScope=null}return t.prototype=e,t}var t=10,n=r("$rootScope"),a=null,s=null;this.digestTtl=function(e){return arguments.length&&(t=e),t},this.$get=["$injector","$exceptionHandler","$parse","$browser",function(r,c,l,f){function h(e){e.currentScope.$$destroyed=!0}function p(){this.$id=u(),this.$$phase=this.$parent=this.$$watchers=this.$$nextSibling=this.$$prevSibling=this.$$childHead=this.$$childTail=null,this.$root=this,this.$$destroyed=!1,this.$$listeners={},this.$$listenerCount={},this.$$watchersCount=0,this.$$isolateBindings=null}function d(e){if(E.$$phase)throw n("inprog","{0} already in progress",E.$$phase);E.$$phase=e}function v(){E.$$phase=null}function m(e,t){do e.$$watchersCount+=t;while(e=e.$parent)}function g(e,t,n){do e.$$listenerCount[n]-=t,0===e.$$listenerCount[n]&&delete e.$$listenerCount[n];while(e=e.$parent)}function b(){}function x(){for(;O.length;)try{O.shift()()}catch(e){c(e)}s=null}function S(){null===s&&(s=f.defer(function(){E.$apply(x)}))}p.prototype={constructor:p,$new:function(t,n){var r;return n=n||this,t?(r=new p,r.$root=this.$root):(this.$$ChildScope||(this.$$ChildScope=e(this)),r=new this.$$ChildScope),r.$parent=n,r.$$prevSibling=n.$$childTail,n.$$childHead?(n.$$childTail.$$nextSibling=r,n.$$childTail=r):n.$$childHead=n.$$childTail=r,(t||n!=this)&&r.$on("$destroy",h),r},$watch:function(e,t,n,r){var i=l(e);if(i.$$watchDelegate)return i.$$watchDelegate(this,t,n,i,e);var o=this,s=o.$$watchers,u={fn:t,last:b,get:i,exp:r||e,eq:!!n};return a=null,k(t)||(u.fn=$),s||(s=o.$$watchers=[]),s.unshift(u),m(this,1),function(){q(s,u)>=0&&m(o,-1),a=null}},$watchGroup:function(e,t){function n(){u=!1,c?(c=!1,t(i,i,s)):t(i,r,s)}var r=new Array(e.length),i=new Array(e.length),a=[],s=this,u=!1,c=!0;if(!e.length){var l=!0;return s.$evalAsync(function(){l&&t(i,i,s)}),function(){l=!1}}return 1===e.length?this.$watch(e[0],function(e,n,o){i[0]=e,r[0]=n,t(i,e===n?i:r,o)}):(o(e,function(e,t){var o=s.$watch(e,function(e,o){i[t]=e,r[t]=o,u||(u=!0,s.$evalAsync(n))});a.push(o)}),function(){for(;a.length;)a.shift()()})},$watchCollection:function(e,t){function n(e){o=e;var t,n,r,s,u;if(!y(o)){if(w(o))if(i(o)){a!==p&&(a=p,v=a.length=0,f++),t=o.length,v!==t&&(f++,a.length=v=t);for(var c=0;t>c;c++)u=a[c],s=o[c],r=u!==u&&s!==s,r||u===s||(f++,a[c]=s)}else{a!==d&&(a=d={},v=0,f++),t=0;for(n in o)yr.call(o,n)&&(t++,s=o[n],u=a[n],n in a?(r=u!==u&&s!==s,r||u===s||(f++,a[n]=s)):(v++,a[n]=s,f++));if(v>t){f++;for(n in a)yr.call(o,n)||(v--,delete a[n])}}else a!==o&&(a=o,f++);return f}}function r(){if($?($=!1,t(o,o,u)):t(o,s,u),c)if(w(o))if(i(o)){s=new Array(o.length);for(var e=0;e1,f=0,h=l(e,n),p=[],d={},$=!0,v=0;return this.$watch(h,r)},$digest:function(){var e,r,i,o,u,l,h,p,$,m,g=t,y=this,w=[];d("$digest"),f.$$checkUrlChange(),this===E&&null!==s&&(f.defer.cancel(s),x()),a=null;do{for(l=!1,p=y;C.length;){try{m=C.shift(),m.scope.$eval(m.expression,m.locals)}catch(S){c(S)}a=null}e:do{if(o=p.$$watchers)for(u=o.length;u--;)try{if(e=o[u])if((r=e.get(p))===(i=e.last)||(e.eq?B(r,i):"number"==typeof r&&"number"==typeof i&&isNaN(r)&&isNaN(i))){if(e===a){l=!1;break e}}else l=!0,a=e,e.last=e.eq?F(r,null):r,e.fn(r,i===b?r:i,p),5>g&&($=4-g,w[$]||(w[$]=[]),w[$].push({msg:k(e.exp)?"fn: "+(e.exp.name||e.exp.toString()):e.exp,newVal:r,oldVal:i}))}catch(S){c(S)}if(!(h=p.$$watchersCount&&p.$$childHead||p!==y&&p.$$nextSibling))for(;p!==y&&!(h=p.$$nextSibling);)p=p.$parent}while(p=h);if((l||C.length)&&!g--)throw v(),n("infdig","{0} $digest() iterations reached. Aborting!\nWatchers fired in the last 5 iterations: {1}",t,w)}while(l||C.length);for(v();A.length;)try{A.shift()()}catch(S){c(S)}},$destroy:function(){if(!this.$$destroyed){var e=this.$parent;this.$broadcast("$destroy"),this.$$destroyed=!0,this===E&&f.$$applicationDestroyed(),m(this,-this.$$watchersCount);for(var t in this.$$listenerCount)g(this,this.$$listenerCount[t],t);e&&e.$$childHead==this&&(e.$$childHead=this.$$nextSibling),e&&e.$$childTail==this&&(e.$$childTail=this.$$prevSibling),this.$$prevSibling&&(this.$$prevSibling.$$nextSibling=this.$$nextSibling),this.$$nextSibling&&(this.$$nextSibling.$$prevSibling=this.$$prevSibling),this.$destroy=this.$digest=this.$apply=this.$evalAsync=this.$applyAsync=$,this.$on=this.$watch=this.$watchGroup=function(){return $},this.$$listeners={},this.$parent=this.$$nextSibling=this.$$prevSibling=this.$$childHead=this.$$childTail=this.$root=this.$$watchers=null}},$eval:function(e,t){return l(e)(this,t)},$evalAsync:function(e,t){E.$$phase||C.length||f.defer(function(){C.length&&E.$digest()}),C.push({scope:this,expression:e,locals:t})},$$postDigest:function(e){A.push(e)},$apply:function(e){try{d("$apply");try{return this.$eval(e)}finally{v()}}catch(t){c(t)}finally{try{E.$digest()}catch(t){throw c(t),t}}},$applyAsync:function(e){function t(){n.$eval(e)}var n=this;e&&O.push(t),S()},$on:function(e,t){var n=this.$$listeners[e];n||(this.$$listeners[e]=n=[]),n.push(t);var r=this;do r.$$listenerCount[e]||(r.$$listenerCount[e]=0),r.$$listenerCount[e]++;while(r=r.$parent);var i=this;return function(){var r=n.indexOf(t);-1!==r&&(n[r]=null,g(i,1,e))}},$emit:function(e,t){var n,r,i,o=[],a=this,s=!1,u={name:e,targetScope:a,stopPropagation:function(){s=!0},preventDefault:function(){u.defaultPrevented=!0},defaultPrevented:!1},l=H([u],arguments,1);do{for(n=a.$$listeners[e]||o,u.currentScope=a,r=0,i=n.length;i>r;r++)if(n[r])try{n[r].apply(null,l)}catch(f){c(f)}else n.splice(r,1),r--,i--;if(s)return u.currentScope=null,u;a=a.$parent}while(a);return u.currentScope=null,u},$broadcast:function(e,t){var n=this,r=n,i=n,o={name:e,targetScope:n,preventDefault:function(){o.defaultPrevented=!0},defaultPrevented:!1};if(!n.$$listenerCount[e])return o;for(var a,s,u,l=H([o],arguments,1);r=i;){for(o.currentScope=r,a=r.$$listeners[e]||[],s=0,u=a.length;u>s;s++)if(a[s])try{a[s].apply(null,l)}catch(f){c(f)}else a.splice(s,1),s--,u--;if(!(i=r.$$listenerCount[e]&&r.$$childHead||r!==n&&r.$$nextSibling))for(;r!==n&&!(i=r.$$nextSibling);)r=r.$parent}return o.currentScope=null,o}};var E=new p,C=E.$$asyncQueue=[],A=E.$$postDigestQueue=[],O=E.$$applyAsyncQueue=[];return E}]}function $n(){var e=/^\s*(https?|ftp|mailto|tel|file):/,t=/^\s*((https?|ftp|file|blob):|data:image\/)/;this.aHrefSanitizationWhitelist=function(t){return b(t)?(e=t,this):e},this.imgSrcSanitizationWhitelist=function(e){return b(e)?(t=e,this):t},this.$get=function(){return function(n,r){var i,o=r?t:e;return i=En(n).href,""===i||i.match(o)?n:"unsafe:"+i}}}function vn(e){if("self"===e)return e;if(S(e)){if(e.indexOf("***")>-1)throw to("iwcard","Illegal sequence *** in string matcher. String: {0}",e);return e=qr(e).replace("\\*\\*",".*").replace("\\*","[^:/.?&;]*"),new RegExp("^"+e+"$")}if(A(e))return new RegExp("^"+e.source+"$");throw to("imatcher",'Matchers may only be "self", string patterns or RegExp objects')}function mn(e){var t=[];return b(e)&&o(e,function(e){t.push(vn(e))}),t}function gn(){this.SCE_CONTEXTS=no;var e=["self"],t=[];this.resourceUrlWhitelist=function(t){return arguments.length&&(e=mn(t)),e},this.resourceUrlBlacklist=function(e){return arguments.length&&(t=mn(e)),t},this.$get=["$injector",function(n){function r(e,t){return"self"===e?Cn(t):!!e.exec(t.href)}function i(n){var i,o,a=En(n.toString()),s=!1;for(i=0,o=e.length;o>i;i++)if(r(e[i],a)){s=!0;break}if(s)for(i=0,o=t.length;o>i;i++)if(r(t[i],a)){s=!1;break}return s}function o(e){var t=function(e){this.$$unwrapTrustedValue=function(){return e}};return e&&(t.prototype=new e),t.prototype.valueOf=function(){return this.$$unwrapTrustedValue()},t.prototype.toString=function(){return this.$$unwrapTrustedValue().toString()},t}function a(e,t){var n=f.hasOwnProperty(e)?f[e]:null;if(!n)throw to("icontext","Attempted to trust a value in invalid context. Context: {0}; Value: {1}",e,t);if(null===t||y(t)||""===t)return t;if("string"!=typeof t)throw to("itype","Attempted to trust a non-string value in a content requiring a string: Context: {0}",e);return new n(t)}function s(e){return e instanceof l?e.$$unwrapTrustedValue():e}function u(e,t){if(null===t||y(t)||""===t)return t;var n=f.hasOwnProperty(e)?f[e]:null;if(n&&t instanceof n)return t.$$unwrapTrustedValue();if(e===no.RESOURCE_URL){if(i(t))return t;throw to("insecurl","Blocked loading resource from url not allowed by $sceDelegate policy. URL: {0}",t.toString())}if(e===no.HTML)return c(t);throw to("unsafe","Attempting to use an unsafe value in a safe context.")}var c=function(e){throw to("unsafe","Attempting to use an unsafe value in a safe context.")};n.has("$sanitize")&&(c=n.get("$sanitize"));var l=o(),f={};return f[no.HTML]=o(l),f[no.CSS]=o(l),f[no.URL]=o(l),f[no.JS]=o(l),f[no.RESOURCE_URL]=o(f[no.URL]),{trustAs:a,getTrusted:u,valueOf:s}}]}function yn(){var e=!0;this.enabled=function(t){return arguments.length&&(e=!!t),e},this.$get=["$parse","$sceDelegate",function(t,n){if(e&&8>Sr)throw to("iequirks","Strict Contextual Escaping does not support Internet Explorer version < 11 in quirks mode. You can fix this by adding the text to the top of your HTML document. See http://docs.angularjs.org/api/ng.$sce for more information.");var r=U(no);r.isEnabled=function(){return e},r.trustAs=n.trustAs,r.getTrusted=n.getTrusted,r.valueOf=n.valueOf,e||(r.trustAs=r.getTrusted=function(e,t){return t},r.valueOf=v),r.parseAs=function(e,n){var i=t(n);return i.literal&&i.constant?i:t(n,function(t){return r.getTrusted(e,t)})};var i=r.parseAs,a=r.getTrusted,s=r.trustAs;return o(no,function(e,t){var n=gr(t);r[xe("parse_as_"+n)]=function(t){return i(e,t)},r[xe("get_trusted_"+n)]=function(t){return a(e,t)},r[xe("trust_as_"+n)]=function(t){return s(e,t)}}),r}]}function bn(){this.$get=["$window","$document",function(e,t){var n,r,i={},o=p((/android (\d+)/.exec(gr((e.navigator||{}).userAgent))||[])[1]),a=/Boxee/i.test((e.navigator||{}).userAgent),s=t[0]||{},u=/^(Moz|webkit|ms)(?=[A-Z])/,c=s.body&&s.body.style,l=!1,f=!1;if(c){for(var h in c)if(r=u.exec(h)){n=r[0],n=n.substr(0,1).toUpperCase()+n.substr(1);break}n||(n="WebkitOpacity"in c&&"webkit"),l=!!("transition"in c||n+"Transition"in c),f=!!("animation"in c||n+"Animation"in c),!o||l&&f||(l=S(c.webkitTransition),f=S(c.webkitAnimation))}return{history:!(!e.history||!e.history.pushState||4>o||a),hasEvent:function(e){if("input"===e&&11>=Sr)return!1;if(y(i[e])){var t=s.createElement("div");i[e]="on"+e in t}return i[e]},csp:Fr(),vendorPrefix:n,transitions:l,animations:f,android:o}}]}function wn(){this.$get=["$templateCache","$http","$q","$sce",function(e,t,n,r){function i(o,a){function s(e){if(!a)throw Oi("tpload","Failed to load template: {0} (HTTP status: {1} {2})",o,e.status,e.statusText);return n.reject(e)}i.totalPendingRequests++,S(o)&&e.get(o)||(o=r.getTrustedResourceUrl(o));var u=t.defaults&&t.defaults.transformResponse;Ir(u)?u=u.filter(function(e){return e!==yt}):u===yt&&(u=null);var c={cache:e,transformResponse:u};return t.get(o,c)["finally"](function(){i.totalPendingRequests--}).then(function(t){return e.put(o,t.data),t.data},s)}return i.totalPendingRequests=0,i}]}function xn(){this.$get=["$rootScope","$browser","$location",function(e,t,n){var r={};return r.findBindings=function(e,t,n){var r=e.getElementsByClassName("ng-binding"),i=[];return o(r,function(e){var r=jr.element(e).data("$binding");r&&o(r,function(r){if(n){var o=new RegExp("(^|\\s)"+qr(t)+"(\\s|\\||$)");o.test(r)&&i.push(e)}else-1!=r.indexOf(t)&&i.push(e)})}),i},r.findModels=function(e,t,n){for(var r=["ng-","data-ng-","ng\\:"],i=0;i0&&(u=t(o.substring(0,s)),y(r[u])&&(r[u]=t(o.substring(s+1))));return r}}function On(){this.$get=An}function Mn(e){function t(r,i){if(w(r)){var a={};return o(r,function(e,n){a[n]=t(n,e)}),a}return e.factory(r+n,i)}var n="Filter";this.register=t,this.$get=["$injector",function(e){return function(t){return e.get(t+n)}}],t("currency",Pn),t("date",Gn),t("filter",Tn),t("json",Yn),t("limitTo",Jn),t("lowercase",co),t("number",Dn),t("orderBy",Kn),t("uppercase",lo)}function Tn(){return function(e,t,n){if(!i(e)){if(null==e)return e;throw r("filter")("notarray","Expected array but received: {0}",e)}var o,a,s=jn(t);switch(s){case"function":o=t;break;case"boolean":case"null":case"number":case"string":a=!0;case"object":o=Nn(t,n,a);break;default:return e}return Array.prototype.filter.call(e,o)}}function Nn(e,t,n){var r,i=w(e)&&"$"in e;return t===!0?t=B:k(t)||(t=function(e,t){return y(e)?!1:null===e||null===t?e===t:w(t)||w(e)&&!g(e)?!1:(e=gr(""+e),t=gr(""+t),-1!==e.indexOf(t))}),r=function(r){return i&&!w(r)?Vn(r,e.$,t,!1):Vn(r,e,t,n)}}function Vn(e,t,n,r,i){var o=jn(e),a=jn(t);if("string"===a&&"!"===t.charAt(0))return!Vn(e,t.substring(1),n,r);if(Ir(e))return e.some(function(e){return Vn(e,t,n,r)});switch(o){case"object":var s;if(r){for(s in e)if("$"!==s.charAt(0)&&Vn(e[s],t,n,!0))return!0;return i?!1:Vn(e,t,n,!1)}if("object"===a){for(s in t){var u=t[s];if(!k(u)&&!y(u)){var c="$"===s,l=c?e:e[s];if(!Vn(l,u,n,c,c))return!1}}return!0}return n(e,t);case"function":return!1;default:return n(e,t)}}function jn(e){return null===e?"null":typeof e}function Pn(e){var t=e.NUMBER_FORMATS;return function(e,n,r){return y(n)&&(n=t.CURRENCY_SYM),y(r)&&(r=t.PATTERNS[1].maxFrac),null==e?e:In(e,t.PATTERNS[1],t.GROUP_SEP,t.DECIMAL_SEP,r).replace(/\u00A4/g,n)}}function Dn(e){var t=e.NUMBER_FORMATS;return function(e,n){return null==e?e:In(e,t.PATTERNS[0],t.GROUP_SEP,t.DECIMAL_SEP,n)}}function In(e,t,n,r,i){if(w(e))return"";var o=0>e;e=Math.abs(e);var a=e===1/0;if(!a&&!isFinite(e))return"";var s=e+"",u="",c=!1,l=[];if(a&&(u="∞"),!a&&-1!==s.indexOf("e")){var f=s.match(/([\d\.]+)e(-?)(\d+)/);f&&"-"==f[2]&&f[3]>i+1?e=0:(u=s,c=!0)}if(a||c)i>0&&1>e&&(u=e.toFixed(i),e=parseFloat(u));else{var h=(s.split(oo)[1]||"").length;y(i)&&(i=Math.min(Math.max(t.minFrac,h),t.maxFrac)),e=+(Math.round(+(e.toString()+"e"+i)).toString()+"e"+-i);var p=(""+e).split(oo),d=p[0];p=p[1]||"";var $,v=0,m=t.lgSize,g=t.gSize;if(d.length>=m+g)for(v=d.length-m,$=0;v>$;$++)(v-$)%g===0&&0!==$&&(u+=n),u+=d.charAt($);for($=v;$e&&(r="-",e=-e),e=""+e;e.length0||o>-n)&&(o+=n),0===o&&-12==n&&(o=12),Rn(o,t,r)}}function qn(e,t){return function(n,r){var i=n["get"+e](),o=br(t?"SHORT"+e:e);return r[o][i]}}function Fn(e,t,n){var r=-1*n,i=r>=0?"+":"";return i+=Rn(Math[r>0?"floor":"ceil"](r/60),2)+Rn(Math.abs(r%60),2)}function Un(e){var t=new Date(e,0,1).getDay();return new Date(e,0,(4>=t?5:12)-t)}function Bn(e){return new Date(e.getFullYear(),e.getMonth(),e.getDate()+(4-e.getDay()))}function Hn(e){return function(t){var n=Un(t.getFullYear()),r=Bn(t),i=+r-+n,o=1+Math.round(i/6048e5);return Rn(o,e)}}function Ln(e,t){return e.getHours()<12?t.AMPMS[0]:t.AMPMS[1]}function zn(e,t){return e.getFullYear()<=0?t.ERAS[0]:t.ERAS[1]}function Wn(e,t){return e.getFullYear()<=0?t.ERANAMES[0]:t.ERANAMES[1]}function Gn(e){function t(e){var t;if(t=e.match(n)){var r=new Date(0),i=0,o=0,a=t[8]?r.setUTCFullYear:r.setFullYear,s=t[8]?r.setUTCHours:r.setHours;t[9]&&(i=p(t[9]+t[10]),o=p(t[9]+t[11])),a.call(r,p(t[1]),p(t[2])-1,p(t[3]));var u=p(t[4]||0)-i,c=p(t[5]||0)-o,l=p(t[6]||0),f=Math.round(1e3*parseFloat("0."+(t[7]||0)));return s.call(r,u,c,l,f),r}return e}var n=/^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/;return function(n,r,i){var a,s,u="",c=[];if(r=r||"mediumDate",r=e.DATETIME_FORMATS[r]||r,S(n)&&(n=uo.test(n)?p(n):t(n)),E(n)&&(n=new Date(n)),!C(n)||!isFinite(n.getTime()))return n;for(;r;)s=so.exec(r),s?(c=H(c,s,1),r=c.pop()):(c.push(r),r=null);var l=n.getTimezoneOffset();return i&&(l=J(i,n.getTimezoneOffset()),n=Z(n,i,!0)),o(c,function(t){a=ao[t],u+=a?a(n,e.DATETIME_FORMATS,l):t.replace(/(^'|'$)/g,"").replace(/''/g,"'")}),u}}function Yn(){return function(e,t){return y(t)&&(t=2),G(e,t)}}function Jn(){return function(e,t,n){return t=Math.abs(Number(t))===1/0?Number(t):p(t),isNaN(t)?e:(E(e)&&(e=e.toString()),Ir(e)||S(e)?(n=!n||isNaN(n)?0:p(n),n=0>n&&n>=-e.length?e.length+n:n,t>=0?e.slice(n,n+t):0===n?e.slice(t,e.length):e.slice(Math.max(0,n+t),n)):e)}}function Kn(e){function t(t,n){return n=n?-1:1,t.map(function(t){var r=1,i=v;if(k(t))i=t;else if(S(t)&&("+"!=t.charAt(0)&&"-"!=t.charAt(0)||(r="-"==t.charAt(0)?-1:1,t=t.substring(1)),""!==t&&(i=e(t),i.constant))){var o=i();i=function(e){return e[o]}}return{get:i,descending:r*n}})}function n(e){switch(typeof e){case"number":case"boolean":case"string":return!0;default:return!1}}function r(e,t){return"function"==typeof e.valueOf&&(e=e.valueOf(),n(e))?e:g(e)&&(e=e.toString(),n(e))?e:t}function o(e,t){var n=typeof e;return null===e?(n="string",e="null"):"string"===n?e=e.toLowerCase():"object"===n&&(e=r(e,t)),{value:e,type:n}}function a(e,t){var n=0;return e.type===t.type?e.value!==t.value&&(n=e.valuer&&!(n=a(e.predicateValues[r],t.predicateValues[r])*c[r].descending);++r);return n}if(!i(e))return e;Ir(n)||(n=[n]),0===n.length&&(n=["+"]);var c=t(n,r);c.push({get:function(){return{}},descending:r?-1:1});var l=Array.prototype.map.call(e,s);return l.sort(u),e=l.map(function(e){return e.value})}}function Zn(e){return k(e)&&(e={link:e}),e.restrict=e.restrict||"AC",m(e)}function Xn(e,t){e.$name=t}function Qn(e,t,r,i,a){var s=this,u=[];s.$error={},s.$$success={},s.$pending=n,s.$name=a(t.name||t.ngForm||"")(r),s.$dirty=!1,s.$pristine=!0,s.$valid=!0,s.$invalid=!1,s.$submitted=!1,s.$$parentForm=po,s.$rollbackViewValue=function(){o(u,function(e){e.$rollbackViewValue()})},s.$commitViewValue=function(){o(u,function(e){e.$commitViewValue()})},s.$addControl=function(e){pe(e.$name,"input"),u.push(e),e.$name&&(s[e.$name]=e),e.$$parentForm=s},s.$$renameControl=function(e,t){var n=e.$name;s[n]===e&&delete s[n],s[t]=e,e.$name=t},s.$removeControl=function(e){e.$name&&s[e.$name]===e&&delete s[e.$name],o(s.$pending,function(t,n){s.$setValidity(n,null,e)}),o(s.$error,function(t,n){s.$setValidity(n,null,e)}),o(s.$$success,function(t,n){s.$setValidity(n,null,e)}),q(u,e),e.$$parentForm=po},dr({ctrl:this,$element:e,set:function(e,t,n){var r=e[t];if(r){var i=r.indexOf(n);-1===i&&r.push(n)}else e[t]=[n]},unset:function(e,t,n){var r=e[t];r&&(q(r,n),0===r.length&&delete e[t])},$animate:i}),s.$setDirty=function(){i.removeClass(e,Ko),i.addClass(e,Zo),s.$dirty=!0,s.$pristine=!1,s.$$parentForm.$setDirty()},s.$setPristine=function(){i.setClass(e,Ko,Zo+" "+$o),s.$dirty=!1,s.$pristine=!0,s.$submitted=!1,o(u,function(e){e.$setPristine()})},s.$setUntouched=function(){o(u,function(e){e.$setUntouched()})},s.$setSubmitted=function(){i.addClass(e,$o),s.$submitted=!0,s.$$parentForm.$setSubmitted()}}function er(e){e.$formatters.push(function(t){return e.$isEmpty(t)?t:t.toString()})}function tr(e,t,n,r,i,o){nr(e,t,n,r,i,o),er(r)}function nr(e,t,n,r,i,o){var a=gr(t[0].type);if(!i.android){var s=!1;t.on("compositionstart",function(e){s=!0}),t.on("compositionend",function(){s=!1,u()})}var u=function(e){if(c&&(o.defer.cancel(c),c=null),!s){var i=t.val(),u=e&&e.type;"password"===a||n.ngTrim&&"false"===n.ngTrim||(i=_r(i)),(r.$viewValue!==i||""===i&&r.$$hasNativeValidators)&&r.$setViewValue(i,u)}};if(i.hasEvent("input"))t.on("input",u);else{var c,l=function(e,t,n){c||(c=o.defer(function(){c=null,t&&t.value===n||u(e)}))};t.on("keydown",function(e){var t=e.keyCode;91===t||t>15&&19>t||t>=37&&40>=t||l(e,this,this.value)}),i.hasEvent("paste")&&t.on("paste cut",l)}t.on("change",u),r.$render=function(){var e=r.$isEmpty(r.$viewValue)?"":r.$viewValue;t.val()!==e&&t.val(e)}}function rr(e,t){if(C(e))return e;if(S(e)){Co.lastIndex=0;var n=Co.exec(e);if(n){var r=+n[1],i=+n[2],o=0,a=0,s=0,u=0,c=Un(r),l=7*(i-1);return t&&(o=t.getHours(),a=t.getMinutes(),s=t.getSeconds(),u=t.getMilliseconds()),new Date(r,0,c.getDate()+l,o,a,s,u)}}return NaN}function ir(e,t){return function(n,r){var i,a;if(C(n))return n;if(S(n)){if('"'==n.charAt(0)&&'"'==n.charAt(n.length-1)&&(n=n.substring(1,n.length-1)),yo.test(n))return new Date(n);if(e.lastIndex=0,i=e.exec(n))return i.shift(),a=r?{yyyy:r.getFullYear(),MM:r.getMonth()+1,dd:r.getDate(),HH:r.getHours(),mm:r.getMinutes(),ss:r.getSeconds(),sss:r.getMilliseconds()/1e3}:{yyyy:1970,MM:1,dd:1,HH:0,mm:0,ss:0,sss:0},o(i,function(e,n){n=v},s.$observe("min",function(e){v=p(e),u.$validate()})}if(b(s.max)||s.ngMax){var m;u.$validators.max=function(e){return!h(e)||y(m)||r(e)<=m},s.$observe("max",function(e){m=p(e),u.$validate()})}}}function ar(e,t,r,i){var o=t[0],a=i.$$hasNativeValidators=w(o.validity);a&&i.$parsers.push(function(e){var r=t.prop(mr)||{};return r.badInput&&!r.typeMismatch?n:e})}function sr(e,t,r,i,o,a){if(ar(e,t,r,i),nr(e,t,r,i,o,a),i.$$parserName="number",i.$parsers.push(function(e){return i.$isEmpty(e)?null:xo.test(e)?parseFloat(e):n}),i.$formatters.push(function(e){if(!i.$isEmpty(e)){if(!E(e))throw ta("numfmt","Expected `{0}` to be a number",e);e=e.toString()}return e}),b(r.min)||r.ngMin){var s;i.$validators.min=function(e){return i.$isEmpty(e)||y(s)||e>=s},r.$observe("min",function(e){b(e)&&!E(e)&&(e=parseFloat(e,10)),s=E(e)&&!isNaN(e)?e:n,i.$validate()})}if(b(r.max)||r.ngMax){var u;i.$validators.max=function(e){return i.$isEmpty(e)||y(u)||u>=e},r.$observe("max",function(e){b(e)&&!E(e)&&(e=parseFloat(e,10)),u=E(e)&&!isNaN(e)?e:n,i.$validate()})}}function ur(e,t,n,r,i,o){nr(e,t,n,r,i,o),er(r),r.$$parserName="url",r.$validators.url=function(e,t){var n=e||t;return r.$isEmpty(n)||bo.test(n)}}function cr(e,t,n,r,i,o){nr(e,t,n,r,i,o),er(r),r.$$parserName="email",r.$validators.email=function(e,t){var n=e||t;return r.$isEmpty(n)||wo.test(n)}}function lr(e,t,n,r){y(n.name)&&t.attr("name",u());var i=function(e){t[0].checked&&r.$setViewValue(n.value,e&&e.type)};t.on("click",i),r.$render=function(){var e=n.value;t[0].checked=e==r.$viewValue},n.$observe("value",r.$render)}function fr(e,t,n,r,i){var o;if(b(r)){if(o=e(r),!o.constant)throw ta("constexpr","Expected constant expression for `{0}`, but saw `{1}`.",n,r);return o(t)}return i}function hr(e,t,n,r,i,o,a,s){var u=fr(s,e,"ngTrueValue",n.ngTrueValue,!0),c=fr(s,e,"ngFalseValue",n.ngFalseValue,!1),l=function(e){r.$setViewValue(t[0].checked,e&&e.type)};t.on("click",l),r.$render=function(){t[0].checked=r.$viewValue},r.$isEmpty=function(e){return e===!1},r.$formatters.push(function(e){return B(e,u)}),r.$parsers.push(function(e){return e?u:c})}function pr(e,t){return e="ngClass"+e,["$animate",function(n){function r(e,t){var n=[];e:for(var r=0;r0||n[e])&&(n[e]=(n[e]||0)+t,n[e]===+(t>0)&&r.push(e))}),s.data("$classCounts",n),r.join(" ")}function h(e,t){var i=r(t,e),o=r(e,t);i=f(i,1),o=f(o,-1),i&&i.length&&n.addClass(s,i),o&&o.length&&n.removeClass(s,o)}function p(e){if(t===!0||a.$index%2===t){var n=i(e||[]);if(d){if(!B(e,d)){var r=i(d);h(r,n)}}else c(n)}d=U(e)}var d;a.$watch(u[e],p,!0),u.$observe("class",function(t){p(a.$eval(u[e]))}),"ngClass"!==e&&a.$watch("$index",function(n,r){var o=1&n;if(o!==(1&r)){var s=i(a.$eval(u[e]));o===t?c(s):l(s)}})}}}]}function dr(e){function t(e,t,u){y(t)?r("$pending",e,u):i("$pending",e,u),j(t)?t?(f(s.$error,e,u),l(s.$$success,e,u)):(l(s.$error,e,u),f(s.$$success,e,u)):(f(s.$error,e,u),f(s.$$success,e,u)),s.$pending?(o(ea,!0),s.$valid=s.$invalid=n,a("",null)):(o(ea,!1),s.$valid=$r(s.$error),s.$invalid=!s.$valid,a("",s.$valid));var c;c=s.$pending&&s.$pending[e]?n:s.$error[e]?!1:s.$$success[e]?!0:null,a(e,c),s.$$parentForm.$setValidity(e,c,s)}function r(e,t,n){s[e]||(s[e]={}),l(s[e],t,n)}function i(e,t,r){s[e]&&f(s[e],t,r),$r(s[e])&&(s[e]=n)}function o(e,t){t&&!c[e]?(h.addClass(u,e),c[e]=!0):!t&&c[e]&&(h.removeClass(u,e),c[e]=!1)}function a(e,t){e=e?"-"+ce(e,"-"):"",o(Yo+e,t===!0),o(Jo+e,t===!1)}var s=e.ctrl,u=e.$element,c={},l=e.set,f=e.unset,h=e.$animate;c[Jo]=!(c[Yo]=u.hasClass(Yo)),s.$setValidity=t}function $r(e){if(e)for(var t in e)if(e.hasOwnProperty(t))return!1;return!0}var vr=/^\/(.+)\/([a-z]*)$/,mr="validity",gr=function(e){return S(e)?e.toLowerCase():e},yr=Object.prototype.hasOwnProperty,br=function(e){return S(e)?e.toUpperCase():e},wr=function(e){return S(e)?e.replace(/[A-Z]/g,function(e){return String.fromCharCode(32|e.charCodeAt(0))}):e},xr=function(e){return S(e)?e.replace(/[a-z]/g,function(e){return String.fromCharCode(-33&e.charCodeAt(0))}):e};"i"!=="I".toLowerCase()&&(gr=wr,br=xr);var Sr,Er,Cr,kr,Ar=[].slice,Or=[].splice,Mr=[].push,Tr=Object.prototype.toString,Nr=Object.getPrototypeOf,Vr=r("ng"),jr=e.angular||(e.angular={}),Pr=0;Sr=t.documentMode,$.$inject=[],v.$inject=[];var Dr,Ir=Array.isArray,Rr=/^\[object (Uint8(Clamped)?)|(Uint16)|(Uint32)|(Int8)|(Int16)|(Int32)|(Float(32)|(64))Array\]$/,_r=function(e){return S(e)?e.trim():e},qr=function(e){return e.replace(/([-()\[\]{}+?*.$\^|,:#n;++n)if(r=Br[n],e=t.querySelector("["+r.replace(":","\\:")+"jq]")){i=e.getAttribute(r+"jq");break}return Ur.name_=i},Br=["ng-","data-ng-","ng:","x-ng-"],Hr=/[A-Z]/g,Lr=!1,zr=1,Wr=2,Gr=3,Yr=8,Jr=9,Kr=11,Zr={full:"1.4.6",major:1,minor:4,dot:6,codeName:"multiplicative-elevation"};Oe.expando="ng339";var Xr=Oe.cache={},Qr=1,ei=function(e,t,n){e.addEventListener(t,n,!1)},ti=function(e,t,n){e.removeEventListener(t,n,!1)};Oe._data=function(e){return this.cache[e[this.expando]]||{}};var ni=/([\:\-\_]+(.))/g,ri=/^moz([A-Z])/,ii={mouseleave:"mouseout",mouseenter:"mouseover"},oi=r("jqLite"),ai=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,si=/<|&#?\w+;/,ui=/<([\w:]+)/,ci=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,li={option:[1,'"],thead:[1,"","
        "],col:[2,"","
        "],tr:[2,"","
        "],td:[3,"","
        "],_default:[0,"",""]};li.optgroup=li.option,li.tbody=li.tfoot=li.colgroup=li.caption=li.thead,li.th=li.td;var fi=Oe.prototype={ready:function(n){function r(){i||(i=!0,n())}var i=!1;"complete"===t.readyState?setTimeout(r):(this.on("DOMContentLoaded",r),Oe(e).on("load",r))},toString:function(){var e=[];return o(this,function(t){e.push(""+t)}),"["+e.join(", ")+"]"},eq:function(e){return Er(e>=0?this[e]:this[this.length+e])},length:0,push:Mr,sort:[].sort,splice:[].splice},hi={};o("multiple,selected,checked,disabled,readOnly,required,open".split(","),function(e){hi[gr(e)]=e});var pi={};o("input,select,option,textarea,button,form,details".split(","),function(e){pi[e]=!0});var di={ngMinlength:"minlength",ngMaxlength:"maxlength",ngMin:"min",ngMax:"max",ngPattern:"pattern"};o({data:Pe,removeData:Ve,hasData:Ce},function(e,t){Oe[t]=e}),o({data:Pe,inheritedData:Fe,scope:function(e){return Er.data(e,"$scope")||Fe(e.parentNode||e,["$isolateScope","$scope"])},isolateScope:function(e){return Er.data(e,"$isolateScope")||Er.data(e,"$isolateScopeNoTemplate")},controller:qe,injector:function(e){return Fe(e,"$injector")},removeAttr:function(e,t){e.removeAttribute(t)},hasClass:De,css:function(e,t,n){return t=xe(t),b(n)?void(e.style[t]=n):e.style[t]},attr:function(e,t,r){var i=e.nodeType;if(i!==Gr&&i!==Wr&&i!==Yr){var o=gr(t);if(hi[o]){if(!b(r))return e[t]||(e.attributes.getNamedItem(t)||$).specified?o:n;r?(e[t]=!0,e.setAttribute(t,o)):(e[t]=!1,e.removeAttribute(o))}else if(b(r))e.setAttribute(t,r);else if(e.getAttribute){var a=e.getAttribute(t,2);return null===a?n:a}}},prop:function(e,t,n){return b(n)?void(e[t]=n):e[t]},text:function(){function e(e,t){if(y(t)){var n=e.nodeType;return n===zr||n===Gr?e.textContent:""}e.textContent=t}return e.$dv="",e}(),val:function(e,t){if(y(t)){if(e.multiple&&"select"===_(e)){var n=[];return o(e.options,function(e){e.selected&&n.push(e.value||e.text)}),0===n.length?null:n}return e.value}e.value=t},html:function(e,t){return y(t)?e.innerHTML:(Te(e,!0),void(e.innerHTML=t))},empty:Ue},function(e,t){Oe.prototype[t]=function(t,n){ +var r,i,o=this.length;if(e!==Ue&&y(2==e.length&&e!==De&&e!==qe?t:n)){if(w(t)){for(r=0;o>r;r++)if(e===Pe)e(this[r],t);else for(i in t)e(this[r],i,t[i]);return this}for(var a=e.$dv,s=y(a)?Math.min(o,1):o,u=0;s>u;u++){var c=e(this[u],t,n);a=a?a+c:c}return a}for(r=0;o>r;r++)e(this[r],t,n);return this}}),o({removeData:Ve,on:function Na(e,t,n,r){if(b(r))throw oi("onargs","jqLite#on() does not support the `selector` or `eventData` parameters");if(Ee(e)){var i=je(e,!0),o=i.events,a=i.handle;a||(a=i.handle=We(e,o));for(var s=t.indexOf(" ")>=0?t.split(" "):[t],u=s.length;u--;){t=s[u];var c=o[t];c||(o[t]=[],"mouseenter"===t||"mouseleave"===t?Na(e,ii[t],function(e){var n=this,r=e.relatedTarget;r&&(r===n||n.contains(r))||a(e,t)}):"$destroy"!==t&&ei(e,t,a),c=o[t]),c.push(n)}}},off:Ne,one:function(e,t,n){e=Er(e),e.on(t,function r(){e.off(t,n),e.off(t,r)}),e.on(t,n)},replaceWith:function(e,t){var n,r=e.parentNode;Te(e),o(new Oe(t),function(t){n?r.insertBefore(t,n.nextSibling):r.replaceChild(t,e),n=t})},children:function(e){var t=[];return o(e.childNodes,function(e){e.nodeType===zr&&t.push(e)}),t},contents:function(e){return e.contentDocument||e.childNodes||[]},append:function(e,t){var n=e.nodeType;if(n===zr||n===Kr){t=new Oe(t);for(var r=0,i=t.length;i>r;r++){var o=t[r];e.appendChild(o)}}},prepend:function(e,t){if(e.nodeType===zr){var n=e.firstChild;o(new Oe(t),function(t){e.insertBefore(t,n)})}},wrap:function(e,t){t=Er(t).eq(0).clone()[0];var n=e.parentNode;n&&n.replaceChild(t,e),t.appendChild(e)},remove:Be,detach:function(e){Be(e,!0)},after:function(e,t){var n=e,r=e.parentNode;t=new Oe(t);for(var i=0,o=t.length;o>i;i++){var a=t[i];r.insertBefore(a,n.nextSibling),n=a}},addClass:Re,removeClass:Ie,toggleClass:function(e,t,n){t&&o(t.split(" "),function(t){var r=n;y(r)&&(r=!De(e,t)),(r?Re:Ie)(e,t)})},parent:function(e){var t=e.parentNode;return t&&t.nodeType!==Kr?t:null},next:function(e){return e.nextElementSibling},find:function(e,t){return e.getElementsByTagName?e.getElementsByTagName(t):[]},clone:Me,triggerHandler:function(e,t,n){var r,i,a,s=t.type||t,u=je(e),c=u&&u.events,l=c&&c[s];l&&(r={preventDefault:function(){this.defaultPrevented=!0},isDefaultPrevented:function(){return this.defaultPrevented===!0},stopImmediatePropagation:function(){this.immediatePropagationStopped=!0},isImmediatePropagationStopped:function(){return this.immediatePropagationStopped===!0},stopPropagation:$,type:s,target:e},t.type&&(r=f(r,t)),i=U(l),a=n?[r].concat(n):[r],o(i,function(t){r.isImmediatePropagationStopped()||t.apply(e,a)}))}},function(e,t){Oe.prototype[t]=function(t,n,r){for(var i,o=0,a=this.length;a>o;o++)y(i)?(i=e(this[o],t,n,r),b(i)&&(i=Er(i))):_e(i,e(this[o],t,n,r));return b(i)?i:this},Oe.prototype.bind=Oe.prototype.on,Oe.prototype.unbind=Oe.prototype.off}),Je.prototype={put:function(e,t){this[Ye(e,this.nextUid)]=t},get:function(e){return this[Ye(e,this.nextUid)]},remove:function(e){var t=this[e=Ye(e,this.nextUid)];return delete this[e],t}};var $i=[function(){this.$get=[function(){return Je}]}],vi=/^[^\(]*\(\s*([^\)]*)\)/m,mi=/,/,gi=/^\s*(_?)(\S+?)\1\s*$/,yi=/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/gm,bi=r("$injector");Xe.$$annotate=Ze;var wi=r("$animate"),xi=1,Si="ng-animate",Ei=function(){this.$get=["$q","$$rAF",function(e,t){function n(){}return n.all=$,n.chain=$,n.prototype={end:$,cancel:$,resume:$,pause:$,complete:$,then:function(n,r){return e(function(e){t(function(){e()})}).then(n,r)}},n}]},Ci=function(){var e=new Je,t=[];this.$get=["$$AnimateRunner","$rootScope",function(n,r){function i(e,t,n){var r=!1;return t&&(t=S(t)?t.split(" "):Ir(t)?t:[],o(t,function(t){t&&(r=!0,e[t]=n)})),r}function a(){o(t,function(t){var n=e.get(t);if(n){var r=nt(t.attr("class")),i="",a="";o(n,function(e,t){var n=!!r[t];e!==n&&(e?i+=(i.length?" ":"")+t:a+=(a.length?" ":"")+t)}),o(t,function(e){i&&Re(e,i),a&&Ie(e,a)}),e.remove(t)}}),t.length=0}function s(n,o,s){var u=e.get(n)||{},c=i(u,o,!0),l=i(u,s,!1);(c||l)&&(e.put(n,u),t.push(n),1===t.length&&r.$$postDigest(a))}return{enabled:$,on:$,off:$,pin:$,push:function(e,t,r,i){return i&&i(),r=r||{},r.from&&e.css(r.from),r.to&&e.css(r.to),(r.addClass||r.removeClass)&&s(e,r.addClass,r.removeClass),new n}}}]},ki=["$provide",function(e){var t=this;this.$$registeredAnimations=Object.create(null),this.register=function(n,r){if(n&&"."!==n.charAt(0))throw wi("notcsel","Expecting class selector starting with '.' got '{0}'.",n);var i=n+"-animation";t.$$registeredAnimations[n.substr(1)]=i,e.factory(i,r)},this.classNameFilter=function(e){if(1===arguments.length&&(this.$$classNameFilter=e instanceof RegExp?e:null,this.$$classNameFilter)){var t=new RegExp("(\\s+|\\/)"+Si+"(\\s+|\\/)");if(t.test(this.$$classNameFilter.toString()))throw wi("nongcls",'$animateProvider.classNameFilter(regex) prohibits accepting a regex value which matches/contains the "{0}" CSS class.',Si)}return this.$$classNameFilter},this.$get=["$$animateQueue",function(e){function t(e,t,n){if(n){var r=tt(n);!r||r.parentNode||r.previousElementSibling||(n=null)}n?n.after(e):t.prepend(e)}return{on:e.on,off:e.off,pin:e.pin,enabled:e.enabled,cancel:function(e){e.end&&e.end()},enter:function(n,r,i,o){return r=r&&Er(r),i=i&&Er(i),r=r||i.parent(),t(n,r,i),e.push(n,"enter",rt(o))},move:function(n,r,i,o){return r=r&&Er(r),i=i&&Er(i),r=r||i.parent(),t(n,r,i),e.push(n,"move",rt(o))},leave:function(t,n){return e.push(t,"leave",rt(n),function(){t.remove()})},addClass:function(t,n,r){return r=rt(r),r.addClass=et(r.addclass,n),e.push(t,"addClass",r)},removeClass:function(t,n,r){return r=rt(r),r.removeClass=et(r.removeClass,n),e.push(t,"removeClass",r)},setClass:function(t,n,r,i){return i=rt(i),i.addClass=et(i.addClass,n),i.removeClass=et(i.removeClass,r),e.push(t,"setClass",i)},animate:function(t,n,r,i,o){return o=rt(o),o.from=o.from?f(o.from,n):n,o.to=o.to?f(o.to,r):r,i=i||"ng-inline-animate",o.tempClasses=et(o.tempClasses,i),e.push(t,"animate",o)}}}]}],Ai=function(){this.$get=["$$rAF","$q",function(e,t){var n=function(){};return n.prototype={done:function(e){this.defer&&this.defer[e===!0?"reject":"resolve"]()},end:function(){this.done()},cancel:function(){this.done(!0)},getPromise:function(){return this.defer||(this.defer=t.defer()),this.defer.promise},then:function(e,t){return this.getPromise().then(e,t)},"catch":function(e){return this.getPromise()["catch"](e)},"finally":function(e){return this.getPromise()["finally"](e)}},function(t,r){function i(){return e(function(){o(),a||s.done(),a=!0}),s}function o(){r.addClass&&(t.addClass(r.addClass),r.addClass=null),r.removeClass&&(t.removeClass(r.removeClass),r.removeClass=null),r.to&&(t.css(r.to),r.to=null)}r.from&&(t.css(r.from),r.from=null);var a,s=new n;return{start:i,end:i}}}]},Oi=r("$compile");ut.$inject=["$provide","$$sanitizeUriProvider"];var Mi=/^((?:x|data)[\:\-_])/i,Ti=r("$controller"),Ni=/^(\S+)(\s+as\s+(\w+))?$/,Vi=function(){this.$get=["$document",function(e){return function(t){return t?!t.nodeType&&t instanceof Er&&(t=t[0]):t=e[0].body,t.offsetWidth+1}}]},ji="application/json",Pi={"Content-Type":ji+";charset=utf-8"},Di=/^\[|^\{(?!\{)/,Ii={"[":/]$/,"{":/}$/},Ri=/^\)\]\}',?\n/,_i=r("$http"),qi=function(e){return function(){throw _i("legacy","The method `{0}` on the promise returned from `$http` has been disabled.",e)}},Fi=jr.$interpolateMinErr=r("$interpolate");Fi.throwNoconcat=function(e){throw Fi("noconcat","Error while interpolating: {0}\nStrict Contextual Escaping disallows interpolations that concatenate multiple expressions when a trusted value is required. See http://docs.angularjs.org/api/ng.$sce",e)},Fi.interr=function(e,t){return Fi("interr","Can't interpolate: {0}\n{1}",e,t.toString())};var Ui=/^([^\?#]*)(\?([^#]*))?(#(.*))?$/,Bi={http:80,https:443,ftp:21},Hi=r("$location"),Li={$$html5:!1,$$replace:!1,absUrl:Bt("$$absUrl"),url:function(e){if(y(e))return this.$$url;var t=Ui.exec(e);return(t[1]||""===e)&&this.path(decodeURIComponent(t[1])),(t[2]||t[1]||""===e)&&this.search(t[3]||""),this.hash(t[5]||""),this},protocol:Bt("$$protocol"),host:Bt("$$host"),port:Bt("$$port"),path:Ht("$$path",function(e){return e=null!==e?e.toString():"","/"==e.charAt(0)?e:"/"+e}),search:function(e,t){switch(arguments.length){case 0:return this.$$search;case 1:if(S(e)||E(e))e=e.toString(),this.$$search=ee(e);else{if(!w(e))throw Hi("isrcharg","The first argument of the `$location#search()` call must be a string or an object.");e=F(e,{}),o(e,function(t,n){null==t&&delete e[n]}),this.$$search=e}break;default:y(t)||null===t?delete this.$$search[e]:this.$$search[e]=t}return this.$$compose(),this},hash:Ht("$$hash",function(e){return null!==e?e.toString():""}),replace:function(){return this.$$replace=!0,this}};o([Ut,Ft,qt],function(e){e.prototype=Object.create(Li),e.prototype.state=function(t){if(!arguments.length)return this.$$state;if(e!==qt||!this.$$html5)throw Hi("nostate","History API state support is available only in HTML5 mode and only in browsers supporting HTML5 History API");return this.$$state=y(t)?null:t,this}});var zi=r("$parse"),Wi=Function.prototype.call,Gi=Function.prototype.apply,Yi=Function.prototype.bind,Ji=ve();o("+ - * / % === !== == != < > <= >= && || ! = |".split(" "),function(e){Ji[e]=!0});var Ki={n:"\n",f:"\f",r:"\r",t:" ",v:"\x0B","'":"'",'"':'"'},Zi=function(e){this.options=e};Zi.prototype={constructor:Zi,lex:function(e){for(this.text=e,this.index=0,this.tokens=[];this.index="0"&&"9">=e&&"string"==typeof e},isWhitespace:function(e){return" "===e||"\r"===e||" "===e||"\n"===e||"\x0B"===e||" "===e},isIdent:function(e){return e>="a"&&"z">=e||e>="A"&&"Z">=e||"_"===e||"$"===e},isExpOperator:function(e){return"-"===e||"+"===e||this.isNumber(e)},throwError:function(e,t,n){n=n||this.index;var r=b(t)?"s "+t+"-"+this.index+" ["+this.text.substring(t,n)+"]":" "+n;throw zi("lexerr","Lexer Error: {0} at column{1} in expression [{2}].",e,r,this.text)},readNumber:function(){for(var e="",t=this.index;this.index0&&!this.peek("}",")",";","]")&&e.push(this.expressionStatement()),!this.expect(";"))return{type:Xi.Program,body:e}},expressionStatement:function(){return{type:Xi.ExpressionStatement,expression:this.filterChain()}},filterChain:function(){for(var e,t=this.expression();e=this.expect("|");)t=this.filter(t);return t},expression:function(){return this.assignment()},assignment:function(){var e=this.ternary();return this.expect("=")&&(e={type:Xi.AssignmentExpression,left:e,right:this.assignment(),operator:"="}),e},ternary:function(){var e,t,n=this.logicalOR();return this.expect("?")&&(e=this.expression(),this.consume(":"))?(t=this.expression(),{type:Xi.ConditionalExpression,test:n,alternate:e,consequent:t}):n},logicalOR:function(){for(var e=this.logicalAND();this.expect("||");)e={type:Xi.LogicalExpression,operator:"||",left:e,right:this.logicalAND()};return e},logicalAND:function(){for(var e=this.equality();this.expect("&&");)e={type:Xi.LogicalExpression,operator:"&&",left:e,right:this.equality()};return e},equality:function(){for(var e,t=this.relational();e=this.expect("==","!=","===","!==");)t={type:Xi.BinaryExpression,operator:e.text,left:t,right:this.relational()};return t},relational:function(){for(var e,t=this.additive();e=this.expect("<",">","<=",">=");)t={type:Xi.BinaryExpression,operator:e.text,left:t,right:this.additive()};return t},additive:function(){for(var e,t=this.multiplicative();e=this.expect("+","-");)t={type:Xi.BinaryExpression,operator:e.text,left:t,right:this.multiplicative()};return t},multiplicative:function(){for(var e,t=this.unary();e=this.expect("*","/","%");)t={type:Xi.BinaryExpression,operator:e.text,left:t,right:this.unary()};return t},unary:function(){var e;return(e=this.expect("+","-","!"))?{type:Xi.UnaryExpression,operator:e.text,prefix:!0,argument:this.unary()}:this.primary()},primary:function(){var e;this.expect("(")?(e=this.filterChain(),this.consume(")")):this.expect("[")?e=this.arrayDeclaration():this.expect("{")?e=this.object():this.constants.hasOwnProperty(this.peek().text)?e=F(this.constants[this.consume().text]):this.peek().identifier?e=this.identifier():this.peek().constant?e=this.constant():this.throwError("not a primary expression",this.peek());for(var t;t=this.expect("(","[",".");)"("===t.text?(e={type:Xi.CallExpression,callee:e,arguments:this.parseArguments()},this.consume(")")):"["===t.text?(e={type:Xi.MemberExpression,object:e,property:this.expression(),computed:!0},this.consume("]")):"."===t.text?e={type:Xi.MemberExpression,object:e,property:this.identifier(),computed:!1}:this.throwError("IMPOSSIBLE");return e},filter:function(e){for(var t=[e],n={type:Xi.CallExpression,callee:this.identifier(),arguments:t,filter:!0};this.expect(":");)t.push(this.expression());return n},parseArguments:function(){var e=[];if(")"!==this.peekToken().text)do e.push(this.expression());while(this.expect(","));return e},identifier:function(){var e=this.consume();return e.identifier||this.throwError("is not a valid identifier",e),{type:Xi.Identifier,name:e.text}},constant:function(){return{type:Xi.Literal,value:this.consume().value}},arrayDeclaration:function(){var e=[];if("]"!==this.peekToken().text)do{if(this.peek("]"))break;e.push(this.expression())}while(this.expect(","));return this.consume("]"),{type:Xi.ArrayExpression,elements:e}},object:function(){var e,t=[];if("}"!==this.peekToken().text)do{if(this.peek("}"))break;e={type:Xi.Property,kind:"init"},this.peek().constant?e.key=this.constant():this.peek().identifier?e.key=this.identifier():this.throwError("invalid key",this.peek()),this.consume(":"),e.value=this.expression(),t.push(e)}while(this.expect(","));return this.consume("}"),{type:Xi.ObjectExpression,properties:t}},throwError:function(e,t){throw zi("syntax","Syntax Error: Token '{0}' {1} at column {2} of the expression [{3}] starting at [{4}].",t.text,e,t.index+1,this.text,this.text.substring(t.index))},consume:function(e){if(0===this.tokens.length)throw zi("ueoe","Unexpected end of expression: {0}",this.text);var t=this.expect(e);return t||this.throwError("is unexpected, expecting ["+e+"]",this.peek()),t},peekToken:function(){if(0===this.tokens.length)throw zi("ueoe","Unexpected end of expression: {0}",this.text);return this.tokens[0]},peek:function(e,t,n,r){return this.peekAhead(0,e,t,n,r)},peekAhead:function(e,t,n,r,i){if(this.tokens.length>e){var o=this.tokens[e],a=o.text;if(a===t||a===n||a===r||a===i||!t&&!n&&!r&&!i)return o}return!1},expect:function(e,t,n,r){var i=this.peek(e,t,n,r);return i?(this.tokens.shift(),i):!1},constants:{"true":{type:Xi.Literal,value:!0},"false":{type:Xi.Literal,value:!1},"null":{type:Xi.Literal,value:null},undefined:{type:Xi.Literal,value:n},"this":{type:Xi.ThisExpression}}},on.prototype={compile:function(e,t){var r=this,i=this.astBuilder.ast(e);this.state={nextId:0,filters:{},expensiveChecks:t,fn:{vars:[],body:[],own:{}},assign:{vars:[],body:[],own:{}},inputs:[]},Xt(i,r.$filter);var a,s="";if(this.stage="assign",a=tn(i)){this.state.computing="assign";var u=this.nextId();this.recurse(a,u),this.return_(u),s="fn.assign="+this.generateFunction("assign","s,v,l")}var c=Qt(i.body);r.stage="inputs",o(c,function(e,t){var n="fn"+t;r.state[n]={vars:[],body:[],own:{}},r.state.computing=n;var i=r.nextId();r.recurse(e,i),r.return_(i),r.state.inputs.push(n),e.watchId=t}),this.state.computing="fn",this.stage="main",this.recurse(i);var l='"'+this.USE+" "+this.STRICT+'";\n'+this.filterPrefix()+"var fn="+this.generateFunction("fn","s,l,a,i")+s+this.watchFns()+"return fn;",f=new Function("$filter","ensureSafeMemberName","ensureSafeObject","ensureSafeFunction","ifDefined","plus","text",l)(this.$filter,Wt,Gt,Yt,Jt,Kt,e);return this.state=this.stage=n,f.literal=nn(i),f.constant=rn(i),f},USE:"use",STRICT:"strict",watchFns:function(){var e=[],t=this.state.inputs,n=this;return o(t,function(t){e.push("var "+t+"="+n.generateFunction(t,"s"))}),t.length&&e.push("fn.inputs=["+t.join(",")+"];"),e.join("")},generateFunction:function(e,t){return"function("+t+"){"+this.varsPrefix(e)+this.body(e)+"};"},filterPrefix:function(){var e=[],t=this;return o(this.state.filters,function(n,r){e.push(n+"=$filter("+t.escape(r)+")")}),e.length?"var "+e.join(",")+";":""},varsPrefix:function(e){return this.state[e].vars.length?"var "+this.state[e].vars.join(",")+";":""},body:function(e){return this.state[e].body.join("")},recurse:function(e,t,r,i,a,s){var u,c,l,f,h=this;if(i=i||$,!s&&b(e.watchId))return t=t||this.nextId(),void this.if_("i",this.lazyAssign(t,this.computedMember("i",e.watchId)),this.lazyRecurse(e,t,r,i,a,!0));switch(e.type){case Xi.Program:o(e.body,function(t,r){h.recurse(t.expression,n,n,function(e){c=e}),r!==e.body.length-1?h.current().body.push(c,";"):h.return_(c)});break;case Xi.Literal:f=this.escape(e.value),this.assign(t,f),i(f);break;case Xi.UnaryExpression:this.recurse(e.argument,n,n,function(e){c=e}),f=e.operator+"("+this.ifDefined(c,0)+")",this.assign(t,f),i(f);break;case Xi.BinaryExpression:this.recurse(e.left,n,n,function(e){u=e}),this.recurse(e.right,n,n,function(e){c=e}),f="+"===e.operator?this.plus(u,c):"-"===e.operator?this.ifDefined(u,0)+e.operator+this.ifDefined(c,0):"("+u+")"+e.operator+"("+c+")",this.assign(t,f),i(f);break;case Xi.LogicalExpression:t=t||this.nextId(),h.recurse(e.left,t),h.if_("&&"===e.operator?t:h.not(t),h.lazyRecurse(e.right,t)),i(t);break;case Xi.ConditionalExpression:t=t||this.nextId(),h.recurse(e.test,t),h.if_(t,h.lazyRecurse(e.alternate,t),h.lazyRecurse(e.consequent,t)),i(t);break;case Xi.Identifier:t=t||this.nextId(),r&&(r.context="inputs"===h.stage?"s":this.assign(this.nextId(),this.getHasOwnProperty("l",e.name)+"?l:s"),r.computed=!1,r.name=e.name),Wt(e.name),h.if_("inputs"===h.stage||h.not(h.getHasOwnProperty("l",e.name)),function(){h.if_("inputs"===h.stage||"s",function(){a&&1!==a&&h.if_(h.not(h.nonComputedMember("s",e.name)),h.lazyAssign(h.nonComputedMember("s",e.name),"{}")),h.assign(t,h.nonComputedMember("s",e.name))})},t&&h.lazyAssign(t,h.nonComputedMember("l",e.name))),(h.state.expensiveChecks||sn(e.name))&&h.addEnsureSafeObject(t),i(t);break;case Xi.MemberExpression:u=r&&(r.context=this.nextId())||this.nextId(),t=t||this.nextId(),h.recurse(e.object,u,n,function(){h.if_(h.notNull(u),function(){e.computed?(c=h.nextId(),h.recurse(e.property,c),h.addEnsureSafeMemberName(c),a&&1!==a&&h.if_(h.not(h.computedMember(u,c)),h.lazyAssign(h.computedMember(u,c),"{}")),f=h.ensureSafeObject(h.computedMember(u,c)),h.assign(t,f),r&&(r.computed=!0,r.name=c)):(Wt(e.property.name),a&&1!==a&&h.if_(h.not(h.nonComputedMember(u,e.property.name)),h.lazyAssign(h.nonComputedMember(u,e.property.name),"{}")),f=h.nonComputedMember(u,e.property.name),(h.state.expensiveChecks||sn(e.property.name))&&(f=h.ensureSafeObject(f)),h.assign(t,f),r&&(r.computed=!1,r.name=e.property.name))},function(){h.assign(t,"undefined")}),i(t)},!!a);break;case Xi.CallExpression:t=t||this.nextId(),e.filter?(c=h.filter(e.callee.name),l=[],o(e.arguments,function(e){var t=h.nextId();h.recurse(e,t),l.push(t)}),f=c+"("+l.join(",")+")",h.assign(t,f),i(t)):(c=h.nextId(),u={},l=[],h.recurse(e.callee,c,u,function(){h.if_(h.notNull(c),function(){h.addEnsureSafeFunction(c),o(e.arguments,function(e){h.recurse(e,h.nextId(),n,function(e){l.push(h.ensureSafeObject(e))})}),u.name?(h.state.expensiveChecks||h.addEnsureSafeObject(u.context),f=h.member(u.context,u.name,u.computed)+"("+l.join(",")+")"):f=c+"("+l.join(",")+")",f=h.ensureSafeObject(f),h.assign(t,f)},function(){h.assign(t,"undefined")}),i(t)}));break;case Xi.AssignmentExpression:if(c=this.nextId(),u={},!en(e.left))throw zi("lval","Trying to assing a value to a non l-value");this.recurse(e.left,n,u,function(){h.if_(h.notNull(u.context),function(){h.recurse(e.right,c),h.addEnsureSafeObject(h.member(u.context,u.name,u.computed)),f=h.member(u.context,u.name,u.computed)+e.operator+c,h.assign(t,f),i(t||f)})},1);break;case Xi.ArrayExpression:l=[],o(e.elements,function(e){h.recurse(e,h.nextId(),n,function(e){l.push(e)})}),f="["+l.join(",")+"]",this.assign(t,f),i(f);break;case Xi.ObjectExpression:l=[],o(e.properties,function(e){h.recurse(e.value,h.nextId(),n,function(t){l.push(h.escape(e.key.type===Xi.Identifier?e.key.name:""+e.key.value)+":"+t)})}),f="{"+l.join(",")+"}",this.assign(t,f),i(f);break;case Xi.ThisExpression:this.assign(t,"s"),i("s");break;case Xi.NGValueParameter:this.assign(t,"v"),i("v")}},getHasOwnProperty:function(e,t){var n=e+"."+t,r=this.current().own;return r.hasOwnProperty(n)||(r[n]=this.nextId(!1,e+"&&("+this.escape(t)+" in "+e+")")),r[n]},assign:function(e,t){return e?(this.current().body.push(e,"=",t,";"),e):void 0},filter:function(e){return this.state.filters.hasOwnProperty(e)||(this.state.filters[e]=this.nextId(!0)),this.state.filters[e]},ifDefined:function(e,t){return"ifDefined("+e+","+this.escape(t)+")"},plus:function(e,t){return"plus("+e+","+t+")"},return_:function(e){this.current().body.push("return ",e,";")},if_:function(e,t,n){if(e===!0)t();else{var r=this.current().body;r.push("if(",e,"){"),t(),r.push("}"),n&&(r.push("else{"),n(),r.push("}"))}},not:function(e){return"!("+e+")"},notNull:function(e){return e+"!=null"},nonComputedMember:function(e,t){return e+"."+t},computedMember:function(e,t){return e+"["+t+"]"},member:function(e,t,n){return n?this.computedMember(e,t):this.nonComputedMember(e,t)},addEnsureSafeObject:function(e){this.current().body.push(this.ensureSafeObject(e),";")},addEnsureSafeMemberName:function(e){this.current().body.push(this.ensureSafeMemberName(e),";")},addEnsureSafeFunction:function(e){this.current().body.push(this.ensureSafeFunction(e),";")},ensureSafeObject:function(e){return"ensureSafeObject("+e+",text)"},ensureSafeMemberName:function(e){return"ensureSafeMemberName("+e+",text)"},ensureSafeFunction:function(e){return"ensureSafeFunction("+e+",text)"},lazyRecurse:function(e,t,n,r,i,o){var a=this;return function(){a.recurse(e,t,n,r,i,o)}},lazyAssign:function(e,t){var n=this;return function(){n.assign(e,t)}},stringEscapeRegex:/[^ a-zA-Z0-9]/g,stringEscapeFn:function(e){return"\\u"+("0000"+e.charCodeAt(0).toString(16)).slice(-4)},escape:function(e){if(S(e))return"'"+e.replace(this.stringEscapeRegex,this.stringEscapeFn)+"'";if(E(e))return e.toString();if(e===!0)return"true";if(e===!1)return"false";if(null===e)return"null";if("undefined"==typeof e)return"undefined";throw zi("esc","IMPOSSIBLE")},nextId:function(e,t){var n="v"+this.state.nextId++;return e||this.current().vars.push(n+(t?"="+t:"")),n},current:function(){return this.state[this.state.computing]}},an.prototype={compile:function(e,t){var n=this,r=this.astBuilder.ast(e);this.expression=e,this.expensiveChecks=t,Xt(r,n.$filter);var i,a;(i=tn(r))&&(a=this.recurse(i));var s,u=Qt(r.body);u&&(s=[],o(u,function(e,t){var r=n.recurse(e);e.input=r,s.push(r),e.watchId=t}));var c=[];o(r.body,function(e){c.push(n.recurse(e.expression))});var l=0===r.body.length?function(){}:1===r.body.length?c[0]:function(e,t){var n;return o(c,function(r){n=r(e,t)}),n};return a&&(l.assign=function(e,t,n){return a(e,n,t)}),s&&(l.inputs=s),l.literal=nn(r),l.constant=rn(r),l},recurse:function(e,t,r){var i,a,s,u=this;if(e.input)return this.inputs(e.input,e.watchId);switch(e.type){case Xi.Literal:return this.value(e.value,t);case Xi.UnaryExpression:return a=this.recurse(e.argument),this["unary"+e.operator](a,t);case Xi.BinaryExpression:return i=this.recurse(e.left),a=this.recurse(e.right),this["binary"+e.operator](i,a,t);case Xi.LogicalExpression:return i=this.recurse(e.left),a=this.recurse(e.right),this["binary"+e.operator](i,a,t);case Xi.ConditionalExpression:return this["ternary?:"](this.recurse(e.test),this.recurse(e.alternate),this.recurse(e.consequent),t);case Xi.Identifier:return Wt(e.name,u.expression),u.identifier(e.name,u.expensiveChecks||sn(e.name),t,r,u.expression);case Xi.MemberExpression:return i=this.recurse(e.object,!1,!!r),e.computed||(Wt(e.property.name,u.expression),a=e.property.name),e.computed&&(a=this.recurse(e.property)),e.computed?this.computedMember(i,a,t,r,u.expression):this.nonComputedMember(i,a,u.expensiveChecks,t,r,u.expression);case Xi.CallExpression:return s=[],o(e.arguments,function(e){s.push(u.recurse(e))}),e.filter&&(a=this.$filter(e.callee.name)),e.filter||(a=this.recurse(e.callee,!0)),e.filter?function(e,r,i,o){for(var u=[],c=0;c":function(e,t,n){return function(r,i,o,a){var s=e(r,i,o,a)>t(r,i,o,a);return n?{value:s}:s}},"binary<=":function(e,t,n){return function(r,i,o,a){var s=e(r,i,o,a)<=t(r,i,o,a);return n?{value:s}:s}},"binary>=":function(e,t,n){return function(r,i,o,a){var s=e(r,i,o,a)>=t(r,i,o,a);return n?{value:s}:s}},"binary&&":function(e,t,n){return function(r,i,o,a){var s=e(r,i,o,a)&&t(r,i,o,a);return n?{value:s}:s}},"binary||":function(e,t,n){return function(r,i,o,a){var s=e(r,i,o,a)||t(r,i,o,a);return n?{value:s}:s}},"ternary?:":function(e,t,n,r){return function(i,o,a,s){var u=e(i,o,a,s)?t(i,o,a,s):n(i,o,a,s);return r?{value:u}:u}},value:function(e,t){return function(){return t?{context:n,name:n,value:e}:e}},identifier:function(e,t,r,i,o){return function(a,s,u,c){var l=s&&e in s?s:a;i&&1!==i&&l&&!l[e]&&(l[e]={});var f=l?l[e]:n;return t&&Gt(f,o),r?{context:l,name:e,value:f}:f}},computedMember:function(e,t,n,r,i){return function(o,a,s,u){var c,l,f=e(o,a,s,u);return null!=f&&(c=t(o,a,s,u),Wt(c,i),r&&1!==r&&f&&!f[c]&&(f[c]={}),l=f[c],Gt(l,i)),n?{context:f,name:c,value:l}:l}},nonComputedMember:function(e,t,r,i,o,a){return function(s,u,c,l){var f=e(s,u,c,l);o&&1!==o&&f&&!f[t]&&(f[t]={});var h=null!=f?f[t]:n;return(r||sn(t))&&Gt(h,a),i?{context:f,name:t,value:h}:h}},inputs:function(e,t){return function(n,r,i,o){return o?o[t]:e(n,r,i)}}};var Qi=function(e,t,n){this.lexer=e,this.$filter=t,this.options=n,this.ast=new Xi(this.lexer),this.astCompiler=n.csp?new an(this.ast,t):new on(this.ast,t)};Qi.prototype={constructor:Qi,parse:function(e){return this.astCompiler.compile(e,this.options.expensiveChecks)}};var eo=(ve(),ve(),Object.prototype.valueOf),to=r("$sce"),no={HTML:"html",CSS:"css",URL:"url",RESOURCE_URL:"resourceUrl",JS:"js"},Oi=r("$compile"),ro=t.createElement("a"),io=En(e.location.href);An.$inject=["$document"],Mn.$inject=["$provide"],Pn.$inject=["$locale"],Dn.$inject=["$locale"];var oo=".",ao={yyyy:_n("FullYear",4),yy:_n("FullYear",2,0,!0),y:_n("FullYear",1),MMMM:qn("Month"),MMM:qn("Month",!0),MM:_n("Month",2,1),M:_n("Month",1,1),dd:_n("Date",2),d:_n("Date",1),HH:_n("Hours",2),H:_n("Hours",1),hh:_n("Hours",2,-12),h:_n("Hours",1,-12),mm:_n("Minutes",2),m:_n("Minutes",1),ss:_n("Seconds",2),s:_n("Seconds",1),sss:_n("Milliseconds",3),EEEE:qn("Day"),EEE:qn("Day",!0),a:Ln,Z:Fn,ww:Hn(2),w:Hn(1),G:zn,GG:zn,GGG:zn,GGGG:Wn},so=/((?:[^yMdHhmsaZEwG']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+|H+|h+|m+|s+|a|Z|G+|w+))(.*)/,uo=/^\-?\d+$/;Gn.$inject=["$locale"];var co=m(gr),lo=m(br); +Kn.$inject=["$parse"];var fo=m({restrict:"E",compile:function(e,t){return t.href||t.xlinkHref?void 0:function(e,t){if("a"===t[0].nodeName.toLowerCase()){var n="[object SVGAnimatedString]"===Tr.call(t.prop("href"))?"xlink:href":"href";t.on("click",function(e){t.attr(n)||e.preventDefault()})}}}}),ho={};o(hi,function(e,t){function n(e,n,i){e.$watch(i[r],function(e){i.$set(t,!!e)})}if("multiple"!=e){var r=ct("ng-"+t),i=n;"checked"===e&&(i=function(e,t,i){i.ngModel!==i[r]&&n(e,t,i)}),ho[r]=function(){return{restrict:"A",priority:100,link:i}}}}),o(di,function(e,t){ho[t]=function(){return{priority:100,link:function(e,n,r){if("ngPattern"===t&&"/"==r.ngPattern.charAt(0)){var i=r.ngPattern.match(vr);if(i)return void r.$set("ngPattern",new RegExp(i[1],i[2]))}e.$watch(r[t],function(e){r.$set(t,e)})}}}}),o(["src","srcset","href"],function(e){var t=ct("ng-"+e);ho[t]=function(){return{priority:99,link:function(n,r,i){var o=e,a=e;"href"===e&&"[object SVGAnimatedString]"===Tr.call(r.prop("href"))&&(a="xlinkHref",i.$attr[a]="xlink:href",o=null),i.$observe(t,function(t){return t?(i.$set(a,t),void(Sr&&o&&r.prop(o,i[a]))):void("href"===e&&i.$set(a,null))})}}}});var po={$addControl:$,$$renameControl:Xn,$removeControl:$,$setValidity:$,$setDirty:$,$setPristine:$,$setSubmitted:$},$o="ng-submitted";Qn.$inject=["$element","$attrs","$scope","$animate","$interpolate"];var vo=function(e){return["$timeout","$parse",function(t,r){function i(e){return""===e?r('this[""]').assign:r(e).assign||$}var o={name:"form",restrict:e?"EAC":"E",require:["form","^^?form"],controller:Qn,compile:function(r,o){r.addClass(Ko).addClass(Yo);var a=o.name?"name":e&&o.ngForm?"ngForm":!1;return{pre:function(e,r,o,s){var u=s[0];if(!("action"in o)){var c=function(t){e.$apply(function(){u.$commitViewValue(),u.$setSubmitted()}),t.preventDefault()};ei(r[0],"submit",c),r.on("$destroy",function(){t(function(){ti(r[0],"submit",c)},0,!1)})}var l=s[1]||u.$$parentForm;l.$addControl(u);var h=a?i(u.$name):$;a&&(h(e,u),o.$observe(a,function(t){u.$name!==t&&(h(e,n),u.$$parentForm.$$renameControl(u,t),(h=i(u.$name))(e,u))})),r.on("$destroy",function(){u.$$parentForm.$removeControl(u),h(e,n),f(u,po)})}}}};return o}]},mo=vo(),go=vo(!0),yo=/\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z)/,bo=/^(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?$/,wo=/^[a-z0-9!#$%&'*+\/=?^_`{|}~.-]+@[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i,xo=/^\s*(\-|\+)?(\d+|(\d*(\.\d*)))([eE][+-]?\d+)?\s*$/,So=/^(\d{4})-(\d{2})-(\d{2})$/,Eo=/^(\d{4})-(\d\d)-(\d\d)T(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,Co=/^(\d{4})-W(\d\d)$/,ko=/^(\d{4})-(\d\d)$/,Ao=/^(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,Oo={text:tr,date:or("date",So,ir(So,["yyyy","MM","dd"]),"yyyy-MM-dd"),"datetime-local":or("datetimelocal",Eo,ir(Eo,["yyyy","MM","dd","HH","mm","ss","sss"]),"yyyy-MM-ddTHH:mm:ss.sss"),time:or("time",Ao,ir(Ao,["HH","mm","ss","sss"]),"HH:mm:ss.sss"),week:or("week",Co,rr,"yyyy-Www"),month:or("month",ko,ir(ko,["yyyy","MM"]),"yyyy-MM"),number:sr,url:ur,email:cr,radio:lr,checkbox:hr,hidden:$,button:$,submit:$,reset:$,file:$},Mo=["$browser","$sniffer","$filter","$parse",function(e,t,n,r){return{restrict:"E",require:["?ngModel"],link:{pre:function(i,o,a,s){s[0]&&(Oo[gr(a.type)]||Oo.text)(i,o,a,s[0],t,e,n,r)}}}}],To=/^(true|false|\d+)$/,No=function(){return{restrict:"A",priority:100,compile:function(e,t){return To.test(t.ngValue)?function(e,t,n){n.$set("value",e.$eval(n.ngValue))}:function(e,t,n){e.$watch(n.ngValue,function(e){n.$set("value",e)})}}}},Vo=["$compile",function(e){return{restrict:"AC",compile:function(t){return e.$$addBindingClass(t),function(t,n,r){e.$$addBindingInfo(n,r.ngBind),n=n[0],t.$watch(r.ngBind,function(e){n.textContent=y(e)?"":e})}}}}],jo=["$interpolate","$compile",function(e,t){return{compile:function(n){return t.$$addBindingClass(n),function(n,r,i){var o=e(r.attr(i.$attr.ngBindTemplate));t.$$addBindingInfo(r,o.expressions),r=r[0],i.$observe("ngBindTemplate",function(e){r.textContent=y(e)?"":e})}}}}],Po=["$sce","$parse","$compile",function(e,t,n){return{restrict:"A",compile:function(r,i){var o=t(i.ngBindHtml),a=t(i.ngBindHtml,function(e){return(e||"").toString()});return n.$$addBindingClass(r),function(t,r,i){n.$$addBindingInfo(r,i.ngBindHtml),t.$watch(a,function(){r.html(e.getTrustedHtml(o(t))||"")})}}}}],Do=m({restrict:"A",require:"ngModel",link:function(e,t,n,r){r.$viewChangeListeners.push(function(){e.$eval(n.ngChange)})}}),Io=pr("",!0),Ro=pr("Odd",0),_o=pr("Even",1),qo=Zn({compile:function(e,t){t.$set("ngCloak",n),e.removeClass("ng-cloak")}}),Fo=[function(){return{restrict:"A",scope:!0,controller:"@",priority:500}}],Uo={},Bo={blur:!0,focus:!0};o("click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste".split(" "),function(e){var t=ct("ng-"+e);Uo[t]=["$parse","$rootScope",function(n,r){return{restrict:"A",compile:function(i,o){var a=n(o[t],null,!0);return function(t,n){n.on(e,function(n){var i=function(){a(t,{$event:n})};Bo[e]&&r.$$phase?t.$evalAsync(i):t.$apply(i)})}}}}]});var Ho=["$animate",function(e){return{multiElement:!0,transclude:"element",priority:600,terminal:!0,restrict:"A",$$tlb:!0,link:function(n,r,i,o,a){var s,u,c;n.$watch(i.ngIf,function(n){n?u||a(function(n,o){u=o,n[n.length++]=t.createComment(" end ngIf: "+i.ngIf+" "),s={clone:n},e.enter(n,r.parent(),r)}):(c&&(c.remove(),c=null),u&&(u.$destroy(),u=null),s&&(c=$e(s.clone),e.leave(c).then(function(){c=null}),s=null))})}}}],Lo=["$templateRequest","$anchorScroll","$animate",function(e,t,n){return{restrict:"ECA",priority:400,terminal:!0,transclude:"element",controller:jr.noop,compile:function(r,i){var o=i.ngInclude||i.src,a=i.onload||"",s=i.autoscroll;return function(r,i,u,c,l){var f,h,p,d=0,$=function(){h&&(h.remove(),h=null),f&&(f.$destroy(),f=null),p&&(n.leave(p).then(function(){h=null}),h=p,p=null)};r.$watch(o,function(o){var u=function(){!b(s)||s&&!r.$eval(s)||t()},h=++d;o?(e(o,!0).then(function(e){if(h===d){var t=r.$new();c.template=e;var s=l(t,function(e){$(),n.enter(e,null,i).then(u)});f=t,p=s,f.$emit("$includeContentLoaded",o),r.$eval(a)}},function(){h===d&&($(),r.$emit("$includeContentError",o))}),r.$emit("$includeContentRequested",o)):($(),c.template=null)})}}}}],zo=["$compile",function(e){return{restrict:"ECA",priority:-400,require:"ngInclude",link:function(n,r,i,o){return/SVG/.test(r[0].toString())?(r.empty(),void e(ke(o.template,t).childNodes)(n,function(e){r.append(e)},{futureParentElement:r})):(r.html(o.template),void e(r.contents())(n))}}}],Wo=Zn({priority:450,compile:function(){return{pre:function(e,t,n){e.$eval(n.ngInit)}}}}),Go=function(){return{restrict:"A",priority:100,require:"ngModel",link:function(e,t,r,i){var a=t.attr(r.$attr.ngList)||", ",s="false"!==r.ngTrim,u=s?_r(a):a,c=function(e){if(!y(e)){var t=[];return e&&o(e.split(u),function(e){e&&t.push(s?_r(e):e)}),t}};i.$parsers.push(c),i.$formatters.push(function(e){return Ir(e)?e.join(a):n}),i.$isEmpty=function(e){return!e||!e.length}}}},Yo="ng-valid",Jo="ng-invalid",Ko="ng-pristine",Zo="ng-dirty",Xo="ng-untouched",Qo="ng-touched",ea="ng-pending",ta=r("ngModel"),na=["$scope","$exceptionHandler","$attrs","$element","$parse","$animate","$timeout","$rootScope","$q","$interpolate",function(e,t,r,i,a,s,u,c,l,f){this.$viewValue=Number.NaN,this.$modelValue=Number.NaN,this.$$rawModelValue=n,this.$validators={},this.$asyncValidators={},this.$parsers=[],this.$formatters=[],this.$viewChangeListeners=[],this.$untouched=!0,this.$touched=!1,this.$pristine=!0,this.$dirty=!1,this.$valid=!0,this.$invalid=!1,this.$error={},this.$$success={},this.$pending=n,this.$name=f(r.name||"",!1)(e),this.$$parentForm=po;var h,p=a(r.ngModel),d=p.assign,v=p,m=d,g=null,w=this;this.$$setOptions=function(e){if(w.$options=e,e&&e.getterSetter){var t=a(r.ngModel+"()"),n=a(r.ngModel+"($$$p)");v=function(e){var n=p(e);return k(n)&&(n=t(e)),n},m=function(e,t){k(p(e))?n(e,{$$$p:w.$modelValue}):d(e,w.$modelValue)}}else if(!p.assign)throw ta("nonassign","Expression '{0}' is non-assignable. Element: {1}",r.ngModel,X(i))},this.$render=$,this.$isEmpty=function(e){return y(e)||""===e||null===e||e!==e};var x=0;dr({ctrl:this,$element:i,set:function(e,t){e[t]=!0},unset:function(e,t){delete e[t]},$animate:s}),this.$setPristine=function(){w.$dirty=!1,w.$pristine=!0,s.removeClass(i,Zo),s.addClass(i,Ko)},this.$setDirty=function(){w.$dirty=!0,w.$pristine=!1,s.removeClass(i,Ko),s.addClass(i,Zo),w.$$parentForm.$setDirty()},this.$setUntouched=function(){w.$touched=!1,w.$untouched=!0,s.setClass(i,Xo,Qo)},this.$setTouched=function(){w.$touched=!0,w.$untouched=!1,s.setClass(i,Qo,Xo)},this.$rollbackViewValue=function(){u.cancel(g),w.$viewValue=w.$$lastCommittedViewValue,w.$render()},this.$validate=function(){if(!E(w.$modelValue)||!isNaN(w.$modelValue)){var e=w.$$lastCommittedViewValue,t=w.$$rawModelValue,r=w.$valid,i=w.$modelValue,o=w.$options&&w.$options.allowInvalid;w.$$runValidators(t,e,function(e){o||r===e||(w.$modelValue=e?t:n,w.$modelValue!==i&&w.$$writeModelToScope())})}},this.$$runValidators=function(e,t,r){function i(){var e=w.$$parserName||"parse";return y(h)?(u(e,null),!0):(h||(o(w.$validators,function(e,t){u(t,null)}),o(w.$asyncValidators,function(e,t){u(t,null)})),u(e,h),h)}function a(){var n=!0;return o(w.$validators,function(r,i){var o=r(e,t);n=n&&o,u(i,o)}),n?!0:(o(w.$asyncValidators,function(e,t){u(t,null)}),!1)}function s(){var r=[],i=!0;o(w.$asyncValidators,function(o,a){var s=o(e,t);if(!P(s))throw ta("$asyncValidators","Expected asynchronous validator to return a promise but got '{0}' instead.",s);u(a,n),r.push(s.then(function(){u(a,!0)},function(e){i=!1,u(a,!1)}))}),r.length?l.all(r).then(function(){c(i)},$):c(!0)}function u(e,t){f===x&&w.$setValidity(e,t)}function c(e){f===x&&r(e)}x++;var f=x;return i()&&a()?void s():void c(!1)},this.$commitViewValue=function(){var e=w.$viewValue;u.cancel(g),(w.$$lastCommittedViewValue!==e||""===e&&w.$$hasNativeValidators)&&(w.$$lastCommittedViewValue=e,w.$pristine&&this.$setDirty(),this.$$parseAndValidate())},this.$$parseAndValidate=function(){function t(){w.$modelValue!==a&&w.$$writeModelToScope()}var r=w.$$lastCommittedViewValue,i=r;if(h=y(i)?n:!0)for(var o=0;oo;o++){var u=e===n?o:n[o],c=(e[u],S(e[u],u)),l=v(e[u],c);if(t.push(l),s[2]||s[1]){var f=g(r,c);t.push(f)}if(s[4]){var h=b(r,c);t.push(h)}}return t}),getOptions:function(){for(var e=[],t={},n=w(r)||[],i=a(n),s=i.length,u=0;s>u;u++){var c=n===i?u:i[u],l=n[c],h=S(l,c),p=d(r,h),$=v(p,h),x=g(r,h),E=y(r,h),C=b(r,h),k=new o($,p,x,E,C);e.push(k),t[$]=k}return{items:e,selectValueMap:t,getOptionFromViewValue:function(e){return t[m(e)]},getViewValueFromOption:function(e){return f?jr.copy(e.viewValue):e.viewValue}}}}}var a=t.createElement("option"),s=t.createElement("optgroup");return{restrict:"A",terminal:!0,require:["select","?ngModel"],link:function(t,n,i,u){function c(e,t){e.element=t,t.disabled=e.disabled,e.value!==t.value&&(t.value=e.selectValue),e.label!==t.label&&(t.label=e.label,t.textContent=e.label)}function l(e,t,n,r){var i;return t&&gr(t.nodeName)===n?i=t:(i=r.cloneNode(!1),t?e.insertBefore(i,t):e.appendChild(i)),i}function f(e){for(var t;e;)t=e.nextSibling,Be(e),e=t}function h(e){var t=$&&$[0],n=x&&x[0];if(t||n)for(;e&&(e===t||e===n);)e=e.nextSibling;return e}function p(){var e=S&&v.readValue();S=E.getOptions();var t={},r=n[0].firstChild;if(w&&n.prepend($),r=h(r),S.items.forEach(function(e){var i,o,u;e.group?(i=t[e.group],i||(o=l(n[0],r,"optgroup",s),r=o.nextSibling,o.label=e.group,i=t[e.group]={groupElement:o,currentOptionElement:o.firstChild}),u=l(i.groupElement,i.currentOptionElement,"option",a),c(e,u),i.currentOptionElement=u.nextSibling):(u=l(n[0],r,"option",a),c(e,u),r=u.nextSibling)}),Object.keys(t).forEach(function(e){f(t[e].currentOptionElement)}),f(r),d.$render(),!d.$isEmpty(e)){var i=v.readValue();(E.trackBy?B(e,i):e===i)||(d.$setViewValue(i),d.$render())}}var d=u[1];if(d){for(var $,v=u[0],m=i.multiple,g=0,y=n.children(),b=y.length;b>g;g++)if(""===y[g].value){$=y.eq(g);break}var w=!!$,x=Er(a.cloneNode(!1));x.val("?");var S,E=r(i.ngOptions,n,t),C=function(){w||n.prepend($),n.val(""),$.prop("selected",!0),$.attr("selected",!0)},k=function(){w||$.remove()},A=function(){n.prepend(x),n.val("?"),x.prop("selected",!0),x.attr("selected",!0)},O=function(){x.remove()};m?(d.$isEmpty=function(e){return!e||0===e.length},v.writeValue=function(e){S.items.forEach(function(e){e.element.selected=!1}),e&&e.forEach(function(e){var t=S.getOptionFromViewValue(e);t&&!t.disabled&&(t.element.selected=!0)})},v.readValue=function(){var e=n.val()||[],t=[];return o(e,function(e){var n=S.selectValueMap[e];n&&!n.disabled&&t.push(S.getViewValueFromOption(n))}),t},E.trackBy&&t.$watchCollection(function(){return Ir(d.$viewValue)?d.$viewValue.map(function(e){return E.getTrackByValue(e)}):void 0},function(){d.$render()})):(v.writeValue=function(e){var t=S.getOptionFromViewValue(e);t&&!t.disabled?n[0].value!==t.selectValue&&(O(),k(),n[0].value=t.selectValue,t.element.selected=!0,t.element.setAttribute("selected","selected")):null===e||w?(O(),C()):(k(),A())},v.readValue=function(){var e=S.selectValueMap[n.val()];return e&&!e.disabled?(k(),O(),S.getViewValueFromOption(e)):null},E.trackBy&&t.$watch(function(){return E.getTrackByValue(d.$viewValue)},function(){d.$render()})),w?($.remove(),e($)(t),$.removeClass("ng-scope")):$=Er(a.cloneNode(!1)),p(),t.$watchCollection(E.getWatchables,p)}}}}],la=["$locale","$interpolate","$log",function(e,t,n){var r=/{}/g,i=/^when(Minus)?(.+)$/;return{link:function(a,s,u){function c(e){s.text(e||"")}var l,f=u.count,h=u.$attr.when&&s.attr(u.$attr.when),p=u.offset||0,d=a.$eval(h)||{},v={},m=t.startSymbol(),g=t.endSymbol(),b=m+f+"-"+p+g,w=jr.noop;o(u,function(e,t){var n=i.exec(t);if(n){var r=(n[1]?"-":"")+gr(n[2]);d[r]=s.attr(u.$attr[t])}}),o(d,function(e,n){v[n]=t(e.replace(r,b))}),a.$watch(f,function(t){var r=parseFloat(t),i=isNaN(r);if(i||r in d||(r=e.pluralCat(r-p)),r!==l&&!(i&&E(l)&&isNaN(l))){w();var o=v[r];y(o)?(null!=t&&n.debug("ngPluralize: no rule defined for '"+r+"' in "+h),w=$,c()):w=a.$watch(o,c),l=r}})}}}],fa=["$parse","$animate",function(e,a){var s="$$NG_REMOVED",u=r("ngRepeat"),c=function(e,t,n,r,i,o,a){e[n]=r,i&&(e[i]=o),e.$index=t,e.$first=0===t,e.$last=t===a-1,e.$middle=!(e.$first||e.$last),e.$odd=!(e.$even=0===(1&t))},l=function(e){return e.clone[0]},f=function(e){return e.clone[e.clone.length-1]};return{restrict:"A",multiElement:!0,transclude:"element",priority:1e3,terminal:!0,$$tlb:!0,compile:function(r,h){var p=h.ngRepeat,d=t.createComment(" end ngRepeat: "+p+" "),$=p.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+track\s+by\s+([\s\S]+?))?\s*$/);if(!$)throw u("iexp","Expected expression in form of '_item_ in _collection_[ track by _id_]' but got '{0}'.",p);var v=$[1],m=$[2],g=$[3],y=$[4];if($=v.match(/^(?:(\s*[\$\w]+)|\(\s*([\$\w]+)\s*,\s*([\$\w]+)\s*\))$/),!$)throw u("iidexp","'_item_' in '_item_ in _collection_' should be an identifier or '(_key_, _value_)' expression, but got '{0}'.",v);var b=$[3]||$[1],w=$[2];if(g&&(!/^[$a-zA-Z_][$a-zA-Z0-9_]*$/.test(g)||/^(null|undefined|this|\$index|\$first|\$middle|\$last|\$even|\$odd|\$parent|\$root|\$id)$/.test(g)))throw u("badident","alias '{0}' is invalid --- must be a valid JS identifier which is not a reserved name.",g);var x,S,E,C,k={$id:Ye};return y?x=e(y):(E=function(e,t){return Ye(t)},C=function(e){return e}),function(e,t,r,h,$){x&&(S=function(t,n,r){return w&&(k[w]=t),k[b]=n,k.$index=r,x(e,k)});var v=ve();e.$watchCollection(m,function(r){var h,m,y,x,k,A,O,M,T,N,V,j,P=t[0],D=ve();if(g&&(e[g]=r),i(r))T=r,M=S||E;else{M=S||C,T=[];for(var I in r)yr.call(r,I)&&"$"!==I.charAt(0)&&T.push(I)}for(x=T.length,V=new Array(x),h=0;x>h;h++)if(k=r===T?h:T[h],A=r[k],O=M(k,A,h),v[O])N=v[O],delete v[O],D[O]=N,V[h]=N;else{if(D[O])throw o(V,function(e){e&&e.scope&&(v[e.id]=e)}),u("dupes","Duplicates in a repeater are not allowed. Use 'track by' expression to specify unique keys. Repeater: {0}, Duplicate key: {1}, Duplicate value: {2}",p,O,A);V[h]={id:O,scope:n,clone:n},D[O]=!0}for(var R in v){if(N=v[R],j=$e(N.clone),a.leave(j),j[0].parentNode)for(h=0,m=j.length;m>h;h++)j[h][s]=!0;N.scope.$destroy()}for(h=0;x>h;h++)if(k=r===T?h:T[h],A=r[k],N=V[h],N.scope){y=P;do y=y.nextSibling;while(y&&y[s]);l(N)!=y&&a.move($e(N.clone),null,Er(P)),P=f(N),c(N.scope,h,b,A,w,k,x)}else $(function(e,t){N.scope=t;var n=d.cloneNode(!1);e[e.length++]=n,a.enter(e,null,Er(P)),P=n,N.clone=e,D[N.id]=N,c(N.scope,h,b,A,w,k,x)});v=D})}}}}],ha="ng-hide",pa="ng-hide-animate",da=["$animate",function(e){return{restrict:"A",multiElement:!0,link:function(t,n,r){t.$watch(r.ngShow,function(t){e[t?"removeClass":"addClass"](n,ha,{tempClasses:pa})})}}}],$a=["$animate",function(e){return{restrict:"A",multiElement:!0,link:function(t,n,r){t.$watch(r.ngHide,function(t){e[t?"addClass":"removeClass"](n,ha,{tempClasses:pa})})}}}],va=Zn(function(e,t,n){e.$watch(n.ngStyle,function(e,n){n&&e!==n&&o(n,function(e,n){t.css(n,"")}),e&&t.css(e)},!0)}),ma=["$animate",function(e){return{require:"ngSwitch",controller:["$scope",function(){this.cases={}}],link:function(n,r,i,a){var s=i.ngSwitch||i.on,u=[],c=[],l=[],f=[],h=function(e,t){return function(){e.splice(t,1)}};n.$watch(s,function(n){var r,i;for(r=0,i=l.length;i>r;++r)e.cancel(l[r]);for(l.length=0,r=0,i=f.length;i>r;++r){var s=$e(c[r].clone);f[r].$destroy();var p=l[r]=e.leave(s);p.then(h(l,r))}c.length=0,f.length=0,(u=a.cases["!"+n]||a.cases["?"])&&o(u,function(n){n.transclude(function(r,i){f.push(i);var o=n.element;r[r.length++]=t.createComment(" end ngSwitchWhen: ");var a={clone:r};c.push(a),e.enter(r,o.parent(),o)})})})}}}],ga=Zn({transclude:"element",priority:1200,require:"^ngSwitch",multiElement:!0,link:function(e,t,n,r,i){r.cases["!"+n.ngSwitchWhen]=r.cases["!"+n.ngSwitchWhen]||[],r.cases["!"+n.ngSwitchWhen].push({transclude:i,element:t})}}),ya=Zn({transclude:"element",priority:1200,require:"^ngSwitch",multiElement:!0,link:function(e,t,n,r,i){r.cases["?"]=r.cases["?"]||[],r.cases["?"].push({transclude:i,element:t})}}),ba=Zn({restrict:"EAC",link:function(e,t,n,i,o){if(!o)throw r("ngTransclude")("orphan","Illegal use of ngTransclude directive in the template! No parent directive that requires a transclusion found. Element: {0}",X(t));o(function(e){t.empty(),t.append(e)})}}),wa=["$templateCache",function(e){return{restrict:"E",terminal:!0,compile:function(t,n){if("text/ng-template"==n.type){var r=n.id,i=t[0].text;e.put(r,i)}}}}],xa={$setViewValue:$,$render:$},Sa=["$element","$scope","$attrs",function(e,r,i){var o=this,a=new Je;o.ngModelCtrl=xa,o.unknownOption=Er(t.createElement("option")),o.renderUnknownOption=function(t){var n="? "+Ye(t)+" ?";o.unknownOption.val(n),e.prepend(o.unknownOption),e.val(n)},r.$on("$destroy",function(){o.renderUnknownOption=$}),o.removeUnknownOption=function(){o.unknownOption.parent()&&o.unknownOption.remove()},o.readValue=function(){return o.removeUnknownOption(),e.val()},o.writeValue=function(t){o.hasOption(t)?(o.removeUnknownOption(),e.val(t),""===t&&o.emptyOption.prop("selected",!0)):null==t&&o.emptyOption?(o.removeUnknownOption(),e.val("")):o.renderUnknownOption(t)},o.addOption=function(e,t){pe(e,'"option value"'),""===e&&(o.emptyOption=t);var n=a.get(e)||0;a.put(e,n+1)},o.removeOption=function(e){var t=a.get(e);t&&(1===t?(a.remove(e),""===e&&(o.emptyOption=n)):a.put(e,t-1))},o.hasOption=function(e){return!!a.get(e)}}],Ea=function(){return{restrict:"E",require:["select","?ngModel"],controller:Sa,link:function(e,t,n,r){var i=r[1];if(i){var a=r[0];if(a.ngModelCtrl=i,i.$render=function(){a.writeValue(i.$viewValue)},t.on("change",function(){e.$apply(function(){i.$setViewValue(a.readValue())})}),n.multiple){a.readValue=function(){var e=[];return o(t.find("option"),function(t){t.selected&&e.push(t.value)}),e},a.writeValue=function(e){var n=new Je(e);o(t.find("option"),function(e){e.selected=b(n.get(e.value))})};var s,u=NaN;e.$watch(function(){u!==i.$viewValue||B(s,i.$viewValue)||(s=U(i.$viewValue),i.$render()),u=i.$viewValue}),i.$isEmpty=function(e){return!e||0===e.length}}}}}},Ca=["$interpolate",function(e){function t(e){e[0].hasAttribute("selected")&&(e[0].selected=!0)}return{restrict:"E",priority:100,compile:function(n,r){if(b(r.value))var i=e(r.value,!0);else{var o=e(n.text(),!0);o||r.$set("value",n.text())}return function(e,n,r){function a(e){c.addOption(e,n),c.ngModelCtrl.$render(),t(n)}var s="$selectController",u=n.parent(),c=u.data(s)||u.parent().data(s);if(c&&c.ngModelCtrl){if(i){var l;r.$observe("value",function(e){b(l)&&c.removeOption(l),l=e,a(e)})}else o?e.$watch(o,function(e,t){r.$set("value",e),t!==e&&c.removeOption(t),a(e)}):a(r.value);n.on("$destroy",function(){c.removeOption(r.value),c.ngModelCtrl.$render()})}}}}}],ka=m({restrict:"E",terminal:!1}),Aa=function(){return{restrict:"A",require:"?ngModel",link:function(e,t,n,r){r&&(n.required=!0,r.$validators.required=function(e,t){return!n.required||!r.$isEmpty(t)},n.$observe("required",function(){r.$validate()}))}}},Oa=function(){return{restrict:"A",require:"?ngModel",link:function(e,t,i,o){if(o){var a,s=i.ngPattern||i.pattern;i.$observe("pattern",function(e){if(S(e)&&e.length>0&&(e=new RegExp("^"+e+"$")),e&&!e.test)throw r("ngPattern")("noregexp","Expected {0} to be a RegExp but was {1}. Element: {2}",s,e,X(t));a=e||n,o.$validate()}),o.$validators.pattern=function(e,t){return o.$isEmpty(t)||y(a)||a.test(t)}}}}},Ma=function(){return{restrict:"A",require:"?ngModel",link:function(e,t,n,r){if(r){var i=-1;n.$observe("maxlength",function(e){var t=p(e);i=isNaN(t)?-1:t,r.$validate()}),r.$validators.maxlength=function(e,t){return 0>i||r.$isEmpty(t)||t.length<=i}}}}},Ta=function(){return{restrict:"A",require:"?ngModel",link:function(e,t,n,r){if(r){var i=0;n.$observe("minlength",function(e){i=p(e)||0,r.$validate()}),r.$validators.minlength=function(e,t){return r.$isEmpty(t)||t.length>=i}}}}};return e.angular.bootstrap?void console.log("WARNING: Tried to load angular more than once."):(le(),be(jr),jr.module("ngLocale",[],["$provide",function(e){function t(e){e+="";var t=e.indexOf(".");return-1==t?0:e.length-t-1}function r(e,r){var i=r;n===i&&(i=Math.min(t(e),3));var o=Math.pow(10,i),a=(e*o|0)%o;return{v:i,f:a}}var i={ZERO:"zero",ONE:"one",TWO:"two",FEW:"few",MANY:"many",OTHER:"other"};e.value("$locale",{DATETIME_FORMATS:{AMPMS:["AM","PM"],DAY:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],ERANAMES:["Before Christ","Anno Domini"],ERAS:["BC","AD"],FIRSTDAYOFWEEK:6,MONTH:["January","February","March","April","May","June","July","August","September","October","November","December"],SHORTDAY:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],SHORTMONTH:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],WEEKENDRANGE:[5,6],fullDate:"EEEE, MMMM d, y",longDate:"MMMM d, y",medium:"MMM d, y h:mm:ss a",mediumDate:"MMM d, y",mediumTime:"h:mm:ss a","short":"M/d/yy h:mm a",shortDate:"M/d/yy",shortTime:"h:mm a"},NUMBER_FORMATS:{CURRENCY_SYM:"$",DECIMAL_SEP:".",GROUP_SEP:",",PATTERNS:[{gSize:3,lgSize:3,maxFrac:3,minFrac:0,minInt:1,negPre:"-",negSuf:"",posPre:"",posSuf:""},{gSize:3,lgSize:3,maxFrac:2,minFrac:2,minInt:1,negPre:"-¤",negSuf:"",posPre:"¤",posSuf:""}]},id:"en-us",pluralCat:function(e,t){var n=0|e,o=r(e,t);return 1==n&&0==o.v?i.ONE:i.OTHER}})}]),void Er(t).ready(function(){oe(t,ae)}))}(window,document),!window.angular.$$csp().noInlineStyle&&window.angular.element(document.head).prepend(''); +!function(e,r,t){"use strict";function n(){function e(e,t){return r.extend(Object.create(e),t)}function t(e,r){var t=r.caseInsensitiveMatch,n={originalPath:e,regexp:e},a=n.keys=[];return e=e.replace(/([().])/g,"\\$1").replace(/(\/)?:(\w+)([\?\*])?/g,function(e,r,t,n){var o="?"===n?n:null,i="*"===n?n:null;return a.push({name:t,optional:!!o}),r=r||"",""+(o?"":r)+"(?:"+(o?r:"")+(i&&"(.+?)"||"([^/]+)")+(o||"")+")"+(o||"")}).replace(/([\/$\*])/g,"\\$1"),n.regexp=new RegExp("^"+e+"$",t?"i":""),n}var n={};this.when=function(e,a){var o=r.copy(a);if(r.isUndefined(o.reloadOnSearch)&&(o.reloadOnSearch=!0),r.isUndefined(o.caseInsensitiveMatch)&&(o.caseInsensitiveMatch=this.caseInsensitiveMatch),n[e]=r.extend(o,e&&t(e,o)),e){var i="/"==e[e.length-1]?e.substr(0,e.length-1):e+"/";n[i]=r.extend({redirectTo:e},t(i,o))}return this},this.caseInsensitiveMatch=!1,this.otherwise=function(e){return"string"==typeof e&&(e={redirectTo:e}),this.when(null,e),this},this.$get=["$rootScope","$location","$routeParams","$q","$injector","$templateRequest","$sce",function(t,a,o,i,c,l,s){function h(e,r){var t=r.keys,n={};if(!r.regexp)return null;var a=r.regexp.exec(e);if(!a)return null;for(var o=1,i=a.length;i>o;++o){var c=t[o-1],u=a[o];c&&u&&(n[c.name]=u)}return n}function $(e){var n=w.current;v=f(),m=v&&n&&v.$$route===n.$$route&&r.equals(v.pathParams,n.pathParams)&&!v.reloadOnSearch&&!g,m||!n&&!v||t.$broadcast("$routeChangeStart",v,n).defaultPrevented&&e&&e.preventDefault()}function p(){var e=w.current,n=v;m?(e.params=n.params,r.copy(e.params,o),t.$broadcast("$routeUpdate",e)):(n||e)&&(g=!1,w.current=n,n&&n.redirectTo&&(r.isString(n.redirectTo)?a.path(d(n.redirectTo,n.params)).search(n.params).replace():a.url(n.redirectTo(n.pathParams,a.path(),a.search())).replace()),i.when(n).then(function(){if(n){var e,t,a=r.extend({},n.resolve);return r.forEach(a,function(e,t){a[t]=r.isString(e)?c.get(e):c.invoke(e,null,null,t)}),r.isDefined(e=n.template)?r.isFunction(e)&&(e=e(n.params)):r.isDefined(t=n.templateUrl)&&(r.isFunction(t)&&(t=t(n.params)),r.isDefined(t)&&(n.loadedTemplateUrl=s.valueOf(t),e=l(t))),r.isDefined(e)&&(a.$template=e),i.all(a)}}).then(function(a){n==w.current&&(n&&(n.locals=a,r.copy(n.params,o)),t.$broadcast("$routeChangeSuccess",n,e))},function(r){n==w.current&&t.$broadcast("$routeChangeError",n,e,r)}))}function f(){var t,o;return r.forEach(n,function(n,i){!o&&(t=h(a.path(),n))&&(o=e(n,{params:r.extend({},a.search(),t),pathParams:t}),o.$$route=n)}),o||n[null]&&e(n[null],{params:{},pathParams:{}})}function d(e,t){var n=[];return r.forEach((e||"").split(":"),function(e,r){if(0===r)n.push(e);else{var a=e.match(/(\w+)(?:[?*])?(.*)/),o=a[1];n.push(t[o]),n.push(a[2]||""),delete t[o]}}),n.join("")}var v,m,g=!1,w={routes:n,reload:function(){g=!0,t.$evalAsync(function(){$(),p()})},updateParams:function(e){if(!this.current||!this.current.$$route)throw u("norout","Tried updating route when with no current route");e=r.extend({},this.current.params,e),a.path(d(this.current.$$route.originalPath,e)),a.search(e)}};return t.$on("$locationChangeStart",$),t.$on("$locationChangeSuccess",p),w}]}function a(){this.$get=function(){return{}}}function o(e,t,n){return{restrict:"ECA",terminal:!0,priority:400,transclude:"element",link:function(a,o,i,c,u){function l(){p&&(n.cancel(p),p=null),h&&(h.$destroy(),h=null),$&&(p=n.leave($),p.then(function(){p=null}),$=null)}function s(){var i=e.current&&e.current.locals,c=i&&i.$template;if(r.isDefined(c)){var s=a.$new(),p=e.current,v=u(s,function(e){n.enter(e,null,$||o).then(function(){!r.isDefined(f)||f&&!a.$eval(f)||t()}),l()});$=v,h=p.scope=s,h.$emit("$viewContentLoaded"),h.$eval(d)}else l()}var h,$,p,f=i.autoscroll,d=i.onload||"";a.$on("$routeChangeSuccess",s),s()}}}function i(e,r,t){return{restrict:"ECA",priority:-400,link:function(n,a){var o=t.current,i=o.locals;a.html(i.$template);var c=e(a.contents());if(o.controller){i.$scope=n;var u=r(o.controller,i);o.controllerAs&&(n[o.controllerAs]=u),a.data("$ngControllerController",u),a.children().data("$ngControllerController",u)}c(n)}}}var c=r.module("ngRoute",["ng"]).provider("$route",n),u=r.$$minErr("ngRoute");c.provider("$routeParams",a),c.directive("ngView",o),c.directive("ngView",i),o.$inject=["$route","$anchorScroll","$animate"],i.$inject=["$compile","$controller","$route"]}(window,window.angular); +!function(e,n,o){"use strict";function t(e,o,t){function i(e,t,i){var u,c;i=i||{},c=i.expires,u=n.isDefined(i.path)?i.path:r,n.isUndefined(t)&&(c="Thu, 01 Jan 1970 00:00:00 GMT",t=""),n.isString(c)&&(c=new Date(c));var s=encodeURIComponent(e)+"="+encodeURIComponent(t);s+=u?";path="+u:"",s+=i.domain?";domain="+i.domain:"",s+=c?";expires="+c.toUTCString():"",s+=i.secure?";secure":"";var f=s.length+1;return f>4096&&o.warn("Cookie '"+e+"' possibly not set or overflowed because it was too large ("+f+" > 4096 bytes)!"),s}var r=t.baseHref(),u=e[0];return function(e,n,o){u.cookie=i(e,n,o)}}n.module("ngCookies",["ng"]).provider("$cookies",[function(){function e(e){return e?n.extend({},t,e):t}var t=this.defaults={};this.$get=["$$cookieReader","$$cookieWriter",function(t,i){return{get:function(e){return t()[e]},getObject:function(e){var o=this.get(e);return o?n.fromJson(o):o},getAll:function(){return t()},put:function(n,o,t){i(n,o,e(t))},putObject:function(e,o,t){this.put(e,n.toJson(o),t)},remove:function(n,t){i(n,o,e(t))}}}]}]),n.module("ngCookies").factory("$cookieStore",["$cookies",function(e){return{get:function(n){return e.getObject(n)},put:function(n,o){e.putObject(n,o)},remove:function(n){e.remove(n)}}}]),t.$inject=["$document","$log","$browser"],n.module("ngCookies").provider("$$cookieWriter",function(){this.$get=t})}(window,window.angular); +!function(e,t,r){"use strict";function n(e){var r=[];return l(r,t.noop).chars(e),r.join("")}function a(e,r){var n,a={},i=e.split(",");for(n=0;n=0&&b[i]!=n;i--);if(i>=0){for(a=b.length-1;a>=i;a--)r.end&&r.end(b[a]);b.length=i}}"string"!=typeof e&&(e=null===e||"undefined"==typeof e?"":""+e);var i,o,l,b=[],k=e;for(b.last=function(){return b[b.length-1]};e;){if(l="",o=!0,b.last()&&$[b.last()]?(e=e.replace(new RegExp("([\\W\\w]*)<\\s*\\/\\s*"+b.last()+"[^>]*>","i"),function(e,t){return t=t.replace(f,"$1").replace(x,"$1"),r.chars&&r.chars(s(t)),""}),a("",b.last())):(0===e.indexOf("",i)===i&&(r.comment&&r.comment(e.substring(4,i)),e=e.substring(i+3),o=!1)):m.test(e)?(i=e.match(m))&&(e=e.replace(i[0],""),o=!1):g.test(e)?(i=e.match(p))&&(e=e.substring(i[0].length),i[0].replace(p,a),o=!1):d.test(e)&&((i=e.match(u))?(i[4]&&(e=e.substring(i[0].length),i[0].replace(u,n)),o=!1):(l+="<",e=e.substring(1))),o&&(i=e.indexOf("<"),l+=0>i?e:e.substring(0,i),e=0>i?"":e.substring(i),r.chars&&r.chars(s(l)))),e==k)throw c("badparse",e);k=e}a()}function s(e){return e?(E.innerHTML=e.replace(//g,">")}function l(e,r){var n=!1,a=t.bind(e,e.push);return{start:function(e,i,s){e=t.lowercase(e),!n&&$[e]&&(n=e),n||!0!==A[e]||(a("<"),a(e),t.forEach(i,function(n,i){var s=t.lowercase(i),l="img"===e&&"src"===s||"background"===s;!0!==D[s]||!0===C[s]&&!r(n,l)||(a(" "),a(i),a('="'),a(o(n)),a('"'))}),a(s?"/>":">"))},end:function(e){e=t.lowercase(e),n||!0!==A[e]||(a("")),e==n&&(n=!1)},chars:function(e){n||a(o(e))}}}var c=t.$$minErr("$sanitize"),u=/^<((?:[a-zA-Z])[\w:-]*)((?:\s+[\w:-]+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)\s*(>?)/,p=/^<\/\s*([\w:-]+)[^>]*>/,h=/([\w:-]+)(?:\s*=\s*(?:(?:"((?:[^"])*)")|(?:'((?:[^'])*)')|([^>\s]+)))?/g,d=/^]*?)>/i,x=/"\u201d\u2019]/i,a=/^mailto:/i;return function(i,s){function o(e){e&&d.push(n(e))}function l(e,r){d.push("'),o(r),d.push("")}if(!i)return i;for(var c,u,p,h=i,d=[];c=h.match(r);)u=c[0],c[2]||c[4]||(u=(c[3]?"http://":"mailto:")+u),p=c.index,o(h.substr(0,p)),l(u,c[0].replace(a,"")),h=h.substring(p+c[0].length);return o(h),e(d.join(""))}}])}(window,window.angular); \ No newline at end of file diff --git a/public/javascripts/wechat/gulpfile.js b/public/javascripts/wechat/gulpfile.js new file mode 100644 index 000000000..a6726bd22 --- /dev/null +++ b/public/javascripts/wechat/gulpfile.js @@ -0,0 +1,10 @@ +var gulp = require('gulp'), + uglify = require('gulp-uglify'); +var concat = require('gulp-concat'); + +gulp.task('minify', function () { + gulp.src(['angular.js', 'angular-route.js', 'angular-cookies.js', 'angular-sanitize.min.js']) + .pipe(uglify()) + .pipe(concat('angular.all.min.js')) + .pipe(gulp.dest('build')) +}); diff --git a/public/plugin_assets/redmine_code_review/javascripts/code_review.js b/public/plugin_assets/redmine_code_review/javascripts/code_review.js index 4f4d81691..625f376c9 100644 --- a/public/plugin_assets/redmine_code_review/javascripts/code_review.js +++ b/public/plugin_assets/redmine_code_review/javascripts/code_review.js @@ -1,354 +1,354 @@ -/* -# Code Review plugin for Redmine -# Copyright (C) 2009-2013 Haruyuki Iida -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License -# as published by the Free Software Foundation; either version 2 -# of the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ - -var topZindex = 1000; -var action_type = ''; -var rev = ''; -var rev_to = ''; -var path = ''; -var urlprefix = ''; -var review_form_dialog = null; -var add_form_title = null; -var review_dialog_title = null; -var repository_id = null; -var filenames = []; - -var ReviewCount = function(total, open, progress){ - this.total = total; - this.open = open; - this.closed = total - open; - this.progress = progress -}; - -var CodeReview = function(id) { - this.id = id; - this.path = ''; - this.line = 0; - this.url = ''; - this.is_closed = false; -}; - -var review_counts = new Array(); -var code_reviews_map = new Array(); -var code_reviews_dialog_map = new Array(); - -function UpdateRepositoryView(title) { - var header = $("table.changesets thead tr:first"); - var th = $(''); - th.html(title); - header.append(th); - $('tr.changeset td.id a').each(function(i){ - var revision = this.getAttribute("href"); - revision = revision.substr(revision.lastIndexOf("/") + 1); - var review = review_counts['revision_' + revision]; - var td = $('',{ - 'class':'progress' - }); - td.html(review.progress); - $(this.parentNode.parentNode).append(td); - }); - } -//add function $.down -if(! $.fn.down) -(function($) { - $.fn.down = function() { - var el = this[0] && this[0].firstChild; - while (el && el.nodeType != 1) - el = el.nextSibling; - return $(el); - }; -})(jQuery); - -function UpdateRevisionView() { - $('li.change').each(function(){ - var li = $(this); - if (li.hasClass('folder')) return; - - var a = li.down('a'); - if (a.size() == 0) return; - var path = a.attr('href').replace(urlprefix, '').replace(/\?.*$/, ''); - - var reviewlist = code_reviews_map[path]; - if (reviewlist == null) return; - - var ul = $('
          '); - for (var j = 0; j < reviewlist.length; j++) { - var review = reviewlist[j]; - var icon = review.is_closed? 'icon-closed-review': 'icon-review'; - var item = $('
        • ', { - 'class': 'icon ' + icon + ' code_review_summary' - }); - item.html(review.url); - ul.append(item); - } - li.append(ul); - }); -} - -function setAddReviewButton(url, change_id, image_tag, is_readonly, is_diff, attachment_id){ - var filetables = []; - var j = 0; - $('table').each(function(){ - if($(this).hasClass('filecontent')){ - filetables[j++] = this; - } - }); - j = 0; - $('table.filecontent th.filename').each(function(){ - filenames[j] = $.trim($(this).text()); - j++; - }); - addReviewUrl = url + '?change_id=' + change_id + '&action_type=' + action_type + - '&rev=' + rev + '&rev_to=' + rev_to + - '&attachment_id=' + attachment_id + '&repository_id=' + encodeURIComponent(repository_id); - if (path != null && path.length > 0) { - addReviewUrl = addReviewUrl + '&path=' + encodeURIComponent(path); - } - var num = 0; - if (is_diff) { - num = 1; - } - var i, l, tl; - for (i = 0, tl = filetables.length; i < tl; i++) { - var table = filetables[i]; - var trs = table.getElementsByTagName('tr'); - - for (j = 0,l = trs.length; j < l; j++) { - var tr = trs[j]; - var ths = tr.getElementsByTagName('th'); - - var th = ths[num]; - if (th == null) { - continue; - } - - var th_html = th.innerHTML; - - var line = th_html.match(/[0-9]+/); - if (line == null) { - continue; - } - - var span_html = ''; - - if (!is_readonly) { - span_html += image_tag; - } - span_html += ''; - th.innerHTML = th_html + span_html; - - var img = th.getElementsByTagName('img')[0]; - if (img != null ) { - img.id = 'add_revew_img_' + line + '_' + i; - $(img).click(clickPencil); - } - } - } - - -} - -function clickPencil(e) -{ -// alert('$(e.target).attr("id") = ' + $(e.target).attr("id")); - var result = $(e.target).attr("id").match(/([0-9]+)_([0-9]+)/); - var line = result[1]; - var file_count = eval(result[2]); - var url = addReviewUrl + '&line=' + line + '&file_count=' + file_count; - - if (path == null || path.length == 0) { - url = url + '&path=' + encodeURIComponent(filenames[file_count]) + '&diff_all=true'; - } - addReview(url); - formPopup(e.pageX, e.pageY); - e.preventDefault(); -} -var addReviewUrl = null; -var showReviewUrl = null; -var showReviewImageTag = null; -var showClosedReviewImageTag = null; - -function setShowReviewButton(line, review_id, is_closed, file_count) { - //alert('file_count = ' + file_count); - var span = $('#review_span_' + line + '_' + file_count); - if (span.size() == 0) { - return; - } - var innerSpan = $('',{id: 'review_' + review_id}); - span.append(innerSpan); - innerSpan.html(is_closed? showClosedReviewImageTag : showReviewImageTag); - var div = $('
          ', { - 'class':'draggable', - id: 'show_review_' + review_id - }); - $('#code_review').append(div); - innerSpan.down('img').click(function(e) { - var review_id = $(e.target).parent().attr('id').match(/[0-9]+/)[0]; - var span = $('#review_' + review_id); // span element of view review button - var pos = span.offset(); - showReview(showReviewUrl, review_id, pos.left + 10 + 5, pos.top + 25); - }); -} - -function popupReview(review_id) { - var span = $('#review_' + review_id); // span element of view review button - var pos = span.offset(); - $('html,body').animate({ scrollTop: pos.top }, - {duration: 'fast', - complete: function(){showReview(showReviewUrl, review_id, pos.left + 10 + 5, pos.top)}}); - // position and show popup dialog - // create popup dialog - //var win = showReview(showReviewUrl, review_id, pos.left + 10 + 5, pos.top); -// win.toFront(); -} - -function showReview(url, review_id, x, y) { - if (code_reviews_dialog_map[review_id] != null) { - var cur_win = code_reviews_dialog_map[review_id]; - cur_win.hide(); - code_reviews_dialog_map[review_id] = null; - } - $('#show_review_' + review_id).load(url, {review_id: review_id}); - var review = getReviewObjById(review_id); - - var win = $('#show_review_' + review_id).dialog({ - show: {effect:'scale'},// ? 'top-left' - //position: [x, y + 5], - width:640, - zIndex: topZindex, - title: review_dialog_title - }); -// win.getContent().style.color = "#484848"; -// win.getContent().style.background = "#ffffff"; - topZindex++; - code_reviews_dialog_map[review_id] = win; - return win -} - -function getReviewObjById(review_id) { - for (var reviewlist in code_reviews_map) { - for (var i = 0; i < reviewlist.length; i++) { - var review = reviewlist[i]; - if (review.id == review_id) { - return review; - } - } - } - return null; -} - -function formPopup(x, y){ - //@see http://docs.jquery.com/UI/Effects/Scale - var win = $('#review-form-frame').dialog({ - show: {effect:'scale', direction: 'both'},// ? 'top-left' -// position: [x, y + 5], - width:640, - zIndex: topZindex, - title: add_form_title - }); -// win.getContent().style.background = "#ffffff"; - if (review_form_dialog != null) { - review_form_dialog.destroy(); - review_form_dialog = null; - } - review_form_dialog = win; - topZindex += 10; - return false; -} - -function hideForm() { - if (review_form_dialog == null) { - return; - } - review_form_dialog.dialog('close'); - review_form_dialog = null; - $('#review-form').html(''); -} -function addReview(url) { - $('#review-form').load(url); -} - -function deleteReview(review_id) { - $('show_review_' + review_id).remove(); - $('review_' + review_id).remove(); - -} - -function changeImage(review_id, is_closed) { - var span = $('review_' + review_id); - var new_image = null; - var dummy = new Element('span'); - if (is_closed) { - dummy.insert(showClosedReviewImageTag); - } - else { - dummy.insert(showReviewImageTag); - } - new_image = dummy.down().getAttribute('src'); - //alert(new_image); - span.down('img').setAttribute('src', new_image); - -} - -function make_addreview_link(project, link) { - var alist = $('#content p a'); - if (alist == null) { - return; - } - var a = alist[0]; - var p = a.parentNode; - p.innerHTML = p.innerHTML + " | " + link; -} - -function call_update_revisions(url) { - var changeset_ids = ''; - var links = $$('table.changesets tbody tr.changeset td.id a'); - for (var i = 0; i < links.length; i++) { - var link = links[i]; - var href = link.getAttribute('href'); - var id = href.replace(/^.*\/revisions\//, ''); - if (i > 0) { - changeset_ids += ','; - } - changeset_ids += id; - } - new Ajax.Updater('code_review_revisions', url, - { - evalScripts:true, - method:'get', - parameters: 'changeset_ids=' + encodeURI(changeset_ids) - }); -} - -$.fn.serialize2json = function() -{ - var o = {}; - var a = this.serializeArray(); - $.each(a, function() { - if (o[this.name]) { - if (!o[this.name].push) { - o[this.name] = [o[this.name]]; - } - o[this.name].push(this.value || ''); - } else { - o[this.name] = this.value || ''; - } - }); - return o; +/* +# Code Review plugin for Redmine +# Copyright (C) 2009-2013 Haruyuki Iida +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +var topZindex = 1000; +var action_type = ''; +var rev = ''; +var rev_to = ''; +var path = ''; +var urlprefix = ''; +var review_form_dialog = null; +var add_form_title = null; +var review_dialog_title = null; +var repository_id = null; +var filenames = []; + +var ReviewCount = function(total, open, progress){ + this.total = total; + this.open = open; + this.closed = total - open; + this.progress = progress +}; + +var CodeReview = function(id) { + this.id = id; + this.path = ''; + this.line = 0; + this.url = ''; + this.is_closed = false; +}; + +var review_counts = new Array(); +var code_reviews_map = new Array(); +var code_reviews_dialog_map = new Array(); + +function UpdateRepositoryView(title) { + var header = $("table.changesets thead tr:first"); + var th = $(''); + th.html(title); + header.append(th); + $('tr.changeset td.id a').each(function(i){ + var revision = this.getAttribute("href"); + revision = revision.substr(revision.lastIndexOf("/") + 1); + var review = review_counts['revision_' + revision]; + var td = $('',{ + 'class':'progress' + }); + td.html(review.progress); + $(this.parentNode.parentNode).append(td); + }); + } +//add function $.down +if(! $.fn.down) +(function($) { + $.fn.down = function() { + var el = this[0] && this[0].firstChild; + while (el && el.nodeType != 1) + el = el.nextSibling; + return $(el); + }; +})(jQuery); + +function UpdateRevisionView() { + $('li.change').each(function(){ + var li = $(this); + if (li.hasClass('folder')) return; + + var a = li.down('a'); + if (a.size() == 0) return; + var path = a.attr('href').replace(urlprefix, '').replace(/\?.*$/, ''); + + var reviewlist = code_reviews_map[path]; + if (reviewlist == null) return; + + var ul = $('
            '); + for (var j = 0; j < reviewlist.length; j++) { + var review = reviewlist[j]; + var icon = review.is_closed? 'icon-closed-review': 'icon-review'; + var item = $('
          • ', { + 'class': 'icon ' + icon + ' code_review_summary' + }); + item.html(review.url); + ul.append(item); + } + li.append(ul); + }); +} + +function setAddReviewButton(url, change_id, image_tag, is_readonly, is_diff, attachment_id){ + var filetables = []; + var j = 0; + $('table').each(function(){ + if($(this).hasClass('filecontent')){ + filetables[j++] = this; + } + }); + j = 0; + $('table.filecontent th.filename').each(function(){ + filenames[j] = $.trim($(this).text()); + j++; + }); + addReviewUrl = url + '?change_id=' + change_id + '&action_type=' + action_type + + '&rev=' + rev + '&rev_to=' + rev_to + + '&attachment_id=' + attachment_id + '&repository_id=' + encodeURIComponent(repository_id); + if (path != null && path.length > 0) { + addReviewUrl = addReviewUrl + '&path=' + encodeURIComponent(path); + } + var num = 0; + if (is_diff) { + num = 1; + } + var i, l, tl; + for (i = 0, tl = filetables.length; i < tl; i++) { + var table = filetables[i]; + var trs = table.getElementsByTagName('tr'); + + for (j = 0,l = trs.length; j < l; j++) { + var tr = trs[j]; + var ths = tr.getElementsByTagName('th'); + + var th = ths[num]; + if (th == null) { + continue; + } + + var th_html = th.innerHTML; + + var line = th_html.match(/[0-9]+/); + if (line == null) { + continue; + } + + var span_html = ''; + + if (!is_readonly) { + span_html += image_tag; + } + span_html += ''; + th.innerHTML = th_html + span_html; + + var img = th.getElementsByTagName('img')[0]; + if (img != null ) { + img.id = 'add_revew_img_' + line + '_' + i; + $(img).click(clickPencil); + } + } + } + + +} + +function clickPencil(e) +{ +// alert('$(e.target).attr("id") = ' + $(e.target).attr("id")); + var result = $(e.target).attr("id").match(/([0-9]+)_([0-9]+)/); + var line = result[1]; + var file_count = eval(result[2]); + var url = addReviewUrl + '&line=' + line + '&file_count=' + file_count; + + if (path == null || path.length == 0) { + url = url + '&path=' + encodeURIComponent(filenames[file_count]) + '&diff_all=true'; + } + addReview(url); + formPopup(e.pageX, e.pageY); + e.preventDefault(); +} +var addReviewUrl = null; +var showReviewUrl = null; +var showReviewImageTag = null; +var showClosedReviewImageTag = null; + +function setShowReviewButton(line, review_id, is_closed, file_count) { + //alert('file_count = ' + file_count); + var span = $('#review_span_' + line + '_' + file_count); + if (span.size() == 0) { + return; + } + var innerSpan = $('',{id: 'review_' + review_id}); + span.append(innerSpan); + innerSpan.html(is_closed? showClosedReviewImageTag : showReviewImageTag); + var div = $('
            ', { + 'class':'draggable', + id: 'show_review_' + review_id + }); + $('#code_review').append(div); + innerSpan.down('img').click(function(e) { + var review_id = $(e.target).parent().attr('id').match(/[0-9]+/)[0]; + var span = $('#review_' + review_id); // span element of view review button + var pos = span.offset(); + showReview(showReviewUrl, review_id, pos.left + 10 + 5, pos.top + 25); + }); +} + +function popupReview(review_id) { + var span = $('#review_' + review_id); // span element of view review button + var pos = span.offset(); + $('html,body').animate({ scrollTop: pos.top }, + {duration: 'fast', + complete: function(){showReview(showReviewUrl, review_id, pos.left + 10 + 5, pos.top)}}); + // position and show popup dialog + // create popup dialog + //var win = showReview(showReviewUrl, review_id, pos.left + 10 + 5, pos.top); +// win.toFront(); +} + +function showReview(url, review_id, x, y) { + if (code_reviews_dialog_map[review_id] != null) { + var cur_win = code_reviews_dialog_map[review_id]; + cur_win.hide(); + code_reviews_dialog_map[review_id] = null; + } + $('#show_review_' + review_id).load(url, {review_id: review_id}); + var review = getReviewObjById(review_id); + + var win = $('#show_review_' + review_id).dialog({ + show: {effect:'scale'},// ? 'top-left' + //position: [x, y + 5], + width:640, + zIndex: topZindex, + title: review_dialog_title + }); +// win.getContent().style.color = "#484848"; +// win.getContent().style.background = "#ffffff"; + topZindex++; + code_reviews_dialog_map[review_id] = win; + return win +} + +function getReviewObjById(review_id) { + for (var reviewlist in code_reviews_map) { + for (var i = 0; i < reviewlist.length; i++) { + var review = reviewlist[i]; + if (review.id == review_id) { + return review; + } + } + } + return null; +} + +function formPopup(x, y){ + //@see http://docs.jquery.com/UI/Effects/Scale + var win = $('#review-form-frame').dialog({ + show: {effect:'scale', direction: 'both'},// ? 'top-left' +// position: [x, y + 5], + width:640, + zIndex: topZindex, + title: add_form_title + }); +// win.getContent().style.background = "#ffffff"; + if (review_form_dialog != null) { + review_form_dialog.destroy(); + review_form_dialog = null; + } + review_form_dialog = win; + topZindex += 10; + return false; +} + +function hideForm() { + if (review_form_dialog == null) { + return; + } + review_form_dialog.dialog('close'); + review_form_dialog = null; + $('#review-form').html(''); +} +function addReview(url) { + $('#review-form').load(url); +} + +function deleteReview(review_id) { + $('show_review_' + review_id).remove(); + $('review_' + review_id).remove(); + +} + +function changeImage(review_id, is_closed) { + var span = $('review_' + review_id); + var new_image = null; + var dummy = new Element('span'); + if (is_closed) { + dummy.insert(showClosedReviewImageTag); + } + else { + dummy.insert(showReviewImageTag); + } + new_image = dummy.down().getAttribute('src'); + //alert(new_image); + span.down('img').setAttribute('src', new_image); + +} + +function make_addreview_link(project, link) { + var alist = $('#content p a'); + if (alist == null) { + return; + } + var a = alist[0]; + var p = a.parentNode; + p.innerHTML = p.innerHTML + " | " + link; +} + +function call_update_revisions(url) { + var changeset_ids = ''; + var links = $$('table.changesets tbody tr.changeset td.id a'); + for (var i = 0; i < links.length; i++) { + var link = links[i]; + var href = link.getAttribute('href'); + var id = href.replace(/^.*\/revisions\//, ''); + if (i > 0) { + changeset_ids += ','; + } + changeset_ids += id; + } + new Ajax.Updater('code_review_revisions', url, + { + evalScripts:true, + method:'get', + parameters: 'changeset_ids=' + encodeURI(changeset_ids) + }); +} + +$.fn.serialize2json = function() +{ + var o = {}; + var a = this.serializeArray(); + $.each(a, function() { + if (o[this.name]) { + if (!o[this.name].push) { + o[this.name] = [o[this.name]]; + } + o[this.name].push(this.value || ''); + } else { + o[this.name] = this.value || ''; + } + }); + return o; }; \ No newline at end of file diff --git a/public/plugin_assets/redmine_code_review/stylesheets/activity.css b/public/plugin_assets/redmine_code_review/stylesheets/activity.css index 202ed54e3..e3cdc3d55 100644 --- a/public/plugin_assets/redmine_code_review/stylesheets/activity.css +++ b/public/plugin_assets/redmine_code_review/stylesheets/activity.css @@ -1,4 +1,4 @@ - -dt.code_review { - background-image: url(../images/review.png); + +dt.code_review { + background-image: url(../images/review.png); } \ No newline at end of file diff --git a/public/plugin_assets/redmine_code_review/stylesheets/code_review.css b/public/plugin_assets/redmine_code_review/stylesheets/code_review.css index e25dc6d72..11939ae79 100644 --- a/public/plugin_assets/redmine_code_review/stylesheets/code_review.css +++ b/public/plugin_assets/redmine_code_review/stylesheets/code_review.css @@ -1,97 +1,97 @@ -/* -# Code Review plugin for Redmine -# Copyright (C) 2009 Haruyuki Iida -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License -# as published by the Free Software Foundation; either version 2 -# of the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -*/ -#review-form-frame { -height: 100%; -} - -.autoscroll table.filecontent th.line-num { - white-space: nowrap; - vertical-align: bottom; - padding-top: 0; - padding-bottom: 0; - text-align:left; -} - -table.filecontent th.line-num img{ - padding: 0; - margin: 0; - cursor: pointer; -} - - -.code-review-form-title { - background-color: #002059; - color: white; - padding-left: 2px; - padding-right: 2px; - cursor: default; -} - - -.code_review_viewer { - - min-width: 300px; - /* - max-width: 60%; - */ - /* max-height: 400px; */ -} - -.code_review_viewer .issue{ - -} - -.code_review_body { - background-color: white; - - padding:2px; - -} - -#code_review_list table.list td { - text-align: center; -} - -#code_review_list table.list td.path { - text-align: left; -} - -#code_review_list table.list td.subject { - text-align: left; -} - -.icon-review { - background-image: url(../images/review.png); - background-repeat: no-repeat; -} - -.icon-closed-review { - background-image: url(../images/closed_review.png); - background-repeat: no-repeat; -} - -.icon-settings { - background-image: url(../../../images/changeset.png); - background-repeat: no-repeat; -} - - -li.code_review_summary { - list-style-type: none; +/* +# Code Review plugin for Redmine +# Copyright (C) 2009 Haruyuki Iida +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +*/ +#review-form-frame { +height: 100%; +} + +.autoscroll table.filecontent th.line-num { + white-space: nowrap; + vertical-align: bottom; + padding-top: 0; + padding-bottom: 0; + text-align:left; +} + +table.filecontent th.line-num img{ + padding: 0; + margin: 0; + cursor: pointer; +} + + +.code-review-form-title { + background-color: #002059; + color: white; + padding-left: 2px; + padding-right: 2px; + cursor: default; +} + + +.code_review_viewer { + + min-width: 300px; + /* + max-width: 60%; + */ + /* max-height: 400px; */ +} + +.code_review_viewer .issue{ + +} + +.code_review_body { + background-color: white; + + padding:2px; + +} + +#code_review_list table.list td { + text-align: center; +} + +#code_review_list table.list td.path { + text-align: left; +} + +#code_review_list table.list td.subject { + text-align: left; +} + +.icon-review { + background-image: url(../images/review.png); + background-repeat: no-repeat; +} + +.icon-closed-review { + background-image: url(../images/closed_review.png); + background-repeat: no-repeat; +} + +.icon-settings { + background-image: url(../../../images/changeset.png); + background-repeat: no-repeat; +} + + +li.code_review_summary { + list-style-type: none; } \ No newline at end of file diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/MIT-LICENSE b/public/plugin_assets/redmine_code_review/stylesheets/window_js/MIT-LICENSE index 0a7cf9ad1..5bcdad1bd 100644 --- a/public/plugin_assets/redmine_code_review/stylesheets/window_js/MIT-LICENSE +++ b/public/plugin_assets/redmine_code_review/stylesheets/window_js/MIT-LICENSE @@ -1,19 +1,19 @@ -Copyright (c) 2006 Sébastien Gruhier (http://xilinus.com, http://itseb.com) - -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. +Copyright (c) 2006 Sébastien Gruhier (http://xilinus.com, http://itseb.com) + +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. diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/alert.css b/public/plugin_assets/redmine_code_review/stylesheets/window_js/alert.css index 4846e6185..432d14e36 100644 --- a/public/plugin_assets/redmine_code_review/stylesheets/window_js/alert.css +++ b/public/plugin_assets/redmine_code_review/stylesheets/window_js/alert.css @@ -1,119 +1,119 @@ -.overlay_alert { - background-color: #85BBEF; - filter:alpha(opacity=60); - -moz-opacity: 0.6; - opacity: 0.6; -} - -.alert_nw { - width: 5px; - height: 5px; - background: transparent url(alert/top_left.gif) no-repeat bottom left; -} - -.alert_n { - height: 5px; - background: transparent url(alert/top.gif) repeat-x bottom left; -} - -.alert_ne { - width: 5px; - height: 5px; - background: transparent url(alert/top_right.gif) no-repeat bottom left -} - -.alert_e { - width: 5px; - background: transparent url(alert/right.gif) repeat-y 0 0; -} - -.alert_w { - width: 5px; - background: transparent url(alert/left.gif) repeat-y 0 0; -} - -.alert_sw { - width: 5px; - height: 5px; - background: transparent url(alert/bottom_left.gif) no-repeat 0 0; -} - -.alert_s { - height: 5px; - background: transparent url(alert/bottom.gif) repeat-x 0 0; -} - -.alert_se, .alert_sizer { - width: 5px; - height: 5px; - background: transparent url(alert/bottom_right.gif) no-repeat 0 0; -} - -.alert_close { - width:0px; - height:0px; - display:none; -} - -.alert_minimize { - width:0px; - height:0px; - display:none; -} - -.alert_maximize { - width:0px; - height:0px; - display:none; -} - -.alert_title { - float:left; - height:1px; - width:100%; -} - -.alert_content { - overflow:visible; - color: #000; - font-family: Tahoma, Arial, sans-serif; - font: 12px arial; - background: #FFF; -} - -/* For alert/confirm dialog */ -.alert_window { - background: #FFF; - padding:20px; - margin-left:auto; - margin-right:auto; - width:400px; -} - -.alert_message { - font: 12px arial; - width:100%; - color:#F00; - padding-bottom:10px; -} - -.alert_buttons { - text-align:center; - width:100%; -} - -.alert_buttons input { - width:20%; - margin:10px; -} - -.alert_progress { - float:left; - margin:auto; - text-align:center; - width:100%; - height:16px; - background: #FFF url('alert/progress.gif') no-repeat center center -} - - +.overlay_alert { + background-color: #85BBEF; + filter:alpha(opacity=60); + -moz-opacity: 0.6; + opacity: 0.6; +} + +.alert_nw { + width: 5px; + height: 5px; + background: transparent url(alert/top_left.gif) no-repeat bottom left; +} + +.alert_n { + height: 5px; + background: transparent url(alert/top.gif) repeat-x bottom left; +} + +.alert_ne { + width: 5px; + height: 5px; + background: transparent url(alert/top_right.gif) no-repeat bottom left +} + +.alert_e { + width: 5px; + background: transparent url(alert/right.gif) repeat-y 0 0; +} + +.alert_w { + width: 5px; + background: transparent url(alert/left.gif) repeat-y 0 0; +} + +.alert_sw { + width: 5px; + height: 5px; + background: transparent url(alert/bottom_left.gif) no-repeat 0 0; +} + +.alert_s { + height: 5px; + background: transparent url(alert/bottom.gif) repeat-x 0 0; +} + +.alert_se, .alert_sizer { + width: 5px; + height: 5px; + background: transparent url(alert/bottom_right.gif) no-repeat 0 0; +} + +.alert_close { + width:0px; + height:0px; + display:none; +} + +.alert_minimize { + width:0px; + height:0px; + display:none; +} + +.alert_maximize { + width:0px; + height:0px; + display:none; +} + +.alert_title { + float:left; + height:1px; + width:100%; +} + +.alert_content { + overflow:visible; + color: #000; + font-family: Tahoma, Arial, sans-serif; + font: 12px arial; + background: #FFF; +} + +/* For alert/confirm dialog */ +.alert_window { + background: #FFF; + padding:20px; + margin-left:auto; + margin-right:auto; + width:400px; +} + +.alert_message { + font: 12px arial; + width:100%; + color:#F00; + padding-bottom:10px; +} + +.alert_buttons { + text-align:center; + width:100%; +} + +.alert_buttons input { + width:20%; + margin:10px; +} + +.alert_progress { + float:left; + margin:auto; + text-align:center; + width:100%; + height:16px; + background: #FFF url('alert/progress.gif') no-repeat center center +} + + diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/alert_lite.css b/public/plugin_assets/redmine_code_review/stylesheets/window_js/alert_lite.css index a74fc71c3..c2ad538ca 100644 --- a/public/plugin_assets/redmine_code_review/stylesheets/window_js/alert_lite.css +++ b/public/plugin_assets/redmine_code_review/stylesheets/window_js/alert_lite.css @@ -1,88 +1,88 @@ -.overlay_alert_lite { - background-color: #85BBEF; - filter:alpha(opacity=60); - -moz-opacity: 0.6; - opacity: 0.6; -} - -.alert_lite_sizer { - width:0px; - height:0px; - display:none; -} - -.alert_lite_close { - width:0px; - height:0px; - display:none; -} - -.alert_lite_minimize { - width:0px; - height:0px; - display:none; -} - -.alert_lite_maximize { - width:0px; - height:0px; - display:none; -} - -.alert_lite_title { - width:0px; - height:0px; - display:none; -} - -.alert_lite_content { - overflow:auto; - color: #000; - font-family: Tahoma, Arial, sans-serif; - font-size: 10px; - background: #FFF; -} - - -/* For alert/confirm dialog */ -.alert_lite_window { - border:1px solid #F00; - background: #FFF; - padding:20px; - margin-left:auto; - margin-right:auto; - width:400px; -} - -.alert_lite_message { - font-size:16px; - text-align:center; - width:100%; - color:#F00; - padding-bottom:10px; -} - -.alert_lite_buttons { - text-align:center; - width:100%; -} - -.alert_lite_buttons input { - width:20%; - margin:10px; -} - -.alert_lite_progress { - float:left; - margin:auto; - text-align:center; - width:100%; - height:16px; - background: #FFF url('alert/progress.gif') no-repeat center center -} - -table.alert_lite_header { - border:1px solid #F00; - background:#FFF -} - +.overlay_alert_lite { + background-color: #85BBEF; + filter:alpha(opacity=60); + -moz-opacity: 0.6; + opacity: 0.6; +} + +.alert_lite_sizer { + width:0px; + height:0px; + display:none; +} + +.alert_lite_close { + width:0px; + height:0px; + display:none; +} + +.alert_lite_minimize { + width:0px; + height:0px; + display:none; +} + +.alert_lite_maximize { + width:0px; + height:0px; + display:none; +} + +.alert_lite_title { + width:0px; + height:0px; + display:none; +} + +.alert_lite_content { + overflow:auto; + color: #000; + font-family: Tahoma, Arial, sans-serif; + font-size: 10px; + background: #FFF; +} + + +/* For alert/confirm dialog */ +.alert_lite_window { + border:1px solid #F00; + background: #FFF; + padding:20px; + margin-left:auto; + margin-right:auto; + width:400px; +} + +.alert_lite_message { + font-size:16px; + text-align:center; + width:100%; + color:#F00; + padding-bottom:10px; +} + +.alert_lite_buttons { + text-align:center; + width:100%; +} + +.alert_lite_buttons input { + width:20%; + margin:10px; +} + +.alert_lite_progress { + float:left; + margin:auto; + text-align:center; + width:100%; + height:16px; + background: #FFF url('alert/progress.gif') no-repeat center center +} + +table.alert_lite_header { + border:1px solid #F00; + background:#FFF +} + diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/alphacube.css b/public/plugin_assets/redmine_code_review/stylesheets/window_js/alphacube.css index 6d2862c0e..7d2790e75 100644 --- a/public/plugin_assets/redmine_code_review/stylesheets/window_js/alphacube.css +++ b/public/plugin_assets/redmine_code_review/stylesheets/window_js/alphacube.css @@ -1,150 +1,150 @@ -.overlay_alphacube { - background-color: #85BBEF; - filter:alpha(opacity=60); - -moz-opacity: 0.6; - opacity: 0.6; -} - -.alphacube_nw { - background: transparent url(alphacube/left-top.gif) no-repeat 0 0; - width:10px; - height:25px; -} - -.alphacube_n { - background: transparent url(alphacube/top-middle.gif) repeat-x 0 0; - height:25px; -} - -.alphacube_ne { - background: transparent url(alphacube/right-top.gif) no-repeat 0 0; - width:10px; - height:25px; -} - -.alphacube_w { - background: transparent url(alphacube/frame-left.gif) repeat-y top left; - width:7px; -} - -.alphacube_e { - background: transparent url(alphacube/frame-right.gif) repeat-y top right; - width:7px; -} - -.alphacube_sw { - background: transparent url(alphacube/bottom-left-c.gif) no-repeat 0 0; - width:7px; - height:7px; -} - -.alphacube_s { - background: transparent url(alphacube/bottom-middle.gif) repeat-x 0 0; - height:7px; -} - -.alphacube_se, .alphacube_sizer { - background: transparent url(alphacube/bottom-right-c.gif) no-repeat 0 0; - width:7px; - height:7px; -} - -.alphacube_sizer { - cursor:se-resize; -} - -.alphacube_close { - width: 23px; - height: 23px; - background: transparent url(alphacube/button-close-focus.gif) no-repeat 0 0; - position:absolute; - top:0px; - right:11px; - cursor:pointer; - z-index:1000; -} - -.alphacube_minimize { - width: 23px; - height: 23px; - background: transparent url(alphacube/button-min-focus.gif) no-repeat 0 0; - position:absolute; - top:0px; - right:55px; - cursor:pointer; - z-index:1000; -} - -.alphacube_maximize { - width: 23px; - height: 23px; - background: transparent url(alphacube/button-max-focus.gif) no-repeat 0 0; - position:absolute; - top:0px; - right:33px; - cursor:pointer; - z-index:1000; -} - -.alphacube_title { - float:left; - height:14px; - font-size:14px; - text-align:center; - margin-top:2px; - width:100%; - color:#123456; -} - -.alphacube_content { - overflow:auto; - color: #000; - font-family: Tahoma, Arial, sans-serif; - font: 12px arial; - background:#FDFDFD; -} - -/* For alert/confirm dialog */ -.alphacube_window { - border:1px solid #F00; - background: #FFF; - padding:20px; - margin-left:auto; - margin-right:auto; - width:400px; -} - -.alphacube_message { - font: 12px arial; - text-align:center; - width:100%; - padding-bottom:10px; -} - -.alphacube_buttons { - text-align:center; - width:100%; -} - -.alphacube_buttons input { - width:20%; - margin:10px; -} - -.alphacube_progress { - float:left; - margin:auto; - text-align:center; - width:100%; - height:16px; - background: #FFF url('alert/progress.gif') no-repeat center center -} - -.alphacube_wired_frame { - background: #FFF; - filter:alpha(opacity=60); - -moz-opacity: 0.6; - opacity: 0.6; -} - - +.overlay_alphacube { + background-color: #85BBEF; + filter:alpha(opacity=60); + -moz-opacity: 0.6; + opacity: 0.6; +} + +.alphacube_nw { + background: transparent url(alphacube/left-top.gif) no-repeat 0 0; + width:10px; + height:25px; +} + +.alphacube_n { + background: transparent url(alphacube/top-middle.gif) repeat-x 0 0; + height:25px; +} + +.alphacube_ne { + background: transparent url(alphacube/right-top.gif) no-repeat 0 0; + width:10px; + height:25px; +} + +.alphacube_w { + background: transparent url(alphacube/frame-left.gif) repeat-y top left; + width:7px; +} + +.alphacube_e { + background: transparent url(alphacube/frame-right.gif) repeat-y top right; + width:7px; +} + +.alphacube_sw { + background: transparent url(alphacube/bottom-left-c.gif) no-repeat 0 0; + width:7px; + height:7px; +} + +.alphacube_s { + background: transparent url(alphacube/bottom-middle.gif) repeat-x 0 0; + height:7px; +} + +.alphacube_se, .alphacube_sizer { + background: transparent url(alphacube/bottom-right-c.gif) no-repeat 0 0; + width:7px; + height:7px; +} + +.alphacube_sizer { + cursor:se-resize; +} + +.alphacube_close { + width: 23px; + height: 23px; + background: transparent url(alphacube/button-close-focus.gif) no-repeat 0 0; + position:absolute; + top:0px; + right:11px; + cursor:pointer; + z-index:1000; +} + +.alphacube_minimize { + width: 23px; + height: 23px; + background: transparent url(alphacube/button-min-focus.gif) no-repeat 0 0; + position:absolute; + top:0px; + right:55px; + cursor:pointer; + z-index:1000; +} + +.alphacube_maximize { + width: 23px; + height: 23px; + background: transparent url(alphacube/button-max-focus.gif) no-repeat 0 0; + position:absolute; + top:0px; + right:33px; + cursor:pointer; + z-index:1000; +} + +.alphacube_title { + float:left; + height:14px; + font-size:14px; + text-align:center; + margin-top:2px; + width:100%; + color:#123456; +} + +.alphacube_content { + overflow:auto; + color: #000; + font-family: Tahoma, Arial, sans-serif; + font: 12px arial; + background:#FDFDFD; +} + +/* For alert/confirm dialog */ +.alphacube_window { + border:1px solid #F00; + background: #FFF; + padding:20px; + margin-left:auto; + margin-right:auto; + width:400px; +} + +.alphacube_message { + font: 12px arial; + text-align:center; + width:100%; + padding-bottom:10px; +} + +.alphacube_buttons { + text-align:center; + width:100%; +} + +.alphacube_buttons input { + width:20%; + margin:10px; +} + +.alphacube_progress { + float:left; + margin:auto; + text-align:center; + width:100%; + height:16px; + background: #FFF url('alert/progress.gif') no-repeat center center +} + +.alphacube_wired_frame { + background: #FFF; + filter:alpha(opacity=60); + -moz-opacity: 0.6; + opacity: 0.6; +} + + diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/behavior.htc b/public/plugin_assets/redmine_code_review/stylesheets/window_js/behavior.htc index e5c6edc1c..437c5ec92 100644 --- a/public/plugin_assets/redmine_code_review/stylesheets/window_js/behavior.htc +++ b/public/plugin_assets/redmine_code_review/stylesheets/window_js/behavior.htc @@ -1,51 +1,51 @@ - - - + + + \ No newline at end of file diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/darkX.css b/public/plugin_assets/redmine_code_review/stylesheets/window_js/darkX.css index e3df3e0a4..2f83cfd46 100644 --- a/public/plugin_assets/redmine_code_review/stylesheets/window_js/darkX.css +++ b/public/plugin_assets/redmine_code_review/stylesheets/window_js/darkX.css @@ -1,121 +1,121 @@ -.overlay_darkX { - background-color: #85BBEF; - filter:alpha(opacity=60); - -moz-opacity: 0.6; - opacity: 0.6; -} - -.darkX_nw { - background: transparent url(darkX/titlebar-left-focused.png) no-repeat 0 0; - width:6px; - height:21px; -} -.darkX_n { - background: transparent url(darkX/titlebar-mid-focused.png) repeat-x 0 0; - height:21px; -} -.darkX_ne { - background: transparent url(darkX/titlebar-right-focused.png) no-repeat 0 0; - width:6px; - height:21px; -} -.darkX_w { - background: transparent url(darkX/frame-left-focused.png) repeat-y top left; - width:3px; -} - -.darkX_e { - background: transparent url(darkX/frame-right-focused.png) repeat-y top right; - width:3px; -} - -.darkX_sw { - background: transparent url(darkX/frame-bottom-left-focused.png) no-repeat 0 0; - width:5px; - height:3px; -} -.darkX_s { - background: transparent url(darkX/frame-bottom-mid-focused.png) repeat-x 0 0; - height:3px; -} -.darkX_se, .darkX_sizer { - background: transparent url(darkX/frame-bottom-right-focused.png) no-repeat 0 0; - width:5px; - height:3px; -} - -.darkX_sizer { - cursor:se-resize; -} - -.darkX_close { - width: 21px; - height: 21px; - background: transparent url(darkX/button-close-focused.png) no-repeat 0 0; - position:absolute; - top:0px; - right:5px; - cursor:pointer; - z-index:1000; -} - -.darkX_minimize { - width: 21px; - height: 21px; - background: transparent url(darkX/button-minimize-focused.png) no-repeat 0 0; - position:absolute; - top:0px; - right:26px; - cursor:pointer; - z-index:1000; -} - -.darkX_maximize { - width: 21px; - height: 21px; - background: transparent url(darkX/button-maximize-focused.png) no-repeat 0 0; - position:absolute; - top:0px; - right:47px; - cursor:pointer; - z-index:1000; -} - - -.darkX_title { - float:left; - height:14px; - font-size:12px; - text-align:center; - margin-top:2px; - width:100%; - color:#FFF; -} - -.darkX_content { - overflow:auto; - color: #E6DF2A; - font-family: Tahoma, Arial, sans-serif; - font-size: 14px; - background:#5E5148; -} - - -/* FOR IE */ -* html .darkX_minimize { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/darkX/button-minimize-focused.png", sizingMethod="crop"); -} - -* html .darkX_maximize { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/darkX/button-maximize-focused.png", sizingMethod="scale"); -} - -* html .darkX_close { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/darkX/button-close-focused.png", sizingMethod="crop"); -} +.overlay_darkX { + background-color: #85BBEF; + filter:alpha(opacity=60); + -moz-opacity: 0.6; + opacity: 0.6; +} + +.darkX_nw { + background: transparent url(darkX/titlebar-left-focused.png) no-repeat 0 0; + width:6px; + height:21px; +} +.darkX_n { + background: transparent url(darkX/titlebar-mid-focused.png) repeat-x 0 0; + height:21px; +} +.darkX_ne { + background: transparent url(darkX/titlebar-right-focused.png) no-repeat 0 0; + width:6px; + height:21px; +} +.darkX_w { + background: transparent url(darkX/frame-left-focused.png) repeat-y top left; + width:3px; +} + +.darkX_e { + background: transparent url(darkX/frame-right-focused.png) repeat-y top right; + width:3px; +} + +.darkX_sw { + background: transparent url(darkX/frame-bottom-left-focused.png) no-repeat 0 0; + width:5px; + height:3px; +} +.darkX_s { + background: transparent url(darkX/frame-bottom-mid-focused.png) repeat-x 0 0; + height:3px; +} +.darkX_se, .darkX_sizer { + background: transparent url(darkX/frame-bottom-right-focused.png) no-repeat 0 0; + width:5px; + height:3px; +} + +.darkX_sizer { + cursor:se-resize; +} + +.darkX_close { + width: 21px; + height: 21px; + background: transparent url(darkX/button-close-focused.png) no-repeat 0 0; + position:absolute; + top:0px; + right:5px; + cursor:pointer; + z-index:1000; +} + +.darkX_minimize { + width: 21px; + height: 21px; + background: transparent url(darkX/button-minimize-focused.png) no-repeat 0 0; + position:absolute; + top:0px; + right:26px; + cursor:pointer; + z-index:1000; +} + +.darkX_maximize { + width: 21px; + height: 21px; + background: transparent url(darkX/button-maximize-focused.png) no-repeat 0 0; + position:absolute; + top:0px; + right:47px; + cursor:pointer; + z-index:1000; +} + + +.darkX_title { + float:left; + height:14px; + font-size:12px; + text-align:center; + margin-top:2px; + width:100%; + color:#FFF; +} + +.darkX_content { + overflow:auto; + color: #E6DF2A; + font-family: Tahoma, Arial, sans-serif; + font-size: 14px; + background:#5E5148; +} + + +/* FOR IE */ +* html .darkX_minimize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/darkX/button-minimize-focused.png", sizingMethod="crop"); +} + +* html .darkX_maximize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/darkX/button-maximize-focused.png", sizingMethod="scale"); +} + +* html .darkX_close { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/darkX/button-close-focused.png", sizingMethod="crop"); +} diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/debug.css b/public/plugin_assets/redmine_code_review/stylesheets/window_js/debug.css index d7981e9ca..69e3b7fc2 100644 --- a/public/plugin_assets/redmine_code_review/stylesheets/window_js/debug.css +++ b/public/plugin_assets/redmine_code_review/stylesheets/window_js/debug.css @@ -1,25 +1,25 @@ -div.inspector div.inspectable { - padding: 0.25em 0 0.25em 1em; - background-color: Gray; - color: white; - border: outset 2px white; - cursor: pointer; -} - -div.inspector div.child { - margin: 0 0 0 1em; -} - -#debug_window_content { /* DIV container for debug sizing*/ - width:250px; - height:100px; - background-color:#000; -} - -#debug { /* DIV container for debug contents*/ - padding:3px; - color:#0f0; - font-family:monaco, Tahoma, Verdana, Arial, Helvetica, sans-serif; - font-size:10px; -} - +div.inspector div.inspectable { + padding: 0.25em 0 0.25em 1em; + background-color: Gray; + color: white; + border: outset 2px white; + cursor: pointer; +} + +div.inspector div.child { + margin: 0 0 0 1em; +} + +#debug_window_content { /* DIV container for debug sizing*/ + width:250px; + height:100px; + background-color:#000; +} + +#debug { /* DIV container for debug contents*/ + padding:3px; + color:#0f0; + font-family:monaco, Tahoma, Verdana, Arial, Helvetica, sans-serif; + font-size:10px; +} + diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/default.css b/public/plugin_assets/redmine_code_review/stylesheets/window_js/default.css index 591451723..6ab13789d 100644 --- a/public/plugin_assets/redmine_code_review/stylesheets/window_js/default.css +++ b/public/plugin_assets/redmine_code_review/stylesheets/window_js/default.css @@ -1,155 +1,155 @@ -.overlay_dialog { - background-color: #666666; - filter:alpha(opacity=60); - -moz-opacity: 0.6; - opacity: 0.6; -} - -.overlay___invisible__ { - background-color: #666666; - filter:alpha(opacity=0); - -moz-opacity: 0; - opacity: 0; -} - -.dialog_nw { - width: 9px; - height: 23px; - background: transparent url(default/top_left.gif) no-repeat 0 0; -} - -.dialog_n { - background: transparent url(default/top_mid.gif) repeat-x 0 0; - height: 23px; -} - -.dialog_ne { - width: 9px; - height: 23px; - background: transparent url(default/top_right.gif) no-repeat 0 0; -} - -.dialog_e { - width: 2px; - background: transparent url(default/center_right.gif) repeat-y 0 0; -} - -.dialog_w { - width: 2px; - background: transparent url(default/center_left.gif) repeat-y 0 0; -} - -.dialog_sw { - width: 9px; - height: 19px; - background: transparent url(default/bottom_left.gif) no-repeat 0 0; -} - -.dialog_s { - background: transparent url(default/bottom_mid.gif) repeat-x 0 0; - height: 19px; -} - -.dialog_se { - width: 9px; - height: 19px; - background: transparent url(default/bottom_right.gif) no-repeat 0 0; -} - -.dialog_sizer { - width: 9px; - height: 19px; - background: transparent url(default/sizer.gif) no-repeat 0 0; - cursor:se-resize; -} - -.dialog_close { - width: 14px; - height: 14px; - background: transparent url(default/close.gif) no-repeat 0 0; - position:absolute; - top:5px; - left:8px; - cursor:pointer; - z-index:2000; -} - -.dialog_minimize { - width: 14px; - height: 15px; - background: transparent url(default/minimize.gif) no-repeat 0 0; - position:absolute; - top:5px; - left:28px; - cursor:pointer; - z-index:2000; -} - -.dialog_maximize { - width: 14px; - height: 15px; - background: transparent url(default/maximize.gif) no-repeat 0 0; - position:absolute; - top:5px; - left:49px; - cursor:pointer; - z-index:2000; -} - -.dialog_title { - float:left; - height:14px; - font-family: Tahoma, Arial, sans-serif; - font-size:12px; - text-align:center; - width:100%; - color:#000; -} - -.dialog_content { - overflow:auto; - color: #DDD; - font-family: Tahoma, Arial, sans-serif; - font-size: 10px; - background-color:#123; -} - -.top_draggable, .bottom_draggable { - cursor:move; -} - -.status_bar { - font-size:12px; -} -.status_bar input{ - font-size:12px; -} - -.wired_frame { - display: block; - position: absolute; - border: 1px #000 dashed; -} - -/* DO NOT CHANGE THESE VALUES*/ -.dialog { - display: block; - position: absolute; -} - -.dialog table.table_window { - border-collapse: collapse; - border-spacing: 0; - width: 100%; - margin: 0px; - padding:0px; -} - -.dialog table.table_window td , .dialog table.table_window th { - padding: 0; -} - -.dialog .title_window { - -moz-user-select:none; -} - +.overlay_dialog { + background-color: #666666; + filter:alpha(opacity=60); + -moz-opacity: 0.6; + opacity: 0.6; +} + +.overlay___invisible__ { + background-color: #666666; + filter:alpha(opacity=0); + -moz-opacity: 0; + opacity: 0; +} + +.dialog_nw { + width: 9px; + height: 23px; + background: transparent url(default/top_left.gif) no-repeat 0 0; +} + +.dialog_n { + background: transparent url(default/top_mid.gif) repeat-x 0 0; + height: 23px; +} + +.dialog_ne { + width: 9px; + height: 23px; + background: transparent url(default/top_right.gif) no-repeat 0 0; +} + +.dialog_e { + width: 2px; + background: transparent url(default/center_right.gif) repeat-y 0 0; +} + +.dialog_w { + width: 2px; + background: transparent url(default/center_left.gif) repeat-y 0 0; +} + +.dialog_sw { + width: 9px; + height: 19px; + background: transparent url(default/bottom_left.gif) no-repeat 0 0; +} + +.dialog_s { + background: transparent url(default/bottom_mid.gif) repeat-x 0 0; + height: 19px; +} + +.dialog_se { + width: 9px; + height: 19px; + background: transparent url(default/bottom_right.gif) no-repeat 0 0; +} + +.dialog_sizer { + width: 9px; + height: 19px; + background: transparent url(default/sizer.gif) no-repeat 0 0; + cursor:se-resize; +} + +.dialog_close { + width: 14px; + height: 14px; + background: transparent url(default/close.gif) no-repeat 0 0; + position:absolute; + top:5px; + left:8px; + cursor:pointer; + z-index:2000; +} + +.dialog_minimize { + width: 14px; + height: 15px; + background: transparent url(default/minimize.gif) no-repeat 0 0; + position:absolute; + top:5px; + left:28px; + cursor:pointer; + z-index:2000; +} + +.dialog_maximize { + width: 14px; + height: 15px; + background: transparent url(default/maximize.gif) no-repeat 0 0; + position:absolute; + top:5px; + left:49px; + cursor:pointer; + z-index:2000; +} + +.dialog_title { + float:left; + height:14px; + font-family: Tahoma, Arial, sans-serif; + font-size:12px; + text-align:center; + width:100%; + color:#000; +} + +.dialog_content { + overflow:auto; + color: #DDD; + font-family: Tahoma, Arial, sans-serif; + font-size: 10px; + background-color:#123; +} + +.top_draggable, .bottom_draggable { + cursor:move; +} + +.status_bar { + font-size:12px; +} +.status_bar input{ + font-size:12px; +} + +.wired_frame { + display: block; + position: absolute; + border: 1px #000 dashed; +} + +/* DO NOT CHANGE THESE VALUES*/ +.dialog { + display: block; + position: absolute; +} + +.dialog table.table_window { + border-collapse: collapse; + border-spacing: 0; + width: 100%; + margin: 0px; + padding:0px; +} + +.dialog table.table_window td , .dialog table.table_window th { + padding: 0; +} + +.dialog .title_window { + -moz-user-select:none; +} + diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/iefix/iepngfix.css b/public/plugin_assets/redmine_code_review/stylesheets/window_js/iefix/iepngfix.css index 249388be5..257a1b1e3 100644 --- a/public/plugin_assets/redmine_code_review/stylesheets/window_js/iefix/iepngfix.css +++ b/public/plugin_assets/redmine_code_review/stylesheets/window_js/iefix/iepngfix.css @@ -1,3 +1,3 @@ -/* PNG fix for all themes that uses PNG images on IE */ -td, div { behavior: url(../themes/iefix/iepngfix.htc) } - +/* PNG fix for all themes that uses PNG images on IE */ +td, div { behavior: url(../themes/iefix/iepngfix.htc) } + diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/iefix/iepngfix.htc b/public/plugin_assets/redmine_code_review/stylesheets/window_js/iefix/iepngfix.htc index 9a13f32bf..a6c683b9f 100644 --- a/public/plugin_assets/redmine_code_review/stylesheets/window_js/iefix/iepngfix.htc +++ b/public/plugin_assets/redmine_code_review/stylesheets/window_js/iefix/iepngfix.htc @@ -1,54 +1,54 @@ - - - - + + + + \ No newline at end of file diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting.css b/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting.css index 0d955c3d7..95ec287a9 100644 --- a/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting.css +++ b/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting.css @@ -1,960 +1,960 @@ -.overlay___invisible__ { - background-color: #666; - filter:alpha(opacity=0); - -moz-opacity: 0; - opacity: 0; -} - -.top_draggable, .bottom_draggable { - cursor:move; -} - -.status_bar { - font-size:12px; -} -.status_bar input{ - font-size:12px; -} - -.wired_frame { - display:block; - position:absolute; - border:1px #000 dashed; -} - - - -.overlay_bluelighting { - background-color:#FFF; - filter:alpha(opacity=60); - -moz-opacity:0.6; - opacity:0.6; -} - -.bluelighting_wired_frame { - background:#FFF; - filter:alpha(opacity=60); - -moz-opacity:0.6; - opacity:0.6; -} - -.bluelighting_nw { - background:transparent url(lighting/top-left-blue.png) no-repeat 0 0; - width:9px; - height:28px; -} - -.bluelighting_n { - background:transparent url(lighting/top-middle-blue.png) repeat-x 0 0; - height:28px; -} - -.bluelighting_ne { - background:transparent url(lighting/top-right-blue.png) no-repeat 0 0; - width:15px; - height:28px; -} - -.bluelighting_w { - background:transparent url(lighting/left-blue.png) repeat-y top left; - width:9px; -} - -.bluelighting_e { - background:transparent url(lighting/right-blue.png) repeat-y top right; - width:15px; -} - -.bluelighting_sw { - background:transparent url(lighting/bottom-left-blue.png) no-repeat 0 0; - width:9px; - height:15px; -} - -.bluelighting_s { - background:transparent url(lighting/bottom-middle-blue.png) repeat-x 0 0; - height:15px; -} - -.bluelighting_se, .bluelighting_sizer { - background:transparent url(lighting/bottom-right-blue.png) no-repeat 0 0; - width:15px; - height:15px; -} - -.bluelighting_sizer { - cursor:se-resize; -} - -.bluelighting_close { - width:15px; - height:9px; - background:transparent url(lighting/button-close-blue.png) no-repeat 0 0; - position:absolute; - top:11px; - right:10px; - cursor:pointer; - z-index:1000; -} - -.bluelighting_maximize { - width:15px; - height:9px; - background:transparent url(lighting/button-maximize-blue.png) no-repeat 0 0; - position:absolute; - top:11px; - right:25px; - cursor:pointer; - z-index:1000; -} - -.bluelighting_minimize { - width:15px; - height:9px; - background:transparent url(lighting/button-minimize-blue.png) no-repeat 0 0; - position:absolute; - top:11px; - right:40px; - cursor:pointer; - z-index:1000; -} - -.bluelighting_title { - float:left; - height:14px; - font-size:14px; - font-weight:bold; - font-family:Verdana, Arial, sans-serif; - text-align:center; - margin-top:2px; - width:100%; - color:#17385B; -} - -.bluelighting_content { - overflow:auto; - color:#000; - font-family:Verdana, Arial, sans-serif; - font-size:12px; - background:#BFDBFF; -} - -/* For alert/confirm dialog */ -.bluelighting_window { - border:1px solid #F00; - background:#FFF; - padding:20px; - margin-left:auto; - margin-right:auto; - width:400px; -} - -.bluelighting_message { - font-size:12px; - text-align:center; - width:100%; - padding-bottom:10px; -} - -.bluelighting_buttons { - text-align:center; - width:100%; -} - -.bluelighting_buttons input { - border:1px solid #999; - border-top-color:#CCC; - border-left-color:#CCC; - padding:2px; - background-color:#FFF; - color:#333; - background-image:url(lighting/background_buttons.gif); - background-repeat:repeat-x; - font-family:Verdana, Arial, sans-serif; - font-size:10px; - font-weight:bold; - text-align:center; -} - -.bluelighting_progress { - float:left; - margin:auto; - text-align:center; - width:100%; - height:16px; - background:transparent url('lighting/spinner.gif') no-repeat center center -} - -/* FOR IE */ -* html .bluelighting_nw { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-left-blue.png", sizingMethod="crop"); -} - -* html .bluelighting_n { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-middle-blue.png", sizingMethod="scale"); -} - -* html .bluelighting_ne { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-right-blue.png", sizingMethod="crop"); -} - -* html .bluelighting_w { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/left-blue.png", sizingMethod="scale"); -} - -* html .bluelighting_e { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/right-blue.png", sizingMethod="scale"); -} - -* html .bluelighting_sw { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-left-blue.png", sizingMethod="crop"); -} - -* html .bluelighting_s { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-middle-blue.png", sizingMethod="scale"); -} - -* html .bluelighting_se, * html .bluelighting_sizer { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-right-blue.png", sizingMethod="crop"); -} - -* html .bluelighting_close { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-close-blue.png", sizingMethod="crop"); -} - -* html .bluelighting_minimize { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-minimize-blue.png", sizingMethod="crop"); -} - -* html .bluelighting_maximize { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-maximize-blue.png", sizingMethod="crop"); -} - -* html .bluelighting_content { - background:#B8D7FF; -} - - - -.overlay_greylighting { - background-color:#FFF; - filter:alpha(opacity=60); - -moz-opacity:0.6; - opacity:0.6; -} - -.greylighting_wired_frame { - background:#FFF; - filter:alpha(opacity=60); - -moz-opacity:0.6; - opacity:0.6; -} - -.greylighting_nw { - background:transparent url(lighting/top-left-grey.png) no-repeat 0 0; - width:9px; - height:28px; -} - -.greylighting_n { - background:transparent url(lighting/top-middle-grey.png) repeat-x 0 0; - height:28px; -} - -.greylighting_ne { - background:transparent url(lighting/top-right-grey.png) no-repeat 0 0; - width:15px; - height:28px; -} - -.greylighting_w { - background:transparent url(lighting/left-grey.png) repeat-y top left; - width:9px; -} - -.greylighting_e { - background:transparent url(lighting/right-grey.png) repeat-y top right; - width:15px; -} - -.greylighting_sw { - background:transparent url(lighting/bottom-left-grey.png) no-repeat 0 0; - width:9px; - height:15px; -} - -.greylighting_s { - background:transparent url(lighting/bottom-middle-grey.png) repeat-x 0 0; - height:15px; -} - -.greylighting_se, .greylighting_sizer { - background:transparent url(lighting/bottom-right-grey.png) no-repeat 0 0; - width:15px; - height:15px; -} - -.greylighting_sizer { - cursor:se-resize; -} - -.greylighting_close { - width:15px; - height:9px; - background:transparent url(lighting/button-close-grey.png) no-repeat 0 0; - position:absolute; - top:11px; - right:10px; - cursor:pointer; - z-index:1000; -} - -.greylighting_maximize { - width:15px; - height:9px; - background:transparent url(lighting/button-maximize-grey.png) no-repeat 0 0; - position:absolute; - top:11px; - right:25px; - cursor:pointer; - z-index:1000; -} - -.greylighting_minimize { - width:15px; - height:9px; - background:transparent url(lighting/button-minimize-grey.png) no-repeat 0 0; - position:absolute; - top:11px; - right:40px; - cursor:pointer; - z-index:1000; -} - -.greylighting_title { - float:left; - height:14px; - font-size:14px; - font-weight:bold; - font-family:Verdana, Arial, sans-serif; - text-align:center; - margin-top:2px; - width:100%; - color:#525252; -} - -.greylighting_content { - overflow:auto; - color:#000; - font-family:Verdana, Arial, sans-serif; - font-size:12px; - background:#CDCDCD; -} - -/* For alert/confirm dialog */ -.greylighting_window { - border:1px solid #F00; - background:#FFF; - padding:20px; - margin-left:auto; - margin-right:auto; - width:400px; -} - -.greylighting_message { - font-size:12px; - text-align:center; - width:100%; - padding-bottom:10px; -} - -.greylighting_buttons { - text-align:center; - width:100%; -} - -.greylighting_buttons input { - border:1px solid #999; - border-top-color:#CCC; - border-left-color:#CCC; - padding:2px; - background-color:#FFF; - color:#333; - background-image:url(lighting/background_buttons.gif); - background-repeat:repeat-x; - font-family:Verdana, Arial, sans-serif; - font-size:10px; - font-weight:bold; - text-align:center; -} - -.greylighting_progress { - float:left; - margin:auto; - text-align:center; - width:100%; - height:16px; - background:transparent url('lighting/spinner.gif') no-repeat center center -} - -/* FOR IE */ -* html .greylighting_nw { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-left-grey.png", sizingMethod="crop"); -} - -* html .greylighting_n { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-middle-grey.png", sizingMethod="scale"); -} - -* html .greylighting_ne { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-right-grey.png", sizingMethod="crop"); -} - -* html .greylighting_w { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/left-grey.png", sizingMethod="scale"); -} - -* html .greylighting_e { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/right-grey.png", sizingMethod="scale"); -} - -* html .greylighting_sw { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-left-grey.png", sizingMethod="crop"); -} - -* html .greylighting_s { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-middle-grey.png", sizingMethod="scale"); -} - -* html greylighting_se, * html .greylighting_sizer { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-right-grey.png", sizingMethod="crop"); -} - -* html .greylighting_close { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-close-grey.png", sizingMethod="crop"); -} - -* html .greylighting_minimize { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-minimize-grey.png", sizingMethod="crop"); -} - -* html .greylighting_maximize { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-maximize-grey.png", sizingMethod="crop"); -} - -* html .greylighting_content { - background:#C7C7C7; -} - - - -.overlay_greenlighting { - background-color:#FFF; - filter:alpha(opacity=60); - -moz-opacity:0.6; - opacity:0.6; -} - -.greenlighting_wired_frame { - background:#FFF; - filter:alpha(opacity=60); - -moz-opacity:0.6; - opacity:0.6; -} - -.greenlighting_nw { - background:transparent url(lighting/top-left-green.png) no-repeat 0 0; - width:9px; - height:28px; -} - -.greenlighting_n { - background:transparent url(lighting/top-middle-green.png) repeat-x 0 0; - height:28px; -} - -.greenlighting_ne { - background:transparent url(lighting/top-right-green.png) no-repeat 0 0; - width:15px; - height:28px; -} - -.greenlighting_w { - background:transparent url(lighting/left-green.png) repeat-y top left; - width:9px; -} - -.greenlighting_e { - background:transparent url(lighting/right-green.png) repeat-y top right; - width:15px; -} - -.greenlighting_sw { - background:transparent url(lighting/bottom-left-green.png) no-repeat 0 0; - width:9px; - height:15px; -} - -.greenlighting_s { - background:transparent url(lighting/bottom-middle-green.png) repeat-x 0 0; - height:15px; -} - -.greenlighting_se, .greenlighting_sizer { - background:transparent url(lighting/bottom-right-green.png) no-repeat 0 0; - width:15px; - height:15px; -} - -.greenlighting_sizer { - cursor:se-resize; -} - -.greenlighting_close { - width:15px; - height:9px; - background:transparent url(lighting/button-close-green.png) no-repeat 0 0; - position:absolute; - top:11px; - right:10px; - cursor:pointer; - z-index:1000; -} - -.greenlighting_maximize { - width:15px; - height:9px; - background:transparent url(lighting/button-maximize-green.png) no-repeat 0 0; - position:absolute; - top:11px; - right:25px; - cursor:pointer; - z-index:1000; -} - -.greenlighting_minimize { - width:15px; - height:9px; - background:transparent url(lighting/button-minimize-green.png) no-repeat 0 0; - position:absolute; - top:11px; - right:40px; - cursor:pointer; - z-index:1000; -} - -.greenlighting_title { - float:left; - height:14px; - font-size:14px; - font-weight:bold; - font-family:Verdana, Arial, sans-serif; - text-align:center; - margin-top:2px; - width:100%; - color:#2A6002; -} - -.greenlighting_content { - overflow:auto; - color:#000; - font-family:Verdana, Arial, sans-serif; - font-size:12px; - background:#ACFCAF; -} - -/* For alert/confirm dialog */ -.greenlighting_window { - border:1px solid #F00; - background:#FFF; - padding:20px; - margin-left:auto; - margin-right:auto; - width:400px; -} - -.greenlighting_message { - font-size:12px; - text-align:center; - width:100%; - padding-bottom:10px; -} - -.greenlighting_buttons { - text-align:center; - width:100%; -} - -.greenlighting_buttons input { - border:1px solid #999; - border-top-color:#CCC; - border-left-color:#CCC; - padding:2px; - background-color:#FFF; - color:#333; - background-image:url(lighting/background_buttons.gif); - background-repeat:repeat-x; - font-family:Verdana, Arial, sans-serif; - font-size:10px; - font-weight:bold; - text-align:center; -} - -.greenlighting_progress { - float:left; - margin:auto; - text-align:center; - width:100%; - height:16px; - background:transparent url('lighting/spinner.gif') no-repeat center center -} - -/* FOR IE */ -* html .greenlighting_nw { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-left-green.png", sizingMethod="crop"); -} - -* html .greenlighting_n { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-middle-green.png", sizingMethod="scale"); -} - -* html .greenlighting_ne { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-right-green.png", sizingMethod="crop"); -} - -* html .greenlighting_w { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/left-green.png", sizingMethod="scale"); -} - -* html .greenlighting_e { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/right-green.png", sizingMethod="scale"); -} - -* html .greenlighting_sw { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-left-green.png", sizingMethod="crop"); -} - -* html .greenlighting_s { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-middle-green.png", sizingMethod="scale"); -} - -* html greenlighting_se, * html .greenlighting_sizer { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-right-green.png", sizingMethod="crop"); -} - -* html .greenlighting_close { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-close-green.png", sizingMethod="crop"); -} - -* html .greenlighting_minimize { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-minimize-green.png", sizingMethod="crop"); -} - -* html .greenlighting_maximize { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-maximize-green.png", sizingMethod="crop"); -} - -* html .greenlighting_content { - background:#A4FCA7; -} - - - -.overlay_darkbluelighting { - background-color:#FFF; - filter:alpha(opacity=60); - -moz-opacity:0.6; - opacity:0.6; -} - -.darkbluelighting_wired_frame { - background:#FFF; - filter:alpha(opacity=60); - -moz-opacity:0.6; - opacity:0.6; -} - -.darkbluelighting_nw { - background:transparent url(lighting/top-left-darkblue.png) no-repeat 0 0; - width:9px; - height:28px; -} - -.darkbluelighting_n { - background:transparent url(lighting/top-middle-darkblue.png) repeat-x 0 0; - height:28px; -} - -.darkbluelighting_ne { - background:transparent url(lighting/top-right-darkblue.png) no-repeat 0 0; - width:15px; - height:28px; -} - -.darkbluelighting_w { - background:transparent url(lighting/left-darkblue.png) repeat-y top left; - width:9px; -} - -.darkbluelighting_e { - background:transparent url(lighting/right-darkblue.png) repeat-y top right; - width:15px; -} - -.darkbluelighting_sw { - background:transparent url(lighting/bottom-left-darkblue.png) no-repeat 0 0; - width:9px; - height:15px; -} - -.darkbluelighting_s { - background:transparent url(lighting/bottom-middle-darkblue.png) repeat-x 0 0; - height:15px; -} - -.darkbluelighting_se, .darkbluelighting_sizer { - background:transparent url(lighting/bottom-right-darkblue.png) no-repeat 0 0; - width:15px; - height:15px; -} - -.darkbluelighting_sizer { - cursor:se-resize; -} - -.darkbluelighting_close { - width:15px; - height:9px; - background:transparent url(lighting/button-close-darkblue.png) no-repeat 0 0; - position:absolute; - top:11px; - right:10px; - cursor:pointer; - z-index:1000; -} - -.darkbluelighting_maximize { - width:15px; - height:9px; - background:transparent url(lighting/button-maximize-darkblue.png) no-repeat 0 0; - position:absolute; - top:11px; - right:25px; - cursor:pointer; - z-index:1000; -} - -.darkbluelighting_minimize { - width:15px; - height:9px; - background:transparent url(lighting/button-minimize-darkblue.png) no-repeat 0 0; - position:absolute; - top:11px; - right:40px; - cursor:pointer; - z-index:1000; -} - -.darkbluelighting_title { - float:left; - height:14px; - font-size:14px; - font-weight:bold; - font-family:Verdana, Arial, sans-serif; - text-align:center; - margin-top:2px; - width:100%; - color:#E4EFFD; -} - -.darkbluelighting_content { - overflow:auto; - color:#FFF; - font-family:Verdana, Arial, sans-serif; - font-size:12px; - background:#0413C0; -} - -/* For alert/confirm dialog */ -.darkbluelighting_window { - border:1px solid #F00; - background:#FFF; - padding:20px; - margin-left:auto; - margin-right:auto; - width:400px; -} - -.darkbluelighting_message { - font-size:12px; - text-align:center; - width:100%; - padding-bottom:10px; -} - -.darkbluelighting_buttons { - text-align:center; - width:100%; -} - -.darkbluelighting_buttons input { - border:1px solid #999; - border-top-color:#CCC; - border-left-color:#CCC; - padding:2px; - background-color:#FFF; - color:#333; - background-image:url(lighting/background_buttons.gif); - background-repeat:repeat-x; - font-family:Verdana, Arial, sans-serif; - font-size:10px; - font-weight:bold; - text-align:center; -} - -.darkbluelighting_progress { - float:left; - margin:auto; - text-align:center; - width:100%; - height:16px; - background:transparent url('lighting/spinner.gif') no-repeat center center -} - -/* FOR IE */ -* html .darkbluelighting_nw { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-left-darkblue.png", sizingMethod="crop"); -} - -* html .darkbluelighting_n { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-middle-darkblue.png", sizingMethod="scale"); -} - -* html .darkbluelighting_ne { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-right-darkblue.png", sizingMethod="crop"); -} - -* html .darkbluelighting_w { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/left-darkblue.png", sizingMethod="scale"); -} - -* html .darkbluelighting_e { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/right-darkblue.png", sizingMethod="scale"); -} - -* html .darkbluelighting_sw { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-left-darkblue.png", sizingMethod="crop"); -} - -* html .darkbluelighting_s { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-middle-darkblue.png", sizingMethod="scale"); -} - -* html darkbluelighting_se, * html .darkbluelighting_sizer { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-right-darkblue.png", sizingMethod="crop"); -} - -* html .darkbluelighting_close { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-close-darkblue.png", sizingMethod="crop"); -} - -* html .darkbluelighting_minimize { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-minimize-darkblue.png", sizingMethod="crop"); -} - -* html .darkbluelighting_maximize { - background-color: transparent; - background-image: none; - filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-maximize-darkblue.png", sizingMethod="crop"); -} - -* html .darkbluelighting_content { - background:#020EBA; -} - +.overlay___invisible__ { + background-color: #666; + filter:alpha(opacity=0); + -moz-opacity: 0; + opacity: 0; +} + +.top_draggable, .bottom_draggable { + cursor:move; +} + +.status_bar { + font-size:12px; +} +.status_bar input{ + font-size:12px; +} + +.wired_frame { + display:block; + position:absolute; + border:1px #000 dashed; +} + + + +.overlay_bluelighting { + background-color:#FFF; + filter:alpha(opacity=60); + -moz-opacity:0.6; + opacity:0.6; +} + +.bluelighting_wired_frame { + background:#FFF; + filter:alpha(opacity=60); + -moz-opacity:0.6; + opacity:0.6; +} + +.bluelighting_nw { + background:transparent url(lighting/top-left-blue.png) no-repeat 0 0; + width:9px; + height:28px; +} + +.bluelighting_n { + background:transparent url(lighting/top-middle-blue.png) repeat-x 0 0; + height:28px; +} + +.bluelighting_ne { + background:transparent url(lighting/top-right-blue.png) no-repeat 0 0; + width:15px; + height:28px; +} + +.bluelighting_w { + background:transparent url(lighting/left-blue.png) repeat-y top left; + width:9px; +} + +.bluelighting_e { + background:transparent url(lighting/right-blue.png) repeat-y top right; + width:15px; +} + +.bluelighting_sw { + background:transparent url(lighting/bottom-left-blue.png) no-repeat 0 0; + width:9px; + height:15px; +} + +.bluelighting_s { + background:transparent url(lighting/bottom-middle-blue.png) repeat-x 0 0; + height:15px; +} + +.bluelighting_se, .bluelighting_sizer { + background:transparent url(lighting/bottom-right-blue.png) no-repeat 0 0; + width:15px; + height:15px; +} + +.bluelighting_sizer { + cursor:se-resize; +} + +.bluelighting_close { + width:15px; + height:9px; + background:transparent url(lighting/button-close-blue.png) no-repeat 0 0; + position:absolute; + top:11px; + right:10px; + cursor:pointer; + z-index:1000; +} + +.bluelighting_maximize { + width:15px; + height:9px; + background:transparent url(lighting/button-maximize-blue.png) no-repeat 0 0; + position:absolute; + top:11px; + right:25px; + cursor:pointer; + z-index:1000; +} + +.bluelighting_minimize { + width:15px; + height:9px; + background:transparent url(lighting/button-minimize-blue.png) no-repeat 0 0; + position:absolute; + top:11px; + right:40px; + cursor:pointer; + z-index:1000; +} + +.bluelighting_title { + float:left; + height:14px; + font-size:14px; + font-weight:bold; + font-family:Verdana, Arial, sans-serif; + text-align:center; + margin-top:2px; + width:100%; + color:#17385B; +} + +.bluelighting_content { + overflow:auto; + color:#000; + font-family:Verdana, Arial, sans-serif; + font-size:12px; + background:#BFDBFF; +} + +/* For alert/confirm dialog */ +.bluelighting_window { + border:1px solid #F00; + background:#FFF; + padding:20px; + margin-left:auto; + margin-right:auto; + width:400px; +} + +.bluelighting_message { + font-size:12px; + text-align:center; + width:100%; + padding-bottom:10px; +} + +.bluelighting_buttons { + text-align:center; + width:100%; +} + +.bluelighting_buttons input { + border:1px solid #999; + border-top-color:#CCC; + border-left-color:#CCC; + padding:2px; + background-color:#FFF; + color:#333; + background-image:url(lighting/background_buttons.gif); + background-repeat:repeat-x; + font-family:Verdana, Arial, sans-serif; + font-size:10px; + font-weight:bold; + text-align:center; +} + +.bluelighting_progress { + float:left; + margin:auto; + text-align:center; + width:100%; + height:16px; + background:transparent url('lighting/spinner.gif') no-repeat center center +} + +/* FOR IE */ +* html .bluelighting_nw { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-left-blue.png", sizingMethod="crop"); +} + +* html .bluelighting_n { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-middle-blue.png", sizingMethod="scale"); +} + +* html .bluelighting_ne { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-right-blue.png", sizingMethod="crop"); +} + +* html .bluelighting_w { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/left-blue.png", sizingMethod="scale"); +} + +* html .bluelighting_e { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/right-blue.png", sizingMethod="scale"); +} + +* html .bluelighting_sw { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-left-blue.png", sizingMethod="crop"); +} + +* html .bluelighting_s { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-middle-blue.png", sizingMethod="scale"); +} + +* html .bluelighting_se, * html .bluelighting_sizer { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-right-blue.png", sizingMethod="crop"); +} + +* html .bluelighting_close { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-close-blue.png", sizingMethod="crop"); +} + +* html .bluelighting_minimize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-minimize-blue.png", sizingMethod="crop"); +} + +* html .bluelighting_maximize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-maximize-blue.png", sizingMethod="crop"); +} + +* html .bluelighting_content { + background:#B8D7FF; +} + + + +.overlay_greylighting { + background-color:#FFF; + filter:alpha(opacity=60); + -moz-opacity:0.6; + opacity:0.6; +} + +.greylighting_wired_frame { + background:#FFF; + filter:alpha(opacity=60); + -moz-opacity:0.6; + opacity:0.6; +} + +.greylighting_nw { + background:transparent url(lighting/top-left-grey.png) no-repeat 0 0; + width:9px; + height:28px; +} + +.greylighting_n { + background:transparent url(lighting/top-middle-grey.png) repeat-x 0 0; + height:28px; +} + +.greylighting_ne { + background:transparent url(lighting/top-right-grey.png) no-repeat 0 0; + width:15px; + height:28px; +} + +.greylighting_w { + background:transparent url(lighting/left-grey.png) repeat-y top left; + width:9px; +} + +.greylighting_e { + background:transparent url(lighting/right-grey.png) repeat-y top right; + width:15px; +} + +.greylighting_sw { + background:transparent url(lighting/bottom-left-grey.png) no-repeat 0 0; + width:9px; + height:15px; +} + +.greylighting_s { + background:transparent url(lighting/bottom-middle-grey.png) repeat-x 0 0; + height:15px; +} + +.greylighting_se, .greylighting_sizer { + background:transparent url(lighting/bottom-right-grey.png) no-repeat 0 0; + width:15px; + height:15px; +} + +.greylighting_sizer { + cursor:se-resize; +} + +.greylighting_close { + width:15px; + height:9px; + background:transparent url(lighting/button-close-grey.png) no-repeat 0 0; + position:absolute; + top:11px; + right:10px; + cursor:pointer; + z-index:1000; +} + +.greylighting_maximize { + width:15px; + height:9px; + background:transparent url(lighting/button-maximize-grey.png) no-repeat 0 0; + position:absolute; + top:11px; + right:25px; + cursor:pointer; + z-index:1000; +} + +.greylighting_minimize { + width:15px; + height:9px; + background:transparent url(lighting/button-minimize-grey.png) no-repeat 0 0; + position:absolute; + top:11px; + right:40px; + cursor:pointer; + z-index:1000; +} + +.greylighting_title { + float:left; + height:14px; + font-size:14px; + font-weight:bold; + font-family:Verdana, Arial, sans-serif; + text-align:center; + margin-top:2px; + width:100%; + color:#525252; +} + +.greylighting_content { + overflow:auto; + color:#000; + font-family:Verdana, Arial, sans-serif; + font-size:12px; + background:#CDCDCD; +} + +/* For alert/confirm dialog */ +.greylighting_window { + border:1px solid #F00; + background:#FFF; + padding:20px; + margin-left:auto; + margin-right:auto; + width:400px; +} + +.greylighting_message { + font-size:12px; + text-align:center; + width:100%; + padding-bottom:10px; +} + +.greylighting_buttons { + text-align:center; + width:100%; +} + +.greylighting_buttons input { + border:1px solid #999; + border-top-color:#CCC; + border-left-color:#CCC; + padding:2px; + background-color:#FFF; + color:#333; + background-image:url(lighting/background_buttons.gif); + background-repeat:repeat-x; + font-family:Verdana, Arial, sans-serif; + font-size:10px; + font-weight:bold; + text-align:center; +} + +.greylighting_progress { + float:left; + margin:auto; + text-align:center; + width:100%; + height:16px; + background:transparent url('lighting/spinner.gif') no-repeat center center +} + +/* FOR IE */ +* html .greylighting_nw { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-left-grey.png", sizingMethod="crop"); +} + +* html .greylighting_n { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-middle-grey.png", sizingMethod="scale"); +} + +* html .greylighting_ne { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-right-grey.png", sizingMethod="crop"); +} + +* html .greylighting_w { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/left-grey.png", sizingMethod="scale"); +} + +* html .greylighting_e { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/right-grey.png", sizingMethod="scale"); +} + +* html .greylighting_sw { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-left-grey.png", sizingMethod="crop"); +} + +* html .greylighting_s { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-middle-grey.png", sizingMethod="scale"); +} + +* html greylighting_se, * html .greylighting_sizer { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-right-grey.png", sizingMethod="crop"); +} + +* html .greylighting_close { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-close-grey.png", sizingMethod="crop"); +} + +* html .greylighting_minimize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-minimize-grey.png", sizingMethod="crop"); +} + +* html .greylighting_maximize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-maximize-grey.png", sizingMethod="crop"); +} + +* html .greylighting_content { + background:#C7C7C7; +} + + + +.overlay_greenlighting { + background-color:#FFF; + filter:alpha(opacity=60); + -moz-opacity:0.6; + opacity:0.6; +} + +.greenlighting_wired_frame { + background:#FFF; + filter:alpha(opacity=60); + -moz-opacity:0.6; + opacity:0.6; +} + +.greenlighting_nw { + background:transparent url(lighting/top-left-green.png) no-repeat 0 0; + width:9px; + height:28px; +} + +.greenlighting_n { + background:transparent url(lighting/top-middle-green.png) repeat-x 0 0; + height:28px; +} + +.greenlighting_ne { + background:transparent url(lighting/top-right-green.png) no-repeat 0 0; + width:15px; + height:28px; +} + +.greenlighting_w { + background:transparent url(lighting/left-green.png) repeat-y top left; + width:9px; +} + +.greenlighting_e { + background:transparent url(lighting/right-green.png) repeat-y top right; + width:15px; +} + +.greenlighting_sw { + background:transparent url(lighting/bottom-left-green.png) no-repeat 0 0; + width:9px; + height:15px; +} + +.greenlighting_s { + background:transparent url(lighting/bottom-middle-green.png) repeat-x 0 0; + height:15px; +} + +.greenlighting_se, .greenlighting_sizer { + background:transparent url(lighting/bottom-right-green.png) no-repeat 0 0; + width:15px; + height:15px; +} + +.greenlighting_sizer { + cursor:se-resize; +} + +.greenlighting_close { + width:15px; + height:9px; + background:transparent url(lighting/button-close-green.png) no-repeat 0 0; + position:absolute; + top:11px; + right:10px; + cursor:pointer; + z-index:1000; +} + +.greenlighting_maximize { + width:15px; + height:9px; + background:transparent url(lighting/button-maximize-green.png) no-repeat 0 0; + position:absolute; + top:11px; + right:25px; + cursor:pointer; + z-index:1000; +} + +.greenlighting_minimize { + width:15px; + height:9px; + background:transparent url(lighting/button-minimize-green.png) no-repeat 0 0; + position:absolute; + top:11px; + right:40px; + cursor:pointer; + z-index:1000; +} + +.greenlighting_title { + float:left; + height:14px; + font-size:14px; + font-weight:bold; + font-family:Verdana, Arial, sans-serif; + text-align:center; + margin-top:2px; + width:100%; + color:#2A6002; +} + +.greenlighting_content { + overflow:auto; + color:#000; + font-family:Verdana, Arial, sans-serif; + font-size:12px; + background:#ACFCAF; +} + +/* For alert/confirm dialog */ +.greenlighting_window { + border:1px solid #F00; + background:#FFF; + padding:20px; + margin-left:auto; + margin-right:auto; + width:400px; +} + +.greenlighting_message { + font-size:12px; + text-align:center; + width:100%; + padding-bottom:10px; +} + +.greenlighting_buttons { + text-align:center; + width:100%; +} + +.greenlighting_buttons input { + border:1px solid #999; + border-top-color:#CCC; + border-left-color:#CCC; + padding:2px; + background-color:#FFF; + color:#333; + background-image:url(lighting/background_buttons.gif); + background-repeat:repeat-x; + font-family:Verdana, Arial, sans-serif; + font-size:10px; + font-weight:bold; + text-align:center; +} + +.greenlighting_progress { + float:left; + margin:auto; + text-align:center; + width:100%; + height:16px; + background:transparent url('lighting/spinner.gif') no-repeat center center +} + +/* FOR IE */ +* html .greenlighting_nw { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-left-green.png", sizingMethod="crop"); +} + +* html .greenlighting_n { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-middle-green.png", sizingMethod="scale"); +} + +* html .greenlighting_ne { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-right-green.png", sizingMethod="crop"); +} + +* html .greenlighting_w { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/left-green.png", sizingMethod="scale"); +} + +* html .greenlighting_e { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/right-green.png", sizingMethod="scale"); +} + +* html .greenlighting_sw { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-left-green.png", sizingMethod="crop"); +} + +* html .greenlighting_s { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-middle-green.png", sizingMethod="scale"); +} + +* html greenlighting_se, * html .greenlighting_sizer { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-right-green.png", sizingMethod="crop"); +} + +* html .greenlighting_close { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-close-green.png", sizingMethod="crop"); +} + +* html .greenlighting_minimize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-minimize-green.png", sizingMethod="crop"); +} + +* html .greenlighting_maximize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-maximize-green.png", sizingMethod="crop"); +} + +* html .greenlighting_content { + background:#A4FCA7; +} + + + +.overlay_darkbluelighting { + background-color:#FFF; + filter:alpha(opacity=60); + -moz-opacity:0.6; + opacity:0.6; +} + +.darkbluelighting_wired_frame { + background:#FFF; + filter:alpha(opacity=60); + -moz-opacity:0.6; + opacity:0.6; +} + +.darkbluelighting_nw { + background:transparent url(lighting/top-left-darkblue.png) no-repeat 0 0; + width:9px; + height:28px; +} + +.darkbluelighting_n { + background:transparent url(lighting/top-middle-darkblue.png) repeat-x 0 0; + height:28px; +} + +.darkbluelighting_ne { + background:transparent url(lighting/top-right-darkblue.png) no-repeat 0 0; + width:15px; + height:28px; +} + +.darkbluelighting_w { + background:transparent url(lighting/left-darkblue.png) repeat-y top left; + width:9px; +} + +.darkbluelighting_e { + background:transparent url(lighting/right-darkblue.png) repeat-y top right; + width:15px; +} + +.darkbluelighting_sw { + background:transparent url(lighting/bottom-left-darkblue.png) no-repeat 0 0; + width:9px; + height:15px; +} + +.darkbluelighting_s { + background:transparent url(lighting/bottom-middle-darkblue.png) repeat-x 0 0; + height:15px; +} + +.darkbluelighting_se, .darkbluelighting_sizer { + background:transparent url(lighting/bottom-right-darkblue.png) no-repeat 0 0; + width:15px; + height:15px; +} + +.darkbluelighting_sizer { + cursor:se-resize; +} + +.darkbluelighting_close { + width:15px; + height:9px; + background:transparent url(lighting/button-close-darkblue.png) no-repeat 0 0; + position:absolute; + top:11px; + right:10px; + cursor:pointer; + z-index:1000; +} + +.darkbluelighting_maximize { + width:15px; + height:9px; + background:transparent url(lighting/button-maximize-darkblue.png) no-repeat 0 0; + position:absolute; + top:11px; + right:25px; + cursor:pointer; + z-index:1000; +} + +.darkbluelighting_minimize { + width:15px; + height:9px; + background:transparent url(lighting/button-minimize-darkblue.png) no-repeat 0 0; + position:absolute; + top:11px; + right:40px; + cursor:pointer; + z-index:1000; +} + +.darkbluelighting_title { + float:left; + height:14px; + font-size:14px; + font-weight:bold; + font-family:Verdana, Arial, sans-serif; + text-align:center; + margin-top:2px; + width:100%; + color:#E4EFFD; +} + +.darkbluelighting_content { + overflow:auto; + color:#FFF; + font-family:Verdana, Arial, sans-serif; + font-size:12px; + background:#0413C0; +} + +/* For alert/confirm dialog */ +.darkbluelighting_window { + border:1px solid #F00; + background:#FFF; + padding:20px; + margin-left:auto; + margin-right:auto; + width:400px; +} + +.darkbluelighting_message { + font-size:12px; + text-align:center; + width:100%; + padding-bottom:10px; +} + +.darkbluelighting_buttons { + text-align:center; + width:100%; +} + +.darkbluelighting_buttons input { + border:1px solid #999; + border-top-color:#CCC; + border-left-color:#CCC; + padding:2px; + background-color:#FFF; + color:#333; + background-image:url(lighting/background_buttons.gif); + background-repeat:repeat-x; + font-family:Verdana, Arial, sans-serif; + font-size:10px; + font-weight:bold; + text-align:center; +} + +.darkbluelighting_progress { + float:left; + margin:auto; + text-align:center; + width:100%; + height:16px; + background:transparent url('lighting/spinner.gif') no-repeat center center +} + +/* FOR IE */ +* html .darkbluelighting_nw { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-left-darkblue.png", sizingMethod="crop"); +} + +* html .darkbluelighting_n { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-middle-darkblue.png", sizingMethod="scale"); +} + +* html .darkbluelighting_ne { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/top-right-darkblue.png", sizingMethod="crop"); +} + +* html .darkbluelighting_w { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/left-darkblue.png", sizingMethod="scale"); +} + +* html .darkbluelighting_e { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/right-darkblue.png", sizingMethod="scale"); +} + +* html .darkbluelighting_sw { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-left-darkblue.png", sizingMethod="crop"); +} + +* html .darkbluelighting_s { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-middle-darkblue.png", sizingMethod="scale"); +} + +* html darkbluelighting_se, * html .darkbluelighting_sizer { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/bottom-right-darkblue.png", sizingMethod="crop"); +} + +* html .darkbluelighting_close { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-close-darkblue.png", sizingMethod="crop"); +} + +* html .darkbluelighting_minimize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-minimize-darkblue.png", sizingMethod="crop"); +} + +* html .darkbluelighting_maximize { + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src="../themes/lighting/button-maximize-darkblue.png", sizingMethod="crop"); +} + +* html .darkbluelighting_content { + background:#020EBA; +} + diff --git a/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/pngbehavior.htc b/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/pngbehavior.htc index 92248c665..36ea182e7 100644 --- a/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/pngbehavior.htc +++ b/public/plugin_assets/redmine_code_review/stylesheets/window_js/lighting/pngbehavior.htc @@ -1,67 +1,67 @@ - - - - diff --git a/public/javascripts/wechat/app.js b/public/javascripts/wechat/app.js index e3ecf9b37..ca9682db2 100644 --- a/public/javascripts/wechat/app.js +++ b/public/javascripts/wechat/app.js @@ -1,4 +1,4 @@ -var app = angular.module('wechat', ['ngRoute','ngCookies']); +var app = angular.module('wechat', ['ngRoute']); var apiUrl = '/api/v1/'; var debug = false; //调试标志,如果在本地请置为true @@ -8,7 +8,7 @@ if(debug===true){ } -app.factory('auth', function($http,$routeParams, $cookies, $q){ +app.factory('auth', function($http,$routeParams, $q){ var _openid = ''; if(typeof g_openid !== 'undefined'){ @@ -31,15 +31,6 @@ app.factory('auth', function($http,$routeParams, $cookies, $q){ method: 'POST' }).then(function successCallback(response) { _openid = response.data.openid; - if(typeof _openid !== 'undefined' && _openid.length>0){ - if(debug !== true){ //如果是生产环境,就存到cookies中 - $cookies.put("openid", _openid); - } - } else { - if(debug!==true){//考虑从cookies中取出 - _openid = $cookies.get('openid'); - } - } deferred.resolve(_openid); }, function errorCallback(response) { deferred.reject(response); diff --git a/public/javascripts/wechat/build/angular.all.min.js b/public/javascripts/wechat/build/angular.all.min.js index 72e4e89cd..106f2a167 100644 --- a/public/javascripts/wechat/build/angular.all.min.js +++ b/public/javascripts/wechat/build/angular.all.min.js @@ -1,8 +1,9 @@ +!function(){function e(e,t){t.src?h.ajax({url:t.src,async:!1,dataType:"script"}):h.globalEval(t.text||t.textContent||t.innerHTML||""),t.parentNode&&t.parentNode.removeChild(t)}function t(){return+new Date}function n(e,t){return e[0]&&parseInt(h.curCSS(e[0],t,!0),10)||0}function r(){return!1}function i(){return!0}function o(e){var t=RegExp("(^|\\.)"+e.type+"(\\.|$)"),n=!0,r=[];return h.each(h.data(this,"events").live||[],function(n,i){if(t.test(i.type)){var o=h(e.target).closest(i.data)[0];o&&r.push({elem:o,fn:i})}}),r.sort(function(e,t){return h.data(e.elem,"closest")-h.data(t.elem,"closest")}),h.each(r,function(){return this.fn.call(this.elem,e,this.fn.data)===!1?n=!1:void 0}),n}function a(e,t){return["live",e,t.replace(/\./g,"`").replace(/ /g,"|")].join(".")}function s(){S||(S=!0,document.addEventListener?document.addEventListener("DOMContentLoaded",function(){document.removeEventListener("DOMContentLoaded",arguments.callee,!1),h.ready()},!1):document.attachEvent&&(document.attachEvent("onreadystatechange",function(){"complete"===document.readyState&&(document.detachEvent("onreadystatechange",arguments.callee),h.ready())}),document.documentElement.doScroll&&u==u.top&&!function(){if(!h.isReady){try{document.documentElement.doScroll("left")}catch(e){return void setTimeout(arguments.callee,0)}h.ready()}}()),h.event.add(u,"load",h.ready))}function l(e,t){var n={};return h.each(L.concat.apply([],L.slice(0,t)),function(){n[this]=e}),n}var c,u=this,d=u.jQuery,f=u.$,h=u.jQuery=u.$=function(e,t){return new h.fn.init(e,t)},p=/^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,m=/^.[^:#\[\.,]*$/;h.fn=h.prototype={init:function(e,t){if(e=e||document,e.nodeType)return this[0]=e,this.length=1,this.context=e,this;if("string"==typeof e){var n=p.exec(e);if(!n||!n[1]&&t)return h(t).find(e);if(!n[1]){var r=document.getElementById(n[3]);if(r&&r.id!=n[3])return h().find(e);var i=h(r||[]);return i.context=document,i.selector=e,i}e=h.clean([n[1]],t)}else if(h.isFunction(e))return h(document).ready(e);return e.selector&&e.context&&(this.selector=e.selector,this.context=e.context),this.setArray(h.isArray(e)?e:h.makeArray(e))},selector:"",jquery:"1.3.2",size:function(){return this.length},get:function(e){return e===c?Array.prototype.slice.call(this):this[e]},pushStack:function(e,t,n){var r=h(e);return r.prevObject=this,r.context=this.context,"find"===t?r.selector=this.selector+(this.selector?" ":"")+n:t&&(r.selector=this.selector+"."+t+"("+n+")"),r},setArray:function(e){return this.length=0,Array.prototype.push.apply(this,e),this},each:function(e,t){return h.each(this,e,t)},index:function(e){return h.inArray(e&&e.jquery?e[0]:e,this)},attr:function(e,t,n){var r=e;if("string"==typeof e){if(t===c)return this[0]&&h[n||"attr"](this[0],e);r={},r[e]=t}return this.each(function(t){for(e in r)h.attr(n?this.style:this,e,h.prop(this,r[e],n,t,e))})},css:function(e,t){return("width"==e||"height"==e)&&parseFloat(t)<0&&(t=c),this.attr(e,t,"curCSS")},text:function(e){if("object"!=typeof e&&null!=e)return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(e));var t="";return h.each(e||this,function(){h.each(this.childNodes,function(){8!=this.nodeType&&(t+=1!=this.nodeType?this.nodeValue:h.fn.text([this]))})}),t},wrapAll:function(e){if(this[0]){var t=h(e,this[0].ownerDocument).clone();this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){for(var e=this;e.firstChild;)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return this.each(function(){h(this).contents().wrapAll(e)})},wrap:function(e){return this.each(function(){h(this).wrapAll(e)})},append:function(){return this.domManip(arguments,!0,function(e){1==this.nodeType&&this.appendChild(e)})},prepend:function(){return this.domManip(arguments,!0,function(e){1==this.nodeType&&this.insertBefore(e,this.firstChild)})},before:function(){return this.domManip(arguments,!1,function(e){this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,!1,function(e){this.parentNode.insertBefore(e,this.nextSibling)})},end:function(){return this.prevObject||h([])},push:[].push,sort:[].sort,splice:[].splice,find:function(e){if(1===this.length){var t=this.pushStack([],"find",e);return t.length=0,h.find(e,this[0],t),t}return this.pushStack(h.unique(h.map(this,function(t){return h.find(e,t)})),"find",e)},clone:function(e){var t=this.map(function(){if(h.support.noCloneEvent||h.isXMLDoc(this))return this.cloneNode(!0);var e=this.outerHTML;if(!e){var t=this.ownerDocument.createElement("div");t.appendChild(this.cloneNode(!0)),e=t.innerHTML}return h.clean([e.replace(/ jQuery\d+="(?:\d+|null)"/g,"").replace(/^\s*/,"")])[0]});if(e===!0){var n=this.find("*").andSelf(),r=0;t.find("*").andSelf().each(function(){if(this.nodeName===n[r].nodeName){var e=h.data(n[r],"events");for(var t in e)for(var i in e[t])h.event.add(this,t,e[t][i],e[t][i].data);r++}})}return t},filter:function(e){return this.pushStack(h.isFunction(e)&&h.grep(this,function(t,n){return e.call(t,n)})||h.multiFilter(e,h.grep(this,function(e){return 1===e.nodeType})),"filter",e)},closest:function(e){var t=h.expr.match.POS.test(e)?h(e):null,n=0;return this.map(function(){for(var r=this;r&&r.ownerDocument;){if(t?t.index(r)>-1:h(r).is(e))return h.data(r,"closest",n),r;r=r.parentNode,n++}})},not:function(e){if("string"==typeof e){if(m.test(e))return this.pushStack(h.multiFilter(e,this,!0),"not",e);e=h.multiFilter(e,this)}var t=e.length&&e[e.length-1]!==c&&!e.nodeType;return this.filter(function(){return t?h.inArray(this,e)<0:this!=e})},add:function(e){return this.pushStack(h.unique(h.merge(this.get(),"string"==typeof e?h(e):h.makeArray(e))))},is:function(e){return!!e&&h.multiFilter(e,this).length>0},hasClass:function(e){return!!e&&this.is("."+e)},val:function(e){if(e===c){var t=this[0];if(t){if(h.nodeName(t,"option"))return(t.attributes.value||{}).specified?t.value:t.text;if(h.nodeName(t,"select")){var n=t.selectedIndex,r=[],i=t.options,o="select-one"==t.type;if(0>n)return null;for(var a=o?n:0,s=o?n+1:i.length;s>a;a++){var l=i[a];if(l.selected){if(e=h(l).val(),o)return e;r.push(e)}}return r}return(t.value||"").replace(/\r/g,"")}return c}return"number"==typeof e&&(e+=""),this.each(function(){if(1==this.nodeType)if(h.isArray(e)&&/radio|checkbox/.test(this.type))this.checked=h.inArray(this.value,e)>=0||h.inArray(this.name,e)>=0;else if(h.nodeName(this,"select")){var t=h.makeArray(e);h("option",this).each(function(){this.selected=h.inArray(this.value,t)>=0||h.inArray(this.text,t)>=0}),t.length||(this.selectedIndex=-1)}else this.value=e})},html:function(e){return e===c?this[0]?this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g,""):null:this.empty().append(e)},replaceWith:function(e){return this.after(e).remove()},eq:function(e){return this.slice(e,+e+1)},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments),"slice",Array.prototype.slice.call(arguments).join(","))},map:function(e){return this.pushStack(h.map(this,function(t,n){return e.call(t,n,t)}))},andSelf:function(){return this.add(this.prevObject)},domManip:function(t,n,r){function i(e,t){return n&&h.nodeName(e,"table")&&h.nodeName(t,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}if(this[0]){var o=(this[0].ownerDocument||this[0]).createDocumentFragment(),a=h.clean(t,this[0].ownerDocument||this[0],o),s=o.firstChild;if(s)for(var l=0,c=this.length;c>l;l++)r.call(i(this[l],s),this.length>1||l>0?o.cloneNode(!0):o);a&&h.each(a,e)}return this}},h.fn.init.prototype=h.fn,h.extend=h.fn.extend=function(){var e,t=arguments[0]||{},n=1,r=arguments.length,i=!1;for("boolean"==typeof t&&(i=t,t=arguments[1]||{},n=2),"object"==typeof t||h.isFunction(t)||(t={}),r==n&&(t=this,--n);r>n;n++)if(null!=(e=arguments[n]))for(var o in e){var a=t[o],s=e[o];t!==s&&(i&&s&&"object"==typeof s&&!s.nodeType?t[o]=h.extend(i,a||(null!=s.length?[]:{}),s):s!==c&&(t[o]=s))}return t};var v=/z-?index|font-?weight|opacity|zoom|line-?height/i,y=document.defaultView||{},g=Object.prototype.toString;h.extend({noConflict:function(e){return u.$=f,e&&(u.jQuery=d),h},isFunction:function(e){return"[object Function]"===g.call(e)},isArray:function(e){return"[object Array]"===g.call(e)},isXMLDoc:function(e){return 9===e.nodeType&&"HTML"!==e.documentElement.nodeName||!!e.ownerDocument&&h.isXMLDoc(e.ownerDocument)},globalEval:function(e){if(e&&/\S/.test(e)){var t=document.getElementsByTagName("head")[0]||document.documentElement,n=document.createElement("script");n.type="text/javascript",h.support.scriptEval?n.appendChild(document.createTextNode(e)):n.text=e,t.insertBefore(n,t.firstChild),t.removeChild(n)}},nodeName:function(e,t){return e.nodeName&&e.nodeName.toUpperCase()==t.toUpperCase()},each:function(e,t,n){var r,i=0,o=e.length;if(n)if(o===c){for(r in e)if(t.apply(e[r],n)===!1)break}else for(;o>i&&t.apply(e[i++],n)!==!1;);else if(o===c){for(r in e)if(t.call(e[r],r,e[r])===!1)break}else for(var a=e[0];o>i&&t.call(a,i,a)!==!1;a=e[++i]);return e},prop:function(e,t,n,r,i){return h.isFunction(t)&&(t=t.call(e,r)),"number"!=typeof t||"curCSS"!=n||v.test(i)?t:t+"px"},className:{add:function(e,t){h.each((t||"").split(/\s+/),function(t,n){1!=e.nodeType||h.className.has(e.className,n)||(e.className+=(e.className?" ":"")+n)})},remove:function(e,t){1==e.nodeType&&(e.className=t!==c?h.grep(e.className.split(/\s+/),function(e){return!h.className.has(t,e)}).join(" "):"")},has:function(e,t){return e&&h.inArray(t,(e.className||e).toString().split(/\s+/))>-1}},swap:function(e,t,n){var r={};for(var i in t)r[i]=e.style[i],e.style[i]=t[i];n.call(e);for(var i in t)e.style[i]=r[i]},css:function(e,t,n,r){function i(){o="width"==t?e.offsetWidth:e.offsetHeight,"border"!==r&&h.each(s,function(){r||(o-=parseFloat(h.curCSS(e,"padding"+this,!0))||0),"margin"===r?o+=parseFloat(h.curCSS(e,"margin"+this,!0))||0:o-=parseFloat(h.curCSS(e,"border"+this+"Width",!0))||0})}if("width"==t||"height"==t){var o,a={position:"absolute",visibility:"hidden",display:"block"},s="width"==t?["Left","Right"]:["Top","Bottom"];return 0!==e.offsetWidth?i():h.swap(e,a,i),Math.max(0,Math.round(o))}return h.curCSS(e,t,n)},curCSS:function(e,t,n){var r,i=e.style;if("opacity"==t&&!h.support.opacity)return r=h.attr(i,"opacity"),""==r?"1":r;if(t.match(/float/i)&&(t=w),!n&&i&&i[t])r=i[t];else if(y.getComputedStyle){t.match(/float/i)&&(t="float"),t=t.replace(/([A-Z])/g,"-$1").toLowerCase();var o=y.getComputedStyle(e,null);o&&(r=o.getPropertyValue(t)),"opacity"==t&&""==r&&(r="1")}else if(e.currentStyle){var a=t.replace(/\-(\w)/g,function(e,t){return t.toUpperCase()});if(r=e.currentStyle[t]||e.currentStyle[a],!/^\d+(px)?$/i.test(r)&&/^\d/.test(r)){var s=i.left,l=e.runtimeStyle.left;e.runtimeStyle.left=e.currentStyle.left,i.left=r||0,r=i.pixelLeft+"px",i.left=s,e.runtimeStyle.left=l}}return r},clean:function(e,t,n){if(t=t||document,"undefined"==typeof t.createElement&&(t=t.ownerDocument||t[0]&&t[0].ownerDocument||document),!n&&1===e.length&&"string"==typeof e[0]){var r=/^<(\w+)\s*\/?>$/.exec(e[0]);if(r)return[t.createElement(r[1])]}var i=[],o=[],a=t.createElement("div");if(h.each(e,function(e,n){if("number"==typeof n&&(n+=""),n){if("string"==typeof n){n=n.replace(/(<(\w+)[^>]*?)\/>/g,function(e,t,n){return n.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?e:t+">"});var r=n.replace(/^\s+/,"").substring(0,10).toLowerCase(),o=!r.indexOf("",""]||!r.indexOf("",""]||r.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"","
            "]||!r.indexOf("",""]||(!r.indexOf("",""]||!r.indexOf("",""]||!h.support.htmlSerialize&&[1,"div
            ","
            "]||[0,"",""];for(a.innerHTML=o[1]+n+o[2];o[0]--;)a=a.lastChild;if(!h.support.tbody)for(var s=/"!=o[1]||s?[]:a.childNodes:a.firstChild&&a.firstChild.childNodes,c=l.length-1;c>=0;--c)h.nodeName(l[c],"tbody")&&!l[c].childNodes.length&&l[c].parentNode.removeChild(l[c]);!h.support.leadingWhitespace&&/^\s/.test(n)&&a.insertBefore(t.createTextNode(n.match(/^\s*/)[0]),a.firstChild),n=h.makeArray(a.childNodes)}n.nodeType?i.push(n):i=h.merge(i,n)}}),n){for(var s=0;i[s];s++)!h.nodeName(i[s],"script")||i[s].type&&"text/javascript"!==i[s].type.toLowerCase()?(1===i[s].nodeType&&i.splice.apply(i,[s+1,0].concat(h.makeArray(i[s].getElementsByTagName("script")))),n.appendChild(i[s])):o.push(i[s].parentNode?i[s].parentNode.removeChild(i[s]):i[s]);return o}return i},attr:function(e,t,n){if(!e||3==e.nodeType||8==e.nodeType)return c;var r=!h.isXMLDoc(e),i=n!==c;if(t=r&&h.props[t]||t,e.tagName){var o=/href|src|style/.test(t);if("selected"==t&&e.parentNode&&e.parentNode.selectedIndex,t in e&&r&&!o){if(i){if("type"==t&&h.nodeName(e,"input")&&e.parentNode)throw"type property can't be changed";e[t]=n}if(h.nodeName(e,"form")&&e.getAttributeNode(t))return e.getAttributeNode(t).nodeValue;if("tabIndex"==t){var a=e.getAttributeNode("tabIndex");return a&&a.specified?a.value:e.nodeName.match(/(button|input|object|select|textarea)/i)?0:e.nodeName.match(/^(a|area)$/i)&&e.href?0:c}return e[t]}if(!h.support.style&&r&&"style"==t)return h.attr(e.style,"cssText",n);i&&e.setAttribute(t,""+n);var s=!h.support.hrefNormalized&&r&&o?e.getAttribute(t,2):e.getAttribute(t);return null===s?c:s}return h.support.opacity||"opacity"!=t?(t=t.replace(/-([a-z])/gi,function(e,t){return t.toUpperCase()}),i&&(e[t]=n),e[t]):(i&&(e.zoom=1,e.filter=(e.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(n)+""=="NaN"?"":"alpha(opacity="+100*n+")")),e.filter&&e.filter.indexOf("opacity=")>=0?parseFloat(e.filter.match(/opacity=([^)]*)/)[1])/100+"":"")},trim:function(e){return(e||"").replace(/^\s+|\s+$/g,"")},makeArray:function(e){var t=[];if(null!=e){var n=e.length;if(null==n||"string"==typeof e||h.isFunction(e)||e.setInterval)t[0]=e;else for(;n;)t[--n]=e[n]}return t},inArray:function(e,t){for(var n=0,r=t.length;r>n;n++)if(t[n]===e)return n;return-1},merge:function(e,t){var n,r=0,i=e.length;if(h.support.getAll)for(;null!=(n=t[r++]);)e[i++]=n;else for(;null!=(n=t[r++]);)8!=n.nodeType&&(e[i++]=n);return e},unique:function(e){var t=[],n={};try{for(var r=0,i=e.length;i>r;r++){var o=h.data(e[r]);n[o]||(n[o]=!0,t.push(e[r]))}}catch(a){t=e}return t},grep:function(e,t,n){for(var r=[],i=0,o=e.length;o>i;i++)!n!=!t(e[i],i)&&r.push(e[i]);return r},map:function(e,t){for(var n=[],r=0,i=e.length;i>r;r++){var o=t(e[r],r);null!=o&&(n[n.length]=o)}return n.concat.apply([],n)}});var b=navigator.userAgent.toLowerCase();h.browser={version:(b.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[0,"0"])[1],safari:/webkit/.test(b),opera:/opera/.test(b),msie:/msie/.test(b)&&!/opera/.test(b),mozilla:/mozilla/.test(b)&&!/(compatible|webkit)/.test(b)},h.each({parent:function(e){return e.parentNode},parents:function(e){return h.dir(e,"parentNode")},next:function(e){return h.nth(e,2,"nextSibling")},prev:function(e){return h.nth(e,2,"previousSibling")},nextAll:function(e){return h.dir(e,"nextSibling")},prevAll:function(e){return h.dir(e,"previousSibling")},siblings:function(e){return h.sibling(e.parentNode.firstChild,e)},children:function(e){return h.sibling(e.firstChild)},contents:function(e){return h.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:h.makeArray(e.childNodes)}},function(e,t){h.fn[e]=function(n){var r=h.map(this,t);return n&&"string"==typeof n&&(r=h.multiFilter(n,r)),this.pushStack(h.unique(r),e,n)}}),h.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){h.fn[e]=function(n){for(var r=[],i=h(n),o=0,a=i.length;a>o;o++){var s=(o>0?this.clone(!0):this).get();h.fn[t].apply(h(i[o]),s),r=r.concat(s)}return this.pushStack(r,e,n)}}),h.each({removeAttr:function(e){h.attr(this,e,""),1==this.nodeType&&this.removeAttribute(e)},addClass:function(e){h.className.add(this,e)},removeClass:function(e){h.className.remove(this,e)},toggleClass:function(e,t){"boolean"!=typeof t&&(t=!h.className.has(this,e)),h.className[t?"add":"remove"](this,e)},remove:function(e){e&&!h.filter(e,[this]).length||(h("*",this).add([this]).each(function(){h.event.remove(this),h.removeData(this)}),this.parentNode&&this.parentNode.removeChild(this))},empty:function(){for(h(this).children().remove();this.firstChild;)this.removeChild(this.firstChild)}},function(e,t){h.fn[e]=function(){return this.each(t,arguments)}});var x="jQuery"+t(),T=0,N={};h.extend({cache:{},data:function(e,t,n){e=e==u?N:e;var r=e[x];return r||(r=e[x]=++T),t&&!h.cache[r]&&(h.cache[r]={}),n!==c&&(h.cache[r][t]=n),t?h.cache[r][t]:r},removeData:function(e,t){e=e==u?N:e;var n=e[x];if(t){if(h.cache[n]){delete h.cache[n][t],t="";for(t in h.cache[n])break;t||h.removeData(e)}}else{try{delete e[x]}catch(r){e.removeAttribute&&e.removeAttribute(x)}delete h.cache[n]}},queue:function(e,t,n){if(e){t=(t||"fx")+"queue";var r=h.data(e,t);!r||h.isArray(n)?r=h.data(e,t,h.makeArray(n)):n&&r.push(n)}return r},dequeue:function(e,t){var n=h.queue(e,t),r=n.shift();t&&"fx"!==t||(r=n[0]),r!==c&&r.call(e)}}),h.fn.extend({data:function(e,t){var n=e.split(".");if(n[1]=n[1]?"."+n[1]:"",t===c){var r=this.triggerHandler("getData"+n[1]+"!",[n[0]]);return r===c&&this.length&&(r=h.data(this[0],e)),r===c&&n[1]?this.data(n[0]):r}return this.trigger("setData"+n[1]+"!",[n[0],t]).each(function(){h.data(this,e,t)})},removeData:function(e){return this.each(function(){h.removeData(this,e)})},queue:function(e,t){return"string"!=typeof e&&(t=e,e="fx"),t===c?h.queue(this[0],e):this.each(function(){var n=h.queue(this,e,t);"fx"==e&&1==n.length&&n[0].call(this)})},dequeue:function(e){return this.each(function(){h.dequeue(this,e)})}}),function(){function e(e,t,n,r,i,o){for(var a="previousSibling"==e&&!o,s=0,l=r.length;l>s;s++){var c=r[s];if(c){a&&1===c.nodeType&&(c.sizcache=n,c.sizset=s),c=c[e];for(var u=!1;c;){if(c.sizcache===n){u=r[c.sizset];break}if(1!==c.nodeType||o||(c.sizcache=n,c.sizset=s),c.nodeName===t){u=c;break}c=c[e]}r[s]=u}}}function t(e,t,n,r,i,a){for(var s="previousSibling"==e&&!a,l=0,c=r.length;c>l;l++){var u=r[l];if(u){s&&1===u.nodeType&&(u.sizcache=n,u.sizset=l),u=u[e];for(var d=!1;u;){if(u.sizcache===n){d=r[u.sizset];break}if(1===u.nodeType)if(a||(u.sizcache=n,u.sizset=l),"string"!=typeof t){if(u===t){d=!0;break}}else if(o.filter(t,[u]).length>0){d=u;break}u=u[e]}r[l]=d}}}var n=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,r=0,i=Object.prototype.toString,o=function(e,t,r,l){if(r=r||[],t=t||document,1!==t.nodeType&&9!==t.nodeType)return[];if(!e||"string"!=typeof e)return r;var c,d,h,y,g=[],b=!0;for(n.lastIndex=0;null!==(c=n.exec(e));)if(g.push(c[1]),c[2]){y=RegExp.rightContext;break}if(g.length>1&&s.exec(e))if(2===g.length&&a.relative[g[0]])d=v(g[0]+g[1],t);else for(d=a.relative[g[0]]?[t]:o(g.shift(),t);g.length;)e=g.shift(),a.relative[e]&&(e+=g.shift()),d=v(e,d);else{var x=l?{expr:g.pop(),set:u(l)}:o.find(g.pop(),1===g.length&&t.parentNode?t.parentNode:t,m(t));for(d=o.filter(x.expr,x.set),g.length>0?h=u(d):b=!1;g.length;){var T=g.pop(),N=T;a.relative[T]?N=g.pop():T="",null==N&&(N=t),a.relative[T](h,N,m(t))}}if(h||(h=d),!h)throw"Syntax error, unrecognized expression: "+(T||e);if("[object Array]"===i.call(h))if(b)if(1===t.nodeType)for(var E=0;null!=h[E];E++)h[E]&&(h[E]===!0||1===h[E].nodeType&&p(t,h[E]))&&r.push(d[E]);else for(var E=0;null!=h[E];E++)h[E]&&1===h[E].nodeType&&r.push(d[E]);else r.push.apply(r,h);else u(h,r);if(y&&(o(y,t,r,l),f&&(hasDuplicate=!1,r.sort(f),hasDuplicate)))for(var E=1;Eo;o++){var i,l=a.order[o];if(i=a.match[l].exec(e)){var c=RegExp.leftContext;if("\\"!==c.substr(c.length-1)&&(i[1]=(i[1]||"").replace(/\\/g,""),r=a.find[l](i,t,n),null!=r)){e=e.replace(a.match[l],"");break}}}return r||(r=t.getElementsByTagName("*")),{set:r,expr:e}},o.filter=function(e,t,n,r){for(var i,o,s=e,l=[],u=t,d=t&&t[0]&&m(t[0]);e&&t.length;){for(var f in a.filter)if(null!=(i=a.match[f].exec(e))){var h,p,v=a.filter[f];if(o=!1,u==l&&(l=[]),a.preFilter[f])if(i=a.preFilter[f](i,u,n,l,r,d)){if(i===!0)continue}else o=h=!0;if(i)for(var y=0;null!=(p=u[y]);y++)if(p){h=v(p,i,y,u);var g=r^!!h;n&&null!=h?g?o=!0:u[y]=!1:g&&(l.push(p),o=!0)}if(h!==c){if(n||(u=l),e=e.replace(a.match[f],""),!o)return[];break}}if(e==s){if(null==o)throw"Syntax error, unrecognized expression: "+e;break}s=e}return u};var a=o.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF_-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF_-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF_-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*_-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF_-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(e){return e.getAttribute("href")}},relative:{"+":function(e,t,n){var r="string"==typeof t,i=r&&!/\W/.test(t),a=r&&!i;i&&!n&&(t=t.toUpperCase());for(var s,l=0,c=e.length;c>l;l++)if(s=e[l]){for(;(s=s.previousSibling)&&1!==s.nodeType;);e[l]=a||s&&s.nodeName===t?s||!1:s===t}a&&o.filter(t,e,!0)},">":function(e,t,n){var r="string"==typeof t;if(r&&!/\W/.test(t)){t=n?t:t.toUpperCase();for(var i=0,a=e.length;a>i;i++){var s=e[i];if(s){var l=s.parentNode;e[i]=l.nodeName===t?l:!1}}}else{for(var i=0,a=e.length;a>i;i++){var s=e[i];s&&(e[i]=r?s.parentNode:s.parentNode===t)}r&&o.filter(t,e,!0)}},"":function(n,i,o){var a=r++,s=t;if(!i.match(/\W/)){var l=i=o?i:i.toUpperCase();s=e}s("parentNode",i,a,n,l,o)},"~":function(n,i,o){var a=r++,s=t;if("string"==typeof i&&!i.match(/\W/)){var l=i=o?i:i.toUpperCase();s=e}s("previousSibling",i,a,n,l,o)}},find:{ID:function(e,t,n){if("undefined"!=typeof t.getElementById&&!n){var r=t.getElementById(e[1]);return r?[r]:[]}},NAME:function(e,t,n){if("undefined"!=typeof t.getElementsByName){for(var r=[],i=t.getElementsByName(e[1]),o=0,a=i.length;a>o;o++)i[o].getAttribute("name")===e[1]&&r.push(i[o]);return 0===r.length?null:r}},TAG:function(e,t){return t.getElementsByTagName(e[1])}},preFilter:{CLASS:function(e,t,n,r,i,o){if(e=" "+e[1].replace(/\\/g,"")+" ",o)return e;for(var a,s=0;null!=(a=t[s]);s++)a&&(i^(a.className&&(" "+a.className+" ").indexOf(e)>=0)?n||r.push(a):n&&(t[s]=!1));return!1},ID:function(e){return e[1].replace(/\\/g,"")},TAG:function(e,t){for(var n=0;t[n]===!1;n++);return t[n]&&m(t[n])?e[1]:e[1].toUpperCase()},CHILD:function(e){if("nth"==e[1]){var t=/(-?)(\d*)n((?:\+|-)?\d*)/.exec("even"==e[2]&&"2n"||"odd"==e[2]&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=t[1]+(t[2]||1)-0,e[3]=t[3]-0}return e[0]=r++,e},ATTR:function(e,t,n,r,i,o){var s=e[1].replace(/\\/g,"");return!o&&a.attrMap[s]&&(e[1]=a.attrMap[s]),"~="===e[2]&&(e[4]=" "+e[4]+" "),e},PSEUDO:function(e,t,r,i,s){if("not"===e[1]){if(!(e[3].match(n).length>1||/^\w/.test(e[3]))){var l=o.filter(e[3],t,r,!0^s);return r||i.push.apply(i,l),!1}e[3]=o(e[3],null,null,t)}else if(a.match.POS.test(e[0])||a.match.CHILD.test(e[0]))return!0;return e},POS:function(e){return e.unshift(!0),e}},filters:{enabled:function(e){return e.disabled===!1&&"hidden"!==e.type},disabled:function(e){return e.disabled===!0},checked:function(e){return e.checked===!0},selected:function(e){return e.parentNode.selectedIndex,e.selected===!0},parent:function(e){return!!e.firstChild},empty:function(e){return!e.firstChild},has:function(e,t,n){return!!o(n[3],e).length},header:function(e){return/h\d/i.test(e.nodeName)},text:function(e){return"text"===e.type},radio:function(e){return"radio"===e.type},checkbox:function(e){return"checkbox"===e.type},file:function(e){return"file"===e.type},password:function(e){return"password"===e.type},submit:function(e){return"submit"===e.type},image:function(e){return"image"===e.type},reset:function(e){return"reset"===e.type},button:function(e){return"button"===e.type||"BUTTON"===e.nodeName.toUpperCase()},input:function(e){return/input|select|textarea|button/i.test(e.nodeName)}},setFilters:{first:function(e,t){return 0===t},last:function(e,t,n,r){return t===r.length-1},even:function(e,t){return t%2===0},odd:function(e,t){return t%2===1},lt:function(e,t,n){return tn[3]-0},nth:function(e,t,n){return n[3]-0==t},eq:function(e,t,n){return n[3]-0==t}},filter:{PSEUDO:function(e,t,n,r){var i=t[1],o=a.filters[i];if(o)return o(e,n,t,r);if("contains"===i)return(e.textContent||e.innerText||"").indexOf(t[3])>=0;if("not"===i){for(var s=t[3],n=0,l=s.length;l>n;n++)if(s[n]===e)return!1;return!0}},CHILD:function(e,t){var n=t[1],r=e;switch(n){case"only":case"first":for(;r=r.previousSibling;)if(1===r.nodeType)return!1;if("first"==n)return!0;r=e;case"last":for(;r=r.nextSibling;)if(1===r.nodeType)return!1;return!0;case"nth":var i=t[2],o=t[3];if(1==i&&0==o)return!0;var a=t[0],s=e.parentNode;if(s&&(s.sizcache!==a||!e.nodeIndex)){var l=0;for(r=s.firstChild;r;r=r.nextSibling)1===r.nodeType&&(r.nodeIndex=++l);s.sizcache=a}var c=e.nodeIndex-o;return 0==i?0==c:c%i==0&&c/i>=0}},ID:function(e,t){return 1===e.nodeType&&e.getAttribute("id")===t},TAG:function(e,t){return"*"===t&&1===e.nodeType||e.nodeName===t},CLASS:function(e,t){return(" "+(e.className||e.getAttribute("class"))+" ").indexOf(t)>-1},ATTR:function(e,t){var n=t[1],r=a.attrHandle[n]?a.attrHandle[n](e):null!=e[n]?e[n]:e.getAttribute(n),i=r+"",o=t[2],s=t[4];return null==r?"!="===o:"="===o?i===s:"*="===o?i.indexOf(s)>=0:"~="===o?(" "+i+" ").indexOf(s)>=0:s?"!="===o?i!=s:"^="===o?0===i.indexOf(s):"$="===o?i.substr(i.length-s.length)===s:"|="===o?i===s||i.substr(0,s.length+1)===s+"-":!1:i&&r!==!1},POS:function(e,t,n,r){var i=t[2],o=a.setFilters[i];return o?o(e,n,t,r):void 0}}},s=a.match.POS;for(var l in a.match)a.match[l]=RegExp(a.match[l].source+/(?![^\[]*\])(?![^\(]*\))/.source);var u=function(e,t){return e=Array.prototype.slice.call(e),t?(t.push.apply(t,e),t):e};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(d){u=function(e,t){var n=t||[];if("[object Array]"===i.call(e))Array.prototype.push.apply(n,e);else if("number"==typeof e.length)for(var r=0,o=e.length;o>r;r++)n.push(e[r]);else for(var r=0;e[r];r++)n.push(e[r]);return n}}var f;document.documentElement.compareDocumentPosition?f=function(e,t){var n=4&e.compareDocumentPosition(t)?-1:e===t?0:1;return 0===n&&(hasDuplicate=!0),n}:"sourceIndex"in document.documentElement?f=function(e,t){var n=e.sourceIndex-t.sourceIndex;return 0===n&&(hasDuplicate=!0),n}:document.createRange&&(f=function(e,t){var n=e.ownerDocument.createRange(),r=t.ownerDocument.createRange();n.selectNode(e),n.collapse(!0),r.selectNode(t),r.collapse(!0);var i=n.compareBoundaryPoints(Range.START_TO_END,r);return 0===i&&(hasDuplicate=!0),i}),function(){var e=document.createElement("form"),t="script"+(new Date).getTime();e.innerHTML="";var n=document.documentElement;n.insertBefore(e,n.firstChild),document.getElementById(t)&&(a.find.ID=function(e,t,n){if("undefined"!=typeof t.getElementById&&!n){var r=t.getElementById(e[1]);return r?r.id===e[1]||"undefined"!=typeof r.getAttributeNode&&r.getAttributeNode("id").nodeValue===e[1]?[r]:c:[]}},a.filter.ID=function(e,t){var n="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return 1===e.nodeType&&n&&n.nodeValue===t}),n.removeChild(e)}(),function(){var e=document.createElement("div");e.appendChild(document.createComment("")),e.getElementsByTagName("*").length>0&&(a.find.TAG=function(e,t){var n=t.getElementsByTagName(e[1]);if("*"===e[1]){for(var r=[],i=0;n[i];i++)1===n[i].nodeType&&r.push(n[i]);n=r}return n}),e.innerHTML="",e.firstChild&&"undefined"!=typeof e.firstChild.getAttribute&&"#"!==e.firstChild.getAttribute("href")&&(a.attrHandle.href=function(e){return e.getAttribute("href",2)})}(),document.querySelectorAll&&!function(){var e=o,t=document.createElement("div");t.innerHTML="

            ",t.querySelectorAll&&0===t.querySelectorAll(".TEST").length||(o=function(t,n,r,i){if(n=n||document,!i&&9===n.nodeType&&!m(n))try{return u(n.querySelectorAll(t),r)}catch(o){}return e(t,n,r,i)},o.find=e.find,o.filter=e.filter,o.selectors=e.selectors,o.matches=e.matches)}(),document.getElementsByClassName&&document.documentElement.getElementsByClassName&&!function(){var e=document.createElement("div");e.innerHTML="
            ",0!==e.getElementsByClassName("e").length&&(e.lastChild.className="e",1!==e.getElementsByClassName("e").length&&(a.order.splice(1,0,"CLASS"),a.find.CLASS=function(e,t,n){return"undefined"==typeof t.getElementsByClassName||n?void 0:t.getElementsByClassName(e[1])}))}();var p=document.compareDocumentPosition?function(e,t){return 16&e.compareDocumentPosition(t)}:function(e,t){return e!==t&&(e.contains?e.contains(t):!0)},m=function(e){return 9===e.nodeType&&"HTML"!==e.documentElement.nodeName||!!e.ownerDocument&&m(e.ownerDocument)},v=function(e,t){for(var n,r=[],i="",s=t.nodeType?[t]:t;n=a.match.PSEUDO.exec(e);)i+=n[0],e=e.replace(a.match.PSEUDO,"");e=a.relative[e]?e+"*":e;for(var l=0,c=s.length;c>l;l++)o(e,s[l],r);return o.filter(i,r)};h.find=o,h.filter=o.filter,h.expr=o.selectors,h.expr[":"]=h.expr.filters,o.selectors.filters.hidden=function(e){return 0===e.offsetWidth||0===e.offsetHeight},o.selectors.filters.visible=function(e){return e.offsetWidth>0||e.offsetHeight>0},o.selectors.filters.animated=function(e){return h.grep(h.timers,function(t){return e===t.elem}).length},h.multiFilter=function(e,t,n){return n&&(e=":not("+e+")"),o.matches(e,t)},h.dir=function(e,t){for(var n=[],r=e[t];r&&r!=document;)1==r.nodeType&&n.push(r),r=r[t];return n},h.nth=function(e,t,n,r){t=t||1;for(var i=0;e&&(1!=e.nodeType||++i!=t);e=e[n]);return e},h.sibling=function(e,t){for(var n=[];e;e=e.nextSibling)1==e.nodeType&&e!=t&&n.push(e);return n}}(),h.event={add:function(e,t,n,r){if(3!=e.nodeType&&8!=e.nodeType){if(e.setInterval&&e!=u&&(e=u),n.guid||(n.guid=this.guid++),r!==c){var i=n;n=this.proxy(i),n.data=r}var o=h.data(e,"events")||h.data(e,"events",{}),a=h.data(e,"handle")||h.data(e,"handle",function(){return"undefined"==typeof h||h.event.triggered?c:h.event.handle.apply(arguments.callee.elem,arguments)});a.elem=e,h.each(t.split(/\s+/),function(t,i){var s=i.split(".");i=s.shift(),n.type=s.slice().sort().join(".");var l=o[i];h.event.specialAll[i]&&h.event.specialAll[i].setup.call(e,r,s),l||(l=o[i]={},h.event.special[i]&&h.event.special[i].setup.call(e,r,s)!==!1||(e.addEventListener?e.addEventListener(i,a,!1):e.attachEvent&&e.attachEvent("on"+i,a))),l[n.guid]=n,h.event.global[i]=!0}),e=null}},guid:1,global:{},remove:function(e,t,n){if(3!=e.nodeType&&8!=e.nodeType){var r,i=h.data(e,"events");if(i){if(t===c||"string"==typeof t&&"."==t.charAt(0))for(var o in i)this.remove(e,o+(t||""));else t.type&&(n=t.handler,t=t.type),h.each(t.split(/\s+/),function(t,o){var a=o.split(".");o=a.shift();var s=RegExp("(^|\\.)"+a.slice().sort().join(".*\\.")+"(\\.|$)");if(i[o]){if(n)delete i[o][n.guid];else for(var l in i[o])s.test(i[o][l].type)&&delete i[o][l];h.event.specialAll[o]&&h.event.specialAll[o].teardown.call(e,a);for(r in i[o])break;r||(h.event.special[o]&&h.event.special[o].teardown.call(e,a)!==!1||(e.removeEventListener?e.removeEventListener(o,h.data(e,"handle"),!1):e.detachEvent&&e.detachEvent("on"+o,h.data(e,"handle"))),r=null,delete i[o])}});for(r in i)break;if(!r){var a=h.data(e,"handle");a&&(a.elem=null),h.removeData(e,"events"),h.removeData(e,"handle")}}}},trigger:function(e,t,n,r){var i=e.type||e;if(!r){if(e="object"==typeof e?e[x]?e:h.extend(h.Event(i),e):h.Event(i),i.indexOf("!")>=0&&(e.type=i=i.slice(0,-1),e.exclusive=!0), +n||(e.stopPropagation(),this.global[i]&&h.each(h.cache,function(){this.events&&this.events[i]&&h.event.trigger(e,t,this.handle.elem)})),!n||3==n.nodeType||8==n.nodeType)return c;e.result=c,e.target=n,t=h.makeArray(t),t.unshift(e)}e.currentTarget=n;var o=h.data(n,"handle");if(o&&o.apply(n,t),(!n[i]||h.nodeName(n,"a")&&"click"==i)&&n["on"+i]&&n["on"+i].apply(n,t)===!1&&(e.result=!1),!r&&n[i]&&!e.isDefaultPrevented()&&(!h.nodeName(n,"a")||"click"!=i)){this.triggered=!0;try{n[i]()}catch(a){}}if(this.triggered=!1,!e.isPropagationStopped()){var s=n.parentNode||n.ownerDocument;s&&h.event.trigger(e,t,s,!0)}},handle:function(e){var t,n;e=arguments[0]=h.event.fix(e||u.event),e.currentTarget=this;var r=e.type.split(".");e.type=r.shift(),t=!r.length&&!e.exclusive;var i=RegExp("(^|\\.)"+r.slice().sort().join(".*\\.")+"(\\.|$)");n=(h.data(this,"events")||{})[e.type];for(var o in n){var a=n[o];if(t||i.test(a.type)){e.handler=a,e.data=a.data;var s=a.apply(this,arguments);if(s!==c&&(e.result=s,s===!1&&(e.preventDefault(),e.stopPropagation())),e.isImmediatePropagationStopped())break}}},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(e){if(e[x])return e;var t=e;e=h.Event(t);for(var n,r=this.props.length;r;)n=this.props[--r],e[n]=t[n];if(e.target||(e.target=e.srcElement||document),3==e.target.nodeType&&(e.target=e.target.parentNode),!e.relatedTarget&&e.fromElement&&(e.relatedTarget=e.fromElement==e.target?e.toElement:e.fromElement),null==e.pageX&&null!=e.clientX){var i=document.documentElement,o=document.body;e.pageX=e.clientX+(i&&i.scrollLeft||o&&o.scrollLeft||0)-(i.clientLeft||0),e.pageY=e.clientY+(i&&i.scrollTop||o&&o.scrollTop||0)-(i.clientTop||0)}return!e.which&&(e.charCode||0===e.charCode?e.charCode:e.keyCode)&&(e.which=e.charCode||e.keyCode),!e.metaKey&&e.ctrlKey&&(e.metaKey=e.ctrlKey),!e.which&&e.button&&(e.which=1&e.button?1:2&e.button?3:4&e.button?2:0),e},proxy:function(e,t){return t=t||function(){return e.apply(this,arguments)},t.guid=e.guid=e.guid||t.guid||this.guid++,t},special:{ready:{setup:s,teardown:function(){}}},specialAll:{live:{setup:function(e,t){h.event.add(this,t[0],o)},teardown:function(e){if(e.length){var t=0,n=RegExp("(^|\\.)"+e[0]+"(\\.|$)");h.each(h.data(this,"events").live||{},function(){n.test(this.type)&&t++}),1>t&&h.event.remove(this,e[0],o)}}}}},h.Event=function(e){return this.preventDefault?(e&&e.type?(this.originalEvent=e,this.type=e.type):this.type=e,this.timeStamp=t(),void(this[x]=!0)):new h.Event(e)},h.Event.prototype={preventDefault:function(){this.isDefaultPrevented=i;var e=this.originalEvent;e&&(e.preventDefault&&e.preventDefault(),e.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=i;var e=this.originalEvent;e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=i,this.stopPropagation()},isDefaultPrevented:r,isPropagationStopped:r,isImmediatePropagationStopped:r};var E=function(e){for(var t=e.relatedTarget;t&&t!=this;)try{t=t.parentNode}catch(n){t=this}t!=this&&(e.type=e.data,h.event.handle.apply(this,arguments))};h.each({mouseover:"mouseenter",mouseout:"mouseleave"},function(e,t){h.event.special[t]={setup:function(){h.event.add(this,e,E,t)},teardown:function(){h.event.remove(this,e,E)}}}),h.fn.extend({bind:function(e,t,n){return"unload"==e?this.one(e,t,n):this.each(function(){h.event.add(this,e,n||t,n&&t)})},one:function(e,t,n){var r=h.event.proxy(n||t,function(e){return h(this).unbind(e,r),(n||t).apply(this,arguments)});return this.each(function(){h.event.add(this,e,r,n&&t)})},unbind:function(e,t){return this.each(function(){h.event.remove(this,e,t)})},trigger:function(e,t){return this.each(function(){h.event.trigger(e,t,this)})},triggerHandler:function(e,t){if(this[0]){var n=h.Event(e);return n.preventDefault(),n.stopPropagation(),h.event.trigger(n,t,this[0]),n.result}},toggle:function(e){for(var t=arguments,n=1;n=0){var i=e.slice(r,e.length);e=e.slice(0,r)}var o="GET";t&&(h.isFunction(t)?(n=t,t=null):"object"==typeof t&&(t=h.param(t),o="POST"));var a=this;return h.ajax({url:e,type:o,dataType:"html",data:t,complete:function(e,t){"success"!=t&&"notmodified"!=t||a.html(i?h("
            ").append(e.responseText.replace(//g,"")).find(i):e.responseText),n&&a.each(n,[e.responseText,t,e])}}),this},serialize:function(){return h.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?h.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password|search/i.test(this.type))}).map(function(e,t){var n=h(this).val();return null==n?null:h.isArray(n)?h.map(n,function(e,n){return{name:t.name,value:e}}):{name:t.name,value:n}}).get()}}),h.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(e,t){h.fn[t]=function(e){return this.bind(t,e)}});var C=t();h.extend({get:function(e,t,n,r){return h.isFunction(t)&&(n=t,t=null),h.ajax({type:"GET",url:e,data:t,success:n,dataType:r})},getScript:function(e,t){return h.get(e,null,t,"script")},getJSON:function(e,t,n){return h.get(e,t,n,"json")},post:function(e,t,n,r){return h.isFunction(t)&&(n=t,t={}),h.ajax({type:"POST",url:e,data:t,success:n,dataType:r})},ajaxSetup:function(e){h.extend(h.ajaxSettings,e)},ajaxSettings:{url:location.href,global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,xhr:function(){return u.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(e){function n(){e.success&&e.success(a,o),e.global&&h.event.trigger("ajaxSuccess",[b,e])}function r(){e.complete&&e.complete(b,o),e.global&&h.event.trigger("ajaxComplete",[b,e]),e.global&&!--h.active&&h.event.trigger("ajaxStop")}e=h.extend(!0,e,h.extend(!0,{},h.ajaxSettings,e));var i,o,a,s=/=\?(&|$)/g,l=e.type.toUpperCase();if(e.data&&e.processData&&"string"!=typeof e.data&&(e.data=h.param(e.data)),"jsonp"==e.dataType&&("GET"==l?e.url.match(s)||(e.url+=(e.url.match(/\?/)?"&":"?")+(e.jsonp||"callback")+"=?"):e.data&&e.data.match(s)||(e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?"),e.dataType="json"),"json"==e.dataType&&(e.data&&e.data.match(s)||e.url.match(s))&&(i="jsonp"+C++,e.data&&(e.data=(e.data+"").replace(s,"="+i+"$1")),e.url=e.url.replace(s,"="+i+"$1"),e.dataType="script",u[i]=function(e){a=e,n(),r(),u[i]=c;try{delete u[i]}catch(t){}m&&m.removeChild(v)}),"script"==e.dataType&&null==e.cache&&(e.cache=!1),e.cache===!1&&"GET"==l){var d=t(),f=e.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+d+"$2");e.url=f+(f==e.url?(e.url.match(/\?/)?"&":"?")+"_="+d:"")}e.data&&"GET"==l&&(e.url+=(e.url.match(/\?/)?"&":"?")+e.data,e.data=null),e.global&&!h.active++&&h.event.trigger("ajaxStart");var p=/^(\w+:)?\/\/([^\/?#]+)/.exec(e.url);if("script"==e.dataType&&"GET"==l&&p&&(p[1]&&p[1]!=location.protocol||p[2]!=location.host)){var m=document.getElementsByTagName("head")[0],v=document.createElement("script");if(v.src=e.url,e.scriptCharset&&(v.charset=e.scriptCharset),!i){var y=!1;v.onload=v.onreadystatechange=function(){y||this.readyState&&"loaded"!=this.readyState&&"complete"!=this.readyState||(y=!0,n(),r(),v.onload=v.onreadystatechange=null,m.removeChild(v))}}return m.appendChild(v),c}var g=!1,b=e.xhr();e.username?b.open(l,e.url,e.async,e.username,e.password):b.open(l,e.url,e.async);try{e.data&&b.setRequestHeader("Content-Type",e.contentType),e.ifModified&&b.setRequestHeader("If-Modified-Since",h.lastModified[e.url]||"Thu, 01 Jan 1970 00:00:00 GMT"),b.setRequestHeader("X-Requested-With","XMLHttpRequest"),b.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(x){}if(e.beforeSend&&e.beforeSend(b,e)===!1)return e.global&&!--h.active&&h.event.trigger("ajaxStop"),b.abort(),!1;e.global&&h.event.trigger("ajaxSend",[b,e]);var T=function(t){if(0==b.readyState)N&&(clearInterval(N),N=null,e.global&&!--h.active&&h.event.trigger("ajaxStop"));else if(!g&&b&&(4==b.readyState||"timeout"==t)){if(g=!0,N&&(clearInterval(N),N=null),o="timeout"==t?"timeout":h.httpSuccess(b)?e.ifModified&&h.httpNotModified(b,e.url)?"notmodified":"success":"error","success"==o)try{a=h.httpData(b,e.dataType,e)}catch(s){o="parsererror"}if("success"==o){var l;try{l=b.getResponseHeader("Last-Modified")}catch(s){}e.ifModified&&l&&(h.lastModified[e.url]=l),i||n()}else h.handleError(e,b,o);r(),t&&b.abort(),e.async&&(b=null)}};if(e.async){var N=setInterval(T,13);e.timeout>0&&setTimeout(function(){b&&!g&&T("timeout")},e.timeout)}try{b.send(e.data)}catch(x){h.handleError(e,b,null,x)}return e.async||T(),b},handleError:function(e,t,n,r){e.error&&e.error(t,n,r),e.global&&h.event.trigger("ajaxError",[t,e,r])},active:0,httpSuccess:function(e){try{return!e.status&&"file:"==location.protocol||e.status>=200&&e.status<300||304==e.status||1223==e.status}catch(t){}return!1},httpNotModified:function(e,t){try{var n=e.getResponseHeader("Last-Modified");return 304==e.status||n==h.lastModified[t]}catch(r){}return!1},httpData:function(e,t,n){var r=e.getResponseHeader("content-type"),i="xml"==t||!t&&r&&r.indexOf("xml")>=0,o=i?e.responseXML:e.responseText;if(i&&"parsererror"==o.documentElement.tagName)throw"parsererror";return n&&n.dataFilter&&(o=n.dataFilter(o,t)),"string"==typeof o&&("script"==t&&h.globalEval(o),"json"==t&&(o=u.eval("("+o+")"))),o},param:function(e){function t(e,t){n[n.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)}var n=[];if(h.isArray(e)||e.jquery)h.each(e,function(){t(this.name,this.value)});else for(var r in e)h.isArray(e[r])?h.each(e[r],function(){t(r,this)}):t(r,h.isFunction(e[r])?e[r]():e[r]);return n.join("&").replace(/%20/g,"+")}});var A,D={},L=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];h.fn.extend({show:function(e,t){if(e)return this.animate(l("show",3),e,t);for(var n=0,r=this.length;r>n;n++){var i=h.data(this[n],"olddisplay");if(this[n].style.display=i||"","none"===h.css(this[n],"display")){var o,a=this[n].tagName;if(D[a])o=D[a];else{var s=h("<"+a+" />").appendTo("body");o=s.css("display"),"none"===o&&(o="block"),s.remove(),D[a]=o}h.data(this[n],"olddisplay",o)}}for(var n=0,r=this.length;r>n;n++)this[n].style.display=h.data(this[n],"olddisplay")||"";return this},hide:function(e,t){if(e)return this.animate(l("hide",3),e,t);for(var n=0,r=this.length;r>n;n++){var i=h.data(this[n],"olddisplay");i||"none"===i||h.data(this[n],"olddisplay",h.css(this[n],"display"))}for(var n=0,r=this.length;r>n;n++)this[n].style.display="none";return this},_toggle:h.fn.toggle,toggle:function(e,t){var n="boolean"==typeof e;return h.isFunction(e)&&h.isFunction(t)?this._toggle.apply(this,arguments):null==e||n?this.each(function(){var t=n?e:h(this).is(":hidden");h(this)[t?"show":"hide"]()}):this.animate(l("toggle",3),e,t)},fadeTo:function(e,t,n){return this.animate({opacity:t},e,n)},animate:function(e,t,n,r){var i=h.speed(t,n,r);return this[i.queue===!1?"each":"queue"](function(){var t,n=h.extend({},i),r=1==this.nodeType&&h(this).is(":hidden"),o=this;for(t in e){if("hide"==e[t]&&r||"show"==e[t]&&!r)return n.complete.call(this);"height"!=t&&"width"!=t||!this.style||(n.display=h.css(this,"display"),n.overflow=this.style.overflow)}return null!=n.overflow&&(this.style.overflow="hidden"),n.curAnim=h.extend({},e),h.each(e,function(t,i){var a=new h.fx(o,n,t);if(/toggle|show|hide/.test(i))a["toggle"==i?r?"show":"hide":i](e);else{var s=i.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),l=a.cur(!0)||0;if(s){var c=parseFloat(s[2]),u=s[3]||"px";"px"!=u&&(o.style[t]=(c||1)+u,l=(c||1)/a.cur(!0)*l,o.style[t]=l+u),s[1]&&(c=("-="==s[1]?-1:1)*c+l),a.custom(l,c,u)}else a.custom(l,i,"")}}),!0})},stop:function(e,t){var n=h.timers;return e&&this.queue([]),this.each(function(){for(var e=n.length-1;e>=0;e--)n[e].elem==this&&(t&&n[e](!0),n.splice(e,1))}),t||this.dequeue(),this}}),h.each({slideDown:l("show",1),slideUp:l("hide",1),slideToggle:l("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(e,t){h.fn[e]=function(e,n){return this.animate(t,e,n)}}),h.extend({speed:function(e,t,n){var r="object"==typeof e?e:{complete:n||!n&&t||h.isFunction(e)&&e,duration:e,easing:n&&t||t&&!h.isFunction(t)&&t};return r.duration=h.fx.off?0:"number"==typeof r.duration?r.duration:h.fx.speeds[r.duration]||h.fx.speeds._default,r.old=r.complete,r.complete=function(){r.queue!==!1&&h(this).dequeue(),h.isFunction(r.old)&&r.old.call(this)},r},easing:{linear:function(e,t,n,r){return n+r*e},swing:function(e,t,n,r){return(-Math.cos(e*Math.PI)/2+.5)*r+n}},timers:[],fx:function(e,t,n){this.options=t,this.elem=e,this.prop=n,t.orig||(t.orig={})}}),h.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(h.fx.step[this.prop]||h.fx.step._default)(this),"height"!=this.prop&&"width"!=this.prop||!this.elem.style||(this.elem.style.display="block")},cur:function(e){if(null!=this.elem[this.prop]&&(!this.elem.style||null==this.elem.style[this.prop]))return this.elem[this.prop];var t=parseFloat(h.css(this.elem,this.prop,e));return t&&t>-1e4?t:parseFloat(h.curCSS(this.elem,this.prop))||0},custom:function(e,n,r){function i(e){return o.step(e)}this.startTime=t(),this.start=e,this.end=n,this.unit=r||this.unit||"px",this.now=this.start,this.pos=this.state=0;var o=this;i.elem=this.elem,i()&&h.timers.push(i)&&!A&&(A=setInterval(function(){for(var e=h.timers,t=0;t=this.options.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),this.options.curAnim[this.prop]=!0;var r=!0;for(var i in this.options.curAnim)this.options.curAnim[i]!==!0&&(r=!1);if(r){if(null!=this.options.display&&(this.elem.style.overflow=this.options.overflow,this.elem.style.display=this.options.display,"none"==h.css(this.elem,"display")&&(this.elem.style.display="block")),this.options.hide&&h(this.elem).hide(),this.options.hide||this.options.show)for(var o in this.options.curAnim)h.attr(this.elem.style,o,this.options.orig[o]);this.options.complete.call(this.elem)}return!1}var a=n-this.startTime;return this.state=a/this.options.duration,this.pos=h.easing[this.options.easing||(h.easing.swing?"swing":"linear")](this.state,a,0,1,this.options.duration),this.now=this.start+(this.end-this.start)*this.pos,this.update(),!0}},h.extend(h.fx,{speeds:{slow:600,fast:200,_default:400},step:{opacity:function(e){h.attr(e.elem.style,"opacity",e.now)},_default:function(e){e.elem.style&&null!=e.elem.style[e.prop]?e.elem.style[e.prop]=e.now+e.unit:e.elem[e.prop]=e.now}}}),document.documentElement.getBoundingClientRect?h.fn.offset=function(){if(!this[0])return{top:0,left:0};if(this[0]===this[0].ownerDocument.body)return h.offset.bodyOffset(this[0]);var e=this[0].getBoundingClientRect(),t=this[0].ownerDocument,n=t.body,r=t.documentElement,i=r.clientTop||n.clientTop||0,o=r.clientLeft||n.clientLeft||0,a=e.top+(self.pageYOffset||h.boxModel&&r.scrollTop||n.scrollTop)-i,s=e.left+(self.pageXOffset||h.boxModel&&r.scrollLeft||n.scrollLeft)-o;return{top:a,left:s}}:h.fn.offset=function(){if(!this[0])return{top:0,left:0};if(this[0]===this[0].ownerDocument.body)return h.offset.bodyOffset(this[0]);h.offset.initialized||h.offset.initialize();for(var e,t=this[0],n=t.offsetParent,r=t,i=t.ownerDocument,o=i.documentElement,a=i.body,s=i.defaultView,l=s.getComputedStyle(t,null),c=t.offsetTop,u=t.offsetLeft;(t=t.parentNode)&&t!==a&&t!==o;)e=s.getComputedStyle(t,null),c-=t.scrollTop,u-=t.scrollLeft,t===n&&(c+=t.offsetTop,u+=t.offsetLeft,!h.offset.doesNotAddBorder||h.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(t.tagName)||(c+=parseInt(e.borderTopWidth,10)||0,u+=parseInt(e.borderLeftWidth,10)||0),r=n,n=t.offsetParent),h.offset.subtractsBorderForOverflowNotVisible&&"visible"!==e.overflow&&(c+=parseInt(e.borderTopWidth,10)||0,u+=parseInt(e.borderLeftWidth,10)||0),l=e;return"relative"!==l.position&&"static"!==l.position||(c+=a.offsetTop,u+=a.offsetLeft),"fixed"===l.position&&(c+=Math.max(o.scrollTop,a.scrollTop),u+=Math.max(o.scrollLeft,a.scrollLeft)),{top:c,left:u}},h.offset={initialize:function(){if(!this.initialized){var e,t,n,r,i,o=document.body,a=document.createElement("div"),s=o.style.marginTop,l='
            ';r={position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"};for(i in r)a.style[i]=r[i];a.innerHTML=l,o.insertBefore(a,o.firstChild),e=a.firstChild,t=e.firstChild,n=e.nextSibling.firstChild.firstChild,this.doesNotAddBorder=5!==t.offsetTop,this.doesAddBorderForTableAndCells=5===n.offsetTop,e.style.overflow="hidden",e.style.position="relative",this.subtractsBorderForOverflowNotVisible=-5===t.offsetTop,o.style.marginTop="1px",this.doesNotIncludeMarginInBodyOffset=0===o.offsetTop,o.style.marginTop=s,o.removeChild(a),this.initialized=!0}},bodyOffset:function(e){h.offset.initialized||h.offset.initialize();var t=e.offsetTop,n=e.offsetLeft;return h.offset.doesNotIncludeMarginInBodyOffset&&(t+=parseInt(h.curCSS(e,"marginTop",!0),10)||0,n+=parseInt(h.curCSS(e,"marginLeft",!0),10)||0),{top:t,left:n}}},h.fn.extend({position:function(){var e;if(this[0]){var t=this.offsetParent(),r=this.offset(),i=/^body|html$/i.test(t[0].tagName)?{top:0,left:0}:t.offset();r.top-=n(this,"marginTop"),r.left-=n(this,"marginLeft"),i.top+=n(t,"borderTopWidth"),i.left+=n(t,"borderLeftWidth"),e={top:r.top-i.top,left:r.left-i.left}}return e},offsetParent:function(){for(var e=this[0].offsetParent||document.body;e&&!/^body|html$/i.test(e.tagName)&&"static"==h.css(e,"position");)e=e.offsetParent;return h(e)}}),h.each(["Left","Top"],function(e,t){var n="scroll"+t;h.fn[n]=function(t){return this[0]?t!==c?this.each(function(){this==u||this==document?u.scrollTo(e?h(u).scrollLeft():t,e?t:h(u).scrollTop()):this[n]=t}):this[0]==u||this[0]==document?self[e?"pageYOffset":"pageXOffset"]||h.boxModel&&document.documentElement[n]||document.body[n]:this[0][n]:null}}),h.each(["Height","Width"],function(e,t){var n=t.toLowerCase();h.fn["inner"+t]=function(){return this[0]?h.css(this[0],n,!1,"padding"):null},h.fn["outer"+t]=function(e){return this[0]?h.css(this[0],n,!1,e?"margin":"border"):null};var r=t.toLowerCase();h.fn[r]=function(e){return this[0]==u?"CSS1Compat"==document.compatMode&&document.documentElement["client"+t]||document.body["client"+t]:this[0]==document?Math.max(document.documentElement["client"+t],document.body["scroll"+t],document.documentElement["scroll"+t],document.body["offset"+t],document.documentElement["offset"+t]):e===c?this.length?h.css(this[0],r):null:this.css(r,"string"==typeof e?e:e+"px")}})}(); !function(e,t,n){"use strict";function r(e,t){return t=t||Error,function(){var n,r,i=2,o=arguments,a=o[0],s="["+(e?e+":":"")+a+"] ",u=o[1];for(s+=u.replace(/\{\d+\}/g,function(e){var t=+e.slice(1,-1),n=t+i;return n0&&t-1 in e}function o(e,t,n){var r,a;if(e)if(k(e))for(r in e)"prototype"==r||"length"==r||"name"==r||e.hasOwnProperty&&!e.hasOwnProperty(r)||t.call(n,e[r],r,e);else if(Ir(e)||i(e)){var s="object"!=typeof e;for(r=0,a=e.length;a>r;r++)(s||r in e)&&t.call(n,e[r],r,e)}else if(e.forEach&&e.forEach!==o)e.forEach(t,n,e);else if(x(e))for(r in e)t.call(n,e[r],r,e);else if("function"==typeof e.hasOwnProperty)for(r in e)e.hasOwnProperty(r)&&t.call(n,e[r],r,e);else for(r in e)yr.call(e,r)&&t.call(n,e[r],r,e);return e}function a(e,t,n){for(var r=Object.keys(e).sort(),i=0;ii;++i){var a=t[i];if(w(a)||k(a))for(var s=Object.keys(a),u=0,f=s.length;f>u;u++){var h=s[u],p=a[h];n&&w(p)?C(p)?e[h]=new Date(p.valueOf()):A(p)?e[h]=new RegExp(p):(w(e[h])||(e[h]=Ir(p)?[]:{}),l(e[h],[p],!0)):e[h]=p}}return c(e,r),e}function f(e){return l(e,Ar.call(arguments,1),!1)}function h(e){return l(e,Ar.call(arguments,1),!0)}function p(e){return parseInt(e,10)}function d(e,t){return f(Object.create(e),t)}function $(){}function v(e){return e}function m(e){return function(){return e}}function g(e){return k(e.toString)&&e.toString!==Object.prototype.toString}function y(e){return"undefined"==typeof e}function b(e){return"undefined"!=typeof e}function w(e){return null!==e&&"object"==typeof e}function x(e){return null!==e&&"object"==typeof e&&!Nr(e)}function S(e){return"string"==typeof e}function E(e){return"number"==typeof e}function C(e){return"[object Date]"===Tr.call(e)}function k(e){return"function"==typeof e}function A(e){return"[object RegExp]"===Tr.call(e)}function O(e){return e&&e.window===e}function M(e){return e&&e.$evalAsync&&e.$watch}function T(e){return"[object File]"===Tr.call(e)}function N(e){return"[object FormData]"===Tr.call(e)}function V(e){return"[object Blob]"===Tr.call(e)}function j(e){return"boolean"==typeof e}function P(e){return e&&k(e.then)}function D(e){return Rr.test(Tr.call(e))}function I(e){return!(!e||!(e.nodeName||e.prop&&e.attr&&e.find))}function R(e){var t,n={},r=e.split(",");for(t=0;t=0&&e.splice(n,1),n}function F(e,t,n,r){if(O(e)||M(e))throw Vr("cpws","Can't copy! Making copies of Window or Scope instances is not supported.");if(D(t))throw Vr("cpta","Can't copy! TypedArray destination cannot be mutated.");if(t){if(e===t)throw Vr("cpi","Can't copy! Source and destination are identical.");n=n||[],r=r||[],w(e)&&(n.push(e),r.push(t));var i;if(Ir(e)){t.length=0;for(var a=0;an;n++)t[n]=e[n]}else if(w(e)){t=t||{};for(var i in e)"$"===i.charAt(0)&&"$"===i.charAt(1)||(t[i]=e[i])}return t||e}function B(e,t){if(e===t)return!0;if(null===e||null===t)return!1;if(e!==e&&t!==t)return!0;var n,r,i,o=typeof e,a=typeof t;if(o==a&&"object"==o){if(!Ir(e)){if(C(e))return C(t)?B(e.getTime(),t.getTime()):!1;if(A(e))return A(t)?e.toString()==t.toString():!1;if(M(e)||M(t)||O(e)||O(t)||Ir(t)||C(t)||A(t))return!1;i=ve();for(r in e)if("$"!==r.charAt(0)&&!k(e[r])){if(!B(e[r],t[r]))return!1;i[r]=!0}for(r in t)if(!(r in i)&&"$"!==r.charAt(0)&&b(t[r])&&!k(t[r]))return!1;return!0}if(!Ir(t))return!1;if((n=e.length)==t.length){for(r=0;n>r;r++)if(!B(e[r],t[r]))return!1;return!0}}return!1}function H(e,t,n){return e.concat(Ar.call(t,n))}function L(e,t){return Ar.call(e,t||0)}function z(e,t){var n=arguments.length>2?L(arguments,2):[];return!k(t)||t instanceof RegExp?t:n.length?function(){return arguments.length?t.apply(e,H(n,arguments,0)):t.apply(e,n)}:function(){return arguments.length?t.apply(e,arguments):t.call(e)}}function W(e,r){var i=r;return"string"==typeof e&&"$"===e.charAt(0)&&"$"===e.charAt(1)?i=n:O(r)?i="$WINDOW":r&&t===r?i="$DOCUMENT":M(r)&&(i="$SCOPE"),i}function G(e,t){return"undefined"==typeof e?n:(E(t)||(t=t?2:null),JSON.stringify(e,W,t))}function Y(e){return S(e)?JSON.parse(e):e}function J(e,t){var n=Date.parse("Jan 01, 1970 00:00:00 "+e)/6e4;return isNaN(n)?t:n}function K(e,t){return e=new Date(e.getTime()),e.setMinutes(e.getMinutes()+t),e}function Z(e,t,n){n=n?-1:1;var r=J(t,e.getTimezoneOffset());return K(e,n*(r-e.getTimezoneOffset()))}function X(e){e=Er(e).clone();try{e.empty()}catch(t){}var n=Er("
            ").append(e).html();try{return e[0].nodeType===Gr?gr(n):n.match(/^(<[^>]+>)/)[1].replace(/^<([\w\-]+)/,function(e,t){return"<"+gr(t)})}catch(t){return gr(n)}}function Q(e){try{return decodeURIComponent(e)}catch(t){}}function ee(e){var t={};return o((e||"").split("&"),function(e){var n,r,i;e&&(r=e=e.replace(/\+/g,"%20"),n=e.indexOf("="),-1!==n&&(r=e.substring(0,n),i=e.substring(n+1)),r=Q(r),b(r)&&(i=b(i)?Q(i):!0,yr.call(t,r)?Ir(t[r])?t[r].push(i):t[r]=[t[r],i]:t[r]=i))}),t}function te(e){var t=[];return o(e,function(e,n){Ir(e)?o(e,function(e){t.push(re(n,!0)+(e===!0?"":"="+re(e,!0)))}):t.push(re(n,!0)+(e===!0?"":"="+re(e,!0)))}),t.length?t.join("&"):""}function ne(e){return re(e,!0).replace(/%26/gi,"&").replace(/%3D/gi,"=").replace(/%2B/gi,"+")}function re(e,t){return encodeURIComponent(e).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%3B/gi,";").replace(/%20/g,t?"%20":"+")}function ie(e,t){var n,r,i=Br.length;for(r=0;i>r;++r)if(n=Br[r]+t,S(n=e.getAttribute(n)))return n;return null}function oe(e,t){var n,r,i={};o(Br,function(t){var i=t+"app";!n&&e.hasAttribute&&e.hasAttribute(i)&&(n=e,r=e.getAttribute(i))}),o(Br,function(t){var i,o=t+"app";!n&&(i=e.querySelector("["+o.replace(":","\\:")+"]"))&&(n=i,r=i.getAttribute(o))}),n&&(i.strictDi=null!==ie(n,"strict-di"),t(n,r?[r]:[],i))}function ae(n,r,i){w(i)||(i={});var a={strictDi:!1};i=f(a,i);var s=function(){if(n=Er(n),n.injector()){var e=n[0]===t?"document":X(n);throw Vr("btstrpd","App Already Bootstrapped with this Element '{0}'",e.replace(//,">"))}r=r||[],r.unshift(["$provide",function(e){e.value("$rootElement",n)}]),i.debugInfoEnabled&&r.push(["$compileProvider",function(e){e.debugInfoEnabled(!0)}]),r.unshift("ng");var o=Xe(r,i.strictDi);return o.invoke(["$rootScope","$rootElement","$compile","$injector",function(e,t,n,r){e.$apply(function(){t.data("$injector",r),n(t)(e)})}]),o},u=/^NG_ENABLE_DEBUG_INFO!/,c=/^NG_DEFER_BOOTSTRAP!/;return e&&u.test(e.name)&&(i.debugInfoEnabled=!0,e.name=e.name.replace(u,"")),e&&!c.test(e.name)?s():(e.name=e.name.replace(c,""),jr.resumeBootstrap=function(e){return o(e,function(e){r.push(e)}),s()},void(k(jr.resumeDeferredBootstrap)&&jr.resumeDeferredBootstrap()))}function se(){e.name="NG_ENABLE_DEBUG_INFO!"+e.name,e.location.reload()}function ue(e){var t=jr.element(e).injector();if(!t)throw Vr("test","no injector found for element argument to getTestability");return t.get("$$testability")}function ce(e,t){return t=t||"_",e.replace(Hr,function(e,n){return(n?t:"")+e.toLowerCase()})}function le(){var t;if(!Lr){var r=Ur();Cr=y(r)?e.jQuery:r?e[r]:n,Cr&&Cr.fn.on?(Er=Cr,f(Cr.fn,{scope:fi.scope,isolateScope:fi.isolateScope,controller:fi.controller,injector:fi.injector,inheritedData:fi.inheritedData}),t=Cr.cleanData,Cr.cleanData=function(e){var n;if(Dr)Dr=!1;else for(var r,i=0;null!=(r=e[i]);i++)n=Cr._data(r,"events"),n&&n.$destroy&&Cr(r).triggerHandler("$destroy");t(e)}):Er=Oe,jr.element=Er,Lr=!0}}function fe(e,t,n){if(!e)throw Vr("areq","Argument '{0}' is {1}",t||"?",n||"required");return e}function he(e,t,n){return n&&Ir(e)&&(e=e[e.length-1]),fe(k(e),t,"not a function, got "+(e&&"object"==typeof e?e.constructor.name||"Object":typeof e)),e}function pe(e,t){if("hasOwnProperty"===e)throw Vr("badname","hasOwnProperty is not a valid {0} name",t)}function de(e,t,n){if(!t)return e;for(var r,i=t.split("."),o=e,a=i.length,s=0;a>s;s++)r=i[s],e&&(e=(o=e)[r]);return!n&&k(e)?z(o,e):e}function $e(e){for(var t,n=e[0],r=e[e.length-1],i=1;n!==r&&(n=n.nextSibling);i++)(t||e[i]!==n)&&(t||(t=Er(Ar.call(e,0,i))),t.push(n));return t||e}function ve(){return Object.create(null)}function me(e){function t(e,t,n){return e[t]||(e[t]=n())}var n=r("$injector"),i=r("ng"),o=t(e,"angular",Object);return o.$$minErr=o.$$minErr||r,t(o,"module",function(){var e={};return function(r,o,a){var s=function(e,t){if("hasOwnProperty"===e)throw i("badname","hasOwnProperty is not a valid {0} name",t)};return s(r,"module"),o&&e.hasOwnProperty(r)&&(e[r]=null),t(e,r,function(){function e(e,t,n,r){return r||(r=i),function(){return r[n||"push"]([e,t,arguments]),l}}function t(e,t){return function(n,o){return o&&k(o)&&(o.$$moduleName=r),i.push([e,t,arguments]),l}}if(!o)throw n("nomod","Module '{0}' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.",r);var i=[],s=[],u=[],c=e("$injector","invoke","push",s),l={_invokeQueue:i,_configBlocks:s,_runBlocks:u,requires:o,name:r,provider:t("$provide","provider"),factory:t("$provide","factory"),service:t("$provide","service"),value:e("$provide","value"),constant:e("$provide","constant","unshift"),decorator:t("$provide","decorator"),animation:t("$animateProvider","register"),filter:t("$filterProvider","register"),controller:t("$controllerProvider","register"),directive:t("$compileProvider","directive"),config:c,run:function(e){return u.push(e),this}};return a&&c(a),l})}})}function ge(e){var t=[];return JSON.stringify(e,function(e,n){if(n=W(e,n),w(n)){if(t.indexOf(n)>=0)return"...";t.push(n)}return n})}function ye(e){return"function"==typeof e?e.toString().replace(/ \{[\s\S]*$/,""):y(e)?"undefined":"string"!=typeof e?ge(e):e}function be(t){f(t,{bootstrap:ae,copy:F,extend:f,merge:h,equals:B,element:Er,forEach:o,injector:Xe,noop:$,bind:z,toJson:G,fromJson:Y,identity:v,isUndefined:y,isDefined:b,isString:S,isFunction:k,isObject:w,isNumber:E,isElement:I,isArray:Ir,version:Zr,isDate:C,lowercase:gr,uppercase:br,callbacks:{counter:0},getTestability:ue,$$minErr:r,$$csp:Fr,reloadWithDebugInfo:se}),(kr=me(e))("ng",["ngLocale"],["$provide",function(e){e.provider({$$sanitizeUri:$n}),e.provider("$compile",ut).directive({a:fo,input:Mo,textarea:Mo,form:mo,script:wa,select:Ea,style:ka,option:Ca,ngBind:Vo,ngBindHtml:Po,ngBindTemplate:jo,ngClass:Io,ngClassEven:_o,ngClassOdd:Ro,ngCloak:qo,ngController:Fo,ngForm:go,ngHide:$a,ngIf:Ho,ngInclude:Lo,ngInit:Wo,ngNonBindable:aa,ngPluralize:la,ngRepeat:fa,ngShow:da,ngStyle:va,ngSwitch:ma,ngSwitchWhen:ga,ngSwitchDefault:ya,ngOptions:ca,ngTransclude:ba,ngModel:ra,ngList:Go,ngChange:Do,pattern:Oa,ngPattern:Oa,required:Aa,ngRequired:Aa,minlength:Ta,ngMinlength:Ta,maxlength:Ma,ngMaxlength:Ma,ngValue:No,ngModelOptions:oa}).directive({ngInclude:zo}).directive(ho).directive(Uo),e.provider({$anchorScroll:Qe,$animate:ki,$animateCss:Ai,$$animateQueue:Ci,$$AnimateRunner:Ei,$browser:ot,$cacheFactory:at,$controller:pt,$document:dt,$exceptionHandler:$t,$filter:Mn,$$forceReflow:Vi,$interpolate:Mt,$interval:Tt,$http:Ct,$httpParamSerializer:mt,$httpParamSerializerJQLike:gt,$httpBackend:At,$location:Lt,$log:zt,$parse:cn,$rootScope:dn,$q:ln,$$q:fn,$sce:yn,$sceDelegate:gn,$sniffer:bn,$templateCache:st,$templateRequest:wn,$$testability:xn,$timeout:Sn,$window:kn,$$rAF:pn,$$jqLite:Ge,$$HashMap:$i,$$cookieReader:On})}])}function we(){return++Qr}function xe(e){return e.replace(ni,function(e,t,n,r){return r?n.toUpperCase():n}).replace(ri,"Moz$1")}function Se(e){return!si.test(e)}function Ee(e){var t=e.nodeType;return t===zr||!t||t===Jr}function Ce(e){for(var t in Xr[e.ng339])return!0;return!1}function ke(e,t){var n,r,i,a,s=t.createDocumentFragment(),u=[];if(Se(e))u.push(t.createTextNode(e));else{for(n=n||s.appendChild(t.createElement("div")),r=(ui.exec(e)||["",""])[1].toLowerCase(),i=li[r]||li._default,n.innerHTML=i[1]+e.replace(ci,"<$1>")+i[2],a=i[0];a--;)n=n.lastChild;u=H(u,n.childNodes),n=s.firstChild,n.textContent=""}return s.textContent="",s.innerHTML="",o(u,function(e){s.appendChild(e)}),s}function Ae(e,n){n=n||t;var r;return(r=ai.exec(e))?[n.createElement(r[1])]:(r=ke(e,n))?r.childNodes:[]}function Oe(e){if(e instanceof Oe)return e;var t;if(S(e)&&(e=_r(e),t=!0),!(this instanceof Oe)){if(t&&"<"!=e.charAt(0))throw oi("nosel","Looking up elements via selectors is not supported by jqLite! See: http://docs.angularjs.org/api/angular.element");return new Oe(e)}t?_e(this,Ae(e)):_e(this,e)}function Me(e){return e.cloneNode(!0)}function Te(e,t){if(t||Ve(e),e.querySelectorAll)for(var n=e.querySelectorAll("*"),r=0,i=n.length;i>r;r++)Ve(n[r])}function Ne(e,t,n,r){if(b(r))throw oi("offargs","jqLite#off() does not support the `selector` argument");var i=je(e),a=i&&i.events,s=i&&i.handle;if(s)if(t)o(t.split(" "),function(t){if(b(n)){var r=a[t];if(q(r||[],n),r&&r.length>0)return}ti(e,t,s),delete a[t]});else for(t in a)"$destroy"!==t&&ti(e,t,s),delete a[t]}function Ve(e,t){var r=e.ng339,i=r&&Xr[r];if(i){if(t)return void delete i.data[t];i.handle&&(i.events.$destroy&&i.handle({},"$destroy"),Ne(e)),delete Xr[r],e.ng339=n}}function je(e,t){var r=e.ng339,i=r&&Xr[r];return t&&!i&&(e.ng339=r=we(),i=Xr[r]={events:{},data:{},handle:n}),i}function Pe(e,t,n){if(Ee(e)){var r=b(n),i=!r&&t&&!w(t),o=!t,a=je(e,!i),s=a&&a.data;if(r)s[t]=n;else{if(o)return s;if(i)return s&&s[t];f(s,t)}}}function De(e,t){return e.getAttribute?(" "+(e.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ").indexOf(" "+t+" ")>-1:!1}function Ie(e,t){t&&e.setAttribute&&o(t.split(" "),function(t){e.setAttribute("class",_r((" "+(e.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ").replace(" "+_r(t)+" "," ")))})}function Re(e,t){if(t&&e.setAttribute){var n=(" "+(e.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ");o(t.split(" "),function(e){e=_r(e),-1===n.indexOf(" "+e+" ")&&(n+=e+" ")}),e.setAttribute("class",_r(n))}}function _e(e,t){if(t)if(t.nodeType)e[e.length++]=t;else{var n=t.length;if("number"==typeof n&&t.window!==t){if(n)for(var r=0;n>r;r++)e[e.length++]=t[r]}else e[e.length++]=t}}function qe(e,t){return Fe(e,"$"+(t||"ngController")+"Controller")}function Fe(e,t,n){e.nodeType==Jr&&(e=e.documentElement);for(var r=Ir(t)?t:[t];e;){for(var i=0,o=r.length;o>i;i++)if(b(n=Er.data(e,r[i])))return n;e=e.parentNode||e.nodeType===Kr&&e.host}}function Ue(e){for(Te(e,!0);e.firstChild;)e.removeChild(e.firstChild)}function Be(e,t){t||Te(e);var n=e.parentNode;n&&n.removeChild(e)}function He(t,n){n=n||e,"complete"===n.document.readyState?n.setTimeout(t):Er(n).on("load",t)}function Le(e,t){var n=hi[t.toLowerCase()];return n&&pi[_(e)]&&n}function ze(e){return di[e]}function We(e,t){var n=function(n,r){n.isDefaultPrevented=function(){return n.defaultPrevented};var i=t[r||n.type],o=i?i.length:0;if(o){if(y(n.immediatePropagationStopped)){var a=n.stopImmediatePropagation;n.stopImmediatePropagation=function(){n.immediatePropagationStopped=!0,n.stopPropagation&&n.stopPropagation(),a&&a.call(n)}}n.isImmediatePropagationStopped=function(){return n.immediatePropagationStopped===!0},o>1&&(i=U(i));for(var s=0;o>s;s++)n.isImmediatePropagationStopped()||i[s].call(e,n)}};return n.elem=e,n}function Ge(){this.$get=function(){return f(Oe,{hasClass:function(e,t){return e.attr&&(e=e[0]),De(e,t)},addClass:function(e,t){return e.attr&&(e=e[0]),Re(e,t)},removeClass:function(e,t){return e.attr&&(e=e[0]),Ie(e,t)}})}}function Ye(e,t){var n=e&&e.$$hashKey;if(n)return"function"==typeof n&&(n=e.$$hashKey()),n;var r=typeof e;return n="function"==r||"object"==r&&null!==e?e.$$hashKey=r+":"+(t||u)():r+":"+e}function Je(e,t){if(t){var n=0;this.nextUid=function(){return++n}}o(e,this.put,this)}function Ke(e){var t=e.toString().replace(yi,""),n=t.match(vi);return n?"function("+(n[1]||"").replace(/[\s\r\n]+/," ")+")":"fn"}function Ze(e,t,n){var r,i,a,s;if("function"==typeof e){if(!(r=e.$inject)){if(r=[],e.length){if(t)throw S(n)&&n||(n=e.name||Ke(e)),bi("strictdi","{0} is not using explicit annotation and cannot be invoked in strict mode",n);i=e.toString().replace(yi,""),a=i.match(vi),o(a[1].split(mi),function(e){e.replace(gi,function(e,t,n){r.push(n)})})}e.$inject=r}}else Ir(e)?(s=e.length-1,he(e[s],"fn"),r=e.slice(0,s)):he(e,"fn",!0);return r}function Xe(e,t){function r(e){return function(t,n){return w(t)?void o(t,s(e)):e(t,n)}}function i(e,t){if(pe(e,"service"),(k(t)||Ir(t))&&(t=E.instantiate(t)),!t.$get)throw bi("pget","Provider '{0}' must define $get factory method.",e);return x[e+v]=t}function a(e,t){return function(){var n=A.invoke(t,this);if(y(n))throw bi("undef","Provider '{0}' must return a value from $get factory method.",e);return n}}function u(e,t,n){return i(e,{$get:n!==!1?a(e,t):t})}function c(e,t){return u(e,["$injector",function(e){return e.instantiate(t)}])}function l(e,t){return u(e,m(t),!1)}function f(e,t){pe(e,"constant"),x[e]=t,C[e]=t}function h(e,t){var n=E.get(e+v),r=n.$get;n.$get=function(){var e=A.invoke(r,n);return A.invoke(t,null,{$delegate:e})}}function p(e){fe(y(e)||Ir(e),"modulesToLoad","not an array");var t,n=[];return o(e,function(e){function r(e){var t,n;for(t=0,n=e.length;n>t;t++){var r=e[t],i=E.get(r[0]);i[r[1]].apply(i,r[2])}}if(!b.get(e)){b.put(e,!0);try{S(e)?(t=kr(e),n=n.concat(p(t.requires)).concat(t._runBlocks),r(t._invokeQueue),r(t._configBlocks)):k(e)?n.push(E.invoke(e)):Ir(e)?n.push(E.invoke(e)):he(e,"module")}catch(i){throw Ir(e)&&(e=e[e.length-1]),i.message&&i.stack&&-1==i.stack.indexOf(i.message)&&(i=i.message+"\n"+i.stack),bi("modulerr","Failed to instantiate module {0} due to:\n{1}",e,i.stack||i.message||i)}}}),n}function d(e,n){function r(t,r){if(e.hasOwnProperty(t)){if(e[t]===$)throw bi("cdep","Circular dependency found: {0}",t+" <- "+g.join(" <- "));return e[t]}try{return g.unshift(t),e[t]=$,e[t]=n(t,r)}catch(i){throw e[t]===$&&delete e[t],i}finally{g.shift()}}function i(e,n,i,o){"string"==typeof i&&(o=i,i=null);var a,s,u,c=[],l=Xe.$$annotate(e,t,o);for(s=0,a=l.length;a>s;s++){if(u=l[s],"string"!=typeof u)throw bi("itkn","Incorrect injection token! Expected service name as string, got {0}",u);c.push(i&&i.hasOwnProperty(u)?i[u]:r(u,o))}return Ir(e)&&(e=e[a]),e.apply(n,c)}function o(e,t,n){var r=Object.create((Ir(e)?e[e.length-1]:e).prototype||null),o=i(e,r,t,n);return w(o)||k(o)?o:r}return{invoke:i,instantiate:o,get:r,annotate:Xe.$$annotate,has:function(t){return x.hasOwnProperty(t+v)||e.hasOwnProperty(t)}}}t=t===!0;var $={},v="Provider",g=[],b=new Je([],!0),x={$provide:{provider:r(i),factory:r(u),service:r(c),value:r(l),constant:r(f),decorator:h}},E=x.$injector=d(x,function(e,t){throw jr.isString(t)&&g.push(t),bi("unpr","Unknown provider: {0}",g.join(" <- "))}),C={},A=C.$injector=d(C,function(e,t){var r=E.get(e+v,t);return A.invoke(r.$get,r,n,e)});return o(p(e),function(e){e&&A.invoke(e)}),A}function Qe(){var e=!0;this.disableAutoScrolling=function(){e=!1},this.$get=["$window","$location","$rootScope",function(t,n,r){function i(e){var t=null;return Array.prototype.some.call(e,function(e){return"a"===_(e)?(t=e,!0):void 0}),t}function o(){var e=s.yOffset;if(k(e))e=e();else if(I(e)){var n=e[0],r=t.getComputedStyle(n);e="fixed"!==r.position?0:n.getBoundingClientRect().bottom}else E(e)||(e=0);return e}function a(e){if(e){e.scrollIntoView();var n=o();if(n){var r=e.getBoundingClientRect().top;t.scrollBy(0,r-n)}}else t.scrollTo(0,0)}function s(e){e=S(e)?e:n.hash();var t;e?(t=u.getElementById(e))?a(t):(t=i(u.getElementsByName(e)))?a(t):"top"===e&&a(null):a(null)}var u=t.document;return e&&r.$watch(function(){return n.hash()},function(e,t){e===t&&""===e||He(function(){r.$evalAsync(s)})}),s}]}function et(e,t){return e||t?e?t?(Ir(e)&&(e=e.join(" ")),Ir(t)&&(t=t.join(" ")),e+" "+t):e:t:""}function tt(e){for(var t=0;tc&&this.remove(p.key),t}},get:function(e){if(c").parent()[0])});var a=P(e,t,e,n,r,i);V.$$addScopeClass(e);var s=null;return function(t,n,r){fe(t,"scope"),r=r||{};var i=r.parentBoundTranscludeFn,o=r.transcludeControllers,u=r.futureParentElement;i&&i.$$boundTransclude&&(i=i.$$boundTransclude),s||(s=j(u));var c;if(c="html"!==s?Er(Q(s,Er("
            ").append(e).html())):n?fi.clone.call(e):e,o)for(var l in o)c.data("$"+l+"Controller",o[l].instance);return V.$$addScopeInfo(c,t),n&&n(c,t),a&&a(t,c,c,i),c}}function j(e){var t=e&&e[0];return t&&"foreignobject"!==_(t)&&t.toString().match(/SVG/)?"svg":"html"}function P(e,t,r,i,o,a){function s(e,r,i,o){var a,s,u,c,l,f,h,p,v;if(d){var m=r.length;for(v=new Array(m),l=0;l<$.length;l+=3)h=$[l],v[h]=r[h]}else v=r;for(l=0,f=$.length;f>l;)if(u=v[$[l++]],a=$[l++],s=$[l++],a){if(a.scope){c=e.$new(),V.$$addScopeInfo(Er(u),c);var g=a.$$destroyBindings;g&&(a.$$destroyBindings=null,c.$on("$destroyed",g))}else c=e;p=a.transcludeOnThisElement?D(e,a.transclude,o):!a.templateOnThisElement&&o?o:!o&&t?D(e,t):null,a(s,c,u,i,p,a)}else s&&s(e,u.childNodes,n,o)}for(var u,c,l,f,h,p,d,$=[],v=0;vg;g++){var b=!1,x=!1;c=m[g],l=c.name,$=_r(c.value),d=ct(l),(v=he.test(d))&&(l=l.replace(Mi,"").substr(8).replace(/_(.)/g,function(e,t){return t.toUpperCase()}));var E=d.replace(/(Start|End)$/,"");W(E)&&d===E+"Start"&&(b=l,x=l.substr(0,l.length-5)+"end",l=l.substr(0,l.length-6)),f=ct(l.toLowerCase()),u[f]=l,!v&&n.hasOwnProperty(f)||(n[f]=$,Le(e,f)&&(n[f]=!0)),te(e,t,$,f,v),z(t,f,"A",r,i,b,x)}if(a=e.className,w(a)&&(a=a.animVal),S(a)&&""!==a)for(;o=p.exec(a);)f=ct(o[2]),z(t,f,"C",r,i)&&(n[f]=_r(o[3])),a=a.substr(o.index+o[0].length);break;case Gr:if(11===Sr)for(;e.parentNode&&e.nextSibling&&e.nextSibling.nodeType===Gr;)e.nodeValue=e.nodeValue+e.nextSibling.nodeValue,e.parentNode.removeChild(e.nextSibling);Z(t,e.nodeValue);break;case Yr:try{o=h.exec(e.nodeValue),o&&(f=ct(o[1]),z(t,f,"M",r,i)&&(n[f]=_r(o[2])))}catch(C){}}return t.sort(J),t}function R(e,t,n){var r=[],i=0;if(t&&e.hasAttribute&&e.hasAttribute(t)){do{if(!e)throw Oi("uterdir","Unterminated attribute, found '{0}' but no matching '{1}' found.",t,n);e.nodeType==zr&&(e.hasAttribute(t)&&i++,e.hasAttribute(n)&&i--),r.push(e),e=e.nextSibling}while(i>0)}else r.push(e);return Er(r)}function F(e,t,n){return function(r,i,o,a,s){return i=R(i[0],t,n),e(r,i,o,a,s)}}function U(e,r,o,a,s,c,l,f,h){function p(e,t,n,r){e&&(n&&(e=F(e,n,r)),e.require=m.require,e.directiveName=g,(T===m||m.$$isolateScope)&&(e=re(e,{isolateScope:!0})),l.push(e)),t&&(n&&(t=F(t,n,r)),t.require=m.require,t.directiveName=g,(T===m||m.$$isolateScope)&&(t=re(t,{isolateScope:!0})),f.push(t))}function d(e,t,n,r){var i;if(S(t)){var o=t.match(x),a=t.substring(o[0].length),s=o[1]||o[3],u="?"===o[2];if("^^"===s?n=n.parent():(i=r&&r[a],i=i&&i.instance),!i){var c="$"+a+"Controller";i=s?n.inheritedData(c):n.data(c)}if(!i&&!u)throw Oi("ctreq","Controller '{0}', required by directive '{1}', can't be found!",a,e)}else if(Ir(t)){i=[];for(var l=0,f=t.length;f>l;l++)i[l]=d(e,t[l],n,r)}return i||null}function $(e,t,n,r,i,o){var a=ve();for(var s in r){var c=r[s],l={$scope:c===T||c.$$isolateScope?i:o,$element:e,$attrs:t,$transclude:n},f=c.controller;"@"==f&&(f=t[c.name]);var h=u(f,l,!0,c.controllerAs);a[c.name]=h,_||e.data("$"+c.name+"Controller",h.instance)}return a}function v(e,t,i,a,s,u){function c(e,t,r){var i;return M(e)||(r=t,t=e,e=n),_&&(i=y),r||(r=_?w.parent():w),s(e,t,i,r,j)}var h,p,v,m,g,y,b,w,x;if(r===i?(x=o,w=o.$$element):(w=Er(i),x=new ae(w,o)),T&&(g=t.$new(!0)),s&&(b=c,b.$$boundTransclude=s),O&&(y=$(w,x,b,O,g,t)),T&&(V.$$addScopeInfo(w,g,!0,!(N&&(N===T||N===T.$$originalDirective))),V.$$addScopeClass(w,!0),g.$$isolateBindings=T.$$isolateBindings,oe(t,x,g,g.$$isolateBindings,T,g)),y){var S,E,C=T||A;C&&y[C.name]&&(S=C.$$bindings.bindToController,m=y[C.name],m&&m.identifier&&S&&(E=m,u.$$destroyBindings=oe(t,x,m.instance,S,C)));for(h in y){m=y[h];var k=m();k!==m.instance&&(m.instance=k,w.data("$"+h+"Controller",k),m===E&&(u.$$destroyBindings(),u.$$destroyBindings=oe(t,x,k,S,C)))}}for(h=0,p=l.length;p>h;h++)v=l[h],ie(v,v.isolateScope?g:t,w,x,v.require&&d(v.directiveName,v.require,w,y),b);var j=t;for(T&&(T.template||null===T.templateUrl)&&(j=g),e&&e(j,i.childNodes,n,s),h=f.length-1;h>=0;h--)v=f[h],ie(v,v.isolateScope?g:t,w,x,v.require&&d(v.directiveName,v.require,w,y),b)}h=h||{};for(var m,g,y,b,E,C=-Number.MAX_VALUE,A=h.newScopeDirective,O=h.controllerDirectives,T=h.newIsolateScopeDirective,N=h.templateDirective,j=h.nonTlbTranscludeDirective,P=!1,D=!1,_=h.hasElementTranscludeDirective,q=o.$$element=Er(r),U=c,B=a,z=0,W=e.length;W>z;z++){m=e[z];var J=m.$$start,Z=m.$$end;if(J&&(q=R(r,J,Z)),y=n,C>m.priority)break;if((E=m.scope)&&(m.templateUrl||(w(E)?(K("new/isolated scope",T||A,m,q),T=m):K("new/isolated scope",T,m,q)),A=A||m),g=m.name,!m.templateUrl&&m.controller&&(E=m.controller,O=O||ve(),K("'"+g+"' controller",O[g],m,q),O[g]=m), (E=m.transclude)&&(P=!0,m.$$tlb||(K("transclusion",j,m,q),j=m),"element"==E?(_=!0,C=m.priority,y=q,q=o.$$element=Er(t.createComment(" "+g+": "+o[g]+" ")),r=q[0],ne(s,L(y),r),B=V(y,a,C,U&&U.name,{nonTlbTranscludeDirective:j})):(y=Er(Me(r)).contents(),q.empty(),B=V(y,a))),m.template)if(D=!0,K("template",N,m,q),N=m,E=k(m.template)?m.template(q,o):m.template,E=le(E),m.replace){if(U=m,y=Se(E)?[]:ft(Q(m.templateNamespace,_r(E))),r=y[0],1!=y.length||r.nodeType!==zr)throw Oi("tplrt","Template for directive '{0}' must have exactly one root element. {1}",g,"");ne(s,q,r);var ee={$attr:{}},te=I(r,[],ee),se=e.splice(z+1,e.length-(z+1));T&&H(te),e=e.concat(te).concat(se),G(o,ee),W=e.length}else q.html(E);if(m.templateUrl)D=!0,K("template",N,m,q),N=m,m.replace&&(U=m),v=Y(e.splice(z,e.length-z),q,o,s,P&&B,l,f,{controllerDirectives:O,newScopeDirective:A!==m&&A,newIsolateScopeDirective:T,templateDirective:N,nonTlbTranscludeDirective:j}),W=e.length;else if(m.compile)try{b=m.compile(q,o,B),k(b)?p(null,b,J,Z):b&&p(b.pre,b.post,J,Z)}catch(ue){i(ue,X(q))}m.terminal&&(v.terminal=!0,C=Math.max(C,m.priority))}return v.scope=A&&A.scope===!0,v.transcludeOnThisElement=P,v.templateOnThisElement=D,v.transclude=B,h.hasElementTranscludeDirective=_,v}function H(e){for(var t=0,n=e.length;n>t;t++)e[t]=d(e[t],{$$isolateScope:!0})}function z(t,n,r,o,a,s,u){if(n===a)return null;var f=null;if(c.hasOwnProperty(n))for(var h,p=e.get(n+l),$=0,v=p.length;v>$;$++)try{h=p[$],(y(o)||o>h.priority)&&-1!=h.restrict.indexOf(r)&&(s&&(h=d(h,{$$start:s,$$end:u})),t.push(h),f=h)}catch(m){i(m)}return f}function W(t){if(c.hasOwnProperty(t))for(var n,r=e.get(t+l),i=0,o=r.length;o>i;i++)if(n=r[i],n.multiElement)return!0;return!1}function G(e,t){var n=t.$attr,r=e.$attr,i=e.$$element;o(e,function(r,i){"$"!=i.charAt(0)&&(t[i]&&t[i]!==r&&(r+=("style"===i?";":" ")+t[i]),e.$set(i,r,!0,n[i]))}),o(t,function(t,o){"class"==o?(N(i,t),e["class"]=(e["class"]?e["class"]+" ":"")+t):"style"==o?(i.attr("style",i.attr("style")+";"+t),e.style=(e.style?e.style+";":"")+t):"$"==o.charAt(0)||e.hasOwnProperty(o)||(e[o]=t,r[o]=n[o])})}function Y(e,t,n,r,i,s,u,c){var l,f,h=[],p=t[0],$=e.shift(),v=d($,{templateUrl:null,transclude:null,replace:null,$$originalDirective:$}),m=k($.templateUrl)?$.templateUrl(t,n):$.templateUrl,g=$.templateNamespace;return t.empty(),a(m).then(function(a){var d,y,b,x;if(a=le(a),$.replace){if(b=Se(a)?[]:ft(Q(g,_r(a))),d=b[0],1!=b.length||d.nodeType!==zr)throw Oi("tplrt","Template for directive '{0}' must have exactly one root element. {1}",$.name,m);y={$attr:{}},ne(r,t,d);var S=I(d,[],y);w($.scope)&&H(S),e=S.concat(e),G(n,y)}else d=p,t.html(a);for(e.unshift(v),l=U(e,d,n,i,t,$,s,u,c),o(r,function(e,n){e==d&&(r[n]=t[0])}),f=P(t[0].childNodes,i);h.length;){var E=h.shift(),C=h.shift(),k=h.shift(),A=h.shift(),O=t[0];if(!E.$$destroyed){if(C!==p){var M=C.className;c.hasElementTranscludeDirective&&$.replace||(O=Me(d)),ne(k,Er(C),O),N(Er(O),M)}x=l.transcludeOnThisElement?D(E,l.transclude,A):A,l(f,E,O,r,x,l)}}h=null}),function(e,t,n,r,i){var o=i;t.$$destroyed||(h?h.push(t,n,r,o):(l.transcludeOnThisElement&&(o=D(t,l.transclude,i)),l(f,t,n,r,o,l)))}}function J(e,t){var n=t.priority-e.priority;return 0!==n?n:e.name!==t.name?e.name"+n+"",r.childNodes[0].childNodes;default:return n}}function ee(e,t){if("srcdoc"==t)return A.HTML;var n=_(e);return"xlinkHref"==t||"form"==n&&"action"==t||"img"!=n&&("src"==t||"ngSrc"==t)?A.RESOURCE_URL:void 0}function te(e,t,n,i,o){var a=ee(e,i);o=g[i]||o;var s=r(n,!0,a,o);if(s){if("multiple"===i&&"select"===_(e))throw Oi("selmulti","Binding to the 'multiple' attribute is not supported. Element: {0}",X(e));t.push({priority:100,compile:function(){return{pre:function(e,t,u){var c=u.$$observers||(u.$$observers={});if(E.test(i))throw Oi("nodomevents","Interpolations for HTML DOM event attributes are disallowed. Please use the ng- versions (such as ng-click instead of onclick) instead.");var l=u[i];l!==n&&(s=l&&r(l,!0,a,o),n=l),s&&(u[i]=s(e),(c[i]||(c[i]=[])).$$inter=!0,(u.$$observers&&u.$$observers[i].$$scope||e).$watch(s,function(e,t){"class"===i&&e!=t?u.$updateClass(e,t):u.$set(i,e)}))}}}})}}function ne(e,n,r){var i,o,a=n[0],s=n.length,u=a.parentNode;if(e)for(i=0,o=e.length;o>i;i++)if(e[i]==a){e[i++]=r;for(var c=i,l=c+s-1,f=e.length;f>c;c++,l++)f>l?e[c]=e[l]:delete e[c];e.length-=s-1,e.context===a&&(e.context=r);break}u&&u.replaceChild(r,a);var h=t.createDocumentFragment();h.appendChild(a),Er.hasData(a)&&(Er(r).data(Er(a).data()),Cr?(Dr=!0,Cr.cleanData([a])):delete Er.cache[a[Er.expando]]);for(var p=1,d=n.length;d>p;p++){var $=n[p];Er($).remove(),h.appendChild($),delete n[p]}n[0]=r,n.length=1}function re(e,t){return f(function(){return e.apply(null,arguments)},e,t)}function ie(e,t,n,r,o,a){try{e(t,n,r,o,a)}catch(s){i(s,X(n))}}function oe(e,t,n,i,a,u){var c;o(i,function(i,o){var u,l,f,h,p=i.attrName,d=i.optional,v=i.mode;switch(v){case"@":d||yr.call(t,p)||(n[o]=t[p]=void 0),t.$observe(p,function(e){S(e)&&(n[o]=e)}),t.$$observers[p].$$scope=e,S(t[p])&&(n[o]=r(t[p])(e));break;case"=":if(!yr.call(t,p)){if(d)break;t[p]=void 0}if(d&&!t[p])break;l=s(t[p]),h=l.literal?B:function(e,t){return e===t||e!==e&&t!==t},f=l.assign||function(){throw u=n[o]=l(e),Oi("nonassign","Expression '{0}' used with directive '{1}' is non-assignable!",t[p],a.name)},u=n[o]=l(e);var m=function(t){return h(t,n[o])||(h(t,u)?f(e,t=n[o]):n[o]=t),u=t};m.$stateful=!0;var g;g=i.collection?e.$watchCollection(t[p],m):e.$watch(s(t[p],m),null,l.literal),c=c||[],c.push(g);break;case"&":if(l=t.hasOwnProperty(p)?s(t[p]):$,l===$&&d)break;n[o]=function(t){return l(e,t)}}});var l=c?function(){for(var e=0,t=c.length;t>e;++e)c[e]()}:$;return u&&l!==$?(u.$on("$destroy",l),$):l}var ae=function(e,t){if(t){var n,r,i,o=Object.keys(t);for(n=0,r=o.length;r>n;n++)i=o[n],this[i]=t[i]}else this.$attr={};this.$$element=e};ae.prototype={$normalize:ct,$addClass:function(e){e&&e.length>0&&O.addClass(this.$$element,e)},$removeClass:function(e){e&&e.length>0&&O.removeClass(this.$$element,e)},$updateClass:function(e,t){var n=lt(e,t);n&&n.length&&O.addClass(this.$$element,n);var r=lt(t,e);r&&r.length&&O.removeClass(this.$$element,r)},$set:function(e,t,n,r){var a,s=this.$$element[0],u=Le(s,e),c=ze(e),l=e;if(u?(this.$$element.prop(e,t),r=u):c&&(this[c]=t,l=c),this[e]=t,r?this.$attr[e]=r:(r=this.$attr[e],r||(this.$attr[e]=r=ce(e,"-"))),a=_(this.$$element),"a"===a&&"href"===e||"img"===a&&"src"===e)this[e]=t=T(t,"src"===e);else if("img"===a&&"srcset"===e){for(var f="",h=_r(t),p=/(\s+\d+x\s*,|\s+\d+w\s*,|\s+,|,\s+)/,d=/\s/.test(h)?p:/(,)/,$=h.split(d),v=Math.floor($.length/2),m=0;v>m;m++){var g=2*m;f+=T(_r($[g]),!0),f+=" "+_r($[g+1])}var b=_r($[2*m]).split(/\s/);f+=T(_r(b[0]),!0),2===b.length&&(f+=" "+_r(b[1])),this[e]=t=f}n!==!1&&(null===t||y(t)?this.$$element.removeAttr(r):this.$$element.attr(r,t));var w=this.$$observers;w&&o(w[l],function(e){try{e(t)}catch(n){i(n)}})},$observe:function(e,t){var n=this,r=n.$$observers||(n.$$observers=ve()),i=r[e]||(r[e]=[]);return i.push(t),m.$evalAsync(function(){i.$$inter||!n.hasOwnProperty(e)||y(n[e])||t(n[e])}),function(){q(i,t)}}};var se=r.startSymbol(),ue=r.endSymbol(),le="{{"==se||"}}"==ue?v:function(e){return e.replace(/\{\{/g,se).replace(/}}/g,ue)},he=/^ngAttr[A-Z]/;return V.$$addBindingInfo=C?function(e,t){var n=e.data("$binding")||[];Ir(t)?n=n.concat(t):n.push(t),e.data("$binding",n)}:$,V.$$addBindingClass=C?function(e){N(e,"ng-binding")}:$,V.$$addScopeInfo=C?function(e,t,n,r){var i=n?r?"$isolateScopeNoTemplate":"$isolateScope":"$scope";e.data(i,t)}:$,V.$$addScopeClass=C?function(e,t){N(e,t?"ng-isolate-scope":"ng-scope")}:$,V}]}function ct(e){return xe(e.replace(Mi,""))}function lt(e,t){var n="",r=e.split(/\s+/),i=t.split(/\s+/);e:for(var o=0;o0?" ":"")+a}return n}function ft(e){e=Er(e);var t=e.length;if(1>=t)return e;for(;t--;){var n=e[t];n.nodeType===Yr&&Or.call(e,t,1)}return e}function ht(e,t){if(t&&S(t))return t;if(S(e)){var n=Ni.exec(e);if(n)return n[3]}}function pt(){var e={},t=!1;this.register=function(t,n){pe(t,"controller"),w(t)?f(e,t):e[t]=n},this.allowGlobals=function(){t=!0},this.$get=["$injector","$window",function(i,o){function a(e,t,n,i){if(!e||!w(e.$scope))throw r("$controller")("noscp","Cannot export controller '{0}' as '{1}'! No $scope object provided via `locals`.",i,t);e.$scope[t]=n}return function(r,s,u,c){var l,h,p,d;if(u=u===!0,c&&S(c)&&(d=c),S(r)){if(h=r.match(Ni),!h)throw Ti("ctrlfmt","Badly formed controller string '{0}'. Must match `__name__ as __id__` or `__name__`.",r);p=h[1],d=d||h[3],r=e.hasOwnProperty(p)?e[p]:de(s.$scope,p,!0)||(t?de(o,p,!0):n),he(r,p,!0)}if(u){var $=(Ir(r)?r[r.length-1]:r).prototype;l=Object.create($||null),d&&a(s,d,l,p||r.name);var v;return v=f(function(){var e=i.invoke(r,l,s,p);return e!==l&&(w(e)||k(e))&&(l=e,d&&a(s,d,l,p||r.name)),l},{instance:l,identifier:d})}return l=i.instantiate(r,s,p),d&&a(s,d,l,p||r.name),l}}]}function dt(){this.$get=["$window",function(e){return Er(e.document)}]}function $t(){this.$get=["$log",function(e){return function(t,n){e.error.apply(e,arguments)}}]}function vt(e){return w(e)?C(e)?e.toISOString():G(e):e}function mt(){this.$get=function(){return function(e){if(!e)return"";var t=[];return a(e,function(e,n){null===e||y(e)||(Ir(e)?o(e,function(e,r){t.push(re(n)+"="+re(vt(e)))}):t.push(re(n)+"="+re(vt(e))))}),t.join("&")}}}function gt(){this.$get=function(){return function(e){function t(e,r,i){null===e||y(e)||(Ir(e)?o(e,function(e,n){t(e,r+"["+(w(e)?n:"")+"]")}):w(e)&&!C(e)?a(e,function(e,n){t(e,r+(i?"":"[")+n+(i?"":"]"))}):n.push(re(r)+"="+re(vt(e))))}if(!e)return"";var n=[];return t(e,"",!0),n.join("&")}}}function yt(e,t){if(S(e)){var n=e.replace(Ri,"").trim();if(n){var r=t("Content-Type");(r&&0===r.indexOf(ji)||bt(n))&&(e=Y(n))}}return e}function bt(e){var t=e.match(Di);return t&&Ii[t[0]].test(e)}function wt(e){function t(e,t){e&&(r[e]=r[e]?r[e]+", "+t:t)}var n,r=ve();return S(e)?o(e.split("\n"),function(e){n=e.indexOf(":"),t(gr(_r(e.substr(0,n))),_r(e.substr(n+1)))}):w(e)&&o(e,function(e,n){t(gr(n),_r(e))}),r}function xt(e){var t;return function(n){if(t||(t=wt(e)),n){var r=t[gr(n)];return void 0===r&&(r=null),r}return t}}function St(e,t,n,r){return k(r)?r(e,t,n):(o(r,function(r){e=r(e,t,n)}),e)}function Et(e){return e>=200&&300>e}function Ct(){var e=this.defaults={transformResponse:[yt],transformRequest:[function(e){return!w(e)||T(e)||V(e)||N(e)?e:G(e)}],headers:{common:{Accept:"application/json, text/plain, */*"},post:U(Pi),put:U(Pi),patch:U(Pi)},xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",paramSerializer:"$httpParamSerializer"},t=!1;this.useApplyAsync=function(e){return b(e)?(t=!!e,this):t};var i=!0;this.useLegacyPromiseExtensions=function(e){return b(e)?(i=!!e,this):i};var a=this.interceptors=[];this.$get=["$httpBackend","$$cookieReader","$cacheFactory","$rootScope","$q","$injector",function(s,u,c,l,h,p){function d(t){function a(e){var t=f({},e);return e.data?t.data=St(e.data,e.headers,e.status,c.transformResponse):t.data=e.data,Et(e.status)?t:h.reject(t)}function s(e,t){var n,r={};return o(e,function(e,i){k(e)?(n=e(t),null!=n&&(r[i]=n)):r[i]=e}),r}function u(t){var n,r,i,o=e.headers,a=f({},t.headers);o=f({},o.common,o[gr(t.method)]);e:for(n in o){r=gr(n);for(i in a)if(gr(i)===r)continue e;a[n]=o[n]}return s(a,U(t))}if(!jr.isObject(t))throw r("$http")("badreq","Http request configuration must be an object. Received: {0}",t);var c=f({method:"get",transformRequest:e.transformRequest,transformResponse:e.transformResponse,paramSerializer:e.paramSerializer},t);c.headers=u(t),c.method=br(c.method),c.paramSerializer=S(c.paramSerializer)?p.get(c.paramSerializer):c.paramSerializer;var l=function(t){var r=t.headers,i=St(t.data,xt(r),n,t.transformRequest);return y(i)&&o(r,function(e,t){"content-type"===gr(t)&&delete r[t]}),y(t.withCredentials)&&!y(e.withCredentials)&&(t.withCredentials=e.withCredentials),m(t,i).then(a,a)},d=[l,n],$=h.when(c);for(o(E,function(e){(e.request||e.requestError)&&d.unshift(e.request,e.requestError),(e.response||e.responseError)&&d.push(e.response,e.responseError)});d.length;){var v=d.shift(),g=d.shift();$=$.then(v,g)}return i?($.success=function(e){return he(e,"fn"),$.then(function(t){e(t.data,t.status,t.headers,c)}),$},$.error=function(e){return he(e,"fn"),$.then(null,function(t){e(t.data,t.status,t.headers,c)}),$}):($.success=qi("success"),$.error=qi("error")),$}function $(e){o(arguments,function(e){d[e]=function(t,n){return d(f({},n||{},{method:e,url:t}))}})}function v(e){o(arguments,function(e){d[e]=function(t,n,r){return d(f({},r||{},{method:e,url:t,data:n}))}})}function m(r,i){function o(e,n,r,i){function o(){a(n,e,r,i)}p&&(Et(e)?p.put(E,[e,n,wt(r),i]):p.remove(E)),t?l.$applyAsync(o):(o(),l.$$phase||l.$apply())}function a(e,t,n,i){t=t>=-1?t:0,(Et(t)?v.resolve:v.reject)({data:e,status:t,headers:xt(n),config:r,statusText:i})}function c(e){a(e.data,e.status,U(e.headers()),e.statusText)}function f(){var e=d.pendingRequests.indexOf(r);-1!==e&&d.pendingRequests.splice(e,1)}var p,$,v=h.defer(),m=v.promise,S=r.headers,E=g(r.url,r.paramSerializer(r.params));if(d.pendingRequests.push(r),m.then(f,f),!r.cache&&!e.cache||r.cache===!1||"GET"!==r.method&&"JSONP"!==r.method||(p=w(r.cache)?r.cache:w(e.cache)?e.cache:x),p&&($=p.get(E),b($)?P($)?$.then(c,c):Ir($)?a($[1],$[0],U($[2]),$[3]):a($,200,{},"OK"):p.put(E,m)),y($)){var C=Cn(r.url)?u()[r.xsrfCookieName||e.xsrfCookieName]:n;C&&(S[r.xsrfHeaderName||e.xsrfHeaderName]=C),s(r.method,E,i,o,S,r.timeout,r.withCredentials,r.responseType)}return m}function g(e,t){return t.length>0&&(e+=(-1==e.indexOf("?")?"?":"&")+t),e}var x=c("$http");e.paramSerializer=S(e.paramSerializer)?p.get(e.paramSerializer):e.paramSerializer;var E=[];return o(a,function(e){E.unshift(S(e)?p.get(e):p.invoke(e))}),d.pendingRequests=[],$("get","delete","head","jsonp"),v("post","put","patch"),d.defaults=e,d}]}function kt(){return new e.XMLHttpRequest}function At(){this.$get=["$browser","$window","$document",function(e,t,n){return Ot(e,kt,e.defer,t.angular.callbacks,n[0])}]}function Ot(e,t,n,r,i){function a(e,t,n){var o=i.createElement("script"),a=null;return o.type="text/javascript",o.src=e,o.async=!0,a=function(e){ti(o,"load",a),ti(o,"error",a),i.body.removeChild(o),o=null;var s=-1,u="unknown";e&&("load"!==e.type||r[t].called||(e={type:"error"}),u=e.type,s="error"===e.type?404:200),n&&n(s,u)},ei(o,"load",a),ei(o,"error",a),i.body.appendChild(o),a}return function(i,s,u,c,l,f,h,p){function d(){g&&g(),w&&w.abort()}function v(t,r,i,o,a){b(E)&&n.cancel(E),g=w=null,t(r,i,o,a),e.$$completeOutstandingRequest($)}if(e.$$incOutstandingRequestCount(),s=s||e.url(),"jsonp"==gr(i)){var m="_"+(r.counter++).toString(36);r[m]=function(e){r[m].data=e,r[m].called=!0};var g=a(s.replace("JSON_CALLBACK","angular.callbacks."+m),m,function(e,t){v(c,e,r[m].data,"",t),r[m]=$})}else{var w=t();w.open(i,s,!0),o(l,function(e,t){b(e)&&w.setRequestHeader(t,e)}),w.onload=function(){var e=w.statusText||"",t="response"in w?w.response:w.responseText,n=1223===w.status?204:w.status;0===n&&(n=t?200:"file"==En(s).protocol?404:0),v(c,n,t,w.getAllResponseHeaders(),e)};var x=function(){v(c,-1,null,null,"")};if(w.onerror=x,w.onabort=x,h&&(w.withCredentials=!0),p)try{w.responseType=p}catch(S){if("json"!==p)throw S}w.send(y(u)?null:u)}if(f>0)var E=n(d,f);else P(f)&&f.then(d)}}function Mt(){var e="{{",t="}}";this.startSymbol=function(t){return t?(e=t,this):e},this.endSymbol=function(e){return e?(t=e,this):t},this.$get=["$parse","$exceptionHandler","$sce",function(n,r,i){function o(e){return"\\\\\\"+e}function a(n){return n.replace(h,e).replace(p,t)}function s(e){if(null==e)return"";switch(typeof e){case"string":break;case"number":e=""+e;break;default:e=G(e)}return e}function u(o,u,h,p){function d(e){try{return e=O(e),p&&!b(e)?e:s(e)}catch(t){r(Fi.interr(o,t))}}p=!!p;for(var $,v,m,g=0,w=[],x=[],S=o.length,E=[],C=[];S>g;){if(-1==($=o.indexOf(e,g))||-1==(v=o.indexOf(t,$+c))){g!==S&&E.push(a(o.substring(g)));break}g!==$&&E.push(a(o.substring(g,$))),m=o.substring($+c,v),w.push(m),x.push(n(m,d)),g=v+l,C.push(E.length),E.push("")}if(h&&E.length>1&&Fi.throwNoconcat(o),!u||w.length){var A=function(e){for(var t=0,n=w.length;n>t;t++){if(p&&y(e[t]))return;E[C[t]]=e[t]}return E.join("")},O=function(e){return h?i.getTrusted(h,e):i.valueOf(e)};return f(function(e){var t=0,n=w.length,i=new Array(n);try{for(;n>t;t++)i[t]=x[t](e);return A(i)}catch(a){r(Fi.interr(o,a))}},{exp:o,expressions:w,$$watchDelegate:function(e,t){var n;return e.$watchGroup(x,function(r,i){var o=A(r);k(t)&&t.call(this,o,r!==i?n:o,e),n=o})}})}}var c=e.length,l=t.length,h=new RegExp(e.replace(/./g,o),"g"),p=new RegExp(t.replace(/./g,o),"g");return u.startSymbol=function(){return e},u.endSymbol=function(){return t},u}]}function Tt(){this.$get=["$rootScope","$window","$q","$$q",function(e,t,n,r){function i(i,a,s,u){var c=arguments.length>4,l=c?L(arguments,4):[],f=t.setInterval,h=t.clearInterval,p=0,d=b(u)&&!u,$=(d?r:n).defer(),v=$.promise;return s=b(s)?s:0,v.then(null,null,c?function(){i.apply(null,l)}:i),v.$$intervalId=f(function(){$.notify(p++),s>0&&p>=s&&($.resolve(p),h(v.$$intervalId),delete o[v.$$intervalId]),d||e.$apply()},a),o[v.$$intervalId]=$,v}var o={};return i.cancel=function(e){return e&&e.$$intervalId in o?(o[e.$$intervalId].reject("canceled"),t.clearInterval(e.$$intervalId),delete o[e.$$intervalId],!0):!1},i}]}function Nt(e){for(var t=e.split("/"),n=t.length;n--;)t[n]=ne(t[n]);return t.join("/")}function Vt(e,t){var n=En(e);t.$$protocol=n.protocol,t.$$host=n.hostname,t.$$port=p(n.port)||Bi[n.protocol]||null}function jt(e,t){var n="/"!==e.charAt(0);n&&(e="/"+e);var r=En(e);t.$$path=decodeURIComponent(n&&"/"===r.pathname.charAt(0)?r.pathname.substring(1):r.pathname),t.$$search=ee(r.search),t.$$hash=decodeURIComponent(r.hash),t.$$path&&"/"!=t.$$path.charAt(0)&&(t.$$path="/"+t.$$path)}function Pt(e,t){return 0===t.indexOf(e)?t.substr(e.length):void 0}function Dt(e){var t=e.indexOf("#");return-1==t?e:e.substr(0,t)}function It(e){return e.replace(/(#.+)|#$/,"$1")}function Rt(e){return e.substr(0,Dt(e).lastIndexOf("/")+1)}function _t(e){return e.substring(0,e.indexOf("/",e.indexOf("//")+2))}function qt(e,t,n){this.$$html5=!0,n=n||"",Vt(e,this),this.$$parse=function(e){var n=Pt(t,e);if(!S(n))throw Hi("ipthprfx",'Invalid url "{0}", missing path prefix "{1}".',e,t);jt(n,this),this.$$path||(this.$$path="/"),this.$$compose()},this.$$compose=function(){var e=te(this.$$search),n=this.$$hash?"#"+ne(this.$$hash):"";this.$$url=Nt(this.$$path)+(e?"?"+e:"")+n,this.$$absUrl=t+this.$$url.substr(1)},this.$$parseLinkUrl=function(r,i){if(i&&"#"===i[0])return this.hash(i.slice(1)),!0;var o,a,s;return b(o=Pt(e,r))?(a=o,s=b(o=Pt(n,o))?t+(Pt("/",o)||o):e+a):b(o=Pt(t,r))?s=t+o:t==r+"/"&&(s=t),s&&this.$$parse(s),!!s}}function Ft(e,t,n){Vt(e,this),this.$$parse=function(r){function i(e,t,n){var r,i=/^\/[A-Z]:(\/.*)/;return 0===t.indexOf(n)&&(t=t.replace(n,"")),i.exec(t)?e:(r=i.exec(e),r?r[1]:e)}var o,a=Pt(e,r)||Pt(t,r);y(a)||"#"!==a.charAt(0)?this.$$html5?o=a:(o="",y(a)&&(e=r,this.replace())):(o=Pt(n,a),y(o)&&(o=a)),jt(o,this),this.$$path=i(this.$$path,o,e),this.$$compose()},this.$$compose=function(){var t=te(this.$$search),r=this.$$hash?"#"+ne(this.$$hash):"";this.$$url=Nt(this.$$path)+(t?"?"+t:"")+r,this.$$absUrl=e+(this.$$url?n+this.$$url:"")},this.$$parseLinkUrl=function(t,n){return Dt(e)==Dt(t)?(this.$$parse(t),!0):!1}}function Ut(e,t,n){this.$$html5=!0,Ft.apply(this,arguments),this.$$parseLinkUrl=function(r,i){if(i&&"#"===i[0])return this.hash(i.slice(1)),!0;var o,a;return e==Dt(r)?o=r:(a=Pt(t,r))?o=e+n+a:t===r+"/"&&(o=t),o&&this.$$parse(o),!!o},this.$$compose=function(){var t=te(this.$$search),r=this.$$hash?"#"+ne(this.$$hash):"";this.$$url=Nt(this.$$path)+(t?"?"+t:"")+r,this.$$absUrl=e+n+this.$$url}}function Bt(e){return function(){return this[e]}}function Ht(e,t){return function(n){return y(n)?this[e]:(this[e]=t(n),this.$$compose(),this)}}function Lt(){var e="",t={enabled:!1,requireBase:!0,rewriteLinks:!0};this.hashPrefix=function(t){return b(t)?(e=t,this):e},this.html5Mode=function(e){return j(e)?(t.enabled=e,this):w(e)?(j(e.enabled)&&(t.enabled=e.enabled),j(e.requireBase)&&(t.requireBase=e.requireBase),j(e.rewriteLinks)&&(t.rewriteLinks=e.rewriteLinks),this):t},this.$get=["$rootScope","$browser","$sniffer","$rootElement","$window",function(n,r,i,o,a){function s(e,t,n){var i=c.url(),o=c.$$state;try{r.url(e,t,n),c.$$state=r.state()}catch(a){throw c.url(i),c.$$state=o,a}}function u(e,t){n.$broadcast("$locationChangeSuccess",c.absUrl(),e,c.$$state,t)}var c,l,f,h=r.baseHref(),p=r.url();if(t.enabled){if(!h&&t.requireBase)throw Hi("nobase","$location in HTML5 mode requires a tag to be present!");f=_t(p)+(h||"/"),l=i.history?qt:Ut}else f=Dt(p),l=Ft;var d=Rt(f);c=new l(f,d,"#"+e),c.$$parseLinkUrl(p,p),c.$$state=r.state();var $=/^\s*(javascript|mailto):/i;o.on("click",function(e){if(t.rewriteLinks&&!e.ctrlKey&&!e.metaKey&&!e.shiftKey&&2!=e.which&&2!=e.button){for(var i=Er(e.target);"a"!==_(i[0]);)if(i[0]===o[0]||!(i=i.parent())[0])return;var s=i.prop("href"),u=i.attr("href")||i.attr("xlink:href");w(s)&&"[object SVGAnimatedString]"===s.toString()&&(s=En(s.animVal).href),$.test(s)||!s||i.attr("target")||e.isDefaultPrevented()||c.$$parseLinkUrl(s,u)&&(e.preventDefault(),c.absUrl()!=r.url()&&(n.$apply(),a.angular["ff-684208-preventDefault"]=!0))}}),It(c.absUrl())!=It(p)&&r.url(c.absUrl(),!0);var v=!0;return r.onUrlChange(function(e,t){return y(Pt(d,e))?void(a.location.href=e):(n.$evalAsync(function(){var r,i=c.absUrl(),o=c.$$state;c.$$parse(e),c.$$state=t,r=n.$broadcast("$locationChangeStart",e,i,t,o).defaultPrevented,c.absUrl()===e&&(r?(c.$$parse(i),c.$$state=o,s(i,!1,o)):(v=!1,u(i,o)))}),void(n.$$phase||n.$digest()))}),n.$watch(function(){var e=It(r.url()),t=It(c.absUrl()),o=r.state(),a=c.$$replace,l=e!==t||c.$$html5&&i.history&&o!==c.$$state;(v||l)&&(v=!1,n.$evalAsync(function(){var t=c.absUrl(),r=n.$broadcast("$locationChangeStart",t,e,c.$$state,o).defaultPrevented;c.absUrl()===t&&(r?(c.$$parse(e),c.$$state=o):(l&&s(t,a,o===c.$$state?null:c.$$state),u(e,o)))})),c.$$replace=!1}),c}]}function zt(){var e=!0,t=this;this.debugEnabled=function(t){return b(t)?(e=t,this):e},this.$get=["$window",function(n){function r(e){return e instanceof Error&&(e.stack?e=e.message&&-1===e.stack.indexOf(e.message)?"Error: "+e.message+"\n"+e.stack:e.stack:e.sourceURL&&(e=e.message+"\n"+e.sourceURL+":"+e.line)),e}function i(e){var t=n.console||{},i=t[e]||t.log||$,a=!1;try{a=!!i.apply}catch(s){}return a?function(){var e=[];return o(arguments,function(t){e.push(r(t))}),i.apply(t,e)}:function(e,t){i(e,null==t?"":t)}}return{log:i("log"),info:i("info"),warn:i("warn"),error:i("error"),debug:function(){var n=i("debug");return function(){e&&n.apply(t,arguments)}}()}}]}function Wt(e,t){if(e=w(e)&&e.toString?e.toString():e,"__defineGetter__"===e||"__defineSetter__"===e||"__lookupGetter__"===e||"__lookupSetter__"===e||"__proto__"===e)throw zi("isecfld","Attempting to access a disallowed field in Angular expressions! Expression: {0}",t);return e}function Gt(e,t){if(e){if(e.constructor===e)throw zi("isecfn","Referencing Function in Angular expressions is disallowed! Expression: {0}",t);if(e.window===e)throw zi("isecwindow","Referencing the Window in Angular expressions is disallowed! Expression: {0}",t);if(e.children&&(e.nodeName||e.prop&&e.attr&&e.find))throw zi("isecdom","Referencing DOM nodes in Angular expressions is disallowed! Expression: {0}",t);if(e===Object)throw zi("isecobj","Referencing Object in Angular expressions is disallowed! Expression: {0}",t)}return e}function Yt(e,t){if(e){if(e.constructor===e)throw zi("isecfn","Referencing Function in Angular expressions is disallowed! Expression: {0}",t);if(e===Wi||e===Gi||e===Yi)throw zi("isecff","Referencing call, apply or bind in Angular expressions is disallowed! Expression: {0}",t)}}function Jt(e,t){return"undefined"!=typeof e?e:t}function Kt(e,t){return"undefined"==typeof e?t:"undefined"==typeof t?e:e+t}function Zt(e,t){var n=e(t);return!n.$stateful}function Xt(e,t){var n,r;switch(e.type){case Xi.Program:n=!0,o(e.body,function(e){Xt(e.expression,t),n=n&&e.expression.constant}),e.constant=n;break;case Xi.Literal:e.constant=!0,e.toWatch=[];break;case Xi.UnaryExpression:Xt(e.argument,t),e.constant=e.argument.constant,e.toWatch=e.argument.toWatch;break;case Xi.BinaryExpression:Xt(e.left,t),Xt(e.right,t),e.constant=e.left.constant&&e.right.constant,e.toWatch=e.left.toWatch.concat(e.right.toWatch);break;case Xi.LogicalExpression:Xt(e.left,t),Xt(e.right,t),e.constant=e.left.constant&&e.right.constant,e.toWatch=e.constant?[]:[e];break;case Xi.ConditionalExpression:Xt(e.test,t),Xt(e.alternate,t),Xt(e.consequent,t),e.constant=e.test.constant&&e.alternate.constant&&e.consequent.constant,e.toWatch=e.constant?[]:[e];break;case Xi.Identifier:e.constant=!1,e.toWatch=[e];break;case Xi.MemberExpression:Xt(e.object,t),e.computed&&Xt(e.property,t),e.constant=e.object.constant&&(!e.computed||e.property.constant),e.toWatch=[e];break;case Xi.CallExpression:n=e.filter?Zt(t,e.callee.name):!1,r=[],o(e.arguments,function(e){Xt(e,t),n=n&&e.constant,e.constant||r.push.apply(r,e.toWatch)}),e.constant=n,e.toWatch=e.filter&&Zt(t,e.callee.name)?r:[e];break;case Xi.AssignmentExpression:Xt(e.left,t),Xt(e.right,t),e.constant=e.left.constant&&e.right.constant,e.toWatch=[e];break;case Xi.ArrayExpression:n=!0,r=[],o(e.elements,function(e){Xt(e,t),n=n&&e.constant,e.constant||r.push.apply(r,e.toWatch)}),e.constant=n,e.toWatch=r;break;case Xi.ObjectExpression:n=!0,r=[],o(e.properties,function(e){Xt(e.value,t),n=n&&e.value.constant,e.value.constant||r.push.apply(r,e.value.toWatch)}),e.constant=n,e.toWatch=r;break;case Xi.ThisExpression:e.constant=!1,e.toWatch=[]}}function Qt(e){if(1==e.length){var t=e[0].expression,r=t.toWatch;return 1!==r.length?r:r[0]!==t?r:n}}function en(e){return e.type===Xi.Identifier||e.type===Xi.MemberExpression}function tn(e){return 1===e.body.length&&en(e.body[0].expression)?{type:Xi.AssignmentExpression,left:e.body[0].expression,right:{type:Xi.NGValueParameter},operator:"="}:void 0}function nn(e){return 0===e.body.length||1===e.body.length&&(e.body[0].expression.type===Xi.Literal||e.body[0].expression.type===Xi.ArrayExpression||e.body[0].expression.type===Xi.ObjectExpression)}function rn(e){return e.constant}function on(e,t){this.astBuilder=e,this.$filter=t}function an(e,t){this.astBuilder=e,this.$filter=t}function sn(e){return"constructor"==e}function un(e){return k(e.valueOf)?e.valueOf():eo.call(e)}function cn(){var e=ve(),t=ve();this.$get=["$filter",function(r){function i(e,t){return null==e||null==t?e===t:"object"==typeof e&&(e=un(e),"object"==typeof e)?!1:e===t||e!==e&&t!==t}function a(e,t,r,o,a){var s,u=o.inputs;if(1===u.length){var c=i;return u=u[0],e.$watch(function(e){var t=u(e);return i(t,c)||(s=o(e,n,n,[t]),c=t&&un(t)),s},t,r,a)}for(var l=[],f=[],h=0,p=u.length;p>h;h++)l[h]=i,f[h]=null;return e.$watch(function(e){for(var t=!1,r=0,a=u.length;a>r;r++){var c=u[r](e);(t||(t=!i(c,l[r])))&&(f[r]=c,l[r]=c&&un(c))}return t&&(s=o(e,n,n,f)),s},t,r,a)}function s(e,t,n,r){var i,o;return i=e.$watch(function(e){return r(e)},function(e,n,r){o=e,k(t)&&t.apply(this,arguments),b(e)&&r.$$postDigest(function(){b(o)&&i()})},n)}function u(e,t,n,r){function i(e){var t=!0;return o(e,function(e){b(e)||(t=!1)}),t}var a,s;return a=e.$watch(function(e){return r(e)},function(e,n,r){s=e,k(t)&&t.call(this,e,n,r),i(e)&&r.$$postDigest(function(){i(s)&&a()})},n)}function c(e,t,n,r){var i;return i=e.$watch(function(e){return r(e)},function(e,n,r){k(t)&&t.apply(this,arguments),i()},n)}function l(e,t){if(!t)return e;var n=e.$$watchDelegate,r=n!==u&&n!==s,i=r?function(n,r,i,o){var a=e(n,r,i,o);return t(a,n,r)}:function(n,r,i,o){var a=e(n,r,i,o),s=t(a,n,r);return b(a)?s:a};return e.$$watchDelegate&&e.$$watchDelegate!==a?i.$$watchDelegate=e.$$watchDelegate:t.$stateful||(i.$$watchDelegate=a,i.inputs=e.inputs?e.inputs:[e]),i}var f=Fr().noUnsafeEval,h={csp:f,expensiveChecks:!1},p={csp:f,expensiveChecks:!0};return function(n,i,o){var f,d,v;switch(typeof n){case"string":n=n.trim(),v=n;var m=o?t:e;if(f=m[v],!f){":"===n.charAt(0)&&":"===n.charAt(1)&&(d=!0,n=n.substring(2));var g=o?p:h,y=new Zi(g),b=new Qi(y,r,g);f=b.parse(n),f.constant?f.$$watchDelegate=c:d?f.$$watchDelegate=f.literal?u:s:f.inputs&&(f.$$watchDelegate=a),m[v]=f}return l(f,i);case"function":return l(n,i);default:return $}}}]}function ln(){this.$get=["$rootScope","$exceptionHandler",function(e,t){return hn(function(t){e.$evalAsync(t)},t)}]}function fn(){this.$get=["$browser","$exceptionHandler",function(e,t){return hn(function(t){e.defer(t)},t)}]}function hn(e,t){function i(e,t,n){function r(t){return function(n){i||(i=!0,t.call(e,n))}}var i=!1;return[r(t),r(n)]}function a(){this.$$state={status:0}}function s(e,t){return function(n){t.call(e,n)}}function u(e){var r,i,o;o=e.pending,e.processScheduled=!1,e.pending=n;for(var a=0,s=o.length;s>a;++a){i=o[a][0],r=o[a][e.status];try{k(r)?i.resolve(r(e.value)):1===e.status?i.resolve(e.value):i.reject(e.value)}catch(u){i.reject(u),t(u)}}}function c(t){!t.processScheduled&&t.pending&&(t.processScheduled=!0,e(function(){u(t)}))}function l(){this.promise=new a,this.resolve=s(this,this.resolve),this.reject=s(this,this.reject),this.notify=s(this,this.notify)}function h(e){var t=new l,n=0,r=Ir(e)?[]:{};return o(e,function(e,i){n++,g(e).then(function(e){r.hasOwnProperty(i)||(r[i]=e,--n||t.resolve(r))},function(e){r.hasOwnProperty(i)||t.reject(e)})}),0===n&&t.resolve(r),t.promise}var p=r("$q",TypeError),d=function(){return new l};f(a.prototype,{then:function(e,t,n){if(y(e)&&y(t)&&y(n))return this;var r=new l;return this.$$state.pending=this.$$state.pending||[],this.$$state.pending.push([r,e,t,n]),this.$$state.status>0&&c(this.$$state),r.promise},"catch":function(e){return this.then(null,e)},"finally":function(e,t){return this.then(function(t){return m(t,!0,e)},function(t){return m(t,!1,e)},t)}}),f(l.prototype,{resolve:function(e){this.promise.$$state.status||(e===this.promise?this.$$reject(p("qcycle","Expected promise to be resolved with value other than itself '{0}'",e)):this.$$resolve(e))},$$resolve:function(e){var n,r;r=i(this,this.$$resolve,this.$$reject);try{(w(e)||k(e))&&(n=e&&e.then),k(n)?(this.promise.$$state.status=-1,n.call(e,r[0],r[1],this.notify)):(this.promise.$$state.value=e,this.promise.$$state.status=1,c(this.promise.$$state))}catch(o){r[1](o),t(o)}},reject:function(e){this.promise.$$state.status||this.$$reject(e)},$$reject:function(e){this.promise.$$state.value=e,this.promise.$$state.status=2,c(this.promise.$$state)},notify:function(n){var r=this.promise.$$state.pending;this.promise.$$state.status<=0&&r&&r.length&&e(function(){for(var e,i,o=0,a=r.length;a>o;o++){i=r[o][0],e=r[o][3];try{i.notify(k(e)?e(n):n)}catch(s){t(s)}}})}});var $=function(e){var t=new l;return t.reject(e),t.promise},v=function(e,t){var n=new l;return t?n.resolve(e):n.reject(e),n.promise},m=function(e,t,n){var r=null;try{k(n)&&(r=n())}catch(i){return v(i,!1)}return P(r)?r.then(function(){return v(e,t)},function(e){return v(e,!1)}):v(e,t)},g=function(e,t,n,r){var i=new l;return i.resolve(e),i.promise.then(t,n,r)},b=g,x=function S(e){function t(e){r.resolve(e)}function n(e){r.reject(e)}if(!k(e))throw p("norslvr","Expected resolverFn, got '{0}'",e);if(!(this instanceof S))return new S(e); var r=new l;return e(t,n),r.promise};return x.defer=d,x.reject=$,x.when=g,x.resolve=b,x.all=h,x}function pn(){this.$get=["$window","$timeout",function(e,t){var n=e.requestAnimationFrame||e.webkitRequestAnimationFrame,r=e.cancelAnimationFrame||e.webkitCancelAnimationFrame||e.webkitCancelRequestAnimationFrame,i=!!n,o=i?function(e){var t=n(e);return function(){r(t)}}:function(e){var n=t(e,16.66,!1);return function(){t.cancel(n)}};return o.supported=i,o}]}function dn(){function e(e){function t(){this.$$watchers=this.$$nextSibling=this.$$childHead=this.$$childTail=null,this.$$listeners={},this.$$listenerCount={},this.$$watchersCount=0,this.$id=u(),this.$$ChildScope=null}return t.prototype=e,t}var t=10,n=r("$rootScope"),a=null,s=null;this.digestTtl=function(e){return arguments.length&&(t=e),t},this.$get=["$injector","$exceptionHandler","$parse","$browser",function(r,c,l,f){function h(e){e.currentScope.$$destroyed=!0}function p(){this.$id=u(),this.$$phase=this.$parent=this.$$watchers=this.$$nextSibling=this.$$prevSibling=this.$$childHead=this.$$childTail=null,this.$root=this,this.$$destroyed=!1,this.$$listeners={},this.$$listenerCount={},this.$$watchersCount=0,this.$$isolateBindings=null}function d(e){if(E.$$phase)throw n("inprog","{0} already in progress",E.$$phase);E.$$phase=e}function v(){E.$$phase=null}function m(e,t){do e.$$watchersCount+=t;while(e=e.$parent)}function g(e,t,n){do e.$$listenerCount[n]-=t,0===e.$$listenerCount[n]&&delete e.$$listenerCount[n];while(e=e.$parent)}function b(){}function x(){for(;O.length;)try{O.shift()()}catch(e){c(e)}s=null}function S(){null===s&&(s=f.defer(function(){E.$apply(x)}))}p.prototype={constructor:p,$new:function(t,n){var r;return n=n||this,t?(r=new p,r.$root=this.$root):(this.$$ChildScope||(this.$$ChildScope=e(this)),r=new this.$$ChildScope),r.$parent=n,r.$$prevSibling=n.$$childTail,n.$$childHead?(n.$$childTail.$$nextSibling=r,n.$$childTail=r):n.$$childHead=n.$$childTail=r,(t||n!=this)&&r.$on("$destroy",h),r},$watch:function(e,t,n,r){var i=l(e);if(i.$$watchDelegate)return i.$$watchDelegate(this,t,n,i,e);var o=this,s=o.$$watchers,u={fn:t,last:b,get:i,exp:r||e,eq:!!n};return a=null,k(t)||(u.fn=$),s||(s=o.$$watchers=[]),s.unshift(u),m(this,1),function(){q(s,u)>=0&&m(o,-1),a=null}},$watchGroup:function(e,t){function n(){u=!1,c?(c=!1,t(i,i,s)):t(i,r,s)}var r=new Array(e.length),i=new Array(e.length),a=[],s=this,u=!1,c=!0;if(!e.length){var l=!0;return s.$evalAsync(function(){l&&t(i,i,s)}),function(){l=!1}}return 1===e.length?this.$watch(e[0],function(e,n,o){i[0]=e,r[0]=n,t(i,e===n?i:r,o)}):(o(e,function(e,t){var o=s.$watch(e,function(e,o){i[t]=e,r[t]=o,u||(u=!0,s.$evalAsync(n))});a.push(o)}),function(){for(;a.length;)a.shift()()})},$watchCollection:function(e,t){function n(e){o=e;var t,n,r,s,u;if(!y(o)){if(w(o))if(i(o)){a!==p&&(a=p,v=a.length=0,f++),t=o.length,v!==t&&(f++,a.length=v=t);for(var c=0;t>c;c++)u=a[c],s=o[c],r=u!==u&&s!==s,r||u===s||(f++,a[c]=s)}else{a!==d&&(a=d={},v=0,f++),t=0;for(n in o)yr.call(o,n)&&(t++,s=o[n],u=a[n],n in a?(r=u!==u&&s!==s,r||u===s||(f++,a[n]=s)):(v++,a[n]=s,f++));if(v>t){f++;for(n in a)yr.call(o,n)||(v--,delete a[n])}}else a!==o&&(a=o,f++);return f}}function r(){if($?($=!1,t(o,o,u)):t(o,s,u),c)if(w(o))if(i(o)){s=new Array(o.length);for(var e=0;e1,f=0,h=l(e,n),p=[],d={},$=!0,v=0;return this.$watch(h,r)},$digest:function(){var e,r,i,o,u,l,h,p,$,m,g=t,y=this,w=[];d("$digest"),f.$$checkUrlChange(),this===E&&null!==s&&(f.defer.cancel(s),x()),a=null;do{for(l=!1,p=y;C.length;){try{m=C.shift(),m.scope.$eval(m.expression,m.locals)}catch(S){c(S)}a=null}e:do{if(o=p.$$watchers)for(u=o.length;u--;)try{if(e=o[u])if((r=e.get(p))===(i=e.last)||(e.eq?B(r,i):"number"==typeof r&&"number"==typeof i&&isNaN(r)&&isNaN(i))){if(e===a){l=!1;break e}}else l=!0,a=e,e.last=e.eq?F(r,null):r,e.fn(r,i===b?r:i,p),5>g&&($=4-g,w[$]||(w[$]=[]),w[$].push({msg:k(e.exp)?"fn: "+(e.exp.name||e.exp.toString()):e.exp,newVal:r,oldVal:i}))}catch(S){c(S)}if(!(h=p.$$watchersCount&&p.$$childHead||p!==y&&p.$$nextSibling))for(;p!==y&&!(h=p.$$nextSibling);)p=p.$parent}while(p=h);if((l||C.length)&&!g--)throw v(),n("infdig","{0} $digest() iterations reached. Aborting!\nWatchers fired in the last 5 iterations: {1}",t,w)}while(l||C.length);for(v();A.length;)try{A.shift()()}catch(S){c(S)}},$destroy:function(){if(!this.$$destroyed){var e=this.$parent;this.$broadcast("$destroy"),this.$$destroyed=!0,this===E&&f.$$applicationDestroyed(),m(this,-this.$$watchersCount);for(var t in this.$$listenerCount)g(this,this.$$listenerCount[t],t);e&&e.$$childHead==this&&(e.$$childHead=this.$$nextSibling),e&&e.$$childTail==this&&(e.$$childTail=this.$$prevSibling),this.$$prevSibling&&(this.$$prevSibling.$$nextSibling=this.$$nextSibling),this.$$nextSibling&&(this.$$nextSibling.$$prevSibling=this.$$prevSibling),this.$destroy=this.$digest=this.$apply=this.$evalAsync=this.$applyAsync=$,this.$on=this.$watch=this.$watchGroup=function(){return $},this.$$listeners={},this.$parent=this.$$nextSibling=this.$$prevSibling=this.$$childHead=this.$$childTail=this.$root=this.$$watchers=null}},$eval:function(e,t){return l(e)(this,t)},$evalAsync:function(e,t){E.$$phase||C.length||f.defer(function(){C.length&&E.$digest()}),C.push({scope:this,expression:e,locals:t})},$$postDigest:function(e){A.push(e)},$apply:function(e){try{d("$apply");try{return this.$eval(e)}finally{v()}}catch(t){c(t)}finally{try{E.$digest()}catch(t){throw c(t),t}}},$applyAsync:function(e){function t(){n.$eval(e)}var n=this;e&&O.push(t),S()},$on:function(e,t){var n=this.$$listeners[e];n||(this.$$listeners[e]=n=[]),n.push(t);var r=this;do r.$$listenerCount[e]||(r.$$listenerCount[e]=0),r.$$listenerCount[e]++;while(r=r.$parent);var i=this;return function(){var r=n.indexOf(t);-1!==r&&(n[r]=null,g(i,1,e))}},$emit:function(e,t){var n,r,i,o=[],a=this,s=!1,u={name:e,targetScope:a,stopPropagation:function(){s=!0},preventDefault:function(){u.defaultPrevented=!0},defaultPrevented:!1},l=H([u],arguments,1);do{for(n=a.$$listeners[e]||o,u.currentScope=a,r=0,i=n.length;i>r;r++)if(n[r])try{n[r].apply(null,l)}catch(f){c(f)}else n.splice(r,1),r--,i--;if(s)return u.currentScope=null,u;a=a.$parent}while(a);return u.currentScope=null,u},$broadcast:function(e,t){var n=this,r=n,i=n,o={name:e,targetScope:n,preventDefault:function(){o.defaultPrevented=!0},defaultPrevented:!1};if(!n.$$listenerCount[e])return o;for(var a,s,u,l=H([o],arguments,1);r=i;){for(o.currentScope=r,a=r.$$listeners[e]||[],s=0,u=a.length;u>s;s++)if(a[s])try{a[s].apply(null,l)}catch(f){c(f)}else a.splice(s,1),s--,u--;if(!(i=r.$$listenerCount[e]&&r.$$childHead||r!==n&&r.$$nextSibling))for(;r!==n&&!(i=r.$$nextSibling);)r=r.$parent}return o.currentScope=null,o}};var E=new p,C=E.$$asyncQueue=[],A=E.$$postDigestQueue=[],O=E.$$applyAsyncQueue=[];return E}]}function $n(){var e=/^\s*(https?|ftp|mailto|tel|file):/,t=/^\s*((https?|ftp|file|blob):|data:image\/)/;this.aHrefSanitizationWhitelist=function(t){return b(t)?(e=t,this):e},this.imgSrcSanitizationWhitelist=function(e){return b(e)?(t=e,this):t},this.$get=function(){return function(n,r){var i,o=r?t:e;return i=En(n).href,""===i||i.match(o)?n:"unsafe:"+i}}}function vn(e){if("self"===e)return e;if(S(e)){if(e.indexOf("***")>-1)throw to("iwcard","Illegal sequence *** in string matcher. String: {0}",e);return e=qr(e).replace("\\*\\*",".*").replace("\\*","[^:/.?&;]*"),new RegExp("^"+e+"$")}if(A(e))return new RegExp("^"+e.source+"$");throw to("imatcher",'Matchers may only be "self", string patterns or RegExp objects')}function mn(e){var t=[];return b(e)&&o(e,function(e){t.push(vn(e))}),t}function gn(){this.SCE_CONTEXTS=no;var e=["self"],t=[];this.resourceUrlWhitelist=function(t){return arguments.length&&(e=mn(t)),e},this.resourceUrlBlacklist=function(e){return arguments.length&&(t=mn(e)),t},this.$get=["$injector",function(n){function r(e,t){return"self"===e?Cn(t):!!e.exec(t.href)}function i(n){var i,o,a=En(n.toString()),s=!1;for(i=0,o=e.length;o>i;i++)if(r(e[i],a)){s=!0;break}if(s)for(i=0,o=t.length;o>i;i++)if(r(t[i],a)){s=!1;break}return s}function o(e){var t=function(e){this.$$unwrapTrustedValue=function(){return e}};return e&&(t.prototype=new e),t.prototype.valueOf=function(){return this.$$unwrapTrustedValue()},t.prototype.toString=function(){return this.$$unwrapTrustedValue().toString()},t}function a(e,t){var n=f.hasOwnProperty(e)?f[e]:null;if(!n)throw to("icontext","Attempted to trust a value in invalid context. Context: {0}; Value: {1}",e,t);if(null===t||y(t)||""===t)return t;if("string"!=typeof t)throw to("itype","Attempted to trust a non-string value in a content requiring a string: Context: {0}",e);return new n(t)}function s(e){return e instanceof l?e.$$unwrapTrustedValue():e}function u(e,t){if(null===t||y(t)||""===t)return t;var n=f.hasOwnProperty(e)?f[e]:null;if(n&&t instanceof n)return t.$$unwrapTrustedValue();if(e===no.RESOURCE_URL){if(i(t))return t;throw to("insecurl","Blocked loading resource from url not allowed by $sceDelegate policy. URL: {0}",t.toString())}if(e===no.HTML)return c(t);throw to("unsafe","Attempting to use an unsafe value in a safe context.")}var c=function(e){throw to("unsafe","Attempting to use an unsafe value in a safe context.")};n.has("$sanitize")&&(c=n.get("$sanitize"));var l=o(),f={};return f[no.HTML]=o(l),f[no.CSS]=o(l),f[no.URL]=o(l),f[no.JS]=o(l),f[no.RESOURCE_URL]=o(f[no.URL]),{trustAs:a,getTrusted:u,valueOf:s}}]}function yn(){var e=!0;this.enabled=function(t){return arguments.length&&(e=!!t),e},this.$get=["$parse","$sceDelegate",function(t,n){if(e&&8>Sr)throw to("iequirks","Strict Contextual Escaping does not support Internet Explorer version < 11 in quirks mode. You can fix this by adding the text to the top of your HTML document. See http://docs.angularjs.org/api/ng.$sce for more information.");var r=U(no);r.isEnabled=function(){return e},r.trustAs=n.trustAs,r.getTrusted=n.getTrusted,r.valueOf=n.valueOf,e||(r.trustAs=r.getTrusted=function(e,t){return t},r.valueOf=v),r.parseAs=function(e,n){var i=t(n);return i.literal&&i.constant?i:t(n,function(t){return r.getTrusted(e,t)})};var i=r.parseAs,a=r.getTrusted,s=r.trustAs;return o(no,function(e,t){var n=gr(t);r[xe("parse_as_"+n)]=function(t){return i(e,t)},r[xe("get_trusted_"+n)]=function(t){return a(e,t)},r[xe("trust_as_"+n)]=function(t){return s(e,t)}}),r}]}function bn(){this.$get=["$window","$document",function(e,t){var n,r,i={},o=p((/android (\d+)/.exec(gr((e.navigator||{}).userAgent))||[])[1]),a=/Boxee/i.test((e.navigator||{}).userAgent),s=t[0]||{},u=/^(Moz|webkit|ms)(?=[A-Z])/,c=s.body&&s.body.style,l=!1,f=!1;if(c){for(var h in c)if(r=u.exec(h)){n=r[0],n=n.substr(0,1).toUpperCase()+n.substr(1);break}n||(n="WebkitOpacity"in c&&"webkit"),l=!!("transition"in c||n+"Transition"in c),f=!!("animation"in c||n+"Animation"in c),!o||l&&f||(l=S(c.webkitTransition),f=S(c.webkitAnimation))}return{history:!(!e.history||!e.history.pushState||4>o||a),hasEvent:function(e){if("input"===e&&11>=Sr)return!1;if(y(i[e])){var t=s.createElement("div");i[e]="on"+e in t}return i[e]},csp:Fr(),vendorPrefix:n,transitions:l,animations:f,android:o}}]}function wn(){this.$get=["$templateCache","$http","$q","$sce",function(e,t,n,r){function i(o,a){function s(e){if(!a)throw Oi("tpload","Failed to load template: {0} (HTTP status: {1} {2})",o,e.status,e.statusText);return n.reject(e)}i.totalPendingRequests++,S(o)&&e.get(o)||(o=r.getTrustedResourceUrl(o));var u=t.defaults&&t.defaults.transformResponse;Ir(u)?u=u.filter(function(e){return e!==yt}):u===yt&&(u=null);var c={cache:e,transformResponse:u};return t.get(o,c)["finally"](function(){i.totalPendingRequests--}).then(function(t){return e.put(o,t.data),t.data},s)}return i.totalPendingRequests=0,i}]}function xn(){this.$get=["$rootScope","$browser","$location",function(e,t,n){var r={};return r.findBindings=function(e,t,n){var r=e.getElementsByClassName("ng-binding"),i=[];return o(r,function(e){var r=jr.element(e).data("$binding");r&&o(r,function(r){if(n){var o=new RegExp("(^|\\s)"+qr(t)+"(\\s|\\||$)");o.test(r)&&i.push(e)}else-1!=r.indexOf(t)&&i.push(e)})}),i},r.findModels=function(e,t,n){for(var r=["ng-","data-ng-","ng\\:"],i=0;i0&&(u=t(o.substring(0,s)),y(r[u])&&(r[u]=t(o.substring(s+1))));return r}}function On(){this.$get=An}function Mn(e){function t(r,i){if(w(r)){var a={};return o(r,function(e,n){a[n]=t(n,e)}),a}return e.factory(r+n,i)}var n="Filter";this.register=t,this.$get=["$injector",function(e){return function(t){return e.get(t+n)}}],t("currency",Pn),t("date",Gn),t("filter",Tn),t("json",Yn),t("limitTo",Jn),t("lowercase",co),t("number",Dn),t("orderBy",Kn),t("uppercase",lo)}function Tn(){return function(e,t,n){if(!i(e)){if(null==e)return e;throw r("filter")("notarray","Expected array but received: {0}",e)}var o,a,s=jn(t);switch(s){case"function":o=t;break;case"boolean":case"null":case"number":case"string":a=!0;case"object":o=Nn(t,n,a);break;default:return e}return Array.prototype.filter.call(e,o)}}function Nn(e,t,n){var r,i=w(e)&&"$"in e;return t===!0?t=B:k(t)||(t=function(e,t){return y(e)?!1:null===e||null===t?e===t:w(t)||w(e)&&!g(e)?!1:(e=gr(""+e),t=gr(""+t),-1!==e.indexOf(t))}),r=function(r){return i&&!w(r)?Vn(r,e.$,t,!1):Vn(r,e,t,n)}}function Vn(e,t,n,r,i){var o=jn(e),a=jn(t);if("string"===a&&"!"===t.charAt(0))return!Vn(e,t.substring(1),n,r);if(Ir(e))return e.some(function(e){return Vn(e,t,n,r)});switch(o){case"object":var s;if(r){for(s in e)if("$"!==s.charAt(0)&&Vn(e[s],t,n,!0))return!0;return i?!1:Vn(e,t,n,!1)}if("object"===a){for(s in t){var u=t[s];if(!k(u)&&!y(u)){var c="$"===s,l=c?e:e[s];if(!Vn(l,u,n,c,c))return!1}}return!0}return n(e,t);case"function":return!1;default:return n(e,t)}}function jn(e){return null===e?"null":typeof e}function Pn(e){var t=e.NUMBER_FORMATS;return function(e,n,r){return y(n)&&(n=t.CURRENCY_SYM),y(r)&&(r=t.PATTERNS[1].maxFrac),null==e?e:In(e,t.PATTERNS[1],t.GROUP_SEP,t.DECIMAL_SEP,r).replace(/\u00A4/g,n)}}function Dn(e){var t=e.NUMBER_FORMATS;return function(e,n){return null==e?e:In(e,t.PATTERNS[0],t.GROUP_SEP,t.DECIMAL_SEP,n)}}function In(e,t,n,r,i){if(w(e))return"";var o=0>e;e=Math.abs(e);var a=e===1/0;if(!a&&!isFinite(e))return"";var s=e+"",u="",c=!1,l=[];if(a&&(u="∞"),!a&&-1!==s.indexOf("e")){var f=s.match(/([\d\.]+)e(-?)(\d+)/);f&&"-"==f[2]&&f[3]>i+1?e=0:(u=s,c=!0)}if(a||c)i>0&&1>e&&(u=e.toFixed(i),e=parseFloat(u));else{var h=(s.split(oo)[1]||"").length;y(i)&&(i=Math.min(Math.max(t.minFrac,h),t.maxFrac)),e=+(Math.round(+(e.toString()+"e"+i)).toString()+"e"+-i);var p=(""+e).split(oo),d=p[0];p=p[1]||"";var $,v=0,m=t.lgSize,g=t.gSize;if(d.length>=m+g)for(v=d.length-m,$=0;v>$;$++)(v-$)%g===0&&0!==$&&(u+=n),u+=d.charAt($);for($=v;$e&&(r="-",e=-e),e=""+e;e.length0||o>-n)&&(o+=n),0===o&&-12==n&&(o=12),Rn(o,t,r)}}function qn(e,t){return function(n,r){var i=n["get"+e](),o=br(t?"SHORT"+e:e);return r[o][i]}}function Fn(e,t,n){var r=-1*n,i=r>=0?"+":"";return i+=Rn(Math[r>0?"floor":"ceil"](r/60),2)+Rn(Math.abs(r%60),2)}function Un(e){var t=new Date(e,0,1).getDay();return new Date(e,0,(4>=t?5:12)-t)}function Bn(e){return new Date(e.getFullYear(),e.getMonth(),e.getDate()+(4-e.getDay()))}function Hn(e){return function(t){var n=Un(t.getFullYear()),r=Bn(t),i=+r-+n,o=1+Math.round(i/6048e5);return Rn(o,e)}}function Ln(e,t){return e.getHours()<12?t.AMPMS[0]:t.AMPMS[1]}function zn(e,t){return e.getFullYear()<=0?t.ERAS[0]:t.ERAS[1]}function Wn(e,t){return e.getFullYear()<=0?t.ERANAMES[0]:t.ERANAMES[1]}function Gn(e){function t(e){var t;if(t=e.match(n)){var r=new Date(0),i=0,o=0,a=t[8]?r.setUTCFullYear:r.setFullYear,s=t[8]?r.setUTCHours:r.setHours;t[9]&&(i=p(t[9]+t[10]),o=p(t[9]+t[11])),a.call(r,p(t[1]),p(t[2])-1,p(t[3]));var u=p(t[4]||0)-i,c=p(t[5]||0)-o,l=p(t[6]||0),f=Math.round(1e3*parseFloat("0."+(t[7]||0)));return s.call(r,u,c,l,f),r}return e}var n=/^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/;return function(n,r,i){var a,s,u="",c=[];if(r=r||"mediumDate",r=e.DATETIME_FORMATS[r]||r,S(n)&&(n=uo.test(n)?p(n):t(n)),E(n)&&(n=new Date(n)),!C(n)||!isFinite(n.getTime()))return n;for(;r;)s=so.exec(r),s?(c=H(c,s,1),r=c.pop()):(c.push(r),r=null);var l=n.getTimezoneOffset();return i&&(l=J(i,n.getTimezoneOffset()),n=Z(n,i,!0)),o(c,function(t){a=ao[t],u+=a?a(n,e.DATETIME_FORMATS,l):t.replace(/(^'|'$)/g,"").replace(/''/g,"'")}),u}}function Yn(){return function(e,t){return y(t)&&(t=2),G(e,t)}}function Jn(){return function(e,t,n){return t=Math.abs(Number(t))===1/0?Number(t):p(t),isNaN(t)?e:(E(e)&&(e=e.toString()),Ir(e)||S(e)?(n=!n||isNaN(n)?0:p(n),n=0>n&&n>=-e.length?e.length+n:n,t>=0?e.slice(n,n+t):0===n?e.slice(t,e.length):e.slice(Math.max(0,n+t),n)):e)}}function Kn(e){function t(t,n){return n=n?-1:1,t.map(function(t){var r=1,i=v;if(k(t))i=t;else if(S(t)&&("+"!=t.charAt(0)&&"-"!=t.charAt(0)||(r="-"==t.charAt(0)?-1:1,t=t.substring(1)),""!==t&&(i=e(t),i.constant))){var o=i();i=function(e){return e[o]}}return{get:i,descending:r*n}})}function n(e){switch(typeof e){case"number":case"boolean":case"string":return!0;default:return!1}}function r(e,t){return"function"==typeof e.valueOf&&(e=e.valueOf(),n(e))?e:g(e)&&(e=e.toString(),n(e))?e:t}function o(e,t){var n=typeof e;return null===e?(n="string",e="null"):"string"===n?e=e.toLowerCase():"object"===n&&(e=r(e,t)),{value:e,type:n}}function a(e,t){var n=0;return e.type===t.type?e.value!==t.value&&(n=e.valuer&&!(n=a(e.predicateValues[r],t.predicateValues[r])*c[r].descending);++r);return n}if(!i(e))return e;Ir(n)||(n=[n]),0===n.length&&(n=["+"]);var c=t(n,r);c.push({get:function(){return{}},descending:r?-1:1});var l=Array.prototype.map.call(e,s);return l.sort(u),e=l.map(function(e){return e.value})}}function Zn(e){return k(e)&&(e={link:e}),e.restrict=e.restrict||"AC",m(e)}function Xn(e,t){e.$name=t}function Qn(e,t,r,i,a){var s=this,u=[];s.$error={},s.$$success={},s.$pending=n,s.$name=a(t.name||t.ngForm||"")(r),s.$dirty=!1,s.$pristine=!0,s.$valid=!0,s.$invalid=!1,s.$submitted=!1,s.$$parentForm=po,s.$rollbackViewValue=function(){o(u,function(e){e.$rollbackViewValue()})},s.$commitViewValue=function(){o(u,function(e){e.$commitViewValue()})},s.$addControl=function(e){pe(e.$name,"input"),u.push(e),e.$name&&(s[e.$name]=e),e.$$parentForm=s},s.$$renameControl=function(e,t){var n=e.$name;s[n]===e&&delete s[n],s[t]=e,e.$name=t},s.$removeControl=function(e){e.$name&&s[e.$name]===e&&delete s[e.$name],o(s.$pending,function(t,n){s.$setValidity(n,null,e)}),o(s.$error,function(t,n){s.$setValidity(n,null,e)}),o(s.$$success,function(t,n){s.$setValidity(n,null,e)}),q(u,e),e.$$parentForm=po},dr({ctrl:this,$element:e,set:function(e,t,n){var r=e[t];if(r){var i=r.indexOf(n);-1===i&&r.push(n)}else e[t]=[n]},unset:function(e,t,n){var r=e[t];r&&(q(r,n),0===r.length&&delete e[t])},$animate:i}),s.$setDirty=function(){i.removeClass(e,Ko),i.addClass(e,Zo),s.$dirty=!0,s.$pristine=!1,s.$$parentForm.$setDirty()},s.$setPristine=function(){i.setClass(e,Ko,Zo+" "+$o),s.$dirty=!1,s.$pristine=!0,s.$submitted=!1,o(u,function(e){e.$setPristine()})},s.$setUntouched=function(){o(u,function(e){e.$setUntouched()})},s.$setSubmitted=function(){i.addClass(e,$o),s.$submitted=!0,s.$$parentForm.$setSubmitted()}}function er(e){e.$formatters.push(function(t){return e.$isEmpty(t)?t:t.toString()})}function tr(e,t,n,r,i,o){nr(e,t,n,r,i,o),er(r)}function nr(e,t,n,r,i,o){var a=gr(t[0].type);if(!i.android){var s=!1;t.on("compositionstart",function(e){s=!0}),t.on("compositionend",function(){s=!1,u()})}var u=function(e){if(c&&(o.defer.cancel(c),c=null),!s){var i=t.val(),u=e&&e.type;"password"===a||n.ngTrim&&"false"===n.ngTrim||(i=_r(i)),(r.$viewValue!==i||""===i&&r.$$hasNativeValidators)&&r.$setViewValue(i,u)}};if(i.hasEvent("input"))t.on("input",u);else{var c,l=function(e,t,n){c||(c=o.defer(function(){c=null,t&&t.value===n||u(e)}))};t.on("keydown",function(e){var t=e.keyCode;91===t||t>15&&19>t||t>=37&&40>=t||l(e,this,this.value)}),i.hasEvent("paste")&&t.on("paste cut",l)}t.on("change",u),r.$render=function(){var e=r.$isEmpty(r.$viewValue)?"":r.$viewValue;t.val()!==e&&t.val(e)}}function rr(e,t){if(C(e))return e;if(S(e)){Co.lastIndex=0;var n=Co.exec(e);if(n){var r=+n[1],i=+n[2],o=0,a=0,s=0,u=0,c=Un(r),l=7*(i-1);return t&&(o=t.getHours(),a=t.getMinutes(),s=t.getSeconds(),u=t.getMilliseconds()),new Date(r,0,c.getDate()+l,o,a,s,u)}}return NaN}function ir(e,t){return function(n,r){var i,a;if(C(n))return n;if(S(n)){if('"'==n.charAt(0)&&'"'==n.charAt(n.length-1)&&(n=n.substring(1,n.length-1)),yo.test(n))return new Date(n);if(e.lastIndex=0,i=e.exec(n))return i.shift(),a=r?{yyyy:r.getFullYear(),MM:r.getMonth()+1,dd:r.getDate(),HH:r.getHours(),mm:r.getMinutes(),ss:r.getSeconds(),sss:r.getMilliseconds()/1e3}:{yyyy:1970,MM:1,dd:1,HH:0,mm:0,ss:0,sss:0},o(i,function(e,n){n=v},s.$observe("min",function(e){v=p(e),u.$validate()})}if(b(s.max)||s.ngMax){var m;u.$validators.max=function(e){return!h(e)||y(m)||r(e)<=m},s.$observe("max",function(e){m=p(e),u.$validate()})}}}function ar(e,t,r,i){var o=t[0],a=i.$$hasNativeValidators=w(o.validity);a&&i.$parsers.push(function(e){var r=t.prop(mr)||{};return r.badInput&&!r.typeMismatch?n:e})}function sr(e,t,r,i,o,a){if(ar(e,t,r,i),nr(e,t,r,i,o,a),i.$$parserName="number",i.$parsers.push(function(e){return i.$isEmpty(e)?null:xo.test(e)?parseFloat(e):n}),i.$formatters.push(function(e){if(!i.$isEmpty(e)){if(!E(e))throw ta("numfmt","Expected `{0}` to be a number",e);e=e.toString()}return e}),b(r.min)||r.ngMin){var s;i.$validators.min=function(e){return i.$isEmpty(e)||y(s)||e>=s},r.$observe("min",function(e){b(e)&&!E(e)&&(e=parseFloat(e,10)),s=E(e)&&!isNaN(e)?e:n,i.$validate()})}if(b(r.max)||r.ngMax){var u;i.$validators.max=function(e){return i.$isEmpty(e)||y(u)||u>=e},r.$observe("max",function(e){b(e)&&!E(e)&&(e=parseFloat(e,10)),u=E(e)&&!isNaN(e)?e:n,i.$validate()})}}function ur(e,t,n,r,i,o){nr(e,t,n,r,i,o),er(r),r.$$parserName="url",r.$validators.url=function(e,t){var n=e||t;return r.$isEmpty(n)||bo.test(n)}}function cr(e,t,n,r,i,o){nr(e,t,n,r,i,o),er(r),r.$$parserName="email",r.$validators.email=function(e,t){var n=e||t;return r.$isEmpty(n)||wo.test(n)}}function lr(e,t,n,r){y(n.name)&&t.attr("name",u());var i=function(e){t[0].checked&&r.$setViewValue(n.value,e&&e.type)};t.on("click",i),r.$render=function(){var e=n.value;t[0].checked=e==r.$viewValue},n.$observe("value",r.$render)}function fr(e,t,n,r,i){var o;if(b(r)){if(o=e(r),!o.constant)throw ta("constexpr","Expected constant expression for `{0}`, but saw `{1}`.",n,r);return o(t)}return i}function hr(e,t,n,r,i,o,a,s){var u=fr(s,e,"ngTrueValue",n.ngTrueValue,!0),c=fr(s,e,"ngFalseValue",n.ngFalseValue,!1),l=function(e){r.$setViewValue(t[0].checked,e&&e.type)};t.on("click",l),r.$render=function(){t[0].checked=r.$viewValue},r.$isEmpty=function(e){return e===!1},r.$formatters.push(function(e){return B(e,u)}),r.$parsers.push(function(e){return e?u:c})}function pr(e,t){return e="ngClass"+e,["$animate",function(n){function r(e,t){var n=[];e:for(var r=0;r0||n[e])&&(n[e]=(n[e]||0)+t,n[e]===+(t>0)&&r.push(e))}),s.data("$classCounts",n),r.join(" ")}function h(e,t){var i=r(t,e),o=r(e,t);i=f(i,1),o=f(o,-1),i&&i.length&&n.addClass(s,i),o&&o.length&&n.removeClass(s,o)}function p(e){if(t===!0||a.$index%2===t){var n=i(e||[]);if(d){if(!B(e,d)){var r=i(d);h(r,n)}}else c(n)}d=U(e)}var d;a.$watch(u[e],p,!0),u.$observe("class",function(t){p(a.$eval(u[e]))}),"ngClass"!==e&&a.$watch("$index",function(n,r){var o=1&n;if(o!==(1&r)){var s=i(a.$eval(u[e]));o===t?c(s):l(s)}})}}}]}function dr(e){function t(e,t,u){y(t)?r("$pending",e,u):i("$pending",e,u),j(t)?t?(f(s.$error,e,u),l(s.$$success,e,u)):(l(s.$error,e,u),f(s.$$success,e,u)):(f(s.$error,e,u),f(s.$$success,e,u)),s.$pending?(o(ea,!0),s.$valid=s.$invalid=n,a("",null)):(o(ea,!1),s.$valid=$r(s.$error),s.$invalid=!s.$valid,a("",s.$valid));var c;c=s.$pending&&s.$pending[e]?n:s.$error[e]?!1:s.$$success[e]?!0:null,a(e,c),s.$$parentForm.$setValidity(e,c,s)}function r(e,t,n){s[e]||(s[e]={}),l(s[e],t,n)}function i(e,t,r){s[e]&&f(s[e],t,r),$r(s[e])&&(s[e]=n)}function o(e,t){t&&!c[e]?(h.addClass(u,e),c[e]=!0):!t&&c[e]&&(h.removeClass(u,e),c[e]=!1)}function a(e,t){e=e?"-"+ce(e,"-"):"",o(Yo+e,t===!0),o(Jo+e,t===!1)}var s=e.ctrl,u=e.$element,c={},l=e.set,f=e.unset,h=e.$animate;c[Jo]=!(c[Yo]=u.hasClass(Yo)),s.$setValidity=t}function $r(e){if(e)for(var t in e)if(e.hasOwnProperty(t))return!1;return!0}var vr=/^\/(.+)\/([a-z]*)$/,mr="validity",gr=function(e){return S(e)?e.toLowerCase():e},yr=Object.prototype.hasOwnProperty,br=function(e){return S(e)?e.toUpperCase():e},wr=function(e){return S(e)?e.replace(/[A-Z]/g,function(e){return String.fromCharCode(32|e.charCodeAt(0))}):e},xr=function(e){return S(e)?e.replace(/[a-z]/g,function(e){return String.fromCharCode(-33&e.charCodeAt(0))}):e};"i"!=="I".toLowerCase()&&(gr=wr,br=xr);var Sr,Er,Cr,kr,Ar=[].slice,Or=[].splice,Mr=[].push,Tr=Object.prototype.toString,Nr=Object.getPrototypeOf,Vr=r("ng"),jr=e.angular||(e.angular={}),Pr=0;Sr=t.documentMode,$.$inject=[],v.$inject=[];var Dr,Ir=Array.isArray,Rr=/^\[object (Uint8(Clamped)?)|(Uint16)|(Uint32)|(Int8)|(Int16)|(Int32)|(Float(32)|(64))Array\]$/,_r=function(e){return S(e)?e.trim():e},qr=function(e){return e.replace(/([-()\[\]{}+?*.$\^|,:#n;++n)if(r=Br[n],e=t.querySelector("["+r.replace(":","\\:")+"jq]")){i=e.getAttribute(r+"jq");break}return Ur.name_=i},Br=["ng-","data-ng-","ng:","x-ng-"],Hr=/[A-Z]/g,Lr=!1,zr=1,Wr=2,Gr=3,Yr=8,Jr=9,Kr=11,Zr={full:"1.4.6",major:1,minor:4,dot:6,codeName:"multiplicative-elevation"};Oe.expando="ng339";var Xr=Oe.cache={},Qr=1,ei=function(e,t,n){e.addEventListener(t,n,!1)},ti=function(e,t,n){e.removeEventListener(t,n,!1)};Oe._data=function(e){return this.cache[e[this.expando]]||{}};var ni=/([\:\-\_]+(.))/g,ri=/^moz([A-Z])/,ii={mouseleave:"mouseout",mouseenter:"mouseover"},oi=r("jqLite"),ai=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,si=/<|&#?\w+;/,ui=/<([\w:]+)/,ci=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,li={option:[1,'"],thead:[1,"","
            "],col:[2,"","
            "],tr:[2,"","
            "],td:[3,"","
            "],_default:[0,"",""]};li.optgroup=li.option,li.tbody=li.tfoot=li.colgroup=li.caption=li.thead,li.th=li.td;var fi=Oe.prototype={ready:function(n){function r(){i||(i=!0,n())}var i=!1;"complete"===t.readyState?setTimeout(r):(this.on("DOMContentLoaded",r),Oe(e).on("load",r))},toString:function(){var e=[];return o(this,function(t){e.push(""+t)}),"["+e.join(", ")+"]"},eq:function(e){return Er(e>=0?this[e]:this[this.length+e])},length:0,push:Mr,sort:[].sort,splice:[].splice},hi={};o("multiple,selected,checked,disabled,readOnly,required,open".split(","),function(e){hi[gr(e)]=e});var pi={};o("input,select,option,textarea,button,form,details".split(","),function(e){pi[e]=!0});var di={ngMinlength:"minlength",ngMaxlength:"maxlength",ngMin:"min",ngMax:"max",ngPattern:"pattern"};o({data:Pe,removeData:Ve,hasData:Ce},function(e,t){Oe[t]=e}),o({data:Pe,inheritedData:Fe,scope:function(e){return Er.data(e,"$scope")||Fe(e.parentNode||e,["$isolateScope","$scope"])},isolateScope:function(e){return Er.data(e,"$isolateScope")||Er.data(e,"$isolateScopeNoTemplate")},controller:qe,injector:function(e){return Fe(e,"$injector")},removeAttr:function(e,t){e.removeAttribute(t)},hasClass:De,css:function(e,t,n){return t=xe(t),b(n)?void(e.style[t]=n):e.style[t]},attr:function(e,t,r){var i=e.nodeType;if(i!==Gr&&i!==Wr&&i!==Yr){var o=gr(t);if(hi[o]){if(!b(r))return e[t]||(e.attributes.getNamedItem(t)||$).specified?o:n;r?(e[t]=!0,e.setAttribute(t,o)):(e[t]=!1,e.removeAttribute(o))}else if(b(r))e.setAttribute(t,r);else if(e.getAttribute){var a=e.getAttribute(t,2);return null===a?n:a}}},prop:function(e,t,n){return b(n)?void(e[t]=n):e[t]},text:function(){function e(e,t){if(y(t)){var n=e.nodeType;return n===zr||n===Gr?e.textContent:""}e.textContent=t}return e.$dv="",e}(),val:function(e,t){if(y(t)){if(e.multiple&&"select"===_(e)){var n=[];return o(e.options,function(e){e.selected&&n.push(e.value||e.text)}),0===n.length?null:n}return e.value}e.value=t},html:function(e,t){return y(t)?e.innerHTML:(Te(e,!0),void(e.innerHTML=t))},empty:Ue},function(e,t){Oe.prototype[t]=function(t,n){ var r,i,o=this.length;if(e!==Ue&&y(2==e.length&&e!==De&&e!==qe?t:n)){if(w(t)){for(r=0;o>r;r++)if(e===Pe)e(this[r],t);else for(i in t)e(this[r],i,t[i]);return this}for(var a=e.$dv,s=y(a)?Math.min(o,1):o,u=0;s>u;u++){var c=e(this[u],t,n);a=a?a+c:c}return a}for(r=0;o>r;r++)e(this[r],t,n);return this}}),o({removeData:Ve,on:function Na(e,t,n,r){if(b(r))throw oi("onargs","jqLite#on() does not support the `selector` or `eventData` parameters");if(Ee(e)){var i=je(e,!0),o=i.events,a=i.handle;a||(a=i.handle=We(e,o));for(var s=t.indexOf(" ")>=0?t.split(" "):[t],u=s.length;u--;){t=s[u];var c=o[t];c||(o[t]=[],"mouseenter"===t||"mouseleave"===t?Na(e,ii[t],function(e){var n=this,r=e.relatedTarget;r&&(r===n||n.contains(r))||a(e,t)}):"$destroy"!==t&&ei(e,t,a),c=o[t]),c.push(n)}}},off:Ne,one:function(e,t,n){e=Er(e),e.on(t,function r(){e.off(t,n),e.off(t,r)}),e.on(t,n)},replaceWith:function(e,t){var n,r=e.parentNode;Te(e),o(new Oe(t),function(t){n?r.insertBefore(t,n.nextSibling):r.replaceChild(t,e),n=t})},children:function(e){var t=[];return o(e.childNodes,function(e){e.nodeType===zr&&t.push(e)}),t},contents:function(e){return e.contentDocument||e.childNodes||[]},append:function(e,t){var n=e.nodeType;if(n===zr||n===Kr){t=new Oe(t);for(var r=0,i=t.length;i>r;r++){var o=t[r];e.appendChild(o)}}},prepend:function(e,t){if(e.nodeType===zr){var n=e.firstChild;o(new Oe(t),function(t){e.insertBefore(t,n)})}},wrap:function(e,t){t=Er(t).eq(0).clone()[0];var n=e.parentNode;n&&n.replaceChild(t,e),t.appendChild(e)},remove:Be,detach:function(e){Be(e,!0)},after:function(e,t){var n=e,r=e.parentNode;t=new Oe(t);for(var i=0,o=t.length;o>i;i++){var a=t[i];r.insertBefore(a,n.nextSibling),n=a}},addClass:Re,removeClass:Ie,toggleClass:function(e,t,n){t&&o(t.split(" "),function(t){var r=n;y(r)&&(r=!De(e,t)),(r?Re:Ie)(e,t)})},parent:function(e){var t=e.parentNode;return t&&t.nodeType!==Kr?t:null},next:function(e){return e.nextElementSibling},find:function(e,t){return e.getElementsByTagName?e.getElementsByTagName(t):[]},clone:Me,triggerHandler:function(e,t,n){var r,i,a,s=t.type||t,u=je(e),c=u&&u.events,l=c&&c[s];l&&(r={preventDefault:function(){this.defaultPrevented=!0},isDefaultPrevented:function(){return this.defaultPrevented===!0},stopImmediatePropagation:function(){this.immediatePropagationStopped=!0},isImmediatePropagationStopped:function(){return this.immediatePropagationStopped===!0},stopPropagation:$,type:s,target:e},t.type&&(r=f(r,t)),i=U(l),a=n?[r].concat(n):[r],o(i,function(t){r.isImmediatePropagationStopped()||t.apply(e,a)}))}},function(e,t){Oe.prototype[t]=function(t,n,r){for(var i,o=0,a=this.length;a>o;o++)y(i)?(i=e(this[o],t,n,r),b(i)&&(i=Er(i))):_e(i,e(this[o],t,n,r));return b(i)?i:this},Oe.prototype.bind=Oe.prototype.on,Oe.prototype.unbind=Oe.prototype.off}),Je.prototype={put:function(e,t){this[Ye(e,this.nextUid)]=t},get:function(e){return this[Ye(e,this.nextUid)]},remove:function(e){var t=this[e=Ye(e,this.nextUid)];return delete this[e],t}};var $i=[function(){this.$get=[function(){return Je}]}],vi=/^[^\(]*\(\s*([^\)]*)\)/m,mi=/,/,gi=/^\s*(_?)(\S+?)\1\s*$/,yi=/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/gm,bi=r("$injector");Xe.$$annotate=Ze;var wi=r("$animate"),xi=1,Si="ng-animate",Ei=function(){this.$get=["$q","$$rAF",function(e,t){function n(){}return n.all=$,n.chain=$,n.prototype={end:$,cancel:$,resume:$,pause:$,complete:$,then:function(n,r){return e(function(e){t(function(){e()})}).then(n,r)}},n}]},Ci=function(){var e=new Je,t=[];this.$get=["$$AnimateRunner","$rootScope",function(n,r){function i(e,t,n){var r=!1;return t&&(t=S(t)?t.split(" "):Ir(t)?t:[],o(t,function(t){t&&(r=!0,e[t]=n)})),r}function a(){o(t,function(t){var n=e.get(t);if(n){var r=nt(t.attr("class")),i="",a="";o(n,function(e,t){var n=!!r[t];e!==n&&(e?i+=(i.length?" ":"")+t:a+=(a.length?" ":"")+t)}),o(t,function(e){i&&Re(e,i),a&&Ie(e,a)}),e.remove(t)}}),t.length=0}function s(n,o,s){var u=e.get(n)||{},c=i(u,o,!0),l=i(u,s,!1);(c||l)&&(e.put(n,u),t.push(n),1===t.length&&r.$$postDigest(a))}return{enabled:$,on:$,off:$,pin:$,push:function(e,t,r,i){return i&&i(),r=r||{},r.from&&e.css(r.from),r.to&&e.css(r.to),(r.addClass||r.removeClass)&&s(e,r.addClass,r.removeClass),new n}}}]},ki=["$provide",function(e){var t=this;this.$$registeredAnimations=Object.create(null),this.register=function(n,r){if(n&&"."!==n.charAt(0))throw wi("notcsel","Expecting class selector starting with '.' got '{0}'.",n);var i=n+"-animation";t.$$registeredAnimations[n.substr(1)]=i,e.factory(i,r)},this.classNameFilter=function(e){if(1===arguments.length&&(this.$$classNameFilter=e instanceof RegExp?e:null,this.$$classNameFilter)){var t=new RegExp("(\\s+|\\/)"+Si+"(\\s+|\\/)");if(t.test(this.$$classNameFilter.toString()))throw wi("nongcls",'$animateProvider.classNameFilter(regex) prohibits accepting a regex value which matches/contains the "{0}" CSS class.',Si)}return this.$$classNameFilter},this.$get=["$$animateQueue",function(e){function t(e,t,n){if(n){var r=tt(n);!r||r.parentNode||r.previousElementSibling||(n=null)}n?n.after(e):t.prepend(e)}return{on:e.on,off:e.off,pin:e.pin,enabled:e.enabled,cancel:function(e){e.end&&e.end()},enter:function(n,r,i,o){return r=r&&Er(r),i=i&&Er(i),r=r||i.parent(),t(n,r,i),e.push(n,"enter",rt(o))},move:function(n,r,i,o){return r=r&&Er(r),i=i&&Er(i),r=r||i.parent(),t(n,r,i),e.push(n,"move",rt(o))},leave:function(t,n){return e.push(t,"leave",rt(n),function(){t.remove()})},addClass:function(t,n,r){return r=rt(r),r.addClass=et(r.addclass,n),e.push(t,"addClass",r)},removeClass:function(t,n,r){return r=rt(r),r.removeClass=et(r.removeClass,n),e.push(t,"removeClass",r)},setClass:function(t,n,r,i){return i=rt(i),i.addClass=et(i.addClass,n),i.removeClass=et(i.removeClass,r),e.push(t,"setClass",i)},animate:function(t,n,r,i,o){return o=rt(o),o.from=o.from?f(o.from,n):n,o.to=o.to?f(o.to,r):r,i=i||"ng-inline-animate",o.tempClasses=et(o.tempClasses,i),e.push(t,"animate",o)}}}]}],Ai=function(){this.$get=["$$rAF","$q",function(e,t){var n=function(){};return n.prototype={done:function(e){this.defer&&this.defer[e===!0?"reject":"resolve"]()},end:function(){this.done()},cancel:function(){this.done(!0)},getPromise:function(){return this.defer||(this.defer=t.defer()),this.defer.promise},then:function(e,t){return this.getPromise().then(e,t)},"catch":function(e){return this.getPromise()["catch"](e)},"finally":function(e){return this.getPromise()["finally"](e)}},function(t,r){function i(){return e(function(){o(),a||s.done(),a=!0}),s}function o(){r.addClass&&(t.addClass(r.addClass),r.addClass=null),r.removeClass&&(t.removeClass(r.removeClass),r.removeClass=null),r.to&&(t.css(r.to),r.to=null)}r.from&&(t.css(r.from),r.from=null);var a,s=new n;return{start:i,end:i}}}]},Oi=r("$compile");ut.$inject=["$provide","$$sanitizeUriProvider"];var Mi=/^((?:x|data)[\:\-_])/i,Ti=r("$controller"),Ni=/^(\S+)(\s+as\s+(\w+))?$/,Vi=function(){this.$get=["$document",function(e){return function(t){return t?!t.nodeType&&t instanceof Er&&(t=t[0]):t=e[0].body,t.offsetWidth+1}}]},ji="application/json",Pi={"Content-Type":ji+";charset=utf-8"},Di=/^\[|^\{(?!\{)/,Ii={"[":/]$/,"{":/}$/},Ri=/^\)\]\}',?\n/,_i=r("$http"),qi=function(e){return function(){throw _i("legacy","The method `{0}` on the promise returned from `$http` has been disabled.",e)}},Fi=jr.$interpolateMinErr=r("$interpolate");Fi.throwNoconcat=function(e){throw Fi("noconcat","Error while interpolating: {0}\nStrict Contextual Escaping disallows interpolations that concatenate multiple expressions when a trusted value is required. See http://docs.angularjs.org/api/ng.$sce",e)},Fi.interr=function(e,t){return Fi("interr","Can't interpolate: {0}\n{1}",e,t.toString())};var Ui=/^([^\?#]*)(\?([^#]*))?(#(.*))?$/,Bi={http:80,https:443,ftp:21},Hi=r("$location"),Li={$$html5:!1,$$replace:!1,absUrl:Bt("$$absUrl"),url:function(e){if(y(e))return this.$$url;var t=Ui.exec(e);return(t[1]||""===e)&&this.path(decodeURIComponent(t[1])),(t[2]||t[1]||""===e)&&this.search(t[3]||""),this.hash(t[5]||""),this},protocol:Bt("$$protocol"),host:Bt("$$host"),port:Bt("$$port"),path:Ht("$$path",function(e){return e=null!==e?e.toString():"","/"==e.charAt(0)?e:"/"+e}),search:function(e,t){switch(arguments.length){case 0:return this.$$search;case 1:if(S(e)||E(e))e=e.toString(),this.$$search=ee(e);else{if(!w(e))throw Hi("isrcharg","The first argument of the `$location#search()` call must be a string or an object.");e=F(e,{}),o(e,function(t,n){null==t&&delete e[n]}),this.$$search=e}break;default:y(t)||null===t?delete this.$$search[e]:this.$$search[e]=t}return this.$$compose(),this},hash:Ht("$$hash",function(e){return null!==e?e.toString():""}),replace:function(){return this.$$replace=!0,this}};o([Ut,Ft,qt],function(e){e.prototype=Object.create(Li),e.prototype.state=function(t){if(!arguments.length)return this.$$state;if(e!==qt||!this.$$html5)throw Hi("nostate","History API state support is available only in HTML5 mode and only in browsers supporting HTML5 History API");return this.$$state=y(t)?null:t,this}});var zi=r("$parse"),Wi=Function.prototype.call,Gi=Function.prototype.apply,Yi=Function.prototype.bind,Ji=ve();o("+ - * / % === !== == != < > <= >= && || ! = |".split(" "),function(e){Ji[e]=!0});var Ki={n:"\n",f:"\f",r:"\r",t:" ",v:"\x0B","'":"'",'"':'"'},Zi=function(e){this.options=e};Zi.prototype={constructor:Zi,lex:function(e){for(this.text=e,this.index=0,this.tokens=[];this.index="0"&&"9">=e&&"string"==typeof e},isWhitespace:function(e){return" "===e||"\r"===e||" "===e||"\n"===e||"\x0B"===e||" "===e},isIdent:function(e){return e>="a"&&"z">=e||e>="A"&&"Z">=e||"_"===e||"$"===e},isExpOperator:function(e){return"-"===e||"+"===e||this.isNumber(e)},throwError:function(e,t,n){n=n||this.index;var r=b(t)?"s "+t+"-"+this.index+" ["+this.text.substring(t,n)+"]":" "+n;throw zi("lexerr","Lexer Error: {0} at column{1} in expression [{2}].",e,r,this.text)},readNumber:function(){for(var e="",t=this.index;this.index0&&!this.peek("}",")",";","]")&&e.push(this.expressionStatement()),!this.expect(";"))return{type:Xi.Program,body:e}},expressionStatement:function(){return{type:Xi.ExpressionStatement,expression:this.filterChain()}},filterChain:function(){for(var e,t=this.expression();e=this.expect("|");)t=this.filter(t);return t},expression:function(){return this.assignment()},assignment:function(){var e=this.ternary();return this.expect("=")&&(e={type:Xi.AssignmentExpression,left:e,right:this.assignment(),operator:"="}),e},ternary:function(){var e,t,n=this.logicalOR();return this.expect("?")&&(e=this.expression(),this.consume(":"))?(t=this.expression(),{type:Xi.ConditionalExpression,test:n,alternate:e,consequent:t}):n},logicalOR:function(){for(var e=this.logicalAND();this.expect("||");)e={type:Xi.LogicalExpression,operator:"||",left:e,right:this.logicalAND()};return e},logicalAND:function(){for(var e=this.equality();this.expect("&&");)e={type:Xi.LogicalExpression,operator:"&&",left:e,right:this.equality()};return e},equality:function(){for(var e,t=this.relational();e=this.expect("==","!=","===","!==");)t={type:Xi.BinaryExpression,operator:e.text,left:t,right:this.relational()};return t},relational:function(){for(var e,t=this.additive();e=this.expect("<",">","<=",">=");)t={type:Xi.BinaryExpression,operator:e.text,left:t,right:this.additive()};return t},additive:function(){for(var e,t=this.multiplicative();e=this.expect("+","-");)t={type:Xi.BinaryExpression,operator:e.text,left:t,right:this.multiplicative()};return t},multiplicative:function(){for(var e,t=this.unary();e=this.expect("*","/","%");)t={type:Xi.BinaryExpression,operator:e.text,left:t,right:this.unary()};return t},unary:function(){var e;return(e=this.expect("+","-","!"))?{type:Xi.UnaryExpression,operator:e.text,prefix:!0,argument:this.unary()}:this.primary()},primary:function(){var e;this.expect("(")?(e=this.filterChain(),this.consume(")")):this.expect("[")?e=this.arrayDeclaration():this.expect("{")?e=this.object():this.constants.hasOwnProperty(this.peek().text)?e=F(this.constants[this.consume().text]):this.peek().identifier?e=this.identifier():this.peek().constant?e=this.constant():this.throwError("not a primary expression",this.peek());for(var t;t=this.expect("(","[",".");)"("===t.text?(e={type:Xi.CallExpression,callee:e,arguments:this.parseArguments()},this.consume(")")):"["===t.text?(e={type:Xi.MemberExpression,object:e,property:this.expression(),computed:!0},this.consume("]")):"."===t.text?e={type:Xi.MemberExpression,object:e,property:this.identifier(),computed:!1}:this.throwError("IMPOSSIBLE");return e},filter:function(e){for(var t=[e],n={type:Xi.CallExpression,callee:this.identifier(),arguments:t,filter:!0};this.expect(":");)t.push(this.expression());return n},parseArguments:function(){var e=[];if(")"!==this.peekToken().text)do e.push(this.expression());while(this.expect(","));return e},identifier:function(){var e=this.consume();return e.identifier||this.throwError("is not a valid identifier",e),{type:Xi.Identifier,name:e.text}},constant:function(){return{type:Xi.Literal,value:this.consume().value}},arrayDeclaration:function(){var e=[];if("]"!==this.peekToken().text)do{if(this.peek("]"))break;e.push(this.expression())}while(this.expect(","));return this.consume("]"),{type:Xi.ArrayExpression,elements:e}},object:function(){var e,t=[];if("}"!==this.peekToken().text)do{if(this.peek("}"))break;e={type:Xi.Property,kind:"init"},this.peek().constant?e.key=this.constant():this.peek().identifier?e.key=this.identifier():this.throwError("invalid key",this.peek()),this.consume(":"),e.value=this.expression(),t.push(e)}while(this.expect(","));return this.consume("}"),{type:Xi.ObjectExpression,properties:t}},throwError:function(e,t){throw zi("syntax","Syntax Error: Token '{0}' {1} at column {2} of the expression [{3}] starting at [{4}].",t.text,e,t.index+1,this.text,this.text.substring(t.index))},consume:function(e){if(0===this.tokens.length)throw zi("ueoe","Unexpected end of expression: {0}",this.text);var t=this.expect(e);return t||this.throwError("is unexpected, expecting ["+e+"]",this.peek()),t},peekToken:function(){if(0===this.tokens.length)throw zi("ueoe","Unexpected end of expression: {0}",this.text);return this.tokens[0]},peek:function(e,t,n,r){return this.peekAhead(0,e,t,n,r)},peekAhead:function(e,t,n,r,i){if(this.tokens.length>e){var o=this.tokens[e],a=o.text;if(a===t||a===n||a===r||a===i||!t&&!n&&!r&&!i)return o}return!1},expect:function(e,t,n,r){var i=this.peek(e,t,n,r);return i?(this.tokens.shift(),i):!1},constants:{"true":{type:Xi.Literal,value:!0},"false":{type:Xi.Literal,value:!1},"null":{type:Xi.Literal,value:null},undefined:{type:Xi.Literal,value:n},"this":{type:Xi.ThisExpression}}},on.prototype={compile:function(e,t){var r=this,i=this.astBuilder.ast(e);this.state={nextId:0,filters:{},expensiveChecks:t,fn:{vars:[],body:[],own:{}},assign:{vars:[],body:[],own:{}},inputs:[]},Xt(i,r.$filter);var a,s="";if(this.stage="assign",a=tn(i)){this.state.computing="assign";var u=this.nextId();this.recurse(a,u),this.return_(u),s="fn.assign="+this.generateFunction("assign","s,v,l")}var c=Qt(i.body);r.stage="inputs",o(c,function(e,t){var n="fn"+t;r.state[n]={vars:[],body:[],own:{}},r.state.computing=n;var i=r.nextId();r.recurse(e,i),r.return_(i),r.state.inputs.push(n),e.watchId=t}),this.state.computing="fn",this.stage="main",this.recurse(i);var l='"'+this.USE+" "+this.STRICT+'";\n'+this.filterPrefix()+"var fn="+this.generateFunction("fn","s,l,a,i")+s+this.watchFns()+"return fn;",f=new Function("$filter","ensureSafeMemberName","ensureSafeObject","ensureSafeFunction","ifDefined","plus","text",l)(this.$filter,Wt,Gt,Yt,Jt,Kt,e);return this.state=this.stage=n,f.literal=nn(i),f.constant=rn(i),f},USE:"use",STRICT:"strict",watchFns:function(){var e=[],t=this.state.inputs,n=this;return o(t,function(t){e.push("var "+t+"="+n.generateFunction(t,"s"))}),t.length&&e.push("fn.inputs=["+t.join(",")+"];"),e.join("")},generateFunction:function(e,t){return"function("+t+"){"+this.varsPrefix(e)+this.body(e)+"};"},filterPrefix:function(){var e=[],t=this;return o(this.state.filters,function(n,r){e.push(n+"=$filter("+t.escape(r)+")")}),e.length?"var "+e.join(",")+";":""},varsPrefix:function(e){return this.state[e].vars.length?"var "+this.state[e].vars.join(",")+";":""},body:function(e){return this.state[e].body.join("")},recurse:function(e,t,r,i,a,s){var u,c,l,f,h=this;if(i=i||$,!s&&b(e.watchId))return t=t||this.nextId(),void this.if_("i",this.lazyAssign(t,this.computedMember("i",e.watchId)),this.lazyRecurse(e,t,r,i,a,!0));switch(e.type){case Xi.Program:o(e.body,function(t,r){h.recurse(t.expression,n,n,function(e){c=e}),r!==e.body.length-1?h.current().body.push(c,";"):h.return_(c)});break;case Xi.Literal:f=this.escape(e.value),this.assign(t,f),i(f);break;case Xi.UnaryExpression:this.recurse(e.argument,n,n,function(e){c=e}),f=e.operator+"("+this.ifDefined(c,0)+")",this.assign(t,f),i(f);break;case Xi.BinaryExpression:this.recurse(e.left,n,n,function(e){u=e}),this.recurse(e.right,n,n,function(e){c=e}),f="+"===e.operator?this.plus(u,c):"-"===e.operator?this.ifDefined(u,0)+e.operator+this.ifDefined(c,0):"("+u+")"+e.operator+"("+c+")",this.assign(t,f),i(f);break;case Xi.LogicalExpression:t=t||this.nextId(),h.recurse(e.left,t),h.if_("&&"===e.operator?t:h.not(t),h.lazyRecurse(e.right,t)),i(t);break;case Xi.ConditionalExpression:t=t||this.nextId(),h.recurse(e.test,t),h.if_(t,h.lazyRecurse(e.alternate,t),h.lazyRecurse(e.consequent,t)),i(t);break;case Xi.Identifier:t=t||this.nextId(),r&&(r.context="inputs"===h.stage?"s":this.assign(this.nextId(),this.getHasOwnProperty("l",e.name)+"?l:s"),r.computed=!1,r.name=e.name),Wt(e.name),h.if_("inputs"===h.stage||h.not(h.getHasOwnProperty("l",e.name)),function(){h.if_("inputs"===h.stage||"s",function(){a&&1!==a&&h.if_(h.not(h.nonComputedMember("s",e.name)),h.lazyAssign(h.nonComputedMember("s",e.name),"{}")),h.assign(t,h.nonComputedMember("s",e.name))})},t&&h.lazyAssign(t,h.nonComputedMember("l",e.name))),(h.state.expensiveChecks||sn(e.name))&&h.addEnsureSafeObject(t),i(t);break;case Xi.MemberExpression:u=r&&(r.context=this.nextId())||this.nextId(),t=t||this.nextId(),h.recurse(e.object,u,n,function(){h.if_(h.notNull(u),function(){e.computed?(c=h.nextId(),h.recurse(e.property,c),h.addEnsureSafeMemberName(c),a&&1!==a&&h.if_(h.not(h.computedMember(u,c)),h.lazyAssign(h.computedMember(u,c),"{}")),f=h.ensureSafeObject(h.computedMember(u,c)),h.assign(t,f),r&&(r.computed=!0,r.name=c)):(Wt(e.property.name),a&&1!==a&&h.if_(h.not(h.nonComputedMember(u,e.property.name)),h.lazyAssign(h.nonComputedMember(u,e.property.name),"{}")),f=h.nonComputedMember(u,e.property.name),(h.state.expensiveChecks||sn(e.property.name))&&(f=h.ensureSafeObject(f)),h.assign(t,f),r&&(r.computed=!1,r.name=e.property.name))},function(){h.assign(t,"undefined")}),i(t)},!!a);break;case Xi.CallExpression:t=t||this.nextId(),e.filter?(c=h.filter(e.callee.name),l=[],o(e.arguments,function(e){var t=h.nextId();h.recurse(e,t),l.push(t)}),f=c+"("+l.join(",")+")",h.assign(t,f),i(t)):(c=h.nextId(),u={},l=[],h.recurse(e.callee,c,u,function(){h.if_(h.notNull(c),function(){h.addEnsureSafeFunction(c),o(e.arguments,function(e){h.recurse(e,h.nextId(),n,function(e){l.push(h.ensureSafeObject(e))})}),u.name?(h.state.expensiveChecks||h.addEnsureSafeObject(u.context),f=h.member(u.context,u.name,u.computed)+"("+l.join(",")+")"):f=c+"("+l.join(",")+")",f=h.ensureSafeObject(f),h.assign(t,f)},function(){h.assign(t,"undefined")}),i(t)}));break;case Xi.AssignmentExpression:if(c=this.nextId(),u={},!en(e.left))throw zi("lval","Trying to assing a value to a non l-value");this.recurse(e.left,n,u,function(){h.if_(h.notNull(u.context),function(){h.recurse(e.right,c),h.addEnsureSafeObject(h.member(u.context,u.name,u.computed)),f=h.member(u.context,u.name,u.computed)+e.operator+c,h.assign(t,f),i(t||f)})},1);break;case Xi.ArrayExpression:l=[],o(e.elements,function(e){h.recurse(e,h.nextId(),n,function(e){l.push(e)})}),f="["+l.join(",")+"]",this.assign(t,f),i(f);break;case Xi.ObjectExpression:l=[],o(e.properties,function(e){h.recurse(e.value,h.nextId(),n,function(t){l.push(h.escape(e.key.type===Xi.Identifier?e.key.name:""+e.key.value)+":"+t)})}),f="{"+l.join(",")+"}",this.assign(t,f),i(f);break;case Xi.ThisExpression:this.assign(t,"s"),i("s");break;case Xi.NGValueParameter:this.assign(t,"v"),i("v")}},getHasOwnProperty:function(e,t){var n=e+"."+t,r=this.current().own;return r.hasOwnProperty(n)||(r[n]=this.nextId(!1,e+"&&("+this.escape(t)+" in "+e+")")),r[n]},assign:function(e,t){return e?(this.current().body.push(e,"=",t,";"),e):void 0},filter:function(e){return this.state.filters.hasOwnProperty(e)||(this.state.filters[e]=this.nextId(!0)),this.state.filters[e]},ifDefined:function(e,t){return"ifDefined("+e+","+this.escape(t)+")"},plus:function(e,t){return"plus("+e+","+t+")"},return_:function(e){this.current().body.push("return ",e,";")},if_:function(e,t,n){if(e===!0)t();else{var r=this.current().body;r.push("if(",e,"){"),t(),r.push("}"),n&&(r.push("else{"),n(),r.push("}"))}},not:function(e){return"!("+e+")"},notNull:function(e){return e+"!=null"},nonComputedMember:function(e,t){return e+"."+t},computedMember:function(e,t){return e+"["+t+"]"},member:function(e,t,n){return n?this.computedMember(e,t):this.nonComputedMember(e,t)},addEnsureSafeObject:function(e){this.current().body.push(this.ensureSafeObject(e),";")},addEnsureSafeMemberName:function(e){this.current().body.push(this.ensureSafeMemberName(e),";")},addEnsureSafeFunction:function(e){this.current().body.push(this.ensureSafeFunction(e),";")},ensureSafeObject:function(e){return"ensureSafeObject("+e+",text)"},ensureSafeMemberName:function(e){return"ensureSafeMemberName("+e+",text)"},ensureSafeFunction:function(e){return"ensureSafeFunction("+e+",text)"},lazyRecurse:function(e,t,n,r,i,o){var a=this;return function(){a.recurse(e,t,n,r,i,o)}},lazyAssign:function(e,t){var n=this;return function(){n.assign(e,t)}},stringEscapeRegex:/[^ a-zA-Z0-9]/g,stringEscapeFn:function(e){return"\\u"+("0000"+e.charCodeAt(0).toString(16)).slice(-4)},escape:function(e){if(S(e))return"'"+e.replace(this.stringEscapeRegex,this.stringEscapeFn)+"'";if(E(e))return e.toString();if(e===!0)return"true";if(e===!1)return"false";if(null===e)return"null";if("undefined"==typeof e)return"undefined";throw zi("esc","IMPOSSIBLE")},nextId:function(e,t){var n="v"+this.state.nextId++;return e||this.current().vars.push(n+(t?"="+t:"")),n},current:function(){return this.state[this.state.computing]}},an.prototype={compile:function(e,t){var n=this,r=this.astBuilder.ast(e);this.expression=e,this.expensiveChecks=t,Xt(r,n.$filter);var i,a;(i=tn(r))&&(a=this.recurse(i));var s,u=Qt(r.body);u&&(s=[],o(u,function(e,t){var r=n.recurse(e);e.input=r,s.push(r),e.watchId=t}));var c=[];o(r.body,function(e){c.push(n.recurse(e.expression))});var l=0===r.body.length?function(){}:1===r.body.length?c[0]:function(e,t){var n;return o(c,function(r){n=r(e,t)}),n};return a&&(l.assign=function(e,t,n){return a(e,n,t)}),s&&(l.inputs=s),l.literal=nn(r),l.constant=rn(r),l},recurse:function(e,t,r){var i,a,s,u=this;if(e.input)return this.inputs(e.input,e.watchId);switch(e.type){case Xi.Literal:return this.value(e.value,t);case Xi.UnaryExpression:return a=this.recurse(e.argument),this["unary"+e.operator](a,t);case Xi.BinaryExpression:return i=this.recurse(e.left),a=this.recurse(e.right),this["binary"+e.operator](i,a,t);case Xi.LogicalExpression:return i=this.recurse(e.left),a=this.recurse(e.right),this["binary"+e.operator](i,a,t);case Xi.ConditionalExpression:return this["ternary?:"](this.recurse(e.test),this.recurse(e.alternate),this.recurse(e.consequent),t);case Xi.Identifier:return Wt(e.name,u.expression),u.identifier(e.name,u.expensiveChecks||sn(e.name),t,r,u.expression);case Xi.MemberExpression:return i=this.recurse(e.object,!1,!!r),e.computed||(Wt(e.property.name,u.expression),a=e.property.name),e.computed&&(a=this.recurse(e.property)),e.computed?this.computedMember(i,a,t,r,u.expression):this.nonComputedMember(i,a,u.expensiveChecks,t,r,u.expression);case Xi.CallExpression:return s=[],o(e.arguments,function(e){s.push(u.recurse(e))}),e.filter&&(a=this.$filter(e.callee.name)),e.filter||(a=this.recurse(e.callee,!0)),e.filter?function(e,r,i,o){for(var u=[],c=0;c":function(e,t,n){return function(r,i,o,a){var s=e(r,i,o,a)>t(r,i,o,a);return n?{value:s}:s}},"binary<=":function(e,t,n){return function(r,i,o,a){var s=e(r,i,o,a)<=t(r,i,o,a);return n?{value:s}:s}},"binary>=":function(e,t,n){return function(r,i,o,a){var s=e(r,i,o,a)>=t(r,i,o,a);return n?{value:s}:s}},"binary&&":function(e,t,n){return function(r,i,o,a){var s=e(r,i,o,a)&&t(r,i,o,a);return n?{value:s}:s}},"binary||":function(e,t,n){return function(r,i,o,a){var s=e(r,i,o,a)||t(r,i,o,a);return n?{value:s}:s}},"ternary?:":function(e,t,n,r){return function(i,o,a,s){var u=e(i,o,a,s)?t(i,o,a,s):n(i,o,a,s);return r?{value:u}:u}},value:function(e,t){return function(){return t?{context:n,name:n,value:e}:e}},identifier:function(e,t,r,i,o){return function(a,s,u,c){var l=s&&e in s?s:a;i&&1!==i&&l&&!l[e]&&(l[e]={});var f=l?l[e]:n;return t&&Gt(f,o),r?{context:l,name:e,value:f}:f}},computedMember:function(e,t,n,r,i){return function(o,a,s,u){var c,l,f=e(o,a,s,u);return null!=f&&(c=t(o,a,s,u),Wt(c,i),r&&1!==r&&f&&!f[c]&&(f[c]={}),l=f[c],Gt(l,i)),n?{context:f,name:c,value:l}:l}},nonComputedMember:function(e,t,r,i,o,a){return function(s,u,c,l){var f=e(s,u,c,l);o&&1!==o&&f&&!f[t]&&(f[t]={});var h=null!=f?f[t]:n;return(r||sn(t))&&Gt(h,a),i?{context:f,name:t,value:h}:h}},inputs:function(e,t){return function(n,r,i,o){return o?o[t]:e(n,r,i)}}};var Qi=function(e,t,n){this.lexer=e,this.$filter=t,this.options=n,this.ast=new Xi(this.lexer),this.astCompiler=n.csp?new an(this.ast,t):new on(this.ast,t)};Qi.prototype={constructor:Qi,parse:function(e){return this.astCompiler.compile(e,this.options.expensiveChecks)}};var eo=(ve(),ve(),Object.prototype.valueOf),to=r("$sce"),no={HTML:"html",CSS:"css",URL:"url",RESOURCE_URL:"resourceUrl",JS:"js"},Oi=r("$compile"),ro=t.createElement("a"),io=En(e.location.href);An.$inject=["$document"],Mn.$inject=["$provide"],Pn.$inject=["$locale"],Dn.$inject=["$locale"];var oo=".",ao={yyyy:_n("FullYear",4),yy:_n("FullYear",2,0,!0),y:_n("FullYear",1),MMMM:qn("Month"),MMM:qn("Month",!0),MM:_n("Month",2,1),M:_n("Month",1,1),dd:_n("Date",2),d:_n("Date",1),HH:_n("Hours",2),H:_n("Hours",1),hh:_n("Hours",2,-12),h:_n("Hours",1,-12),mm:_n("Minutes",2),m:_n("Minutes",1),ss:_n("Seconds",2),s:_n("Seconds",1),sss:_n("Milliseconds",3),EEEE:qn("Day"),EEE:qn("Day",!0),a:Ln,Z:Fn,ww:Hn(2),w:Hn(1),G:zn,GG:zn,GGG:zn,GGGG:Wn},so=/((?:[^yMdHhmsaZEwG']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+|H+|h+|m+|s+|a|Z|G+|w+))(.*)/,uo=/^\-?\d+$/;Gn.$inject=["$locale"];var co=m(gr),lo=m(br); Kn.$inject=["$parse"];var fo=m({restrict:"E",compile:function(e,t){return t.href||t.xlinkHref?void 0:function(e,t){if("a"===t[0].nodeName.toLowerCase()){var n="[object SVGAnimatedString]"===Tr.call(t.prop("href"))?"xlink:href":"href";t.on("click",function(e){t.attr(n)||e.preventDefault()})}}}}),ho={};o(hi,function(e,t){function n(e,n,i){e.$watch(i[r],function(e){i.$set(t,!!e)})}if("multiple"!=e){var r=ct("ng-"+t),i=n;"checked"===e&&(i=function(e,t,i){i.ngModel!==i[r]&&n(e,t,i)}),ho[r]=function(){return{restrict:"A",priority:100,link:i}}}}),o(di,function(e,t){ho[t]=function(){return{priority:100,link:function(e,n,r){if("ngPattern"===t&&"/"==r.ngPattern.charAt(0)){var i=r.ngPattern.match(vr);if(i)return void r.$set("ngPattern",new RegExp(i[1],i[2]))}e.$watch(r[t],function(e){r.$set(t,e)})}}}}),o(["src","srcset","href"],function(e){var t=ct("ng-"+e);ho[t]=function(){return{priority:99,link:function(n,r,i){var o=e,a=e;"href"===e&&"[object SVGAnimatedString]"===Tr.call(r.prop("href"))&&(a="xlinkHref",i.$attr[a]="xlink:href",o=null),i.$observe(t,function(t){return t?(i.$set(a,t),void(Sr&&o&&r.prop(o,i[a]))):void("href"===e&&i.$set(a,null))})}}}});var po={$addControl:$,$$renameControl:Xn,$removeControl:$,$setValidity:$,$setDirty:$,$setPristine:$,$setSubmitted:$},$o="ng-submitted";Qn.$inject=["$element","$attrs","$scope","$animate","$interpolate"];var vo=function(e){return["$timeout","$parse",function(t,r){function i(e){return""===e?r('this[""]').assign:r(e).assign||$}var o={name:"form",restrict:e?"EAC":"E",require:["form","^^?form"],controller:Qn,compile:function(r,o){r.addClass(Ko).addClass(Yo);var a=o.name?"name":e&&o.ngForm?"ngForm":!1;return{pre:function(e,r,o,s){var u=s[0];if(!("action"in o)){var c=function(t){e.$apply(function(){u.$commitViewValue(),u.$setSubmitted()}),t.preventDefault()};ei(r[0],"submit",c),r.on("$destroy",function(){t(function(){ti(r[0],"submit",c)},0,!1)})}var l=s[1]||u.$$parentForm;l.$addControl(u);var h=a?i(u.$name):$;a&&(h(e,u),o.$observe(a,function(t){u.$name!==t&&(h(e,n),u.$$parentForm.$$renameControl(u,t),(h=i(u.$name))(e,u))})),r.on("$destroy",function(){u.$$parentForm.$removeControl(u),h(e,n),f(u,po)})}}}};return o}]},mo=vo(),go=vo(!0),yo=/\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z)/,bo=/^(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?$/,wo=/^[a-z0-9!#$%&'*+\/=?^_`{|}~.-]+@[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i,xo=/^\s*(\-|\+)?(\d+|(\d*(\.\d*)))([eE][+-]?\d+)?\s*$/,So=/^(\d{4})-(\d{2})-(\d{2})$/,Eo=/^(\d{4})-(\d\d)-(\d\d)T(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,Co=/^(\d{4})-W(\d\d)$/,ko=/^(\d{4})-(\d\d)$/,Ao=/^(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,Oo={text:tr,date:or("date",So,ir(So,["yyyy","MM","dd"]),"yyyy-MM-dd"),"datetime-local":or("datetimelocal",Eo,ir(Eo,["yyyy","MM","dd","HH","mm","ss","sss"]),"yyyy-MM-ddTHH:mm:ss.sss"),time:or("time",Ao,ir(Ao,["HH","mm","ss","sss"]),"HH:mm:ss.sss"),week:or("week",Co,rr,"yyyy-Www"),month:or("month",ko,ir(ko,["yyyy","MM"]),"yyyy-MM"),number:sr,url:ur,email:cr,radio:lr,checkbox:hr,hidden:$,button:$,submit:$,reset:$,file:$},Mo=["$browser","$sniffer","$filter","$parse",function(e,t,n,r){return{restrict:"E",require:["?ngModel"],link:{pre:function(i,o,a,s){s[0]&&(Oo[gr(a.type)]||Oo.text)(i,o,a,s[0],t,e,n,r)}}}}],To=/^(true|false|\d+)$/,No=function(){return{restrict:"A",priority:100,compile:function(e,t){return To.test(t.ngValue)?function(e,t,n){n.$set("value",e.$eval(n.ngValue))}:function(e,t,n){e.$watch(n.ngValue,function(e){n.$set("value",e)})}}}},Vo=["$compile",function(e){return{restrict:"AC",compile:function(t){return e.$$addBindingClass(t),function(t,n,r){e.$$addBindingInfo(n,r.ngBind),n=n[0],t.$watch(r.ngBind,function(e){n.textContent=y(e)?"":e})}}}}],jo=["$interpolate","$compile",function(e,t){return{compile:function(n){return t.$$addBindingClass(n),function(n,r,i){var o=e(r.attr(i.$attr.ngBindTemplate));t.$$addBindingInfo(r,o.expressions),r=r[0],i.$observe("ngBindTemplate",function(e){r.textContent=y(e)?"":e})}}}}],Po=["$sce","$parse","$compile",function(e,t,n){return{restrict:"A",compile:function(r,i){var o=t(i.ngBindHtml),a=t(i.ngBindHtml,function(e){return(e||"").toString()});return n.$$addBindingClass(r),function(t,r,i){n.$$addBindingInfo(r,i.ngBindHtml),t.$watch(a,function(){r.html(e.getTrustedHtml(o(t))||"")})}}}}],Do=m({restrict:"A",require:"ngModel",link:function(e,t,n,r){r.$viewChangeListeners.push(function(){e.$eval(n.ngChange)})}}),Io=pr("",!0),Ro=pr("Odd",0),_o=pr("Even",1),qo=Zn({compile:function(e,t){t.$set("ngCloak",n),e.removeClass("ng-cloak")}}),Fo=[function(){return{restrict:"A",scope:!0,controller:"@",priority:500}}],Uo={},Bo={blur:!0,focus:!0};o("click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste".split(" "),function(e){var t=ct("ng-"+e);Uo[t]=["$parse","$rootScope",function(n,r){return{restrict:"A",compile:function(i,o){var a=n(o[t],null,!0);return function(t,n){n.on(e,function(n){var i=function(){a(t,{$event:n})};Bo[e]&&r.$$phase?t.$evalAsync(i):t.$apply(i)})}}}}]});var Ho=["$animate",function(e){return{multiElement:!0,transclude:"element",priority:600,terminal:!0,restrict:"A",$$tlb:!0,link:function(n,r,i,o,a){var s,u,c;n.$watch(i.ngIf,function(n){n?u||a(function(n,o){u=o,n[n.length++]=t.createComment(" end ngIf: "+i.ngIf+" "),s={clone:n},e.enter(n,r.parent(),r)}):(c&&(c.remove(),c=null),u&&(u.$destroy(),u=null),s&&(c=$e(s.clone),e.leave(c).then(function(){c=null}),s=null))})}}}],Lo=["$templateRequest","$anchorScroll","$animate",function(e,t,n){return{restrict:"ECA",priority:400,terminal:!0,transclude:"element",controller:jr.noop,compile:function(r,i){var o=i.ngInclude||i.src,a=i.onload||"",s=i.autoscroll;return function(r,i,u,c,l){var f,h,p,d=0,$=function(){h&&(h.remove(),h=null),f&&(f.$destroy(),f=null),p&&(n.leave(p).then(function(){h=null}),h=p,p=null)};r.$watch(o,function(o){var u=function(){!b(s)||s&&!r.$eval(s)||t()},h=++d;o?(e(o,!0).then(function(e){if(h===d){var t=r.$new();c.template=e;var s=l(t,function(e){$(),n.enter(e,null,i).then(u)});f=t,p=s,f.$emit("$includeContentLoaded",o),r.$eval(a)}},function(){h===d&&($(),r.$emit("$includeContentError",o))}),r.$emit("$includeContentRequested",o)):($(),c.template=null)})}}}}],zo=["$compile",function(e){return{restrict:"ECA",priority:-400,require:"ngInclude",link:function(n,r,i,o){return/SVG/.test(r[0].toString())?(r.empty(),void e(ke(o.template,t).childNodes)(n,function(e){r.append(e)},{futureParentElement:r})):(r.html(o.template),void e(r.contents())(n))}}}],Wo=Zn({priority:450,compile:function(){return{pre:function(e,t,n){e.$eval(n.ngInit)}}}}),Go=function(){return{restrict:"A",priority:100,require:"ngModel",link:function(e,t,r,i){var a=t.attr(r.$attr.ngList)||", ",s="false"!==r.ngTrim,u=s?_r(a):a,c=function(e){if(!y(e)){var t=[];return e&&o(e.split(u),function(e){e&&t.push(s?_r(e):e)}),t}};i.$parsers.push(c),i.$formatters.push(function(e){return Ir(e)?e.join(a):n}),i.$isEmpty=function(e){return!e||!e.length}}}},Yo="ng-valid",Jo="ng-invalid",Ko="ng-pristine",Zo="ng-dirty",Xo="ng-untouched",Qo="ng-touched",ea="ng-pending",ta=r("ngModel"),na=["$scope","$exceptionHandler","$attrs","$element","$parse","$animate","$timeout","$rootScope","$q","$interpolate",function(e,t,r,i,a,s,u,c,l,f){this.$viewValue=Number.NaN,this.$modelValue=Number.NaN,this.$$rawModelValue=n,this.$validators={},this.$asyncValidators={},this.$parsers=[],this.$formatters=[],this.$viewChangeListeners=[],this.$untouched=!0,this.$touched=!1,this.$pristine=!0,this.$dirty=!1,this.$valid=!0,this.$invalid=!1,this.$error={},this.$$success={},this.$pending=n,this.$name=f(r.name||"",!1)(e),this.$$parentForm=po;var h,p=a(r.ngModel),d=p.assign,v=p,m=d,g=null,w=this;this.$$setOptions=function(e){if(w.$options=e,e&&e.getterSetter){var t=a(r.ngModel+"()"),n=a(r.ngModel+"($$$p)");v=function(e){var n=p(e);return k(n)&&(n=t(e)),n},m=function(e,t){k(p(e))?n(e,{$$$p:w.$modelValue}):d(e,w.$modelValue)}}else if(!p.assign)throw ta("nonassign","Expression '{0}' is non-assignable. Element: {1}",r.ngModel,X(i))},this.$render=$,this.$isEmpty=function(e){return y(e)||""===e||null===e||e!==e};var x=0;dr({ctrl:this,$element:i,set:function(e,t){e[t]=!0},unset:function(e,t){delete e[t]},$animate:s}),this.$setPristine=function(){w.$dirty=!1,w.$pristine=!0,s.removeClass(i,Zo),s.addClass(i,Ko)},this.$setDirty=function(){w.$dirty=!0,w.$pristine=!1,s.removeClass(i,Ko),s.addClass(i,Zo),w.$$parentForm.$setDirty()},this.$setUntouched=function(){w.$touched=!1,w.$untouched=!0,s.setClass(i,Xo,Qo)},this.$setTouched=function(){w.$touched=!0,w.$untouched=!1,s.setClass(i,Qo,Xo)},this.$rollbackViewValue=function(){u.cancel(g),w.$viewValue=w.$$lastCommittedViewValue,w.$render()},this.$validate=function(){if(!E(w.$modelValue)||!isNaN(w.$modelValue)){var e=w.$$lastCommittedViewValue,t=w.$$rawModelValue,r=w.$valid,i=w.$modelValue,o=w.$options&&w.$options.allowInvalid;w.$$runValidators(t,e,function(e){o||r===e||(w.$modelValue=e?t:n,w.$modelValue!==i&&w.$$writeModelToScope())})}},this.$$runValidators=function(e,t,r){function i(){var e=w.$$parserName||"parse";return y(h)?(u(e,null),!0):(h||(o(w.$validators,function(e,t){u(t,null)}),o(w.$asyncValidators,function(e,t){u(t,null)})),u(e,h),h)}function a(){var n=!0;return o(w.$validators,function(r,i){var o=r(e,t);n=n&&o,u(i,o)}),n?!0:(o(w.$asyncValidators,function(e,t){u(t,null)}),!1)}function s(){var r=[],i=!0;o(w.$asyncValidators,function(o,a){var s=o(e,t);if(!P(s))throw ta("$asyncValidators","Expected asynchronous validator to return a promise but got '{0}' instead.",s);u(a,n),r.push(s.then(function(){u(a,!0)},function(e){i=!1,u(a,!1)}))}),r.length?l.all(r).then(function(){c(i)},$):c(!0)}function u(e,t){f===x&&w.$setValidity(e,t)}function c(e){f===x&&r(e)}x++;var f=x;return i()&&a()?void s():void c(!1)},this.$commitViewValue=function(){var e=w.$viewValue;u.cancel(g),(w.$$lastCommittedViewValue!==e||""===e&&w.$$hasNativeValidators)&&(w.$$lastCommittedViewValue=e,w.$pristine&&this.$setDirty(),this.$$parseAndValidate())},this.$$parseAndValidate=function(){function t(){w.$modelValue!==a&&w.$$writeModelToScope()}var r=w.$$lastCommittedViewValue,i=r;if(h=y(i)?n:!0)for(var o=0;oo;o++){var u=e===n?o:n[o],c=(e[u],S(e[u],u)),l=v(e[u],c);if(t.push(l),s[2]||s[1]){var f=g(r,c);t.push(f)}if(s[4]){var h=b(r,c);t.push(h)}}return t}),getOptions:function(){for(var e=[],t={},n=w(r)||[],i=a(n),s=i.length,u=0;s>u;u++){var c=n===i?u:i[u],l=n[c],h=S(l,c),p=d(r,h),$=v(p,h),x=g(r,h),E=y(r,h),C=b(r,h),k=new o($,p,x,E,C);e.push(k),t[$]=k}return{items:e,selectValueMap:t,getOptionFromViewValue:function(e){return t[m(e)]},getViewValueFromOption:function(e){return f?jr.copy(e.viewValue):e.viewValue}}}}}var a=t.createElement("option"),s=t.createElement("optgroup");return{restrict:"A",terminal:!0,require:["select","?ngModel"],link:function(t,n,i,u){function c(e,t){e.element=t,t.disabled=e.disabled,e.value!==t.value&&(t.value=e.selectValue),e.label!==t.label&&(t.label=e.label,t.textContent=e.label)}function l(e,t,n,r){var i;return t&&gr(t.nodeName)===n?i=t:(i=r.cloneNode(!1),t?e.insertBefore(i,t):e.appendChild(i)),i}function f(e){for(var t;e;)t=e.nextSibling,Be(e),e=t}function h(e){var t=$&&$[0],n=x&&x[0];if(t||n)for(;e&&(e===t||e===n);)e=e.nextSibling;return e}function p(){var e=S&&v.readValue();S=E.getOptions();var t={},r=n[0].firstChild;if(w&&n.prepend($),r=h(r),S.items.forEach(function(e){var i,o,u;e.group?(i=t[e.group],i||(o=l(n[0],r,"optgroup",s),r=o.nextSibling,o.label=e.group,i=t[e.group]={groupElement:o,currentOptionElement:o.firstChild}),u=l(i.groupElement,i.currentOptionElement,"option",a),c(e,u),i.currentOptionElement=u.nextSibling):(u=l(n[0],r,"option",a),c(e,u),r=u.nextSibling)}),Object.keys(t).forEach(function(e){f(t[e].currentOptionElement)}),f(r),d.$render(),!d.$isEmpty(e)){var i=v.readValue();(E.trackBy?B(e,i):e===i)||(d.$setViewValue(i),d.$render())}}var d=u[1];if(d){for(var $,v=u[0],m=i.multiple,g=0,y=n.children(),b=y.length;b>g;g++)if(""===y[g].value){$=y.eq(g);break}var w=!!$,x=Er(a.cloneNode(!1));x.val("?");var S,E=r(i.ngOptions,n,t),C=function(){w||n.prepend($),n.val(""),$.prop("selected",!0),$.attr("selected",!0)},k=function(){w||$.remove()},A=function(){n.prepend(x),n.val("?"),x.prop("selected",!0),x.attr("selected",!0)},O=function(){x.remove()};m?(d.$isEmpty=function(e){return!e||0===e.length},v.writeValue=function(e){S.items.forEach(function(e){e.element.selected=!1}),e&&e.forEach(function(e){var t=S.getOptionFromViewValue(e);t&&!t.disabled&&(t.element.selected=!0)})},v.readValue=function(){var e=n.val()||[],t=[];return o(e,function(e){var n=S.selectValueMap[e];n&&!n.disabled&&t.push(S.getViewValueFromOption(n))}),t},E.trackBy&&t.$watchCollection(function(){return Ir(d.$viewValue)?d.$viewValue.map(function(e){return E.getTrackByValue(e)}):void 0},function(){d.$render()})):(v.writeValue=function(e){var t=S.getOptionFromViewValue(e);t&&!t.disabled?n[0].value!==t.selectValue&&(O(),k(),n[0].value=t.selectValue,t.element.selected=!0,t.element.setAttribute("selected","selected")):null===e||w?(O(),C()):(k(),A())},v.readValue=function(){var e=S.selectValueMap[n.val()];return e&&!e.disabled?(k(),O(),S.getViewValueFromOption(e)):null},E.trackBy&&t.$watch(function(){return E.getTrackByValue(d.$viewValue)},function(){d.$render()})),w?($.remove(),e($)(t),$.removeClass("ng-scope")):$=Er(a.cloneNode(!1)),p(),t.$watchCollection(E.getWatchables,p)}}}}],la=["$locale","$interpolate","$log",function(e,t,n){var r=/{}/g,i=/^when(Minus)?(.+)$/;return{link:function(a,s,u){function c(e){s.text(e||"")}var l,f=u.count,h=u.$attr.when&&s.attr(u.$attr.when),p=u.offset||0,d=a.$eval(h)||{},v={},m=t.startSymbol(),g=t.endSymbol(),b=m+f+"-"+p+g,w=jr.noop;o(u,function(e,t){var n=i.exec(t);if(n){var r=(n[1]?"-":"")+gr(n[2]);d[r]=s.attr(u.$attr[t])}}),o(d,function(e,n){v[n]=t(e.replace(r,b))}),a.$watch(f,function(t){var r=parseFloat(t),i=isNaN(r);if(i||r in d||(r=e.pluralCat(r-p)),r!==l&&!(i&&E(l)&&isNaN(l))){w();var o=v[r];y(o)?(null!=t&&n.debug("ngPluralize: no rule defined for '"+r+"' in "+h),w=$,c()):w=a.$watch(o,c),l=r}})}}}],fa=["$parse","$animate",function(e,a){var s="$$NG_REMOVED",u=r("ngRepeat"),c=function(e,t,n,r,i,o,a){e[n]=r,i&&(e[i]=o),e.$index=t,e.$first=0===t,e.$last=t===a-1,e.$middle=!(e.$first||e.$last),e.$odd=!(e.$even=0===(1&t))},l=function(e){return e.clone[0]},f=function(e){return e.clone[e.clone.length-1]};return{restrict:"A",multiElement:!0,transclude:"element",priority:1e3,terminal:!0,$$tlb:!0,compile:function(r,h){var p=h.ngRepeat,d=t.createComment(" end ngRepeat: "+p+" "),$=p.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+track\s+by\s+([\s\S]+?))?\s*$/);if(!$)throw u("iexp","Expected expression in form of '_item_ in _collection_[ track by _id_]' but got '{0}'.",p);var v=$[1],m=$[2],g=$[3],y=$[4];if($=v.match(/^(?:(\s*[\$\w]+)|\(\s*([\$\w]+)\s*,\s*([\$\w]+)\s*\))$/),!$)throw u("iidexp","'_item_' in '_item_ in _collection_' should be an identifier or '(_key_, _value_)' expression, but got '{0}'.",v);var b=$[3]||$[1],w=$[2];if(g&&(!/^[$a-zA-Z_][$a-zA-Z0-9_]*$/.test(g)||/^(null|undefined|this|\$index|\$first|\$middle|\$last|\$even|\$odd|\$parent|\$root|\$id)$/.test(g)))throw u("badident","alias '{0}' is invalid --- must be a valid JS identifier which is not a reserved name.",g);var x,S,E,C,k={$id:Ye};return y?x=e(y):(E=function(e,t){return Ye(t)},C=function(e){return e}),function(e,t,r,h,$){x&&(S=function(t,n,r){return w&&(k[w]=t),k[b]=n,k.$index=r,x(e,k)});var v=ve();e.$watchCollection(m,function(r){var h,m,y,x,k,A,O,M,T,N,V,j,P=t[0],D=ve();if(g&&(e[g]=r),i(r))T=r,M=S||E;else{M=S||C,T=[];for(var I in r)yr.call(r,I)&&"$"!==I.charAt(0)&&T.push(I)}for(x=T.length,V=new Array(x),h=0;x>h;h++)if(k=r===T?h:T[h],A=r[k],O=M(k,A,h),v[O])N=v[O],delete v[O],D[O]=N,V[h]=N;else{if(D[O])throw o(V,function(e){e&&e.scope&&(v[e.id]=e)}),u("dupes","Duplicates in a repeater are not allowed. Use 'track by' expression to specify unique keys. Repeater: {0}, Duplicate key: {1}, Duplicate value: {2}",p,O,A);V[h]={id:O,scope:n,clone:n},D[O]=!0}for(var R in v){if(N=v[R],j=$e(N.clone),a.leave(j),j[0].parentNode)for(h=0,m=j.length;m>h;h++)j[h][s]=!0;N.scope.$destroy()}for(h=0;x>h;h++)if(k=r===T?h:T[h],A=r[k],N=V[h],N.scope){y=P;do y=y.nextSibling;while(y&&y[s]);l(N)!=y&&a.move($e(N.clone),null,Er(P)),P=f(N),c(N.scope,h,b,A,w,k,x)}else $(function(e,t){N.scope=t;var n=d.cloneNode(!1);e[e.length++]=n,a.enter(e,null,Er(P)),P=n,N.clone=e,D[N.id]=N,c(N.scope,h,b,A,w,k,x)});v=D})}}}}],ha="ng-hide",pa="ng-hide-animate",da=["$animate",function(e){return{restrict:"A",multiElement:!0,link:function(t,n,r){t.$watch(r.ngShow,function(t){e[t?"removeClass":"addClass"](n,ha,{tempClasses:pa})})}}}],$a=["$animate",function(e){return{restrict:"A",multiElement:!0,link:function(t,n,r){t.$watch(r.ngHide,function(t){e[t?"addClass":"removeClass"](n,ha,{tempClasses:pa})})}}}],va=Zn(function(e,t,n){e.$watch(n.ngStyle,function(e,n){n&&e!==n&&o(n,function(e,n){t.css(n,"")}),e&&t.css(e)},!0)}),ma=["$animate",function(e){return{require:"ngSwitch",controller:["$scope",function(){this.cases={}}],link:function(n,r,i,a){var s=i.ngSwitch||i.on,u=[],c=[],l=[],f=[],h=function(e,t){return function(){e.splice(t,1)}};n.$watch(s,function(n){var r,i;for(r=0,i=l.length;i>r;++r)e.cancel(l[r]);for(l.length=0,r=0,i=f.length;i>r;++r){var s=$e(c[r].clone);f[r].$destroy();var p=l[r]=e.leave(s);p.then(h(l,r))}c.length=0,f.length=0,(u=a.cases["!"+n]||a.cases["?"])&&o(u,function(n){n.transclude(function(r,i){f.push(i);var o=n.element;r[r.length++]=t.createComment(" end ngSwitchWhen: ");var a={clone:r};c.push(a),e.enter(r,o.parent(),o)})})})}}}],ga=Zn({transclude:"element",priority:1200,require:"^ngSwitch",multiElement:!0,link:function(e,t,n,r,i){r.cases["!"+n.ngSwitchWhen]=r.cases["!"+n.ngSwitchWhen]||[],r.cases["!"+n.ngSwitchWhen].push({transclude:i,element:t})}}),ya=Zn({transclude:"element",priority:1200,require:"^ngSwitch",multiElement:!0,link:function(e,t,n,r,i){r.cases["?"]=r.cases["?"]||[],r.cases["?"].push({transclude:i,element:t})}}),ba=Zn({restrict:"EAC",link:function(e,t,n,i,o){if(!o)throw r("ngTransclude")("orphan","Illegal use of ngTransclude directive in the template! No parent directive that requires a transclusion found. Element: {0}",X(t));o(function(e){t.empty(),t.append(e)})}}),wa=["$templateCache",function(e){return{restrict:"E",terminal:!0,compile:function(t,n){if("text/ng-template"==n.type){var r=n.id,i=t[0].text;e.put(r,i)}}}}],xa={$setViewValue:$,$render:$},Sa=["$element","$scope","$attrs",function(e,r,i){var o=this,a=new Je;o.ngModelCtrl=xa,o.unknownOption=Er(t.createElement("option")),o.renderUnknownOption=function(t){var n="? "+Ye(t)+" ?";o.unknownOption.val(n),e.prepend(o.unknownOption),e.val(n)},r.$on("$destroy",function(){o.renderUnknownOption=$}),o.removeUnknownOption=function(){o.unknownOption.parent()&&o.unknownOption.remove()},o.readValue=function(){return o.removeUnknownOption(),e.val()},o.writeValue=function(t){o.hasOption(t)?(o.removeUnknownOption(),e.val(t),""===t&&o.emptyOption.prop("selected",!0)):null==t&&o.emptyOption?(o.removeUnknownOption(),e.val("")):o.renderUnknownOption(t)},o.addOption=function(e,t){pe(e,'"option value"'),""===e&&(o.emptyOption=t);var n=a.get(e)||0;a.put(e,n+1)},o.removeOption=function(e){var t=a.get(e);t&&(1===t?(a.remove(e),""===e&&(o.emptyOption=n)):a.put(e,t-1))},o.hasOption=function(e){return!!a.get(e)}}],Ea=function(){return{restrict:"E",require:["select","?ngModel"],controller:Sa,link:function(e,t,n,r){var i=r[1];if(i){var a=r[0];if(a.ngModelCtrl=i,i.$render=function(){a.writeValue(i.$viewValue)},t.on("change",function(){e.$apply(function(){i.$setViewValue(a.readValue())})}),n.multiple){a.readValue=function(){var e=[];return o(t.find("option"),function(t){t.selected&&e.push(t.value)}),e},a.writeValue=function(e){var n=new Je(e);o(t.find("option"),function(e){e.selected=b(n.get(e.value))})};var s,u=NaN;e.$watch(function(){u!==i.$viewValue||B(s,i.$viewValue)||(s=U(i.$viewValue),i.$render()),u=i.$viewValue}),i.$isEmpty=function(e){return!e||0===e.length}}}}}},Ca=["$interpolate",function(e){function t(e){e[0].hasAttribute("selected")&&(e[0].selected=!0)}return{restrict:"E",priority:100,compile:function(n,r){if(b(r.value))var i=e(r.value,!0);else{var o=e(n.text(),!0);o||r.$set("value",n.text())}return function(e,n,r){function a(e){c.addOption(e,n),c.ngModelCtrl.$render(),t(n)}var s="$selectController",u=n.parent(),c=u.data(s)||u.parent().data(s);if(c&&c.ngModelCtrl){if(i){var l;r.$observe("value",function(e){b(l)&&c.removeOption(l),l=e,a(e)})}else o?e.$watch(o,function(e,t){r.$set("value",e),t!==e&&c.removeOption(t),a(e)}):a(r.value);n.on("$destroy",function(){c.removeOption(r.value),c.ngModelCtrl.$render()})}}}}}],ka=m({restrict:"E",terminal:!1}),Aa=function(){return{restrict:"A",require:"?ngModel",link:function(e,t,n,r){r&&(n.required=!0,r.$validators.required=function(e,t){return!n.required||!r.$isEmpty(t)},n.$observe("required",function(){r.$validate()}))}}},Oa=function(){return{restrict:"A",require:"?ngModel",link:function(e,t,i,o){if(o){var a,s=i.ngPattern||i.pattern;i.$observe("pattern",function(e){if(S(e)&&e.length>0&&(e=new RegExp("^"+e+"$")),e&&!e.test)throw r("ngPattern")("noregexp","Expected {0} to be a RegExp but was {1}. Element: {2}",s,e,X(t));a=e||n,o.$validate()}),o.$validators.pattern=function(e,t){return o.$isEmpty(t)||y(a)||a.test(t)}}}}},Ma=function(){return{restrict:"A",require:"?ngModel",link:function(e,t,n,r){if(r){var i=-1;n.$observe("maxlength",function(e){var t=p(e);i=isNaN(t)?-1:t,r.$validate()}),r.$validators.maxlength=function(e,t){return 0>i||r.$isEmpty(t)||t.length<=i}}}}},Ta=function(){return{restrict:"A",require:"?ngModel",link:function(e,t,n,r){if(r){var i=0;n.$observe("minlength",function(e){i=p(e)||0,r.$validate()}),r.$validators.minlength=function(e,t){return r.$isEmpty(t)||t.length>=i}}}}};return e.angular.bootstrap?void console.log("WARNING: Tried to load angular more than once."):(le(),be(jr),jr.module("ngLocale",[],["$provide",function(e){function t(e){e+="";var t=e.indexOf(".");return-1==t?0:e.length-t-1}function r(e,r){var i=r;n===i&&(i=Math.min(t(e),3));var o=Math.pow(10,i),a=(e*o|0)%o;return{v:i,f:a}}var i={ZERO:"zero",ONE:"one",TWO:"two",FEW:"few",MANY:"many",OTHER:"other"};e.value("$locale",{DATETIME_FORMATS:{AMPMS:["AM","PM"],DAY:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],ERANAMES:["Before Christ","Anno Domini"],ERAS:["BC","AD"],FIRSTDAYOFWEEK:6,MONTH:["January","February","March","April","May","June","July","August","September","October","November","December"],SHORTDAY:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],SHORTMONTH:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],WEEKENDRANGE:[5,6],fullDate:"EEEE, MMMM d, y",longDate:"MMMM d, y",medium:"MMM d, y h:mm:ss a",mediumDate:"MMM d, y",mediumTime:"h:mm:ss a","short":"M/d/yy h:mm a",shortDate:"M/d/yy",shortTime:"h:mm a"},NUMBER_FORMATS:{CURRENCY_SYM:"$",DECIMAL_SEP:".",GROUP_SEP:",",PATTERNS:[{gSize:3,lgSize:3,maxFrac:3,minFrac:0,minInt:1,negPre:"-",negSuf:"",posPre:"",posSuf:""},{gSize:3,lgSize:3,maxFrac:2,minFrac:2,minInt:1,negPre:"-¤",negSuf:"",posPre:"¤",posSuf:""}]},id:"en-us",pluralCat:function(e,t){var n=0|e,o=r(e,t);return 1==n&&0==o.v?i.ONE:i.OTHER}})}]),void Er(t).ready(function(){oe(t,ae)}))}(window,document),!window.angular.$$csp().noInlineStyle&&window.angular.element(document.head).prepend(''); !function(e,r,t){"use strict";function n(){function e(e,t){return r.extend(Object.create(e),t)}function t(e,r){var t=r.caseInsensitiveMatch,n={originalPath:e,regexp:e},a=n.keys=[];return e=e.replace(/([().])/g,"\\$1").replace(/(\/)?:(\w+)([\?\*])?/g,function(e,r,t,n){var o="?"===n?n:null,i="*"===n?n:null;return a.push({name:t,optional:!!o}),r=r||"",""+(o?"":r)+"(?:"+(o?r:"")+(i&&"(.+?)"||"([^/]+)")+(o||"")+")"+(o||"")}).replace(/([\/$\*])/g,"\\$1"),n.regexp=new RegExp("^"+e+"$",t?"i":""),n}var n={};this.when=function(e,a){var o=r.copy(a);if(r.isUndefined(o.reloadOnSearch)&&(o.reloadOnSearch=!0),r.isUndefined(o.caseInsensitiveMatch)&&(o.caseInsensitiveMatch=this.caseInsensitiveMatch),n[e]=r.extend(o,e&&t(e,o)),e){var i="/"==e[e.length-1]?e.substr(0,e.length-1):e+"/";n[i]=r.extend({redirectTo:e},t(i,o))}return this},this.caseInsensitiveMatch=!1,this.otherwise=function(e){return"string"==typeof e&&(e={redirectTo:e}),this.when(null,e),this},this.$get=["$rootScope","$location","$routeParams","$q","$injector","$templateRequest","$sce",function(t,a,o,i,c,l,s){function h(e,r){var t=r.keys,n={};if(!r.regexp)return null;var a=r.regexp.exec(e);if(!a)return null;for(var o=1,i=a.length;i>o;++o){var c=t[o-1],u=a[o];c&&u&&(n[c.name]=u)}return n}function $(e){var n=w.current;v=f(),m=v&&n&&v.$$route===n.$$route&&r.equals(v.pathParams,n.pathParams)&&!v.reloadOnSearch&&!g,m||!n&&!v||t.$broadcast("$routeChangeStart",v,n).defaultPrevented&&e&&e.preventDefault()}function p(){var e=w.current,n=v;m?(e.params=n.params,r.copy(e.params,o),t.$broadcast("$routeUpdate",e)):(n||e)&&(g=!1,w.current=n,n&&n.redirectTo&&(r.isString(n.redirectTo)?a.path(d(n.redirectTo,n.params)).search(n.params).replace():a.url(n.redirectTo(n.pathParams,a.path(),a.search())).replace()),i.when(n).then(function(){if(n){var e,t,a=r.extend({},n.resolve);return r.forEach(a,function(e,t){a[t]=r.isString(e)?c.get(e):c.invoke(e,null,null,t)}),r.isDefined(e=n.template)?r.isFunction(e)&&(e=e(n.params)):r.isDefined(t=n.templateUrl)&&(r.isFunction(t)&&(t=t(n.params)),r.isDefined(t)&&(n.loadedTemplateUrl=s.valueOf(t),e=l(t))),r.isDefined(e)&&(a.$template=e),i.all(a)}}).then(function(a){n==w.current&&(n&&(n.locals=a,r.copy(n.params,o)),t.$broadcast("$routeChangeSuccess",n,e))},function(r){n==w.current&&t.$broadcast("$routeChangeError",n,e,r)}))}function f(){var t,o;return r.forEach(n,function(n,i){!o&&(t=h(a.path(),n))&&(o=e(n,{params:r.extend({},a.search(),t),pathParams:t}),o.$$route=n)}),o||n[null]&&e(n[null],{params:{},pathParams:{}})}function d(e,t){var n=[];return r.forEach((e||"").split(":"),function(e,r){if(0===r)n.push(e);else{var a=e.match(/(\w+)(?:[?*])?(.*)/),o=a[1];n.push(t[o]),n.push(a[2]||""),delete t[o]}}),n.join("")}var v,m,g=!1,w={routes:n,reload:function(){g=!0,t.$evalAsync(function(){$(),p()})},updateParams:function(e){if(!this.current||!this.current.$$route)throw u("norout","Tried updating route when with no current route");e=r.extend({},this.current.params,e),a.path(d(this.current.$$route.originalPath,e)),a.search(e)}};return t.$on("$locationChangeStart",$),t.$on("$locationChangeSuccess",p),w}]}function a(){this.$get=function(){return{}}}function o(e,t,n){return{restrict:"ECA",terminal:!0,priority:400,transclude:"element",link:function(a,o,i,c,u){function l(){p&&(n.cancel(p),p=null),h&&(h.$destroy(),h=null),$&&(p=n.leave($),p.then(function(){p=null}),$=null)}function s(){var i=e.current&&e.current.locals,c=i&&i.$template;if(r.isDefined(c)){var s=a.$new(),p=e.current,v=u(s,function(e){n.enter(e,null,$||o).then(function(){!r.isDefined(f)||f&&!a.$eval(f)||t()}),l()});$=v,h=p.scope=s,h.$emit("$viewContentLoaded"),h.$eval(d)}else l()}var h,$,p,f=i.autoscroll,d=i.onload||"";a.$on("$routeChangeSuccess",s),s()}}}function i(e,r,t){return{restrict:"ECA",priority:-400,link:function(n,a){var o=t.current,i=o.locals;a.html(i.$template);var c=e(a.contents());if(o.controller){i.$scope=n;var u=r(o.controller,i);o.controllerAs&&(n[o.controllerAs]=u),a.data("$ngControllerController",u),a.children().data("$ngControllerController",u)}c(n)}}}var c=r.module("ngRoute",["ng"]).provider("$route",n),u=r.$$minErr("ngRoute");c.provider("$routeParams",a),c.directive("ngView",o),c.directive("ngView",i),o.$inject=["$route","$anchorScroll","$animate"],i.$inject=["$compile","$controller","$route"]}(window,window.angular); -!function(e,n,o){"use strict";function t(e,o,t){function i(e,t,i){var u,c;i=i||{},c=i.expires,u=n.isDefined(i.path)?i.path:r,n.isUndefined(t)&&(c="Thu, 01 Jan 1970 00:00:00 GMT",t=""),n.isString(c)&&(c=new Date(c));var s=encodeURIComponent(e)+"="+encodeURIComponent(t);s+=u?";path="+u:"",s+=i.domain?";domain="+i.domain:"",s+=c?";expires="+c.toUTCString():"",s+=i.secure?";secure":"";var f=s.length+1;return f>4096&&o.warn("Cookie '"+e+"' possibly not set or overflowed because it was too large ("+f+" > 4096 bytes)!"),s}var r=t.baseHref(),u=e[0];return function(e,n,o){u.cookie=i(e,n,o)}}n.module("ngCookies",["ng"]).provider("$cookies",[function(){function e(e){return e?n.extend({},t,e):t}var t=this.defaults={};this.$get=["$$cookieReader","$$cookieWriter",function(t,i){return{get:function(e){return t()[e]},getObject:function(e){var o=this.get(e);return o?n.fromJson(o):o},getAll:function(){return t()},put:function(n,o,t){i(n,o,e(t))},putObject:function(e,o,t){this.put(e,n.toJson(o),t)},remove:function(n,t){i(n,o,e(t))}}}]}]),n.module("ngCookies").factory("$cookieStore",["$cookies",function(e){return{get:function(n){return e.getObject(n)},put:function(n,o){e.putObject(n,o)},remove:function(n){e.remove(n)}}}]),t.$inject=["$document","$log","$browser"],n.module("ngCookies").provider("$$cookieWriter",function(){this.$get=t})}(window,window.angular); !function(e,t,r){"use strict";function n(e){var r=[];return l(r,t.noop).chars(e),r.join("")}function a(e,r){var n,a={},i=e.split(",");for(n=0;n=0&&b[i]!=n;i--);if(i>=0){for(a=b.length-1;a>=i;a--)r.end&&r.end(b[a]);b.length=i}}"string"!=typeof e&&(e=null===e||"undefined"==typeof e?"":""+e);var i,o,l,b=[],k=e;for(b.last=function(){return b[b.length-1]};e;){if(l="",o=!0,b.last()&&$[b.last()]?(e=e.replace(new RegExp("([\\W\\w]*)<\\s*\\/\\s*"+b.last()+"[^>]*>","i"),function(e,t){return t=t.replace(f,"$1").replace(x,"$1"),r.chars&&r.chars(s(t)),""}),a("",b.last())):(0===e.indexOf("",i)===i&&(r.comment&&r.comment(e.substring(4,i)),e=e.substring(i+3),o=!1)):m.test(e)?(i=e.match(m))&&(e=e.replace(i[0],""),o=!1):g.test(e)?(i=e.match(p))&&(e=e.substring(i[0].length),i[0].replace(p,a),o=!1):d.test(e)&&((i=e.match(u))?(i[4]&&(e=e.substring(i[0].length),i[0].replace(u,n)),o=!1):(l+="<",e=e.substring(1))),o&&(i=e.indexOf("<"),l+=0>i?e:e.substring(0,i),e=0>i?"":e.substring(i),r.chars&&r.chars(s(l)))),e==k)throw c("badparse",e);k=e}a()}function s(e){return e?(E.innerHTML=e.replace(//g,">")}function l(e,r){var n=!1,a=t.bind(e,e.push);return{start:function(e,i,s){e=t.lowercase(e),!n&&$[e]&&(n=e),n||!0!==A[e]||(a("<"),a(e),t.forEach(i,function(n,i){var s=t.lowercase(i),l="img"===e&&"src"===s||"background"===s;!0!==D[s]||!0===C[s]&&!r(n,l)||(a(" "),a(i),a('="'),a(o(n)),a('"'))}),a(s?"/>":">"))},end:function(e){e=t.lowercase(e),n||!0!==A[e]||(a("")),e==n&&(n=!1)},chars:function(e){n||a(o(e))}}}var c=t.$$minErr("$sanitize"),u=/^<((?:[a-zA-Z])[\w:-]*)((?:\s+[\w:-]+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)\s*(>?)/,p=/^<\/\s*([\w:-]+)[^>]*>/,h=/([\w:-]+)(?:\s*=\s*(?:(?:"((?:[^"])*)")|(?:'((?:[^'])*)')|([^>\s]+)))?/g,d=/^]*?)>/i,x=/"\u201d\u2019]/i,a=/^mailto:/i;return function(i,s){function o(e){e&&d.push(n(e))}function l(e,r){d.push("'),o(r),d.push("")}if(!i)return i;for(var c,u,p,h=i,d=[];c=h.match(r);)u=c[0],c[2]||c[4]||(u=(c[3]?"http://":"mailto:")+u),p=c.index,o(h.substr(0,p)),l(u,c[0].replace(a,"")),h=h.substring(p+c[0].length);return o(h),e(d.join(""))}}])}(window,window.angular); \ No newline at end of file diff --git a/public/javascripts/wechat/gulpfile.js b/public/javascripts/wechat/gulpfile.js index a6726bd22..439b6ae5d 100644 --- a/public/javascripts/wechat/gulpfile.js +++ b/public/javascripts/wechat/gulpfile.js @@ -3,7 +3,7 @@ var gulp = require('gulp'), var concat = require('gulp-concat'); gulp.task('minify', function () { - gulp.src(['angular.js', 'angular-route.js', 'angular-cookies.js', 'angular-sanitize.min.js']) + gulp.src(['../jquery-1.3.2.js','angular.js', 'angular-route.js', 'angular-sanitize.min.js']) .pipe(uglify()) .pipe(concat('angular.all.min.js')) .pipe(gulp.dest('build')) diff --git a/public/javascripts/wechat/jquery.min.js b/public/javascripts/wechat/jquery.min.js deleted file mode 100644 index c4643af62..000000000 --- a/public/javascripts/wechat/jquery.min.js +++ /dev/null @@ -1,5 +0,0 @@ -/*! jQuery v2.1.1 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */ -!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l=a.document,m="2.1.1",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){return!n.isArray(a)&&a-parseFloat(a)>=0},isPlainObject:function(a){return"object"!==n.type(a)||a.nodeType||n.isWindow(a)?!1:a.constructor&&!j.call(a.constructor.prototype,"isPrototypeOf")?!1:!0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=l.createElement("script"),b.text=a,l.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:g.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(e=d.call(arguments,2),f=function(){return a.apply(b||this,e.concat(d.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:k}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+-new Date,v=a.document,w=0,x=0,y=gb(),z=gb(),A=gb(),B=function(a,b){return a===b&&(l=!0),0},C="undefined",D=1<<31,E={}.hasOwnProperty,F=[],G=F.pop,H=F.push,I=F.push,J=F.slice,K=F.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},L="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",N="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",O=N.replace("w","w#"),P="\\["+M+"*("+N+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+O+"))|)"+M+"*\\]",Q=":("+N+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+P+")*)|.*)\\)|)",R=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),S=new RegExp("^"+M+"*,"+M+"*"),T=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),V=new RegExp(Q),W=new RegExp("^"+O+"$"),X={ID:new RegExp("^#("+N+")"),CLASS:new RegExp("^\\.("+N+")"),TAG:new RegExp("^("+N.replace("w","w*")+")"),ATTR:new RegExp("^"+P),PSEUDO:new RegExp("^"+Q),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+L+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ab=/[+~]/,bb=/'|\\/g,cb=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),db=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)};try{I.apply(F=J.call(v.childNodes),v.childNodes),F[v.childNodes.length].nodeType}catch(eb){I={apply:F.length?function(a,b){H.apply(a,J.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fb(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],!a||"string"!=typeof a)return d;if(1!==(k=b.nodeType)&&9!==k)return[];if(p&&!e){if(f=_.exec(a))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return I.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName&&b.getElementsByClassName)return I.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=9===k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(bb,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+qb(o[l]);w=ab.test(a)&&ob(b.parentNode)||b,x=o.join(",")}if(x)try{return I.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function gb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function hb(a){return a[u]=!0,a}function ib(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function jb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function kb(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||D)-(~a.sourceIndex||D);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function lb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function mb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function nb(a){return hb(function(b){return b=+b,hb(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function ob(a){return a&&typeof a.getElementsByTagName!==C&&a}c=fb.support={},f=fb.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fb.setDocument=function(a){var b,e=a?a.ownerDocument||a:v,g=e.defaultView;return e!==n&&9===e.nodeType&&e.documentElement?(n=e,o=e.documentElement,p=!f(e),g&&g!==g.top&&(g.addEventListener?g.addEventListener("unload",function(){m()},!1):g.attachEvent&&g.attachEvent("onunload",function(){m()})),c.attributes=ib(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ib(function(a){return a.appendChild(e.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(e.getElementsByClassName)&&ib(function(a){return a.innerHTML="
            ",a.firstChild.className="i",2===a.getElementsByClassName("i").length}),c.getById=ib(function(a){return o.appendChild(a).id=u,!e.getElementsByName||!e.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if(typeof b.getElementById!==C&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){var c=typeof a.getAttributeNode!==C&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return typeof b.getElementsByTagName!==C?b.getElementsByTagName(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return typeof b.getElementsByClassName!==C&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(e.querySelectorAll))&&(ib(function(a){a.innerHTML="",a.querySelectorAll("[msallowclip^='']").length&&q.push("[*^$]="+M+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+M+"*(?:value|"+L+")"),a.querySelectorAll(":checked").length||q.push(":checked")}),ib(function(a){var b=e.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+M+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ib(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",Q)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===e||a.ownerDocument===v&&t(v,a)?-1:b===e||b.ownerDocument===v&&t(v,b)?1:k?K.call(k,a)-K.call(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,f=a.parentNode,g=b.parentNode,h=[a],i=[b];if(!f||!g)return a===e?-1:b===e?1:f?-1:g?1:k?K.call(k,a)-K.call(k,b):0;if(f===g)return kb(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?kb(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},e):n},fb.matches=function(a,b){return fb(a,null,null,b)},fb.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fb(b,n,null,[a]).length>0},fb.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fb.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&E.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fb.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fb.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fb.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fb.selectors={cacheLength:50,createPseudo:hb,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(cb,db),a[3]=(a[3]||a[4]||a[5]||"").replace(cb,db),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fb.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fb.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(cb,db).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+M+")"+a+"("+M+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||typeof a.getAttribute!==C&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fb.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fb.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?hb(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=K.call(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:hb(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?hb(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:hb(function(a){return function(b){return fb(a,b).length>0}}),contains:hb(function(a){return function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:hb(function(a){return W.test(a||"")||fb.error("unsupported lang: "+a),a=a.replace(cb,db).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:nb(function(){return[0]}),last:nb(function(a,b){return[b-1]}),eq:nb(function(a,b,c){return[0>c?c+b:c]}),even:nb(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:nb(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:nb(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:nb(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function rb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function sb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function tb(a,b,c){for(var d=0,e=b.length;e>d;d++)fb(a,b[d],c);return c}function ub(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function vb(a,b,c,d,e,f){return d&&!d[u]&&(d=vb(d)),e&&!e[u]&&(e=vb(e,f)),hb(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||tb(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ub(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ub(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?K.call(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ub(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):I.apply(g,r)})}function wb(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=rb(function(a){return a===b},h,!0),l=rb(function(a){return K.call(b,a)>-1},h,!0),m=[function(a,c,d){return!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d))}];f>i;i++)if(c=d.relative[a[i].type])m=[rb(sb(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return vb(i>1&&sb(m),i>1&&qb(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&wb(a.slice(i,e)),f>e&&wb(a=a.slice(e)),f>e&&qb(a))}m.push(c)}return sb(m)}function xb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=G.call(i));s=ub(s)}I.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&fb.uniqueSort(i)}return k&&(w=v,j=t),r};return c?hb(f):f}return h=fb.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wb(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xb(e,d)),f.selector=a}return f},i=fb.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(cb,db),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(cb,db),ab.test(j[0].type)&&ob(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qb(j),!a)return I.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,ab.test(a)&&ob(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ib(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ib(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||jb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ib(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||jb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ib(function(a){return null==a.getAttribute("disabled")})||jb(L,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fb}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return g.call(b,a)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:l,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}return d=l.getElementById(c[2]),d&&d.parentNode&&(this.length=1,this[0]=d),this.context=l,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};A.prototype=n.fn,y=n(l);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?g.call(n(a),this[0]):g.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){while((a=a[b])&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(C[a]||n.unique(e),B.test(a)&&e.reverse()),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return n.each(a.match(E)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(b=a.memory&&l,c=!0,g=e||0,e=0,f=h.length,d=!0;h&&f>g;g++)if(h[g].apply(l[0],l[1])===!1&&a.stopOnFalse){b=!1;break}d=!1,h&&(i?i.length&&j(i.shift()):b?h=[]:k.disable())},k={add:function(){if(h){var c=h.length;!function g(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&g(c)})}(arguments),d?f=h.length:b&&(e=c,j(b))}return this},remove:function(){return h&&n.each(arguments,function(a,b){var c;while((c=n.inArray(b,h,c))>-1)h.splice(c,1),d&&(f>=c&&f--,g>=c&&g--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],f=0,this},disable:function(){return h=i=b=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,b||k.disable(),this},locked:function(){return!i},fireWith:function(a,b){return!h||c&&!i||(b=b||[],b=[a,b.slice?b.slice():b],d?i.push(b):j(b)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!c}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(H.resolveWith(l,[n]),n.fn.triggerHandler&&(n(l).triggerHandler("ready"),n(l).off("ready"))))}});function I(){l.removeEventListener("DOMContentLoaded",I,!1),a.removeEventListener("load",I,!1),n.ready()}n.ready.promise=function(b){return H||(H=n.Deferred(),"complete"===l.readyState?setTimeout(n.ready):(l.addEventListener("DOMContentLoaded",I,!1),a.addEventListener("load",I,!1))),H.promise(b)},n.ready.promise();var J=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f};n.acceptData=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function K(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=n.expando+Math.random()}K.uid=1,K.accepts=n.acceptData,K.prototype={key:function(a){if(!K.accepts(a))return 0;var b={},c=a[this.expando];if(!c){c=K.uid++;try{b[this.expando]={value:c},Object.defineProperties(a,b)}catch(d){b[this.expando]=c,n.extend(a,b)}}return this.cache[c]||(this.cache[c]={}),c},set:function(a,b,c){var d,e=this.key(a),f=this.cache[e];if("string"==typeof b)f[b]=c;else if(n.isEmptyObject(f))n.extend(this.cache[e],b);else for(d in b)f[d]=b[d];return f},get:function(a,b){var c=this.cache[this.key(a)];return void 0===b?c:c[b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=this.key(a),g=this.cache[f];if(void 0===b)this.cache[f]={};else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in g?d=[b,e]:(d=e,d=d in g?[d]:d.match(E)||[])),c=d.length;while(c--)delete g[d[c]]}},hasData:function(a){return!n.isEmptyObject(this.cache[a[this.expando]]||{})},discard:function(a){a[this.expando]&&delete this.cache[a[this.expando]]}};var L=new K,M=new K,N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(O,"-$1").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}M.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return M.hasData(a)||L.hasData(a)},data:function(a,b,c){return M.access(a,b,c)},removeData:function(a,b){M.remove(a,b) -},_data:function(a,b,c){return L.access(a,b,c)},_removeData:function(a,b){L.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=M.get(f),1===f.nodeType&&!L.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));L.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){M.set(this,a)}):J(this,function(b){var c,d=n.camelCase(a);if(f&&void 0===b){if(c=M.get(f,a),void 0!==c)return c;if(c=M.get(f,d),void 0!==c)return c;if(c=P(f,d,void 0),void 0!==c)return c}else this.each(function(){var c=M.get(this,d);M.set(this,d,b),-1!==a.indexOf("-")&&void 0!==c&&M.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){M.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=L.get(a,b),c&&(!d||n.isArray(c)?d=L.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return L.get(a,c)||L.access(a,c,{empty:n.Callbacks("once memory").add(function(){L.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthx",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var U="undefined";k.focusinBubbles="onfocusin"in a;var V=/^key/,W=/^(?:mouse|pointer|contextmenu)|click/,X=/^(?:focusinfocus|focusoutblur)$/,Y=/^([^.]*)(?:\.(.+)|)$/;function Z(){return!0}function $(){return!1}function _(){try{return l.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return typeof n!==U&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(E)||[""],j=b.length;while(j--)h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g,!1)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.hasData(a)&&L.get(a);if(r&&(i=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&(delete r.handle,L.remove(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,m,o,p=[d||l],q=j.call(b,"type")?b.type:b,r=j.call(b,"namespace")?b.namespace.split("."):[];if(g=h=d=d||l,3!==d.nodeType&&8!==d.nodeType&&!X.test(q+n.event.triggered)&&(q.indexOf(".")>=0&&(r=q.split("."),q=r.shift(),r.sort()),k=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=r.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),o=n.event.special[q]||{},e||!o.trigger||o.trigger.apply(d,c)!==!1)){if(!e&&!o.noBubble&&!n.isWindow(d)){for(i=o.delegateType||q,X.test(i+q)||(g=g.parentNode);g;g=g.parentNode)p.push(g),h=g;h===(d.ownerDocument||l)&&p.push(h.defaultView||h.parentWindow||a)}f=0;while((g=p[f++])&&!b.isPropagationStopped())b.type=f>1?i:o.bindType||q,m=(L.get(g,"events")||{})[b.type]&&L.get(g,"handle"),m&&m.apply(g,c),m=k&&g[k],m&&m.apply&&n.acceptData(g)&&(b.result=m.apply(g,c),b.result===!1&&b.preventDefault());return b.type=q,e||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!1||!n.acceptData(d)||k&&n.isFunction(d[q])&&!n.isWindow(d)&&(h=d[k],h&&(d[k]=null),n.event.triggered=q,d[q](),n.event.triggered=void 0,h&&(d[k]=h)),b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(L.get(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(g.namespace))&&(a.handleObj=g,a.data=g.data,e=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(a.result=e)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!==this;i=i.parentNode||this)if(i.disabled!==!0||"click"!==a.type){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>=0:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h]*)\/>/gi,bb=/<([\w:]+)/,cb=/<|&#?\w+;/,db=/<(?:script|style|link)/i,eb=/checked\s*(?:[^=]|=\s*.checked.)/i,fb=/^$|\/(?:java|ecma)script/i,gb=/^true\/(.*)/,hb=/^\s*\s*$/g,ib={option:[1,""],thead:[1,"","
            "],col:[2,"","
            "],tr:[2,"","
            "],td:[3,"","
            "],_default:[0,"",""]};ib.optgroup=ib.option,ib.tbody=ib.tfoot=ib.colgroup=ib.caption=ib.thead,ib.th=ib.td;function jb(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function kb(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function lb(a){var b=gb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function mb(a,b){for(var c=0,d=a.length;d>c;c++)L.set(a[c],"globalEval",!b||L.get(b[c],"globalEval"))}function nb(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(L.hasData(a)&&(f=L.access(a),g=L.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}M.hasData(a)&&(h=M.access(a),i=n.extend({},h),M.set(b,i))}}function ob(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||"*"):a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function pb(a,b){var c=b.nodeName.toLowerCase();"input"===c&&T.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}n.extend({clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=ob(h),f=ob(a),d=0,e=f.length;e>d;d++)pb(f[d],g[d]);if(b)if(c)for(f=f||ob(a),g=g||ob(h),d=0,e=f.length;e>d;d++)nb(f[d],g[d]);else nb(a,h);return g=ob(h,"script"),g.length>0&&mb(g,!i&&ob(a,"script")),h},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k=b.createDocumentFragment(),l=[],m=0,o=a.length;o>m;m++)if(e=a[m],e||0===e)if("object"===n.type(e))n.merge(l,e.nodeType?[e]:e);else if(cb.test(e)){f=f||k.appendChild(b.createElement("div")),g=(bb.exec(e)||["",""])[1].toLowerCase(),h=ib[g]||ib._default,f.innerHTML=h[1]+e.replace(ab,"<$1>")+h[2],j=h[0];while(j--)f=f.lastChild;n.merge(l,f.childNodes),f=k.firstChild,f.textContent=""}else l.push(b.createTextNode(e));k.textContent="",m=0;while(e=l[m++])if((!d||-1===n.inArray(e,d))&&(i=n.contains(e.ownerDocument,e),f=ob(k.appendChild(e),"script"),i&&mb(f),c)){j=0;while(e=f[j++])fb.test(e.type||"")&&c.push(e)}return k},cleanData:function(a){for(var b,c,d,e,f=n.event.special,g=0;void 0!==(c=a[g]);g++){if(n.acceptData(c)&&(e=c[L.expando],e&&(b=L.cache[e]))){if(b.events)for(d in b.events)f[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);L.cache[e]&&delete L.cache[e]}delete M.cache[c[M.expando]]}}}),n.fn.extend({text:function(a){return J(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=a)})},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=jb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=jb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(ob(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&mb(ob(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(ob(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return J(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!db.test(a)&&!ib[(bb.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(ab,"<$1>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(ob(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(ob(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,m=this,o=l-1,p=a[0],q=n.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&eb.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(c=n.buildFragment(a,this[0].ownerDocument,!1,this),d=c.firstChild,1===c.childNodes.length&&(c=d),d)){for(f=n.map(ob(c,"script"),kb),g=f.length;l>j;j++)h=c,j!==o&&(h=n.clone(h,!0,!0),g&&n.merge(f,ob(h,"script"))),b.call(this[j],h,j);if(g)for(i=f[f.length-1].ownerDocument,n.map(f,lb),j=0;g>j;j++)h=f[j],fb.test(h.type||"")&&!L.access(h,"globalEval")&&n.contains(i,h)&&(h.src?n._evalUrl&&n._evalUrl(h.src):n.globalEval(h.textContent.replace(hb,"")))}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),g=e.length-1,h=0;g>=h;h++)c=h===g?this:this.clone(!0),n(e[h])[b](c),f.apply(d,c.get());return this.pushStack(d)}});var qb,rb={};function sb(b,c){var d,e=n(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:n.css(e[0],"display");return e.detach(),f}function tb(a){var b=l,c=rb[a];return c||(c=sb(a,b),"none"!==c&&c||(qb=(qb||n("