Merge branch 'design_team' into ldap

This commit is contained in:
Christophe Vilayphiou 2012-04-27 15:28:32 +08:00
commit 2362e1cfdd
28 changed files with 985 additions and 332 deletions

View File

@ -1,79 +0,0 @@
.widget-size-300 {
width:298px;
}
.widget-box {
background-color: #FFF;
overflow: hidden;
min-width: 300px;
border: 1px solid #DDD;
border-radius: 5px;
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
margin: 0 0 5px 5px;
position:relative;
}
.widget-box .widget-title {
background: #999;
color: #FFF;
padding-left: 5px;
border-radius: 5px 5px 0 0;
-moz-border-radius: 5px 5px 0 0;
-webkit-border-radius: 5px 5px 0 0;
}
.widget-box .widget-content {
padding: 10px;
}
.widget-box .form-horizontal .control-group > label {
width: 50px;
}
.widget-box .form-horizontal .controls {
margin-left: 60px;
}
.widget-action {
position:absolute;
right:1px;
top:6px;
}
.action {
float: left;
display:inline-block;
margin-right: 5px;
opacity: 0.8;
filter: alpha(opacity=80);
}
.action:hover {
opacity: 1;
filter: alpha(opacity=100);
cursor: pointer;
}
.select-role {
display:none;
padding: 10px 0 0;
}
.file-upload {
position:relative;
}
.file-upload .file-name {
display: inline-block;
margin: 0 0 5px 5px;
white-space: nowrap;
width: 140px;
}
.file-upload .upload {
margin:0;
padding:0;
position:absolute;
top:0;
left:0;
opacity:.0;
filter: alpha(opacity=100);
}
.file-upload .upload:focus {
position:absolute;
}
.upload-picture {
margin-right: 5px;
}
#widget-link table {
margin-bottom:0
}

View File

@ -1 +1,118 @@
(function(a){function b(b,c){function w(a){if(!(g.ratio>=1)){o.now=Math.min(i[c.axis]-j[c.axis],Math.max(0,o.start+((k?a.pageX:a.pageY)-p.start)));n=o.now*h.ratio;g.obj.css(l,-n);j.obj.css(l,o.now)}return false}function v(b){a(document).unbind("mousemove",w);a(document).unbind("mouseup",v);j.obj.unbind("mouseup",v);document.ontouchmove=j.obj[0].ontouchend=document.ontouchend=null;return false}function u(b){if(!(g.ratio>=1)){var b=b||window.event;var d=b.wheelDelta?b.wheelDelta/120:-b.detail/3;n-=d*c.wheel;n=Math.min(g[c.axis]-f[c.axis],Math.max(0,n));j.obj.css(l,n/h.ratio);g.obj.css(l,-n);b=a.event.fix(b);b.preventDefault()}}function t(b){p.start=k?b.pageX:b.pageY;var c=parseInt(j.obj.css(l));o.start=c=="auto"?0:c;a(document).bind("mousemove",w);document.ontouchmove=function(b){a(document).unbind("mousemove");w(b.touches[0])};a(document).bind("mouseup",v);j.obj.bind("mouseup",v);j.obj[0].ontouchend=document.ontouchend=function(b){a(document).unbind("mouseup");j.obj.unbind("mouseup");v(b.touches[0])};return false}function s(){j.obj.bind("mousedown",t);j.obj[0].ontouchstart=function(a){a.preventDefault();j.obj.unbind("mousedown");t(a.touches[0]);return false};i.obj.bind("mouseup",w);if(c.scroll&&this.addEventListener){e[0].addEventListener("DOMMouseScroll",u,false);e[0].addEventListener("mousewheel",u,false)}else if(c.scroll){e[0].onmousewheel=u}}function r(){j.obj.css(l,n/h.ratio);g.obj.css(l,-n);p["start"]=j.obj.offset()[l];var a=m.toLowerCase();h.obj.css(a,i[c.axis]);i.obj.css(a,i[c.axis]);j.obj.css(a,j[c.axis])}function q(){d.update();s();return d}var d=this;var e=b;var f={obj:a(".viewport",b)};var g={obj:a(".overview",b)};var h={obj:a(".scrollbar",b)};var i={obj:a(".track",h.obj)};var j={obj:a(".thumb",h.obj)};var k=c.axis=="x",l=k?"left":"top",m=k?"Width":"Height";var n,o={start:0,now:0},p={};this.update=function(a){f[c.axis]=f.obj[0]["offset"+m];g[c.axis]=g.obj[0]["scroll"+m];g.ratio=f[c.axis]/g[c.axis];h.obj.toggleClass("disable",g.ratio>=1);i[c.axis]=c.size=="auto"?f[c.axis]:c.size;j[c.axis]=Math.min(i[c.axis],Math.max(0,c.sizethumb=="auto"?i[c.axis]*g.ratio:c.sizethumb));h.ratio=c.sizethumb=="auto"?g[c.axis]/i[c.axis]:(g[c.axis]-f[c.axis])/(i[c.axis]-j[c.axis]);n=a=="relative"&&g.ratio<=1?Math.min(g[c.axis]-f[c.axis],Math.max(0,n)):0;n=a=="bottom"&&g.ratio<=1?g[c.axis]-f[c.axis]:isNaN(parseInt(a))?n:parseInt(a);r()};return q()}a.tiny=a.tiny||{};a.tiny.scrollbar={options:{axis:"y",wheel:40,scroll:true,size:"auto",sizethumb:"auto"}};a.fn.tinyscrollbar=function(c){var c=a.extend({},a.tiny.scrollbar.options,c);this.each(function(){a(this).data("tsb",new b(a(this),c))});return this};a.fn.tinyscrollbar_update=function(b){return a(this).data("tsb").update(b)};})(jQuery) (function(a){
function b(b,c){
function w(a){
if(!(g.ratio>=1)){
o.now=Math.min(i[c.axis]-j[c.axis],Math.max(0,o.start+((k?a.pageX:a.pageY)-p.start)));
n=o.now*h.ratio;g.obj.css(l,-n);
j.obj.css(l,o.now)
}
return false
}
function v(b){
a(document).unbind("mousemove",w);
a(document).unbind("mouseup",v);
j.obj.unbind("mouseup",v);
document.ontouchmove=j.obj[0].ontouchend=document.ontouchend=null;
return false
}
function u(b){
if(!(g.ratio>=1)){
var b=b||window.event;
var d=b.wheelDelta?b.wheelDelta/120:-b.detail/3;
n-=d*c.wheel;
n=Math.min(g[c.axis]-f[c.axis],Math.max(0,n));
j.obj.css(l,n/h.ratio);
g.obj.css(l,-n);
b=a.event.fix(b);
b.preventDefault()
}
}
function t(b){
p.start=k?b.pageX:b.pageY;
var c=parseInt(j.obj.css(l));
o.start=c=="auto"?0:c;
a(document).bind("mousemove",w);
document.ontouchmove=function(b){
a(document).unbind("mousemove");
w(b.touches[0])
};
a(document).bind("mouseup",v);
j.obj.bind("mouseup",v);
j.obj[0].ontouchend=document.ontouchend=function(b){
a(document).unbind("mouseup");
j.obj.unbind("mouseup");
v(b.touches[0])
};
return false
}
function s(){
j.obj.bind("mousedown",t);
j.obj[0].ontouchstart=function(a){
a.preventDefault();
j.obj.unbind("mousedown");
t(a.touches[0]);
return false
};
i.obj.bind("mouseup",w);
if(c.scroll&&this.addEventListener){
e[0].addEventListener("DOMMouseScroll",u,false);
e[0].addEventListener("mousewheel",u,false)
}else if(c.scroll){
e[0].onmousewheel=u
}
}
function r(){
j.obj.css(l,n/h.ratio);
g.obj.css(l,-n);
p["start"]=j.obj.offset()[l];
var a=m.toLowerCase();
h.obj.css(a,i[c.axis]);
i.obj.css(a,i[c.axis]);
j.obj.css(a,j[c.axis])
}
function q(){
d.update();
s();
return d
}
var d=this;
var e=b;
var f={obj:a(".viewport",b)};
var g={obj:a(".overview",b)};
var h={obj:a(".scrollbar",b)};
var i={obj:a(".track",h.obj)};
var j={obj:a(".thumb",h.obj)};
var k=c.axis=="x",
l=k?"left":"top",
m=k?"Width":"Height";
var n,
o={start:0,now:0},
p={};
this.update=function(a){
f[c.axis]=f.obj[0]["offset"+m];
g[c.axis]=g.obj[0]["scroll"+m];
g.ratio=f[c.axis]/g[c.axis];
h.obj.toggleClass("disable",g.ratio>=1);
i[c.axis]=c.size=="auto"?f[c.axis]:c.size;
j[c.axis]=Math.min(i[c.axis],Math.max(0,c.sizethumb=="auto"?i[c.axis]*g.ratio:c.sizethumb));
h.ratio=c.sizethumb=="auto"?g[c.axis]/i[c.axis]:(g[c.axis]-f[c.axis])/(i[c.axis]-j[c.axis]);
n=a=="relative"&&g.ratio<=1?Math.min(g[c.axis]-f[c.axis],Math.max(0,n)):0;
n=a=="bottom"&&g.ratio<=1?g[c.axis]-f[c.axis]:isNaN(parseInt(a))?n:parseInt(a);
r()
};
return q()
}
a.tiny=a.tiny||{};
a.tiny.scrollbar={options:{axis:"y",wheel:40,scroll:true,size:"auto",sizethumb:"auto"}};
a.fn.tinyscrollbar=function(c){
var c=a.extend({},a.tiny.scrollbar.options,c);
this.each(function(){
a(this).data("tsb",new b(a(this),c))
});
return this
};
a.fn.tinyscrollbar_update=function(b){
return a(this).data("tsb").update(b)
};
})
(jQuery)

View File

@ -1,12 +1,23 @@
/*sidebar*/ /*sidebar*/
#back_sidebar { .nav-list {
left: 0; padding: 0px 0px 100px 5px;
position: fixed;
top: 0;
width: 160px;
} }
.nav-list li {
position: relative;
}
.nav-list ul {
margin-left: 10px;
}
.nav-list ul li {
padding: 5px 0;
}
.nav-list ul li a {
font-size: 13px;
padding: 3px 0px;
display: block;
}
/*
#back_sidebar h1 { #back_sidebar h1 {
background: url(<%= asset_path "h1_bg.png" %>) repeat-x scroll left top transparent; background: url(<%= asset_path "h1_bg.png" %>) repeat-x scroll left top transparent;
border-bottom: 1px solid #1B1B1B; border-bottom: 1px solid #1B1B1B;
@ -106,36 +117,35 @@
} }
#main-sidebar ul ul li a{ #main-sidebar ul ul li a{
padding: 10px 0 10px 20px; padding: 10px 0 10px 20px;
}*/
.with_action:hover .hide {
display: block;
} }
#main-sidebar li:hover .quick-edit{ #main-sidebar .quick-edit {
display:block;
}
#main-sidebar .quick-edit{
background: none repeat scroll 0 0 #FFFFFF; background: none repeat scroll 0 0 #FFFFFF;
border: 1px solid #DDDDDD; border: 1px solid #DDDDDD;
border-radius: 5px 5px 5px 5px; border-radius: 5px 5px 5px 5px;
display: none; margin: 0 0 0 3px;
margin:-3px 0 0 3px; padding: 0;
padding: 3px;
z-index:1; z-index:1;
position: absolute;
left: -3px;
width: 70px;
} }
#main-sidebar .quick-edit:after{ #main-sidebar .quick-edit a {
content: "."; display: block;
display: block; line-height: 22px;
height: 0;
clear: both;
visibility: hidden;
}
#main-sidebar .quick-edit a{
border-bottom: medium none; border-bottom: medium none;
border-radius: 5px 5px 5px 5px;
font-size:12px; font-size:12px;
float: left; margin: 0;
margin: 0 3px 0 0; padding: 3px 5px;
padding: 3px;
} }
#main-sidebar .quick-edit a:first-child {
#main-sidebar .quick-edit a:hover{ border-radius: 5px 5px 0px 0px;
background: none repeat scroll 0 0 #EEEEEE; }
border-bottom:none; #main-sidebar .quick-edit a:last-child {
border-radius: 0px 0px 5px 5px;
}
#main-sidebar .quick-edit a:hover {
background-color: #DDDDDD;
} }

View File

@ -632,12 +632,10 @@
margin-right: 20px; margin-right: 20px;
} }
.adbanner-action { .adbanner-action {
position: absolute; margin-bottom: 20px;
top: -32px; }
right: 0; #bulletin_link_qe form {
} margin: 0;
#bulletin_link_qe form {
margin: 0;
} }
[class^="icons-"] { [class^="icons-"] {
display: inline-block; display: inline-block;

View File

@ -53,11 +53,11 @@
display:inline-block; display:inline-block;
margin-right: 5px; margin-right: 5px;
opacity: 0.8; opacity: 0.8;
filter: alpha(opacity:80); filter: alpha(opacity=80);
} }
.action:hover { .action:hover {
opacity: 1; opacity: 1;
filter: alpha(opacity:100); filter: alpha(opacity=100);
cursor: pointer; cursor: pointer;
} }
.select-role { .select-role {
@ -95,23 +95,23 @@
opacity:.0; opacity:.0;
font-size: 60px; font-size: 60px;
left: -595px/9; left: -595px/9;
filter: alpha(opacity: 0); filter: alpha(opacity= 0);
outline: none; outline: none;
} }
.file-upload .upload:focus { .file-upload .upload:focus {
position:absolute; position:absolute;
} }
.file-upload .input-medium { .file-upload .input-medium {
border-radius: 3px 3px 3px 3px !important; border-radius: 3px 3px 3px 3px !important;
width: 267px; width: 267px;
position: relative; position: relative;
z-index: 5; z-index: 5;
display: block; display: block;
clear: both; clear: both;
} }
.file-upload .control-label { .file-upload .control-label {
margin-top: 0; margin-top: 0;
margin-bottom: 5px; margin-bottom: 5px;
} }
.upload-picture { .upload-picture {
margin-bottom: 5px; margin-bottom: 5px;

View File

@ -9,18 +9,20 @@ module Admin::ItemHelper
when 'Link' when 'Link'
dest = admin_link_path(node) dest = admin_link_path(node)
end end
ret << "<ul class='list'>" ret << "<ul>" unless node.parent.nil?
ret << "<li>" ret << "<li>"
ret << "<div class='with_action'>"
ret << (link_to node.i18n_variable[I18n.locale], dest) ret << (link_to node.i18n_variable[I18n.locale], dest)
ret << "<div class='quick-edit'>" ret << "<div class='quick-edit hide'>"
ret << (link_to t('admin.edit'), eval("edit_admin_#{node._type.downcase}_path(node)")) if node._type.eql?('Page') ret << (link_to t('admin.edit'), eval("edit_admin_#{node._type.downcase}_path(node)")) if node._type.eql?('Page')
ret << (link_to t('admin.new_page'), new_admin_page_path(:parent_id => node.id), :class => 'new_page') if node._type.eql?('Page') ret << (link_to t('admin.new_page'), new_admin_page_path(:parent_id => node.id), :class => 'new_page') if node._type.eql?('Page')
ret << (link_to t('admin.new_link'), new_admin_link_path(:parent_id => node.id), :class => 'new_link') if node._type.eql?('Page') ret << (link_to t('admin.new_link'), new_admin_link_path(:parent_id => node.id), :class => 'new_link') if node._type.eql?('Page')
ret << (link_to t(:delete), eval("delete_admin_#{node._type.downcase}_path(node, :authenticity_token => form_authenticity_token)"), :confirm => t('sure?'), :class => 'delete') ret << (link_to t(:delete), eval("delete_admin_#{node._type.downcase}_path(node, :authenticity_token => form_authenticity_token)"), :confirm => t('sure?'), :class => 'delete')
ret << "</div>" ret << "</div>"
ret << "</li>" ret << "</div>"
ret << render_children(node) ret << render_children(node)
ret << "</ul>" ret << "</li>"
ret << "</ul>" unless node.parent.nil?
end end
ret.html_safe ret.html_safe
end end

View File

@ -142,7 +142,6 @@ module ApplicationHelper
javascripts = '' javascripts = ''
unless edit unless edit
javascripts << "<script type='text/javascript' src='/static/jquery.js'></script>\n" javascripts << "<script type='text/javascript' src='/static/jquery.js'></script>\n"
javascripts << "<script type='text/javascript' src='/static/jquery.cycle.all.latest.js'></script>\n"
javascripts << "<script type='text/javascript' src='/assets/bootstrap.js'></script>\n" javascripts << "<script type='text/javascript' src='/assets/bootstrap.js'></script>\n"
javascripts << "<script type='text/javascript' src='/assets/jquery.tinyscrollbar.min.js'></script>\n" javascripts << "<script type='text/javascript' src='/assets/jquery.tinyscrollbar.min.js'></script>\n"
javascripts << "<script type='text/javascript' src='/assets/jquery.isotope.min.js'></script>\n" javascripts << "<script type='text/javascript' src='/assets/jquery.isotope.min.js'></script>\n"
@ -150,6 +149,7 @@ module ApplicationHelper
javascripts << "<script type='text/javascript' src='/assets/orbit-bar-search.js'></script>\n" javascripts << "<script type='text/javascript' src='/assets/orbit-bar-search.js'></script>\n"
javascripts << "<script type='text/javascript' src='/assets/orbit_bar.js'></script>\n" javascripts << "<script type='text/javascript' src='/assets/orbit_bar.js'></script>\n"
end end
javascripts << "<script type='text/javascript' src='/static/jquery.cycle.all.latest.js'></script>\n"
javascripts << "<script type='text/javascript' src='/static/kernel.js'></script>\n" javascripts << "<script type='text/javascript' src='/static/kernel.js'></script>\n"
javascripts << "<script type='text/javascript' src='/assets/event.js'></script>\n" javascripts << "<script type='text/javascript' src='/assets/event.js'></script>\n"
page.design.javascripts.each do |js| page.design.javascripts.each do |js|

View File

@ -13,7 +13,7 @@
</div> </div>
<h3>圖片列表</h3> <h3>圖片列表</h3>
<div class="adbanner-list"> <div class="adbanner-list">
<div class="adbanner-action pagination-right"> <div class="adbanner-action">
<%= link_to t("admin.ad.new_image"),new_admin_ad_banner_ad_image_path(ad_banner_tab) ,:class => "btn btn-primary"%> <%= link_to t("admin.ad.new_image"),new_admin_ad_banner_ad_image_path(ad_banner_tab) ,:class => "btn btn-primary"%>
<%= link_to t("modal.preview"), admin_realtime_preview_ad_banner_path(ad_banner_tab.title) , :class=>'preview_trigger btn btn-success'%> <%= link_to t("modal.preview"), admin_realtime_preview_ad_banner_path(ad_banner_tab.title) , :class=>'preview_trigger btn btn-success'%>
</div> </div>

View File

@ -1,3 +1 @@
<div id="viewport"> <%= render_node_and_children(Item.first(:conditions => {:parent_id => nil})) %>
<%= render_node_and_children(Item.first(:conditions => {:parent_id => nil})) %>
</div>

View File

@ -5,8 +5,8 @@
<%= flash_messages %> <%= flash_messages %>
<div id="container" class="sign-in"> <div id="container" class="sign-in">
<% flash.each do |key, msg| %> <% flash.each do |key, msg| %>
<%= content_tag :spen, msg, :class => [key, "notice label label-warning"] %> <%= content_tag :span, msg, :class => [key, "notice label label-warning"] %>
<% end%> <% end%>
<%= form_for :user, :url => user_session_path, :html => {:class => 'user_new form-horizontal'} do |f| %> <%= form_for :user, :url => user_session_path, :html => {:class => 'user_new form-horizontal'} do |f| %>
<div class="content"> <div class="content">
@ -18,10 +18,10 @@
<span class="help-inline">Please correct the error</span> <span class="help-inline">Please correct the error</span>
</div> </div>
<div class="control-group clear"> <div class="control-group clear">
<%= link_to t(:forgot_password), new_user_password_path, :class => 'pull-right forgot' %>
<%= f.label :password %> <%= f.label :password %>
<%= f.password_field :password, :placeholder => t(:dots), :style => "width: 330px;" %> <%= f.password_field :password, :placeholder => t(:dots), :style => "width: 330px;" %>
<span class="help-inline">Please correct the error</span> <span class="help-inline">Please correct the error</span>
<%= link_to t(:forgot_password), new_user_password_path, :class => 'pull-right forgot hide' %>
</div> </div>
</div> </div>
</div> </div>

View File

@ -69,7 +69,7 @@
<a class="dropdown-toggle orbit-bar-member" href="#"><%= t(:login) %></a> <a class="dropdown-toggle orbit-bar-member" href="#"><%= t(:login) %></a>
<div class="dropdown-menu"> <div class="dropdown-menu">
<ul class="log"> <ul class="log">
<li class="title"></li> <li class="title hide"></li>
<%= form_for :user, :url => user_session_path do |f| %> <%= form_for :user, :url => user_session_path do |f| %>
<li> <li>
@ -84,7 +84,7 @@
<%= f.password_field :password, :class => 'span2', :placeholder => t(:password), :size => 16 %> <%= f.password_field :password, :class => 'span2', :placeholder => t(:password), :size => 16 %>
</div> </div>
</li> </li>
<li class="clear"> <li class="clear hide">
<%= link_to t(:forgot_password), new_user_password_path, :class => 'forgot' %> <%= link_to t(:forgot_password), new_user_password_path, :class => 'forgot' %>
</li> </li>
<li> <li>
@ -94,10 +94,10 @@
<span style="display: inline-block;height: 10px;"><%= t(:remember_me) %></span> <span style="display: inline-block;height: 10px;"><%= t(:remember_me) %></span>
</label> </label>
</li> </li>
<li class="divider"><span><%= t(:or_lower) %></span></li> <li class="divider hide"><span><%= t(:or_lower) %></span></li>
<% end %> <% end %>
</ul> </ul>
<%= link_to t(:register), new_user_registration_path, :class => 'btn btn-danger register' %> <%#= link_to t(:register), new_user_registration_path, :class => 'btn btn-danger register' %>
</div> </div>
</li> </li>
<% end %> <% end %>

View File

@ -41,8 +41,8 @@
<%= content_tag :li, :class => active_for_controllers('web_links', '/panel/web_resource/back_end/tags', 'web_link_categorys') do -%> <%= content_tag :li, :class => active_for_controllers('web_links', '/panel/web_resource/back_end/tags', 'web_link_categorys') do -%>
<%= link_to content_tag(:i, nil, :class => 'icons-link') + t('admin.link'), panel_web_resource_back_end_web_links_path %> <%= link_to content_tag(:i, nil, :class => 'icons-link') + t('admin.link'), panel_web_resource_back_end_web_links_path %>
<%= content_tag :ul, :class => ("nav nav-list " + visible_for_controllers('web_links', '/panel/web_resource/back_end/tags', 'web_link_categorys')) do -%> <%= content_tag :ul, :class => ("nav nav-list " + visible_for_controllers('web_links', '/panel/web_resource/back_end/tags', 'web_link_categorys')) do -%>
<%= content_tag :li, link_to(t('admin.all_articles'), panel_web_resource_back_end_web_links_path), :class => active_for_action('web_link', 'index') %> <%= content_tag :li, link_to(t('admin.all_articles'), panel_web_resource_back_end_web_links_path), :class => active_for_action('web_links', 'index') %>
<%= content_tag :li, link_to(t('announcement.add_new'), new_panel_web_resource_back_end_web_link_path), :class => active_for_action('web_link', 'new') %> <%= content_tag :li, link_to(t('announcement.add_new'), new_panel_web_resource_back_end_web_link_path), :class => active_for_action('web_links', 'new') %>
<%= content_tag :li, link_to(t('announcement.categories'), panel_web_resource_back_end_web_link_categorys_path), :class => active_for_action('web_link_categorys', 'index') %> <%= content_tag :li, link_to(t('announcement.categories'), panel_web_resource_back_end_web_link_categorys_path), :class => active_for_action('web_link_categorys', 'index') %>
<%= content_tag :li, link_to(t('announcement.tags'), panel_web_resource_back_end_tags_path), :class => active_for_action('/panel/web_resource/back_end/tags', 'index') %> <%= content_tag :li, link_to(t('announcement.tags'), panel_web_resource_back_end_tags_path), :class => active_for_action('/panel/web_resource/back_end/tags', 'index') %>
<% end -%> <% end -%>

View File

@ -41,6 +41,7 @@ en:
submit: Submit submit: Submit
sure?: Are you sure? sure?: Are you sure?
update: Update update: Update
view: View
yes_: "Yes" yes_: "Yes"
admin: admin:

View File

@ -38,6 +38,7 @@ zh_tw:
submit: 送出 submit: 送出
sure?: 您肯定嗎? sure?: 您肯定嗎?
update: 更新 update: 更新
view: 檢視
yes_: "Yes" yes_: "Yes"
admin: admin:

View File

@ -29,6 +29,7 @@ module ParserCommon
res << '</ul>' res << '</ul>'
end end
end end
res
end end
def menu_li(page, current, menu, i, edit) def menu_li(page, current, menu, i, edit)

View File

@ -5,140 +5,636 @@
<subtitle>其他類別-最新活動</subtitle> <subtitle>其他類別-最新活動</subtitle>
<dc:language>zh-tw</dc:language> <dc:language>zh-tw</dc:language>
<entry> <entry>
<title>國立政治大學101學年度碩士班暨碩士在職專班招生考試</title> <title>IEEE Computer Society與ACM資料庫教育訓練</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2697&amp;key2=20120225" /> <link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2758&amp;key2=20120426"/>
<author> <author>
<name /> <name/>
</author> </author>
<summary type="text">101/02/25-101/02/26 07:00-17:00</summary> <summary type="text">101/04/26 13:00-15:00</summary>
</entry>
<entry>
<title>國立中正大學101學年度碩士班招生考試</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2698&amp;key2=20120310" />
<author>
<name />
</author>
<summary type="text">101/03/10 07:00-17:00</summary>
</entry>
<entry>
<title>「樂活飲食•健康之鑰」系列活動--膳食纖維的功用及食物來源</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2749&amp;key2=20120229" />
<author>
<name />
</author>
<summary type="text">101/02/29 12:00-14:00</summary>
</entry>
<entry>
<title>「樂活飲食•健康之鑰」系列活動-美味的代價與健康問題之探討</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2750&amp;key2=20120308" />
<author>
<name />
</author>
<summary type="text">101/03/08 12:00-14:00</summary>
</entry>
<entry>
<title>「樂活飲食•健康之鑰」系列活動--代謝症候群與檢康飲食</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2751&amp;key2=20120322" />
<author>
<name />
</author>
<summary type="text">101/03/22 12:00-14:00</summary>
</entry> </entry>
<entry> <entry>
<title>「學生健康體位控制班」</title> <title>「學生健康體位控制班」</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2766&amp;key2=20120301" /> <link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2766&amp;key2=20120426"/>
<author> <author>
<name /> <name/>
</author> </author>
<summary type="text">101/03/01-101/05/03 18:00-20:30</summary> <summary type="text">101/03/01-101/05/03 18:00-20:30</summary>
</entry> </entry>
<entry> <entry>
<title>學生大使志工團- 2012 Field Trip-Must Sea+ FUN舟趣</title> <title>傳播沙龍:從南加大電影藝術學院看美國電影創作教育</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2768&amp;key2=20120317" /> <link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2914&amp;key2=20120426"/>
<author> <author>
<name /> <name/>
</author> </author>
<summary type="text">101/03/17-101/03/18 08:00-20:00</summary> <summary type="text">101/04/26 12:30-14:00</summary>
</entry> </entry>
<entry> <entry>
<title>職場勞資關係講座-你知道自己的權益嗎?</title> <title>傳播沙龍:從南加大電影藝術學院看美國電影創作教育</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2776&amp;key2=20120305" /> <link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2914&amp;key2=20120426"/>
<author> <author>
<name /> <name/>
</author> </author>
<summary type="text">101/03/05 18:30-21:00</summary> <summary type="text">101/04/26 12:30-14:00</summary>
</entry> </entry>
<entry> <entry>
<title>職場「面面」觀 - 談職場趨勢與面試</title> <title>IEEE Computer Society與ACM資料庫教育訓練</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2791&amp;key2=20120306" /> <link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2758&amp;key2=20120426"/>
<author> <author>
<name /> <name/>
</author> </author>
<summary type="text">101/03/06 18:30-21:00</summary> <summary type="text">101/04/26 13:00-15:00</summary>
</entry> </entry>
<entry> <entry>
<title>「自」銷不要「滯」銷~一窺自我行銷術的秘密</title> <title>ScienceDirect Online資料庫教育訓練</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2792&amp;key2=20120307" /> <link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2770&amp;key2=20120427"/>
<author> <author>
<name /> <name/>
</author> </author>
<summary type="text">101/03/07 18:30-21:00</summary> <summary type="text">101/04/27 12:30-14:00</summary>
</entry> </entry>
<entry> <entry>
<title>職涯經驗談-開創職涯的一片天</title> <title>傳播沙龍:心健的心劍--新媒體藝術創作與教學</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2793&amp;key2=20120308" /> <link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2915&amp;key2=20120427"/>
<author> <author>
<name /> <name/>
</author> </author>
<summary type="text">101/03/08 18:30-21:00</summary> <summary type="text">101/04/27 12:30-14:00</summary>
</entry>
<entry>
<title>智財論壇:智財生態變革及研發創新經營</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2888&amp;key2=20120430"/>
<author>
<name/>
</author>
<summary type="text">101/04/30 10:10-11:50</summary>
</entry> </entry>
<entry> <entry>
<title>2012徵政好企業說明會--花旗銀行</title> <title>EICP東方線上資料庫教育訓練</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2795&amp;key2=20120305" /> <link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2754&amp;key2=20120430"/>
<author> <author>
<name /> <name/>
</author> </author>
<summary type="text">101/03/05 12:15-14:00</summary> <summary type="text">101/04/30 13:00-15:00</summary>
</entry> </entry>
<entry> <entry>
<title>2012徵政好企業說明會--日商野村總合研究所</title> <title>職場講座「數位文本實務課程」</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2796&amp;key2=20120309" /> <link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2874&amp;key2=20120424"/>
<author> <author>
<name /> <name/>
</author> </author>
<summary type="text">101/03/09 12:15-14:00</summary> <summary type="text">101/04/24-101/05/15 12:20-13:50</summary>
</entry> </entry>
<entry> <entry>
<title>2012徵政好企業說明會--渣打銀行</title> <title>EBSCO教育心理資料庫教育訓練</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2797&amp;key2=20120306" /> <link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2756&amp;key2=20120502"/>
<author> <author>
<name /> <name/>
</author> </author>
<summary type="text">101/03/06 12:15-14:00</summary> <summary type="text">101/05/02 12:30-14:00</summary>
</entry> </entry>
<entry> <entry>
<title>2012徵政好企業說明會--台新金控</title> <title>傳播沙龍:建制內的多元解讀:諜戰劇迷群體、文化表徵與中國語境</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2798&amp;key2=20120307" /> <link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2919&amp;key2=20120503"/>
<author> <author>
<name /> <name/>
</author> </author>
<summary type="text">101/03/07 12:15-14:00</summary> <summary type="text">101/05/03 12:30-14:00</summary>
</entry> </entry>
<entry> <entry>
<title>2012徵政好企業說明會--第一銀行</title> <title>職場講座「數位文本實務課程」</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2799&amp;key2=20120308" /> <link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2874&amp;key2=20120424"/>
<author> <author>
<name /> <name/>
</author> </author>
<summary type="text">101/03/08 12:15-14:00</summary> <summary type="text">101/04/24-101/05/15 12:20-13:50</summary>
</entry> </entry>
<entry> <entry>
<title>101年生命教育師資培訓課程研習會</title> <title>教發中心五月份數位教材製作工作坊_錄影後製與剪輯 05/09</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2800&amp;key2=20120324" /> <link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2909&amp;key2=20120509"/>
<author> <author>
<name /> <name/>
</author> </author>
<summary type="text">101/03/24-101/03/25 07:30-17:40</summary> <summary type="text">101/05/09 12:00-14:00</summary>
</entry> </entry>
<entry>
<title>文獻蒐集與報告撰寫入門</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2739&amp;key2=20120511"/>
<author>
<name/>
</author>
<summary type="text">101/05/11 13:00-15:00</summary>
</entry>
<entry>
<title>「2012台北-莫斯科論壇:新政展望」國際學術研討會</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2890&amp;key2=20120512"/>
<author>
<name/>
</author>
<summary type="text">101/05/12-101/05/13 08:30-17:30</summary>
</entry>
<entry>
<title>「2012台北-莫斯科論壇:新政展望」國際學術研討會</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2890&amp;key2=20120512"/>
<author>
<name/>
</author>
<summary type="text">101/05/12-101/05/13 08:30-17:30</summary>
</entry>
<entry>
<title>職場講座「數位文本實務課程」</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2874&amp;key2=20120424"/>
<author>
<name/>
</author>
<summary type="text">101/04/24-101/05/15 12:20-13:50</summary>
</entry>
<entry>
<title>文化講座「破戒:關於『色•戒』的實與虛」</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2875&amp;key2=20120524"/>
<author>
<name/>
</author>
<summary type="text">101/05/24 12:20-14:00</summary>
</entry>
<entry>
<title>John,我愛你-Suming彈唱會-跨國現場獨立音樂表演系列</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2848&amp;key2=20120427"/>
<author>
<name/>
</author>
<summary type="text">101/04/27 19:00-21:00</summary>
</entry>
<entry>
<title>藝文中心【電影】2012國際民族誌影展巡演-《牛糞》</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2789&amp;key2=20120430"/>
<author>
<name/>
</author>
<summary type="text">101/04/30 19:00-20:20</summary>
</entry>
<entry>
<title>波蘭前衛流行女聲-噶芭.庫爾卡(跨國現場獨立音樂表演系列)</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2847&amp;key2=20120504"/>
<author>
<name/>
</author>
<summary type="text">101/05/04 19:00-20:00</summary>
</entry>
<entry>
<title>Bleuel 雙重奏--薩克斯風與鋼琴</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2846&amp;key2=20120510"/>
<author>
<name/>
</author>
<summary type="text">101/05/10 19:30-20:30</summary>
</entry>
<entry>
<title>「東張西望」林語堂生活展,政大校園站開幕茶會</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2894&amp;key2=20120502"/>
<author>
<name/>
</author>
<summary type="text">101/05/02 11:00-12:00</summary>
</entry>
<entry>
<title>文化參訪「故宮特展:西方神話與傳說—羅浮宮珍藏展」</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2886&amp;key2=20120507"/>
<author>
<name/>
</author>
<summary type="text">101/05/07 08:30-12:00</summary>
</entry>
<entry>
<title>「學生健康體位控制班」</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2766&amp;key2=20120301"/>
<author>
<name/>
</author>
<summary type="text">101/03/01-101/05/03 18:00-20:30</summary>
</entry>
<entry>
<title>心靈陪伴工作坊</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2869&amp;key2=20120428"/>
<author>
<name/>
</author>
<summary type="text">101/04/28 09:30-16:30</summary>
</entry>
<entry>
<title>2012年福祿貝爾恩物親子戲遊成長團體(下午)</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2834&amp;key2=20120407"/>
<author>
<name/>
</author>
<summary type="text">101/04/07-101/06/09 14:00-16:00</summary>
</entry>
<entry>
<title>2012年福祿貝爾恩物親子戲遊成長團體(上午)</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2833&amp;key2=20120407"/>
<author>
<name/>
</author>
<summary type="text">101/04/07-101/06/02 09:00-11:00</summary>
</entry>
<entry>
<title>2012年世界狂歡節-環友世界</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2902&amp;key2=20120501"/>
<author>
<name/>
</author>
<summary type="text">101/05/01-101/05/10 00:00-23:59</summary>
</entry>
<entry>
<title>2012年世界狂歡節-「框」住瞬間「框」住世界</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2901&amp;key2=20120501"/>
<author>
<name/>
</author>
<summary type="text">101/05/01-101/05/08 00:00-23:59</summary>
</entry>
<entry>
<title>2012年世界狂歡節-從政大看台灣</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2903&amp;key2=20120501"/>
<author>
<name/>
</author>
<summary type="text">101/05/01-101/05/10 08:00-22:00</summary>
</entry>
<entry>
<title>2012年世界狂歡節-環友世界</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2902&amp;key2=20120501"/>
<author>
<name/>
</author>
<summary type="text">101/05/01-101/05/10 00:00-23:59</summary>
</entry>
<entry>
<title>2012年世界狂歡節-「框」住瞬間「框」住世界</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2901&amp;key2=20120501"/>
<author>
<name/>
</author>
<summary type="text">101/05/01-101/05/08 00:00-23:59</summary>
</entry>
<entry>
<title>2012年世界狂歡節-從政大看台灣</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2903&amp;key2=20120501"/>
<author>
<name/>
</author>
<summary type="text">101/05/01-101/05/10 08:00-22:00</summary>
</entry>
<entry>
<title>2012年世界狂歡節-「框」住瞬間「框」住世界</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2901&amp;key2=20120501"/>
<author>
<name/>
</author>
<summary type="text">101/05/01-101/05/08 00:00-23:59</summary>
</entry>
<entry>
<title>2012年世界狂歡節-環友世界</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2902&amp;key2=20120501"/>
<author>
<name/>
</author>
<summary type="text">101/05/01-101/05/10 00:00-23:59</summary>
</entry>
<entry>
<title>2012年世界狂歡節-從政大看台灣</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2903&amp;key2=20120501"/>
<author>
<name/>
</author>
<summary type="text">101/05/01-101/05/10 08:00-22:00</summary>
</entry>
<entry>
<title>校外租屋法律座談會</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2910&amp;key2=20120503"/>
<author>
<name/>
</author>
<summary type="text">101/05/03 12:00-14:00</summary>
</entry>
<entry>
<title>紅紙廊期中工作坊-帶遊戲的言談藝術</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2920&amp;key2=20120503"/>
<author>
<name/>
</author>
<summary type="text">101/05/03 12:10-14:00</summary>
</entry>
<entry>
<title>「學生健康體位控制班」</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2766&amp;key2=20120301"/>
<author>
<name/>
</author>
<summary type="text">101/03/01-101/05/03 18:00-20:30</summary>
</entry>
<entry>
<title>2012年世界狂歡節-「框」住瞬間「框」住世界</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2901&amp;key2=20120501"/>
<author>
<name/>
</author>
<summary type="text">101/05/01-101/05/08 00:00-23:59</summary>
</entry>
<entry>
<title>2012年世界狂歡節-環友世界</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2902&amp;key2=20120501"/>
<author>
<name/>
</author>
<summary type="text">101/05/01-101/05/10 00:00-23:59</summary>
</entry>
<entry>
<title>2012年世界狂歡節-從政大看台灣</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2903&amp;key2=20120501"/>
<author>
<name/>
</author>
<summary type="text">101/05/01-101/05/10 08:00-22:00</summary>
</entry>
<entry>
<title>身心放輕鬆 (教職員工心靈SPA講座)</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2876&amp;key2=20120504"/>
<author>
<name/>
</author>
<summary type="text">101/05/04 12:00-13:30</summary>
</entry>
<entry>
<title>2012年世界狂歡節- 五粵天粵語歌唱比賽『光輝歲月』</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2900&amp;key2=20120504"/>
<author>
<name/>
</author>
<summary type="text">101/05/04 18:00-22:00</summary>
</entry>
<entry>
<title>2012年世界狂歡節-環友世界</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2902&amp;key2=20120501"/>
<author>
<name/>
</author>
<summary type="text">101/05/01-101/05/10 00:00-23:59</summary>
</entry>
<entry>
<title>2012年世界狂歡節-「框」住瞬間「框」住世界</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2901&amp;key2=20120501"/>
<author>
<name/>
</author>
<summary type="text">101/05/01-101/05/08 00:00-23:59</summary>
</entry>
<entry>
<title>2012年世界狂歡節-從政大看台灣</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2903&amp;key2=20120501"/>
<author>
<name/>
</author>
<summary type="text">101/05/01-101/05/10 08:00-22:00</summary>
</entry>
<entry>
<title>2012年福祿貝爾恩物親子戲遊成長團體(上午)</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2833&amp;key2=20120407"/>
<author>
<name/>
</author>
<summary type="text">101/04/07-101/06/02 09:00-11:00</summary>
</entry>
<entry>
<title>2012年福祿貝爾恩物親子戲遊成長團體(下午)</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2834&amp;key2=20120407"/>
<author>
<name/>
</author>
<summary type="text">101/04/07-101/06/09 14:00-16:00</summary>
</entry>
<entry>
<title>2012年世界狂歡節-「框」住瞬間「框」住世界</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2901&amp;key2=20120501"/>
<author>
<name/>
</author>
<summary type="text">101/05/01-101/05/08 00:00-23:59</summary>
</entry>
<entry>
<title>2012年世界狂歡節-環友世界</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2902&amp;key2=20120501"/>
<author>
<name/>
</author>
<summary type="text">101/05/01-101/05/10 00:00-23:59</summary>
</entry>
<entry>
<title>2012年世界狂歡節-從政大看台灣</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2903&amp;key2=20120501"/>
<author>
<name/>
</author>
<summary type="text">101/05/01-101/05/10 08:00-22:00</summary>
</entry>
<entry>
<title>2012年世界狂歡節-「框」住瞬間「框」住世界</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2901&amp;key2=20120501"/>
<author>
<name/>
</author>
<summary type="text">101/05/01-101/05/08 00:00-23:59</summary>
</entry>
<entry>
<title>2012年世界狂歡節-環友世界</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2902&amp;key2=20120501"/>
<author>
<name/>
</author>
<summary type="text">101/05/01-101/05/10 00:00-23:59</summary>
</entry>
<entry>
<title>2012年世界狂歡節-從政大看台灣</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2903&amp;key2=20120501"/>
<author>
<name/>
</author>
<summary type="text">101/05/01-101/05/10 08:00-22:00</summary>
</entry>
<entry>
<title>2012年世界狂歡節-世界服裝大遊行</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2904&amp;key2=20120507"/>
<author>
<name/>
</author>
<summary type="text">101/05/07 12:00-13:00</summary>
</entry>
<entry>
<title>2012年世界狂歡節-環友世界</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2902&amp;key2=20120501"/>
<author>
<name/>
</author>
<summary type="text">101/05/01-101/05/10 00:00-23:59</summary>
</entry>
<entry>
<title>2012年世界狂歡節-「框」住瞬間「框」住世界</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2901&amp;key2=20120501"/>
<author>
<name/>
</author>
<summary type="text">101/05/01-101/05/08 00:00-23:59</summary>
</entry>
<entry>
<title>2012年世界狂歡節-從政大看台灣</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2903&amp;key2=20120501"/>
<author>
<name/>
</author>
<summary type="text">101/05/01-101/05/10 08:00-22:00</summary>
</entry>
<entry>
<title>2012年世界狂歡節-美食嘉年華</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2905&amp;key2=20120508"/>
<author>
<name/>
</author>
<summary type="text">101/05/08-101/05/10 12:00-14:00</summary>
</entry>
<entry>
<title>2012年世界狂歡節-開幕式</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2907&amp;key2=20120508"/>
<author>
<name/>
</author>
<summary type="text">101/05/08 12:10-13:30</summary>
</entry>
<entry>
<title>2012年世界狂歡節-「原,夜」晚會</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2906&amp;key2=20120508"/>
<author>
<name/>
</author>
<summary type="text">101/05/08 19:00-21:00</summary>
</entry>
<entry>
<title>2012年世界狂歡節-環友世界</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2902&amp;key2=20120501"/>
<author>
<name/>
</author>
<summary type="text">101/05/01-101/05/10 00:00-23:59</summary>
</entry>
<entry>
<title>2012年世界狂歡節-從政大看台灣</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2903&amp;key2=20120501"/>
<author>
<name/>
</author>
<summary type="text">101/05/01-101/05/10 08:00-22:00</summary>
</entry>
<entry>
<title>2012年世界狂歡節-美食嘉年華</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2905&amp;key2=20120508"/>
<author>
<name/>
</author>
<summary type="text">101/05/08-101/05/10 12:00-14:00</summary>
</entry>
<entry>
<title>2012年世界狂歡節-環友世界</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2902&amp;key2=20120501"/>
<author>
<name/>
</author>
<summary type="text">101/05/01-101/05/10 00:00-23:59</summary>
</entry>
<entry>
<title>2012年世界狂歡節-從政大看台灣</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2903&amp;key2=20120501"/>
<author>
<name/>
</author>
<summary type="text">101/05/01-101/05/10 08:00-22:00</summary>
</entry>
<entry>
<title>2012年世界狂歡節-美食嘉年華</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2905&amp;key2=20120508"/>
<author>
<name/>
</author>
<summary type="text">101/05/08-101/05/10 12:00-14:00</summary>
</entry>
<entry>
<title>2012年世界狂歡節-閉幕式</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2908&amp;key2=20120510"/>
<author>
<name/>
</author>
<summary type="text">101/05/10 12:00-13:20</summary>
</entry>
<entry>
<title>國立政治大學101學年度博士班招生考試</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2701&amp;key2=20120512"/>
<author>
<name/>
</author>
<summary type="text">101/05/12 07:00-17:00</summary>
</entry>
<entry>
<title>2012年福祿貝爾恩物親子戲遊成長團體(上午)</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2833&amp;key2=20120407"/>
<author>
<name/>
</author>
<summary type="text">101/04/07-101/06/02 09:00-11:00</summary>
</entry>
<entry>
<title>2012年福祿貝爾恩物親子戲遊成長團體(下午)</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2834&amp;key2=20120407"/>
<author>
<name/>
</author>
<summary type="text">101/04/07-101/06/09 14:00-16:00</summary>
</entry>
<entry>
<title>2012年福祿貝爾恩物親子戲遊成長團體(上午)</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2833&amp;key2=20120407"/>
<author>
<name/>
</author>
<summary type="text">101/04/07-101/06/02 09:00-11:00</summary>
</entry>
<entry>
<title>2012年福祿貝爾恩物親子戲遊成長團體(下午)</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2834&amp;key2=20120407"/>
<author>
<name/>
</author>
<summary type="text">101/04/07-101/06/09 14:00-16:00</summary>
</entry>
<entry>
<title>2012年福祿貝爾恩物親子戲遊成長團體(上午)</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2833&amp;key2=20120407"/>
<author>
<name/>
</author>
<summary type="text">101/04/07-101/06/02 09:00-11:00</summary>
</entry>
<entry>
<title>TOEIC英語測驗校園考</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2872&amp;key2=20120526"/>
<author>
<name/>
</author>
<summary type="text">101/05/26 09:30-12:00</summary>
</entry>
<entry>
<title>2012年福祿貝爾恩物親子戲遊成長團體(下午)</title>
<link rel="alternate" href="http://events.nccu.edu.tw/more.do?key=2834&amp;key2=20120407"/>
<author>
<name/>
</author>
<summary type="text">101/04/07-101/06/09 14:00-16:00</summary>
</entry>
</feed> </feed>

View File

@ -1,24 +1,28 @@
<tr id="<%= dom_id bulletin %>" class="with_action"> <tr id="<%= dom_id bulletin %>" class="with_action">
<td><%= check_box_tag 'to_delete[]', bulletin.id, false, :class => "checkbox_in_list" %></td> <td><%= check_box_tag 'to_delete[]', bulletin.id, false, :class => "checkbox_in_list" %></td>
<td> <td>
<% if bulletin.is_top? %> <div class="label-group">
<span class="label label-success"><%= t(:top) %></span> <div class="label-td">
<% end %> <% if bulletin.is_top? %>
<% if bulletin.is_hot? %> <span class="label label-success"><%= t(:top) %></span>
<span class="label label-important"><%= t(:hot) %></span> <% end %>
<% end %> <% if bulletin.is_hot? %>
<% if bulletin.is_hidden? %> <span class="label label-important"><%= t(:hot) %></span>
<span class="label"><%= t(:hidden) %></span> <% end %>
<% end %> <% if bulletin.is_hidden? %>
<% if bulletin.is_pending? %> <span class="label"><%= t(:hidden) %></span>
<span class="label"><%= t(:pending) %></span> <% end %>
<% end %> <% if bulletin.is_pending? %>
<% if bulletin.is_checked? %> <span class="label"><%= t(:pending) %></span>
<span class="label"><%= t(:passed) %></span> <% end %>
<% end %> <% if bulletin.is_checked? %>
<% if bulletin.is_rejected? %> <span class="label"><%= t(:passed) %></span>
<span class="label"><%= t(:rejected) %></span> <% end %>
<% end %> <% if bulletin.is_rejected? %>
<span class="label"><%= t(:rejected) %></span>
<% end %>
</div>
</div>
</td> </td>
<td><%= bulletin.bulletin_category.i18n_variable[I18n.locale] %></td> <td><%= bulletin.bulletin_category.i18n_variable[I18n.locale] %></td>
<td> <td>

View File

@ -4,7 +4,7 @@
<div class="control-group"> <div class="control-group">
<div class="controls"> <div class="controls">
<%= f.file_field :file %> <%= f.file_field :file %>
<%= form_bulletin_file.file.file ? ( link_to t(:view), form_bulletin_file.file.url, {:target => '_blank', :title => t(:view)} ) : '' %> <%= form_bulletin_file.file.file ? ( link_to t(:view), form_bulletin_file.file.url, {:class => 'btn', :target => '_blank', :title => t(:view)} ) : '' %>
</div> </div>
</div> </div>
</td> </td>

View File

@ -1,37 +1,3 @@
<!-- <div id="qe-tags">
<div id="widget-tags">
<div class="form-horizontal">
<div class="control-group error">
<label class="control-label" for="tags-zh-tw">
Chinese
</label>
<div class="controls">
<input id='tags-zh-tw' class="input-prepend" type="text">
<span class="help-inline">Please correct the error</span>
</div>
</div>
<div class="control-group">
<label class="control-label" for="tags-en">
English
</label>
<div class="controls">
<input id='tags-en' class="input-prepend" type="text">
<span class="help-inline">Please correct the error</span>
</div>
</div>
<div class="control-group">
<div class="controls">
<hr>
<span class="label label-tags">Default<a href><i class="icon-remove icon-white"></i></a></span>
<span class="label label-tags">Default<a href><i class="icon-remove icon-white"></i></a></span>
<span class="label label-tags">Default<a href><i class="icon-remove icon-white"></i></a></span>
<span class="label label-tags">Default<a href><i class="icon-remove icon-white"></i></a></span>
</div>
</div>
</div>
</div>
</div> -->
<div id="qe-tags" class="qe-edit-div"> <div id="qe-tags" class="qe-edit-div">
<div id="widget-tags"> <div id="widget-tags">
<div class="controls"> <div class="controls">

View File

@ -7,14 +7,32 @@ class Panel::WebResource::BackEnd::WebLinksController < OrbitBackendController
get_categorys(params[:web_link_category_id]) get_categorys(params[:web_link_category_id])
@filter = params[:filter]
new_filter = params[:new_filter]
if @filter && params[:clear]
@filter.delete(params[:type])
elsif @filter && new_filter
if @filter.has_key?(new_filter[:type]) && @filter[new_filter[:type]].include?(new_filter[:id].to_s)
@filter[new_filter[:type]].delete(new_filter[:id].to_s)
elsif @filter.has_key?(new_filter[:type])
@filter[new_filter[:type]] << new_filter[:id].to_s
else
@filter.merge!({new_filter[:type] => [new_filter[:id].to_s]})
end
elsif new_filter
@filter = {new_filter[:type] => [new_filter[:id].to_s]}
end
# @web_links = WebLink.search(params[:category_id]) # @web_links = WebLink.search(params[:category_id])
@web_links = WebLink.all.page(params[:page]).per(10) @web_links = (params[:sort] || @filter) ? get_sorted_and_filtered_web_links : WebLink.all.page(params[:page]).per(10)
get_tags get_tags
respond_to do |format| respond_to do |format|
format.html # index.html.erb format.html # index.html.erb
format.xml { render :xml => @web_links } format.xml { render :xml => @web_links }
format.js
end end
end end
@ -115,5 +133,75 @@ class Panel::WebResource::BackEnd::WebLinksController < OrbitBackendController
module_app = ModuleApp.first(:conditions => {:key => 'web_resource'}) module_app = ModuleApp.first(:conditions => {:key => 'web_resource'})
@tags = Tag.all(:conditions => {:module_app_id => module_app.id}) @tags = Tag.all(:conditions => {:module_app_id => module_app.id})
end end
def get_sorted_and_filtered_web_links
web_links = WebLink.all
case params[:sort]
when 'category'
category_ids = web_links.distinct(:web_link_category_id)
categories = WebLinkCategory.find(category_ids) rescue nil
if categories
h = Hash.new
categories.each { |category| h[category.i18n_variable[I18n.locale]] = category.id }
sorted = params[:direction].eql?('asc') ? h.sort : h.sort.reverse!
sorted_categorys = sorted.collect {|a| web_links.where(:web_link_category_id => a[1]).entries }
web_links = sorted_categorys.flatten!
end
when 'name'
h = Array.new
web_links.each { |web_link| h << [web_link.name[I18n.locale].downcase, web_link] }
sorted = params[:direction].eql?('asc') ? h.sort : h.sort.reverse!
web_links = sorted.collect {|a| a[1] }
when 'status'
web_links = web_links.order_by(:is_top, params[:direction]).order_by(:is_hot, params[:direction]).order_by(:is_hidden, params[:direction]).order_by(:is_pending, params[:direction]).order_by(:is_checked, params[:direction]).order_by(:is_rejected, params[:direction])
when 'tags'
a = Array.new
WebResourceTag.all.order_by(I18n.locale, params[:direction]).each { |tag| a << tag.web_links }
a.flatten!
a.uniq!
tmp = Array.new
web_links.where(:tag_ids => []).each { |web_link| tmp << [web_link.name[I18n.locale].downcase, web_link] }
sorted = params[:direction].eql?('asc') ? tmp.sort : tmp.sort.reverse!
sorted_names = sorted.collect {|a| a[1] }
a = params[:direction].eql?('asc') ? (sorted_names + a) : (a + sorted_names)
web_links = a.flatten
end
# if @filter
# @filter.each do |key, value|
# case key
# when 'status'
# a = Array.new
# web_links.each do |web_link|
# value.each do |v|
# case v
# when 'pending'
# a << web_link if web_link.is_checked.nil?
# when 'rejected'
# a << web_link if web_link.is_checked.eql?(false)
# else
# a << web_link if web_link[v]
# end
# end
# end
# web_links = a.uniq
# when 'categories'
# a = Array.new
# web_links.each do |web_link|
# a << web_link if value.include?(web_link.web_link_category.id.to_s)
# end
# web_links = a.uniq
# when 'tags'
# a = Array.new
# web_links.each do |web_link|
# web_link.tags.each do |tag|
# a << web_link if value.include?(tag.id.to_s)
# end
# end
# web_links = a.uniq
# end if value.size > 0
# end
# end
Kaminari.paginate_array(web_links).page(params[:page]).per(10)
end
end end

View File

@ -60,6 +60,10 @@ class WebLink
def text def text
@text ||= I18nVariable.first(:conditions => {:key => 'text', :language_value_id => self.id, :language_value_type => self.class}) rescue nil @text ||= I18nVariable.first(:conditions => {:key => 'text', :language_value_id => self.id, :language_value_type => self.class}) rescue nil
end
def sorted_tags
tags.order_by(I18n.locale, :asc)
end end
protected protected

View File

@ -1,13 +1,29 @@
<%= flash_messages %> <%= flash_messages %>
<div id="filter" class="subnav">
<div class="filters">
<div id="sort_headers" class="table-label">
<table class="table main-list">
<thead>
<tr>
<th class="span1-2"><%= t('web_link_category.key') %></th>
<% @site_valid_locales.each do |locale| %>
<th class="span1-2"><%= I18nVariable.first(:conditions => {:key => locale})[I18n.locale] %></th>
<% end %>
</tr>
</thead>
</table>
</div>
</div>
</div>
<table id="web_link_categorys" class="table main-list"> <table id="web_link_categorys" class="table main-list">
<thead> <thead>
<tr> <tr>
<th class="span1-2"><%= t('web_link_category.key') %></th> <th class="span1-2"></th>
<% @site_valid_locales.each do |locale| %> <% @site_valid_locales.each do |locale| %>
<th class="span1-2"><%= I18nVariable.first(:conditions => {:key => locale})[I18n.locale] %></th> <th class="span1-2"></th>
<% end %> <% end %>
</tr> </tr>
</thead> </thead>

View File

@ -0,0 +1,7 @@
<div id="filter" class="subnav">
<div class="filters">
<div id="sort_headers" class="table-label">
<%= render 'sort_headers' %>
</div>
</div>
</div>

View File

@ -0,0 +1,18 @@
<table class="table main-list">
<thead>
<tr class="sort-header">
<th class="sort span1 <%= is_sort_active?('status') %>">
<%= link_to (t('web_link.status') + content_tag(:b, nil, :class => is_sort?('status'))).html_safe, panel_web_resource_back_end_web_links_path({:filter => @filter}.merge(sortable('status'))), :class => 'js_history' %>
</th>
<th class="sort span1 <%= is_sort_active?('category') %>">
<%= link_to (t('web_link.category') + content_tag(:b, nil, :class => is_sort?('category'))).html_safe, panel_web_resource_back_end_web_links_path({:filter => @filter}.merge(sortable('category'))), :class => 'js_history' %>
</th>
<th class="sort span3 <%= is_sort_active?('name') %>">
<%= link_to (t('web_link.name') + content_tag(:b, nil, :class => is_sort?('name'))).html_safe, panel_web_resource_back_end_web_links_path({:filter => @filter}.merge(sortable('name'))), :class => 'js_history' %>
</th>
<th class="sort span2 <%= is_sort_active?('tags') %>">
<%= link_to (t('web_link.tags') + content_tag(:b, nil, :class => is_sort?('tags'))).html_safe, panel_web_resource_back_end_web_links_path({:filter => @filter}.merge(sortable('tags'))), :class => 'js_history' %>
</th>
</tr>
</thead>
</table>

View File

@ -0,0 +1,37 @@
<tr id="<%= dom_id web_link %>" class="with_action">
<td>
<div class="label-group">
<div class="label-td">
<% if web_link.is_top? %>
<span class="label label-success"><%= t(:top) %></span>
<% end %>
<% if web_link.is_hot? %>
<span class="label label-important"><%= t(:hot) %></span>
<% end %>
<% if web_link.is_hidden? %>
<span class="label"><%= t(:hidden) %></span>
<% end %>
</div>
</div>
</td>
<td><%= web_link.web_link_category.i18n_variable[I18n.locale] %></td>
<td>
<%= link_to web_link.name[I18n.locale], panel_web_resource_back_end_web_link_path(web_link) %>
<div class="quick-edit">
<ul class="nav nav-pills hide">
<li><%= link_to t('web_link.edit'), edit_panel_web_resource_back_end_web_link_path(web_link) %></li>
<li><%= link_to t('web_link.delete'), panel_web_resource_back_end_web_link_path(web_link), :confirm => t('sure?'), :method => :delete, :remote => true %></li>
</ul>
</div>
</td>
<td>
<div class="label-group">
<div class="label-td">
<% web_link.sorted_tags.each do |tag| %>
<span class="label label-tags"><%= tag[I18n.locale] %></span>
<% end %>
</div>
</div>
</td>
</tr>

View File

@ -1,30 +0,0 @@
<tr id="<%= dom_id post %>" class="with_action">
<td>
<% if post.is_top? %>
<span class="label label-success"><%= t(:top) %></span>
<% end %>
<% if post.is_hot? %>
<span class="label label-important"><%= t(:hot) %></span>
<% end %>
<% if post.is_hidden? %>
<span class="label"><%= t(:hidden) %></span>
<% end %>
<div class="quick-edit">
<ul class="nav nav-pills hide">
<li><%= link_to t('web_link.edit'), edit_panel_web_resource_back_end_web_link_path(post) %></li>
<li><%= link_to t('web_link.delete'), panel_web_resource_back_end_web_link_path(post), :confirm => t('sure?'), :method => :delete, :remote => true %></li>
</ul>
</div>
</td>
<td><%= post.web_link_category.i18n_variable[I18n.locale] %></td>
<td>
<%= link_to post.name[I18n.locale], panel_web_resource_back_end_web_link_path(post) %>
</td>
<td>
<% post.tags.each do |tag| %>
<span class="label label-tags"><%= tag[I18n.locale] %></span>
<% end %>
</td>
</tr>

View File

@ -1,23 +1,18 @@
<%= render 'filter' %>
<%= flash_messages %>
<table class="table main-list"> <table class="table main-list">
<thead> <thead>
<tr> <tr>
<th class="span1-2"><%= t('web_link.status') %></th> <th class="span1"></th>
<th class="span1-2"><%= t('web_link.category') %></th> <th class="span1"></th>
<th class="span1-2"><%= t('web_link.name') %></th> <th class="span3"></th>
<th class="span1-2"><%= t('web_link.tags') %></th> <th class="span2"></th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody id="tbody_web_links" class="sort-holder">
<%= render :partial => 'web_link', :collection => @web_links %>
<% @web_links.each do |post| %>
<%= render :partial => 'web_links', :locals => {:post => post} %>
<% end %>
</tbody> </tbody>
</table> </table>
<%= paginate @web_links %> <div id="web_link_pagination">
<%= paginate @web_links, :params => {:direction => params[:direction], :sort => params[:sort], :filter => @filter, :new_filter => nil} %>
</div>

View File

@ -0,0 +1,3 @@
$("#sort_headers").html("<%= j render 'sort_headers' %>");
$("#tbody_web_links").html("<%= j render :partial => 'web_link', :collection => @web_links %>");
$("#web_link_pagination").html("<%= j paginate @web_links, :params => {:direction => params[:direction], :sort => params[:sort], :filter => @filter, :new_filter => nil} %>");