diff --git a/Gemfile b/Gemfile index 5c9b15e7..0012fa39 100644 --- a/Gemfile +++ b/Gemfile @@ -11,11 +11,13 @@ gem 'devise', '1.5.3' gem 'exception_notification' # Send error trace gem 'execjs' gem 'jquery-rails' +gem 'jquery-ui-rails' gem 'kaminari', :git => 'git://github.com/amatsuda/kaminari.git' gem 'mini_magick' gem 'mongoid' +gem 'mongoid-tree', :require => 'mongoid/tree' gem "mongo_session_store-rails3" gem 'mysql2' gem 'nokogiri' diff --git a/Gemfile.lock b/Gemfile.lock index 2db01455..4e085437 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -96,6 +96,9 @@ GEM jquery-rails (1.0.19) railties (~> 3.0) thor (~> 0.14) + jquery-ui-rails (0.4.0) + jquery-rails + railties (>= 3.1.0) json (1.6.5) libv8 (3.3.10.4) linecache19 (0.5.12) @@ -116,6 +119,8 @@ GEM activemodel (~> 3.1) mongo (~> 1.3) tzinfo (~> 0.3.22) + mongoid-tree (0.7.0) + mongoid (~> 2.0) multi_json (1.1.0) mysql2 (0.3.11) net-ldap (0.3.1) @@ -273,10 +278,12 @@ DEPENDENCIES execjs factory_girl_rails jquery-rails + jquery-ui-rails kaminari! mini_magick mongo_session_store-rails3 mongoid + mongoid-tree mysql2 net-ldap (~> 0.3.1) nokogiri diff --git a/app/assets/images/editicon.png b/app/assets/images/editicon.png new file mode 100644 index 00000000..cef3e600 Binary files /dev/null and b/app/assets/images/editicon.png differ diff --git a/app/assets/images/icons_pack.png b/app/assets/images/icons_pack.png index 39669303..16ac9872 100644 Binary files a/app/assets/images/icons_pack.png and b/app/assets/images/icons_pack.png differ diff --git a/app/assets/images/icons_pack_white.png b/app/assets/images/icons_pack_white.png index 70fe3d85..e7360702 100644 Binary files a/app/assets/images/icons_pack_white.png and b/app/assets/images/icons_pack_white.png differ diff --git a/app/assets/javascripts/lib/jquery.ui.nestedSortable.js b/app/assets/javascripts/lib/jquery.ui.nestedSortable.js new file mode 100755 index 00000000..aad83af5 --- /dev/null +++ b/app/assets/javascripts/lib/jquery.ui.nestedSortable.js @@ -0,0 +1,391 @@ +/* + * jQuery UI Nested Sortable + * v 1.3.4 / 28 apr 2011 + * http://mjsarfatti.com/sandbox/nestedSortable + * + * Depends: + * jquery.ui.sortable.js 1.8+ + * + * License CC BY-SA 3.0 + * Copyright 2010-2011, Manuele J Sarfatti + */ + +(function($) { + + $.widget("ui.nestedSortable", $.extend({}, $.ui.sortable.prototype, { + + options: { + tabSize: 20, + disableNesting: 'ui-nestedSortable-no-nesting', + errorClass: 'ui-nestedSortable-error', + listType: 'ol', + maxLevels: 0, + revertOnError: 1 + }, + + _create: function() { + this.element.data('sortable', this.element.data('nestedSortable')); + return $.ui.sortable.prototype._create.apply(this, arguments); + }, + + destroy: function() { + this.element + .removeData("nestedSortable") + .unbind(".nestedSortable"); + return $.ui.sortable.prototype.destroy.apply(this, arguments); + }, + + _mouseDrag: function(event) { + + //Compute the helpers position + this.position = this._generatePosition(event); + this.positionAbs = this._convertPositionTo("absolute"); + + if (!this.lastPositionAbs) { + this.lastPositionAbs = this.positionAbs; + } + + //Do scrolling + if(this.options.scroll) { + var o = this.options, scrolled = false; + if(this.scrollParent[0] != document && this.scrollParent[0].tagName != 'HTML') { + + if((this.overflowOffset.top + this.scrollParent[0].offsetHeight) - event.pageY < o.scrollSensitivity) + this.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop + o.scrollSpeed; + else if(event.pageY - this.overflowOffset.top < o.scrollSensitivity) + this.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop - o.scrollSpeed; + + if((this.overflowOffset.left + this.scrollParent[0].offsetWidth) - event.pageX < o.scrollSensitivity) + this.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft + o.scrollSpeed; + else if(event.pageX - this.overflowOffset.left < o.scrollSensitivity) + this.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft - o.scrollSpeed; + + } else { + + if(event.pageY - $(document).scrollTop() < o.scrollSensitivity) + scrolled = $(document).scrollTop($(document).scrollTop() - o.scrollSpeed); + else if($(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity) + scrolled = $(document).scrollTop($(document).scrollTop() + o.scrollSpeed); + + if(event.pageX - $(document).scrollLeft() < o.scrollSensitivity) + scrolled = $(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed); + else if($(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity) + scrolled = $(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed); + + } + + if(scrolled !== false && $.ui.ddmanager && !o.dropBehaviour) + $.ui.ddmanager.prepareOffsets(this, event); + } + + //Regenerate the absolute position used for position checks + this.positionAbs = this._convertPositionTo("absolute"); + + //Set the helper position + if(!this.options.axis || this.options.axis != "y") this.helper[0].style.left = this.position.left+'px'; + if(!this.options.axis || this.options.axis != "x") this.helper[0].style.top = this.position.top+'px'; + + //Rearrange + for (var i = this.items.length - 1; i >= 0; i--) { + + //Cache variables and intersection, continue if no intersection + var item = this.items[i], itemElement = item.item[0], intersection = this._intersectsWithPointer(item); + if (!intersection) continue; + + if(itemElement != this.currentItem[0] //cannot intersect with itself + && this.placeholder[intersection == 1 ? "next" : "prev"]()[0] != itemElement //no useless actions that have been done before + && !$.contains(this.placeholder[0], itemElement) //no action if the item moved is the parent of the item checked + && (this.options.type == 'semi-dynamic' ? !$.contains(this.element[0], itemElement) : true) + //&& itemElement.parentNode == this.placeholder[0].parentNode // only rearrange items within the same container + ) { + + $(itemElement).mouseenter(); + + this.direction = intersection == 1 ? "down" : "up"; + + if (this.options.tolerance == "pointer" || this._intersectsWithSides(item)) { + $(itemElement).mouseleave(); + this._rearrange(event, item); + } else { + break; + } + + // Clear emtpy ul's/ol's + this._clearEmpty(itemElement); + + this._trigger("change", event, this._uiHash()); + break; + } + } + + var parentItem = (this.placeholder[0].parentNode.parentNode + && $(this.placeholder[0].parentNode.parentNode).closest('.ui-sortable').length) + ? $(this.placeholder[0].parentNode.parentNode) + : null, + level = this._getLevel(this.placeholder), + childLevels = this._getChildLevels(this.helper), + previousItem = this.placeholder[0].previousSibling ? $(this.placeholder[0].previousSibling) : null; + + if (previousItem != null) { + while (previousItem[0].nodeName.toLowerCase() != 'li' || previousItem[0] == this.currentItem[0]) { + if (previousItem[0].previousSibling) { + previousItem = $(previousItem[0].previousSibling); + } else { + previousItem = null; + break; + } + } + } + + newList = document.createElement(o.listType); + + this.beyondMaxLevels = 0; + + // If the item is moved to the left, send it to its parent level + if (parentItem != null && this.positionAbs.left < parentItem.offset().left) { + parentItem.after(this.placeholder[0]); + this._clearEmpty(parentItem[0]); + this._trigger("change", event, this._uiHash()); + } + // If the item is below another one and is moved to the right, make it a children of it + else if (previousItem != null && this.positionAbs.left > previousItem.offset().left + o.tabSize) { + this._isAllowed(previousItem, level+childLevels+1); + if (!previousItem.children(o.listType).length) { + previousItem[0].appendChild(newList); + } + previousItem.children(o.listType)[0].appendChild(this.placeholder[0]); + this._trigger("change", event, this._uiHash()); + } + else { + this._isAllowed(parentItem, level+childLevels); + } + + //Post events to containers + this._contactContainers(event); + + //Interconnect with droppables + if($.ui.ddmanager) $.ui.ddmanager.drag(this, event); + + //Call callbacks + this._trigger('sort', event, this._uiHash()); + + this.lastPositionAbs = this.positionAbs; + return false; + + }, + + _mouseStop: function(event, noPropagation) { + + // If the item is in a position not allowed, send it back + if (this.beyondMaxLevels) { + + this.placeholder.removeClass(this.options.errorClass); + + if (this.options.revertOnError) { + if (this.domPosition.prev) { + $(this.domPosition.prev).after(this.placeholder); + } else { + $(this.domPosition.parent).prepend(this.placeholder); + } + this._trigger("revert", event, this._uiHash()); + } else { + var parent = this.placeholder.parent().closest(this.options.items); + + for (var i = this.beyondMaxLevels - 1; i > 0; i--) { + parent = parent.parent().closest(this.options.items); + } + + parent.after(this.placeholder); + this._trigger("change", event, this._uiHash()); + } + + } + + // Clean last empty ul/ol + for (var i = this.items.length - 1; i >= 0; i--) { + var item = this.items[i].item[0]; + this._clearEmpty(item); + } + + $.ui.sortable.prototype._mouseStop.apply(this, arguments); + + }, + + serialize: function(o) { + + var items = this._getItemsAsjQuery(o && o.connected), + str = []; o = o || {}; + + $(items).each(function() { + var res = ($(o.item || this).attr(o.attribute || 'id') || '') + .match(o.expression || (/(.+)[-=_](.+)/)), + pid = ($(o.item || this).parent(o.listType) + .parent('li') + .attr(o.attribute || 'id') || '') + .match(o.expression || (/(.+)[-=_](.+)/)); + + if (res) { + str.push(((o.key || res[1]) + '[' + (o.key && o.expression ? res[1] : res[2]) + ']') + + '=' + + (pid ? (o.key && o.expression ? pid[1] : pid[2]) : 'root')); + } + }); + + if(!str.length && o.key) { + str.push(o.key + '='); + } + + return str.join('&'); + + }, + + toHierarchy: function(o) { + + o = o || {}; + var sDepth = o.startDepthCount || 0, + ret = []; + + $(this.element).children('li').each(function () { + var level = _recursiveItems($(this)); + ret.push(level); + }); + + return ret; + + function _recursiveItems(li) { + var id = ($(li).attr(o.attribute || 'id') || '').match(o.expression || (/(.+)[-=_](.+)/)); + if (id) { + var item = {"id" : id[2]}; + if ($(li).children(o.listType).children('li').length > 0) { + item.children = []; + $(li).children(o.listType).children('li').each(function() { + var level = _recursiveItems($(this)); + item.children.push(level); + }); + } + return item; + } + } + }, + + toArray: function(o) { + + o = o || {}; + var sDepth = o.startDepthCount || 0, + ret = [], + left = 2; + + ret.push({ + "item_id": 'root', + "parent_id": 'none', + "depth": sDepth, + "left": '1', + "right": ($('li', this.element).length + 1) * 2 + }); + + $(this.element).children('li').each(function () { + left = _recursiveArray(this, sDepth + 1, left); + }); + + ret = ret.sort(function(a,b){ return (a.left - b.left); }); + + return ret; + + function _recursiveArray(item, depth, left) { + + var right = left + 1, + id, + pid; + + if ($(item).children(o.listType).children('li').length > 0) { + depth ++; + $(item).children(o.listType).children('li').each(function () { + right = _recursiveArray($(this), depth, right); + }); + depth --; + } + + id = ($(item).attr(o.attribute || 'id')).match(o.expression || (/(.+)[-=_](.+)/)); + + if (depth === sDepth + 1) { + pid = 'root'; + } else { + var parentItem = ($(item).parent(o.listType) + .parent('li') + .attr(o.attribute || 'id')) + .match(o.expression || (/(.+)[-=_](.+)/)); + pid = parentItem[2]; + } + + if (id) { + ret.push({"item_id": id[2], "parent_id": pid, "depth": depth, "left": left, "right": right}); + } + + left = right + 1; + return left; + } + + }, + + _clearEmpty: function(item) { + + var emptyList = $(item).children(this.options.listType); + if (emptyList.length && !emptyList.children().length) { + emptyList.remove(); + } + + }, + + _getLevel: function(item) { + + var level = 1; + + if (this.options.listType) { + var list = item.closest(this.options.listType); + while (!list.is('.ui-sortable')) { + level++; + list = list.parent().closest(this.options.listType); + } + } + + return level; + }, + + _getChildLevels: function(parent, depth) { + var self = this, + o = this.options, + result = 0; + depth = depth || 0; + + $(parent).children(o.listType).children(o.items).each(function (index, child) { + result = Math.max(self._getChildLevels(child, depth + 1), result); + }); + + return depth ? result + 1 : result; + }, + + _isAllowed: function(parentItem, levels) { + var o = this.options; + // Are we trying to nest under a no-nest or are we nesting too deep? + if (parentItem == null || !(parentItem.hasClass(o.disableNesting))) { + if (o.maxLevels < levels && o.maxLevels != 0) { + this.placeholder.addClass(o.errorClass); + this.beyondMaxLevels = levels - o.maxLevels; + } else { + this.placeholder.removeClass(o.errorClass); + this.beyondMaxLevels = 0; + } + } else { + this.placeholder.addClass(o.errorClass); + if (o.maxLevels < levels && o.maxLevels != 0) { + this.beyondMaxLevels = levels - o.maxLevels; + } else { + this.beyondMaxLevels = 1; + } + } + } + + })); + + $.ui.nestedSortable.prototype.options = $.extend({}, $.ui.sortable.prototype.options, $.ui.nestedSortable.prototype.options); +})(jQuery); \ No newline at end of file diff --git a/vendor/built_in_modules/news/app/assets/javascripts/module_widget.js b/app/assets/javascripts/module.js.erb similarity index 95% rename from vendor/built_in_modules/news/app/assets/javascripts/module_widget.js rename to app/assets/javascripts/module.js.erb index aea46d72..fc19b8e6 100644 --- a/vendor/built_in_modules/news/app/assets/javascripts/module_widget.js +++ b/app/assets/javascripts/module.js.erb @@ -6,4 +6,3 @@ // //= require jquery //= require jquery_ujs -//= require news_link \ No newline at end of file diff --git a/app/assets/javascripts/page_edit.js b/app/assets/javascripts/page_edit.js.erb similarity index 63% rename from app/assets/javascripts/page_edit.js rename to app/assets/javascripts/page_edit.js.erb index a889f5b2..7c0f6923 100644 --- a/app/assets/javascripts/page_edit.js +++ b/app/assets/javascripts/page_edit.js.erb @@ -32,3 +32,24 @@ $('.part_kind').live('click', function() { $('.part_kind_partial').hide(); $('#part_' + $(this).attr('value')).show(); }); + +$(document).ready(function(){ + $('ol.sortable').nestedSortable({ + disableNesting: 'no-nest', + forcePlaceholderSize: true, + handle: 'i', + helper: 'clone', + items: 'li', + maxLevels: 3, + opacity: .5, + placeholder: 'placeholder', + revert: 250, + tabSize: 25, + tolerance: 'pointer', + toleranceElement: '> div', + + stop: function(event, ui) { + $.post("<%= Rails.application.routes.url_helpers.admin_update_position_path %>", { id: ui.item.attr('id'), parent_id: ui.item.parent().closest('li').attr('id'), position: ui.item.index() } ); + } + }); +}); \ No newline at end of file diff --git a/app/assets/javascripts/site_editor.js b/app/assets/javascripts/site_editor.js index 2076f04d..5d77e701 100644 --- a/app/assets/javascripts/site_editor.js +++ b/app/assets/javascripts/site_editor.js @@ -5,6 +5,9 @@ // the compiled file. // //= require jquery +//= require jquery.ui.draggable +//= require jquery.ui.droppable +//= require jquery.ui.sortable //= require jquery_ujs //= require bootstrap //= require jquery.isotope.min @@ -14,4 +17,5 @@ //= require side_bar_history //= require page_edit //= require tinymce-jquery -//= require tinymce_orbit \ No newline at end of file +//= require tinymce_orbit +//= require lib/jquery.ui.nestedSortable.js \ No newline at end of file diff --git a/app/assets/javascripts/tinymce_orbit.js b/app/assets/javascripts/tinymce_orbit.js index 60492914..71264fde 100644 --- a/app/assets/javascripts/tinymce_orbit.js +++ b/app/assets/javascripts/tinymce_orbit.js @@ -1,4 +1,4 @@ -$(function() { +function load_tinymce() { $('.tinymce_textarea').tinymce({ theme: 'advanced', plugins : "autolink,lists,spellchecker,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template", @@ -22,4 +22,8 @@ $(function() { external_image_list_url : "js/image_list.js", media_external_list_url : "js/media_list.js" }); +} + +$(document).ready(function() { + load_tinymce(); }); \ No newline at end of file diff --git a/app/assets/stylesheets/sidebar.css.erb b/app/assets/stylesheets/sidebar.css.erb index 4231d0bf..1e4b4010 100644 --- a/app/assets/stylesheets/sidebar.css.erb +++ b/app/assets/stylesheets/sidebar.css.erb @@ -6,13 +6,14 @@ .nav-list li { position: relative; } -.nav-list ul { - margin-left: 10px; +.nav-list ol { + margin-left: 20px; } -.nav-list ul li { +.nav-list ol li { padding: 5px 0; + list-style: none; } -.nav-list ul li a { +.nav-list ol li a { font-size: 13px; padding: 3px 0px; display: block; @@ -148,4 +149,28 @@ } #main-sidebar .quick-edit a:hover { background-color: #DDDDDD; +} +ol.nav>li>.icons-moves { + display: none; +} +.sortable i { + position: absolute; + left: -20px; + top: 6px; + margin-right: 0; + opacity: 0.3; + filter: alpha(opacity=30); +} +.sortable i:hover { + cursor:move; + opacity: 0.7; + filter: alpha(opacity=70); +} +.placeholder { + background-color: rgba(0,136,204,.6); + border-radius: 3px; +} +.ui-nestedSortable-error { + background: rgba(255,206,206,.6); + color: #8a1f11; } \ No newline at end of file diff --git a/app/assets/stylesheets/style.css.erb b/app/assets/stylesheets/style.css.erb index 9bba5765..ba1c3066 100644 --- a/app/assets/stylesheets/style.css.erb +++ b/app/assets/stylesheets/style.css.erb @@ -110,10 +110,8 @@ padding:6px; } #orbit-bar .nav > li.search { - background-image: none; overflow: hidden; width: 28px; - margin-bottom: 0; position: relative; } #orbit-bar .nav > li > a.orbit-bar-home { @@ -685,6 +683,33 @@ #banner [id^="slideshow-"] { z-index: 2 !important; } + +#back_main .editable { + position: relative; +} +#back_main .editable:after { + content: ''; + clear: both; + display: block; + visibility: hidden; + height: 0; +} + +#back_main .edit_link a { + position: absolute; + z-index: 10; + width: 100%; + height: 100%; + top: 0; + left: 0; + text-indent: -9999px; + background: url(<%= asset_path 'editicon.png' %>) no-repeat center center rgba(255,255,255,.8); + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 1); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 1); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 1); +} + + [class^="icons-"] { display: inline-block; width: 16px; @@ -1243,12 +1268,63 @@ .icons-plus { background-position: -288px -576px; } +/*20*/ .icons-power { background-position: -0px -608px; } -/*20*/ -.icons- { - background-position: -0px -608px; +.icons-output { + background-position: -32px -608px; +} +.icons-col-resize { + background-position: -64px -608px; +} +.icons-move { + background-position: -96px -608px; +} +.icons-size-out { + background-position: -128px -608px; +} +.icons-size-in { + background-position: -160px -608px; +} +.icons-slash { + background-position: -192px -608px; +} +.icons-level { + background-position: -224px -608px; +} +.icons-share { + background-position: -256px -608px; +} +.icons-share2 { + background-position: -288px -608px; +} +.icons-re { + background-position: -320px -608px; +} +.icons-insert { + background-position: -352px -608px; +} +.icons-insert2 { + background-position: -384px -608px; +} +.icons-download { + background-position: -416px -608px; +} +.icons-tag-rignt { + background-position: -448px -608px; +} +.icons-tag-top { + background-position: -480px -608px; +} +.icons-tag-bottom { + background-position: -512px -608px; +} +.icons-tag-left { + background-position: -544px -608px; +} +.icons-moves { + background-position: -576px -608px; } /*21*/ .icons- { diff --git a/app/controllers/admin/items_controller.rb b/app/controllers/admin/items_controller.rb index 33bc0fd2..1ea40640 100644 --- a/app/controllers/admin/items_controller.rb +++ b/app/controllers/admin/items_controller.rb @@ -15,6 +15,12 @@ class Admin::ItemsController < ApplicationController @item = get_homepage end end + + def update_position + item = Item.find(params[:id]) + item.shift_to(params[:parent_id], params[:position]) + render :nothing => true + end protected diff --git a/app/controllers/admin/module_apps_controller.rb b/app/controllers/admin/module_apps_controller.rb index f124dec2..0c90f854 100644 --- a/app/controllers/admin/module_apps_controller.rb +++ b/app/controllers/admin/module_apps_controller.rb @@ -12,13 +12,16 @@ class Admin::ModuleAppsController < ApplicationController def reload_frontend_pages @categories =[] @module_app = ModuleApp.find(params[:id]) - unless (@module_app.category.nil? rescue true) - @module_app.category.each do |category| - @categories << eval(category).all.entries - end - @categories.flatten! - else - @categories = nil + case @module_app.key + when 'announcement' + @categories = BulletinCategory.all + @tags = AnnouncementTag.all + when 'news' + @categories = NewsBulletinCategory.all + @tags = NewsTag.all + when 'web_resource' + @categories = WebLinkCategory.all + @tags = WebResourceTag.all end respond_to do |format| format.js {} diff --git a/app/controllers/admin/new_interface_module_apps_controller.rb b/app/controllers/admin/module_apps_new_interface_controller.rb similarity index 93% rename from app/controllers/admin/new_interface_module_apps_controller.rb rename to app/controllers/admin/module_apps_new_interface_controller.rb index 6603334c..52292588 100644 --- a/app/controllers/admin/new_interface_module_apps_controller.rb +++ b/app/controllers/admin/module_apps_new_interface_controller.rb @@ -1,4 +1,4 @@ -class Admin::NewInterfaceModuleAppsController < ApplicationController +class Admin::ModuleAppsNewInterfaceController < ApplicationController before_filter :authenticate_user! before_filter :is_admin? include AdminHelper @@ -6,7 +6,7 @@ class Admin::NewInterfaceModuleAppsController < ApplicationController layout "new_admin" def setting - @sys_users = User.all + @sys_users = User.all(conditions: {admin: false}) @module_app = ModuleApp.find(params[:module_app_id]) @options_from_collection_for_select_bulletin_categorys = [@module_app].collect{|ma| [ma.title,ma.id] } # if params.has_key? :category diff --git a/app/controllers/admin/object_auths_new_interface_controller.rb b/app/controllers/admin/object_auths_new_interface_controller.rb new file mode 100644 index 00000000..427ec722 --- /dev/null +++ b/app/controllers/admin/object_auths_new_interface_controller.rb @@ -0,0 +1,71 @@ +class Admin::ObjectAuthsNewInterfaceController < ApplicationController + include OrbitCoreLib::PermissionUnility + layout "new_admin" + before_filter :force_order + + layout "new_admin" + + + def setting + @sys_users = User.all(conditions: {admin: false}) + @ob_auth = ObjectAuth.find params[:object_auth_id] + @options_from_collection_for_select_ob_auth = [@ob_auth].collect{|oa| [oa.auth_obj.pp_object,oa.id] } + @users_array = @ob_auth.privilege_users rescue [] + + respond_to do |format| + format.html + format.js + end + end + + def update_setting + ob_auth = update_setting_by_params + if ob_auth.save! + flash[:notice] = t("admin.object_auth.update_done") + else + flash[:notice] = t("admin.object_auth.update_failed") + end + end + + def user_list + @ob_auth = ObjectAuth.find params[:ob_auth][:id] + end + + protected + def update_setting_by_params + oa = ObjectAuth.find params[:ob_auth][:id] + user_sat = User.find params[:users].keys + users_to_new = user_sat - oa.auth_users + users_to_remove = oa.auth_users - user_sat + + users_to_new.each do |new_user| + oa.add_user_to_privilege_list(new_user) + end + + users_to_remove.each do |remove_user| + oa.remove_user_from_privilege_list(remove_user) + end + oa + end + + # def get_categorys(id = nil) + # @bulletin_categorys = [] + # if(is_manager? || is_admin?) + # @bulletin_categorys = (id ? BulletinCategory.find(id).to_a : BulletinCategory.excludes('disabled' => true)) + # elsif is_sub_manager? + # @bulletin_categorys = BulletinCategory.authed_for_user(current_user,'submit_new') + # end + # end + + def force_order + authenticate_user! + check_if_user_can_do_object_auth + end + + def check_if_user_can_do_object_auth + unless check_permission(:manager) + render :nothing => true, :status => 403 + end + end + +end \ No newline at end of file diff --git a/app/controllers/admin/pages_controller.rb b/app/controllers/admin/pages_controller.rb index 65754319..44bda4aa 100644 --- a/app/controllers/admin/pages_controller.rb +++ b/app/controllers/admin/pages_controller.rb @@ -20,14 +20,14 @@ class Admin::PagesController < ApplicationController def new @item = Page.new @item.parent = Item.find(params[:parent_id]) rescue nil - @apps = ModuleApp.all + @apps = ModuleApp.excludes(app_pages: nil).entries @designs = Design.all.entries @design = Design.first end def edit @item = Page.find(params[:id]) - @apps = ModuleApp.all + @apps = ModuleApp.excludes(app_pages: nil).entries @designs = Design.all.entries @design = @item.design ? @item.design : @designs.first @app_frontend_urls = @item.module_app.app_pages if @item.module_app @@ -35,10 +35,13 @@ class Admin::PagesController < ApplicationController case @item.module_app.key when 'announcement' @categories = BulletinCategory.all + @tags = AnnouncementTag.all when 'news' @categories = NewsBulletinCategory.all + @tags = NewsTag.all when 'web_resource' @categories = WebLinkCategory.all + @tags = WebResourceTag.all end else @categories = nil diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index fb82774e..0a645397 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -45,9 +45,9 @@ class ApplicationController < ActionController::Base end # Render the page - def render_page(id = nil) + def render_page if @item - render :text => process_page(@item, id), :layout => 'page_layout' + render :text => parse_page_noko(@item), :layout => 'page_layout' else render :text => '404 Not Found' end diff --git a/app/controllers/orbit_backend_controller.rb b/app/controllers/orbit_backend_controller.rb index a03a1f6c..bdddfb43 100644 --- a/app/controllers/orbit_backend_controller.rb +++ b/app/controllers/orbit_backend_controller.rb @@ -23,7 +23,7 @@ class OrbitBackendController< ApplicationController def check_user_can_use unless check_permission #redirect_to polymorphic_path(['panel',@app_title,'back_end','public']) - render :text => '403 Forbidden' + redirect_to root_url end end diff --git a/app/controllers/orbit_frontend_component_controller.rb b/app/controllers/orbit_frontend_component_controller.rb index 185dbce6..09621e5f 100644 --- a/app/controllers/orbit_frontend_component_controller.rb +++ b/app/controllers/orbit_frontend_component_controller.rb @@ -1,7 +1,7 @@ class OrbitFrontendComponentController< ApplicationController before_filter :setup_vars before_filter {|c| c.front_end_available(@app_title)} - layout :false + layout "module_widget" def setup_vars @app_title = request.fullpath.split('/')[2] diff --git a/app/controllers/pages_controller.rb b/app/controllers/pages_controller.rb index c4e00aa2..45299450 100644 --- a/app/controllers/pages_controller.rb +++ b/app/controllers/pages_controller.rb @@ -15,11 +15,11 @@ class PagesController < ApplicationController def show #begin - @item = Item.first(:conditions => {:full_name => params[:page_name]}) + @item = Item.first(:conditions => {:path => params[:page_name]}) if @item && @item.is_published && (@item.enabled_for.nil? ? true : @item.enabled_for.include?(I18n.locale.to_s)) case @item._type when 'Page' - render_page(params) + render_page when 'Link' redirect_to "http://#{@item[:url]}" end @@ -32,17 +32,19 @@ class PagesController < ApplicationController end def index_from_link - if params[:page] - redirect_to "/#{@item.full_name}?page=#{params[:page]}&category_id=#{params[:category_id]}&tag_id=#{params[:tag_id]}" - else - redirect_to "/#{@item.full_name}?category_id=#{params[:category_id]}&tag_id=#{params[:tag_id]}" - end + url = "/#{@item.path}" + options = '' + options << "?page_main=#{params[:page_main]}" unless params[:page_main].blank? + options << "#{options.blank? ? '?' : '&'}category_id=#{params[:category_id]}" unless params[:category_id].blank? + options << "#{options.blank? ? '?' : '&'}tag_id=#{params[:tag_id]}" unless params[:tag_id].blank? + redirect_to url + options end def show_from_link - # debugger - # a=1 - redirect_to "/#{@item.full_name}?id=#{params[:id]}&preview=#{params[:preview]}" + url = "/#{@item.path}?id=#{params[:id]}" + options = '' + options << "&preview=#{params[:preview]}" unless params[:preview].blank? + redirect_to url + options end def load_orbit_bar diff --git a/app/helpers/admin/item_helper.rb b/app/helpers/admin/item_helper.rb index 8af4db34..b5ab255e 100644 --- a/app/helpers/admin/item_helper.rb +++ b/app/helpers/admin/item_helper.rb @@ -8,9 +8,10 @@ module Admin::ItemHelper dest = admin_page_path(node) when 'Link' dest = admin_link_path(node) + no_nested = 'no-nest' end - ret << "" unless node.parent.nil? end ret.html_safe end def render_children(parent) - children = parent.ordered_children - if !children.entries.blank? + children = parent.children + if !parent.children.entries.blank? ret = '' + ret << "
    " children.each do |child| ret << render_node_and_children(child) end + ret << '
' ret else '' end end -end \ No newline at end of file +end diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 844fbe14..d04d8c59 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -68,9 +68,23 @@ module ApplicationHelper end end - def active_sys_call_for_app(controller_name,action_name,app_title,field = :id) - unless active_for_action(controller_name,action_name).nil? - app = ModuleApp.find params[field] + def active_for_ob_auths_object(object_class,field = :object_auth_id) + unless active_for_action("object_auths_new_interface","setting").nil? + ob_auth = ObjectAuth.find params[field] + ob_auth.obj_authable_type == object_class.to_s ? 'active' : nil + end + end + + def active_for_ob_auth(ob_auth_title,field = :object_auth_id) + unless active_for_action("module_apps_new_interface","setting").nil? + oa_auth = ObjectAuth.find params[field] + oa_auth.title == ob_auth_title ? 'active' : nil + end + end + + def active_for_app_auth(app_title ='', opt={:controller_name => 'module_apps_new_interface',:action_name=>'setting',:field => :module_app_id}) + unless active_for_action(opt[:controller_name],opt[:action_name]).nil? + app = ModuleApp.find params[opt[:field]] app.title == app_title ? 'active' : nil else nil @@ -89,11 +103,7 @@ module ApplicationHelper def active_for_action(controller_name, action_name) ((controller.controller_name.eql?(controller_name) || request.fullpath.eql?(controller_name)) && controller.action_name.eql?(action_name)) ? 'active' : nil end - - def process_page(page, id, params) - parse_page_noko(page, id, params) - end - + def page_metas(page) tmp_meta = {} metas = '' @@ -114,7 +124,7 @@ module ApplicationHelper def page_title(page) res = "" page_title = page.title ? page.title[I18n.locale] : page.i18n_variable[I18n.locale] - if page.is_home? && @site.title + if page.root? && @site.title res << @site.title[I18n.locale] elsif @site.title && @site.title_always_on res << @site.title[I18n.locale] + ' - ' + page_title diff --git a/app/jobs/restart_server.rb b/app/jobs/restart_server.rb new file mode 100644 index 00000000..53167fea --- /dev/null +++ b/app/jobs/restart_server.rb @@ -0,0 +1,8 @@ +class RestartServer + @queue = :high + + def self.perform() + CronMail.time_check("Going to restarting Orbit").deliver + %x[touch #{Rails.root}/tmp/restart] + end +end diff --git a/app/models/item.rb b/app/models/item.rb index cea088fc..cdf0f2fb 100644 --- a/app/models/item.rb +++ b/app/models/item.rb @@ -2,59 +2,31 @@ class Item include Mongoid::Document include Mongoid::Timestamps + include Mongoid::Tree + include Mongoid::Tree::Ordering - field :name, :index => true - field :full_name, :index => true - field :position, :type => Integer - field :is_published, :type => Boolean, :default => false, :index => true - field :enabled_for, :type => Array, :default => nil - field :menu_enabled_for, :type => Array, :default => nil + field :name + field :path + field :is_published, :type => Boolean, :default => false + field :enabled_for, :type => Array, :default => nil + field :menu_enabled_for, :type => Array, :default => nil validates_format_of :name, :with => /^[0-9a-zA-Z\-_]+$/ validates :name, :exclusion => { :in => LIST[:forbidden_item_names] } validates_uniqueness_of :name, :scope => :parent_id - validates_presence_of :name, :full_name, :position + validates_presence_of :name + + validates_associated :parent, :children + after_rearrange :rebuild_path - belongs_to :parent, :class_name => "Item" has_one :i18n_variable, :as => :language_value, :autosave => true, :dependent => :destroy - has_many :children, :class_name => "Item", :as => 'parent' - - before_validation :setup_default_value def self.find_by_name(item_name) Item.first(:conditions => { :name => item_name, :is_published => true }) end - - # Get an array of ancestors - def ancestors - node, nodes = self, [] - nodes << node = node.parent while !node.parent.blank? rescue nil - nodes.reverse - end - # Get an array of ancestor's id - def ancestor_ids - node, nodes = self, [] - while !node.parent.blank? do - node = node.parent rescue nil - nodes << node.id if node - end - # nodes << node = node.parent while !node.parent.blank? rescue nil - nodes.reverse - end - - # Build the url from the array of ancestors - def url - urls = ancestors.map{ |a| a.name } << self.name - urls.join("/") - end - - def ordered_children - self.children.asc(:position) - end - - def ordered_and_visible_children - objects = ordered_children + def visible_children + objects = self.children a = [] if objects objects.each do |object| @@ -63,23 +35,30 @@ class Item end a end + + def shift_to(new_parent, position) + unless self.parent_id.to_s.eql?(new_parent) && self.position.eql?(position.to_i) + new_parent = Item.find(new_parent) + current_position_sibling = find_by_parent_and_position(new_parent, position.to_i) + if current_position_sibling + current_position_sibling.at_bottom? ? move_below(current_position_sibling) : move_above(current_position_sibling) + elsif self.parent != new_parent + self.parent = new_parent + save! + end + end + end protected - def setup_default_value - # Set the position value within the parent scope - if self.position.blank? - max_page = Item.where(:parent_id => self.parent_id).count - self.position = (max_page)? max_page + 1 : 1 - end - - # Build the full_name from the ancestors array - full_node = self.ancestors.map{ |a| a.name }.push( self.name ) - # Remove root node if not root - full_node.shift if full_node.size >= 2 - self.full_name = full_node.join("/") + def rebuild_path + self.path = (self.ancestors_and_self - [Item.root]).collect{|x| x.name unless x.root?}.join('/') end - + + def find_by_parent_and_position(parent, position) + parent.children.detect{|child| child.position == position} + end + # Enable the validation for parent_id def validates_presence_of_parent_id? true diff --git a/app/models/page.rb b/app/models/page.rb index 5a742e92..4bcb49a6 100644 --- a/app/models/page.rb +++ b/app/models/page.rb @@ -3,6 +3,8 @@ class Page < Item field :content field :app_frontend_url field :theme_id, :type => BSON::ObjectId, :default => nil + field :category + field :tag belongs_to :design belongs_to :module_app @@ -15,10 +17,6 @@ class Page < Item before_save :create_parts, :set_key # embeds_many :custom_images, :class_name => 'Image', as: :design_image - - def is_home? - self.parent ? false : true - end def title @title ||= I18nVariable.first(:conditions => {:key => 'title', :language_value_id => self.id, :language_value_type => self.class}) rescue nil diff --git a/app/models/page_part.rb b/app/models/page_part.rb index 8bb1bc72..52eafdf3 100644 --- a/app/models/page_part.rb +++ b/app/models/page_part.rb @@ -11,9 +11,27 @@ class PagePart field :public_r_tag_option, :default => nil field :widget_path - has_one :i18n_variable, :as => :language_value, :autosave => true, :dependent => :destroy + has_one :i18n_variable, :class_name => "I18nVariable", :as => :language_value, :autosave => true, :dependent => :destroy + has_one :title, :class_name => "I18nVariable", :as => :language_value, :autosave => true, :dependent => :destroy belongs_to :page belongs_to :module_app + before_save :set_key + + def i18n_variable + @i18n_variable ||= I18nVariable.first(:conditions => {:key => 'i18n_variable', :language_value_id => self.id, :language_value_type => self.class}) rescue nil + end + + def title + @title ||= I18nVariable.first(:conditions => {:key => 'title', :language_value_id => self.id, :language_value_type => self.class}) rescue nil + end + + protected + + def set_key + title.key = 'title' if title && (title.key.blank? rescue true) + i18n_variable.key = 'i18n_variable' if i18n_variable && (i18n_variable.key.blank? rescue true) + end + end \ No newline at end of file diff --git a/app/views/admin/items/_site_map_left_bar.html.erb b/app/views/admin/items/_site_map_left_bar.html.erb index e82b4988..8d32365f 100644 --- a/app/views/admin/items/_site_map_left_bar.html.erb +++ b/app/views/admin/items/_site_map_left_bar.html.erb @@ -1 +1 @@ -<%= render_node_and_children(Item.first(:conditions => {:parent_id => nil})) %> \ No newline at end of file +<%= render_node_and_children(Item.first(:conditions => {:parent_id => nil})) %> diff --git a/app/views/admin/module_apps/reload_frontend_pages.js.erb b/app/views/admin/module_apps/reload_frontend_pages.js.erb index 3feb17cf..2fc90b8e 100644 --- a/app/views/admin/module_apps/reload_frontend_pages.js.erb +++ b/app/views/admin/module_apps/reload_frontend_pages.js.erb @@ -1,2 +1,3 @@ $('#app_page_url').html("<%= escape_javascript(select 'page', 'app_frontend_url', @module_app.app_pages) %>"); -$('#app_page_category').html("<%= escape_javascript(select 'page', 'category', @categories.collect{|category| [category.i18n_variable[I18n.locale], category.id]}) if @categories %>"); \ No newline at end of file +$('#app_page_category').html("<%= j (select 'page', 'category', @categories.collect{|category| [category.i18n_variable[I18n.locale], category.id]}, {:include_blank => true}) if @categories %>"); +$('#app_page_tag').html("<%= j (select 'page', 'tag', @tags.collect{|tag| [tag[I18n.locale], tag.id]}, {:include_blank => true}) if @tags %>"); \ No newline at end of file diff --git a/app/views/admin/new_interface_module_apps/_modal_list.html.erb b/app/views/admin/module_apps_new_interface/_modal_list.html.erb similarity index 100% rename from app/views/admin/new_interface_module_apps/_modal_list.html.erb rename to app/views/admin/module_apps_new_interface/_modal_list.html.erb diff --git a/app/views/admin/new_interface_module_apps/_privilege_user.html.erb b/app/views/admin/module_apps_new_interface/_privilege_user.html.erb similarity index 100% rename from app/views/admin/new_interface_module_apps/_privilege_user.html.erb rename to app/views/admin/module_apps_new_interface/_privilege_user.html.erb diff --git a/app/views/admin/new_interface_module_apps/setting.html.erb b/app/views/admin/module_apps_new_interface/setting.html.erb similarity index 100% rename from app/views/admin/new_interface_module_apps/setting.html.erb rename to app/views/admin/module_apps_new_interface/setting.html.erb diff --git a/app/views/admin/new_interface_module_apps/setting.js.erb b/app/views/admin/module_apps_new_interface/setting.js.erb similarity index 100% rename from app/views/admin/new_interface_module_apps/setting.js.erb rename to app/views/admin/module_apps_new_interface/setting.js.erb diff --git a/app/views/admin/new_interface_module_apps/update_setting.js.erb b/app/views/admin/module_apps_new_interface/update_setting.js.erb similarity index 100% rename from app/views/admin/new_interface_module_apps/update_setting.js.erb rename to app/views/admin/module_apps_new_interface/update_setting.js.erb diff --git a/app/views/admin/new_interface_module_apps/user_list.js.erb b/app/views/admin/module_apps_new_interface/user_list.js.erb similarity index 100% rename from app/views/admin/new_interface_module_apps/user_list.js.erb rename to app/views/admin/module_apps_new_interface/user_list.js.erb diff --git a/vendor/built_in_modules/news/app/views/panel/news/back_end/news_bulletin_category_setting/_modal_list.html.erb b/app/views/admin/object_auths_new_interface/_modal_list.html.erb similarity index 72% rename from vendor/built_in_modules/news/app/views/panel/news/back_end/news_bulletin_category_setting/_modal_list.html.erb rename to app/views/admin/object_auths_new_interface/_modal_list.html.erb index c7e842bd..04f46511 100644 --- a/vendor/built_in_modules/news/app/views/panel/news/back_end/news_bulletin_category_setting/_modal_list.html.erb +++ b/app/views/admin/object_auths_new_interface/_modal_list.html.erb @@ -1,13 +1,13 @@ -<% if bulletin_category -%> +<% if ob_auth -%> -<div class="modal hide fade in" id="bulletin_category-<%=bulletin_category.id%>"> +<div class="modal hide fade in" id="ob_auth-<%=ob_auth.id%>"> <div class="modal-header"> <a class="close" data-dismiss="modal">×</a> - <h3><%= t("announcement.bulletin.submit_user_list") %></h3> + <h3><%= t("admin.object_auth.list_title_of_users",:auth_title => ob_auth.title) %></h3> </div> <div class="modal-body"> <div class="clear"> - <% bulletin_category.get_object_auth_by_title('submit').auth_users.each do |user| %> + <% ob_auth.auth_users.each do |user| %> <div class="checkbox clear checked"> <div class='member-avatar'> <% if user.avatar? %> @@ -29,7 +29,7 @@ <script type="text/javascript"> $(document).ready(function() { - $("#bulletin_category-<%=bulletin_category.id%>").on("show", function () { + $("#ob_auth-<%=ob_auth.id%>").on("show", function () { }); $(".modal").on("hidden", function () { $("#show_preview").remove(); @@ -39,6 +39,4 @@ </div> </div> - - -<% end -%> +<% end -%> \ No newline at end of file diff --git a/vendor/built_in_modules/news/app/views/panel/news/back_end/news_bulletin_category_setting/_privilege_user.html.erb b/app/views/admin/object_auths_new_interface/_privilege_user.html.erb similarity index 93% rename from vendor/built_in_modules/news/app/views/panel/news/back_end/news_bulletin_category_setting/_privilege_user.html.erb rename to app/views/admin/object_auths_new_interface/_privilege_user.html.erb index c36941de..90f5cb65 100644 --- a/vendor/built_in_modules/news/app/views/panel/news/back_end/news_bulletin_category_setting/_privilege_user.html.erb +++ b/app/views/admin/object_auths_new_interface/_privilege_user.html.erb @@ -1,6 +1,5 @@ <%= content_tag :div ,:id => "users_checkbox_ary",:class => 'clear' do -%> -<% sys_users = User.all -%> - <% sys_users.each do |sys_user| -%> + <% @sys_users.each do |sys_user| -%> <div class="checkblock"> diff --git a/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletin_category_setting/setting.html.erb b/app/views/admin/object_auths_new_interface/setting.html.erb similarity index 73% rename from vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletin_category_setting/setting.html.erb rename to app/views/admin/object_auths_new_interface/setting.html.erb index 3a21ede8..ae5096ba 100644 --- a/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletin_category_setting/setting.html.erb +++ b/app/views/admin/object_auths_new_interface/setting.html.erb @@ -12,21 +12,22 @@ <ul class="nav nav-pills filter pull-left"> <li class="accordion-group"> <div class="form-search" style="margin: 5px 10px;"> - <%= label_tag :category, t("announcement.bulletin.category") %> - <%= select "category",'id',@options_from_collection_for_select_bulletin_categorys %> + <%= label_tag :object, @ob_auth.auth_obj.class %> + <%= label_tag :module,"::" %> + <%= select "ob_auth",'id',@options_from_collection_for_select_ob_auth %> <%= search_field_tag 'user_filter' %> </div> </li> </ul> - <%= link_to t("announcement.bulletin.submit_user_list"), panel_announcement_back_end_bulletin_category_user_list_path , :class=>'preview_trigger btn btn-success pull-right'%> + <%= link_to t("admin.object_auth.list_title_of_users",:auth_title => @ob_auth.title), admin_object_auth_ob_auth_show_path , :class=>'preview_trigger btn btn-success pull-right'%> </div> <%#= label_tag :role, t("admin.roles") %> <div class="clear"> <%= content_tag :div do -%> - <% form_tag panel_announcement_back_end_approval_setting_path do %> - <%= render :partial => "privilege_user", :locals => {:users => @users_array} %> + <% form_tag admin_object_auth_ob_auth_path do %> + <%#= render :partial => "privilege_user", :locals => {:users => @users_array} %> <div class="form-actions form-fixed pagination-right"> <%= submit_tag "Update", :class => 'btn btn-primary' %> </div> @@ -53,4 +54,4 @@ $(document).ready(function() { }); }); }); -</script> +</script> \ No newline at end of file diff --git a/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletin_category_setting/setting.js.erb b/app/views/admin/object_auths_new_interface/setting.js.erb similarity index 100% rename from vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletin_category_setting/setting.js.erb rename to app/views/admin/object_auths_new_interface/setting.js.erb diff --git a/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletin_category_setting/update_setting.js.erb b/app/views/admin/object_auths_new_interface/update_setting.js.erb similarity index 100% rename from vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletin_category_setting/update_setting.js.erb rename to app/views/admin/object_auths_new_interface/update_setting.js.erb diff --git a/app/views/admin/object_auths_new_interface/user_list.js.erb b/app/views/admin/object_auths_new_interface/user_list.js.erb new file mode 100644 index 00000000..ebb088cc --- /dev/null +++ b/app/views/admin/object_auths_new_interface/user_list.js.erb @@ -0,0 +1,2 @@ +$('#show_preview').html("<%= escape_javascript(render(:partial => 'modal_list',:locals => {:ob_auth => @ob_auth})) %>"); +var start_modal_with_id = "ob_auth-<%=@ob_auth.id%>" \ No newline at end of file diff --git a/app/views/admin/page_parts/_edit.html.erb b/app/views/admin/page_parts/_edit.html.erb index ec99c555..eaee4d8f 100644 --- a/app/views/admin/page_parts/_edit.html.erb +++ b/app/views/admin/page_parts/_edit.html.erb @@ -2,7 +2,7 @@ <% LIST[:page_part_kinds].each do |kind| %> <%= f.radio_button :kind, kind, :class => 'part_kind' %> - <%= t(kind) %> + <%= t(kind, :scope => 'admin.page_part_kinds') %> <% end %> <% LIST[:page_part_kinds].each do |kind| %> diff --git a/app/views/admin/page_parts/_module_widget.html.erb b/app/views/admin/page_parts/_module_widget.html.erb index 3f81a5ae..1a1dd63c 100644 --- a/app/views/admin/page_parts/_module_widget.html.erb +++ b/app/views/admin/page_parts/_module_widget.html.erb @@ -1,3 +1,14 @@ +<div> + <%= f.fields_for :title, @part.title do |f| %> + <% @site_valid_locales.each do |locale| %> + <p> + <%= f.label :locale, "#{t('admin.title')} #{I18nVariable.from_locale(locale)}" %> + <%= f.text_field locale %> + </p> + <% end %> +<% end %> +</div> + <span id='module_app_list'> <%= f.select :module_app, options_from_collection_for_select(@module_apps, :id, :title, :selected => @module_app.id), {}, {:rel => admin_page_parts_path} %> </span> diff --git a/app/views/admin/page_parts/_text.html.erb b/app/views/admin/page_parts/_text.html.erb index c7386623..529773e3 100644 --- a/app/views/admin/page_parts/_text.html.erb +++ b/app/views/admin/page_parts/_text.html.erb @@ -5,4 +5,10 @@ <%= f.text_area locale, :class => 'tinymce_textarea' %> </div> <% end %> -<% end %> \ No newline at end of file +<% end %> + +<script> + $(document).ready(function() { + load_tinymce(); + }); +</script> diff --git a/app/views/admin/pages/_edit.html.erb b/app/views/admin/pages/_edit.html.erb index 61ff8046..81d40ed6 100644 --- a/app/views/admin/pages/_edit.html.erb +++ b/app/views/admin/pages/_edit.html.erb @@ -1,10 +1,11 @@ <%= flash_messages %> - -<h1><%= t('admin.editing_page') %></h1> - -<%= form_for @item, :url => admin_page_path(@item) do |f| %> - <%= render :partial => "form", :locals => { :f => f } %> - <p> - <%= f.submit t('update') %> <%= link_back %> - </p> -<% end %> \ No newline at end of file +<div id="poststuff"> + <h1><%= t('admin.editing_page') %></h1> + <%= form_for @item, :url => admin_page_path(@item), :html => { :class => 'form-horizontal edit_page' } do |f| %> + <%= render :partial => "form", :locals => { :f => f } %> + <div class="form-actions"> + <%= f.submit t('update'), :class => 'btn btn-primary' %> + <%= link_to t('cancel'), get_go_back, :class=>"btn" %> + </div> + <% end %> +</div> diff --git a/app/views/admin/pages/_form.html.erb b/app/views/admin/pages/_form.html.erb index 7aae7c00..eff3e4df 100644 --- a/app/views/admin/pages/_form.html.erb +++ b/app/views/admin/pages/_form.html.erb @@ -1,52 +1,95 @@ <%= f.error_messages %> <%= f.hidden_field :parent, :value => (@item.parent.id rescue nil) %> -<p> -<%= f.label :name, t('admin.name') %> -<%= f.text_field :name, :class => 'text' %> -</p> +<div class="control-group"> + <%= f.label :name, t('admin.name'), :class => 'control-label' %> + <div class="controls"> + <%= f.text_field :name, :class => 'text input-xlarge' %> + <!-- <p class="help-block">In addition to freeform text, any HTML5 text-based input appears like so.</p> --> + </div> +</div> <%= f.fields_for :i18n_variable, (@item.new_record? ? @item.build_i18n_variable : @item.i18n_variable) do |f| %> - <% @site_valid_locales.each do |locale| %> - <p> - <%= f.label :locale, "#{t('admin.title')} #{I18nVariable.from_locale(locale)}" %> - <%= f.text_field locale %> - </p> - <% end %> + <% @site_valid_locales.each do |locale| %> + <div class="control-group"> + <%= f.label :locale, "#{t('admin.title')} #{I18nVariable.from_locale(locale)}", :class => 'control-label' %> + <div class="controls"> + <%= f.text_field locale, :class => 'text input-xlarge' %> + <!-- <p class="help-block">In addition to freeform text, any HTML5 text-based input appears like so.</p> --> + </div> + </div> + <% end %> <% end %> -<p> - <%= t('admin.design_name') %> - <%= f.collection_select :design, @designs, :id, :title, {:selected => @design.id}, {:rel => admin_pages_path} %> -</p> -<p> - <%= t('admin.theme') %> - <%= f.select :theme_id, @design.themes.collect { |t| [t.name.capitalize, t.id] }, :include_blank => true %> -</p> -<p> - <%= t('admin.module_app') %> - <%= render :partial => "app_selector", :locals => { :f => f } %> - <span id="app_page_url"><%= select('page','app_frontend_url', @app_frontend_urls, :selected => @item.app_frontend_url ) rescue ''%> </span> - <span id="app_page_category"><%= select('page','category', @categories.collect{|category| [category.i18n_variable[I18n.locale], category.id]}, :selected => @item[:category], :include_blank => true ) rescue ''%> </span> -</p> -<p> - <%= f.label :is_published, "#{t('admin.is_published')} ?" %> - <%= f.radio_button :is_published, true %>Yes <%= f.radio_button :is_published, false %> No -</p> -<p> - <%= f.label :menu_enabled_for, "#{t('admin.menu_enabled_for')}:" %> - <% @site_valid_locales.each do |valid_locale| %> - <%= check_box_tag 'page[menu_enabled_for][]', valid_locale, (@item.menu_enabled_for.nil? ? true : @item.menu_enabled_for.include?(valid_locale)) %> - <%= I18nVariable.from_locale(valid_locale) %> - <% end %> - <%= hidden_field_tag 'page[menu_enabled_for][]', '' %> -</p> -<p> - <%= f.label :enabled_for, "#{t('admin.enabled_for')}:" %> - <% @site_valid_locales.each do |valid_locale| %> - <%= check_box_tag 'page[enabled_for][]', valid_locale, (@item.enabled_for.nil? ? true : @item.enabled_for.include?(valid_locale)) %> - <%= I18nVariable.from_locale(valid_locale) %> - <% end %> - <%= hidden_field_tag 'page[enabled_for][]', '' %> -</p> +<div class="control-group"> + <%= f.label :name, t('admin.design_name'), :class => 'control-label' %> + <div class="controls"> + <%= f.collection_select :design, @designs, :id, :title, {:selected => @design.id}, {:rel => admin_pages_path} %> + <!-- <p class="help-block">In addition to freeform text, any HTML5 text-based input appears like so.</p> --> + </div> +</div> +<div class="control-group"> + <%= f.label :name, t('admin.theme'), :class => 'control-label' %> + <div class="controls"> + <%= f.select :theme_id, @design.themes.collect { |t| [t.name.capitalize, t.id] }, :include_blank => true %> + <!-- <p class="help-block">In addition to freeform text, any HTML5 text-based input appears like so.</p> --> + </div> +</div> +<div class="control-group"> + <%= f.label :name, t('admin.module_app'), :class => 'control-label' %> + <div class="controls"> + <%= render :partial => "app_selector", :locals => { :f => f } %> + <span id="app_page_url"> + <%= select('page','app_frontend_url', @app_frontend_urls, :selected => @item.app_frontend_url ) rescue ''%> + </span> + <span id="app_page_category"> + <%= select('page','category', @categories.collect{|category| [category.i18n_variable[I18n.locale], category.id]}, :selected => @item[:category], :include_blank => true ) rescue ''%> + </span> + <span id="app_page_tag"> + <%= select('page','tag', @tags.collect{|tag| [tag[I18n.locale], tag.id]}, :selected => @item[:tag], :include_blank => true ) rescue ''%> + </span> + <!-- <p class="help-block">In addition to freeform text, any HTML5 text-based input appears like so.</p> --> + </div> +</div> +<div class="control-group"> + <%= f.label :is_published, "#{t('admin.is_published')} ?", :class => 'control-label' %> + <div class="controls"> + <label class="radio"> + <%= f.radio_button :is_published, true %> + Yes + </label> + <label class="radio"> + <%= f.radio_button :is_published, false %> + No + </label> + <!-- <p class="help-block">In addition to freeform text, any HTML5 text-based input appears like so.</p> --> + </div> +</div> +<div class="control-group"> + <%= f.label :menu_enabled_for, "#{t('admin.menu_enabled_for')}:", :class => 'control-label' %> + <div class="controls"> + <% @site_valid_locales.each do |valid_locale| %> + <label class="checkbox"> + <%= check_box_tag 'page[menu_enabled_for][]', valid_locale, (@item.menu_enabled_for.nil? ? true : @item.menu_enabled_for.include?(valid_locale)) %> + <%= I18nVariable.from_locale(valid_locale) %> + </label> + <% end %> + <%= hidden_field_tag 'page[menu_enabled_for][]', '' %> + <!-- <p class="help-block">In addition to freeform text, any HTML5 text-based input appears like so.</p> --> + </div> +</div> + +<div class="control-group"> + <%= f.label :enabled_for, "#{t('admin.enabled_for')}:", :class => 'control-label' %> + <div class="controls"> + <% @site_valid_locales.each do |valid_locale| %> + <label class="checkbox"> + <%= check_box_tag 'page[enabled_for][]', valid_locale, (@item.enabled_for.nil? ? true : @item.enabled_for.include?(valid_locale)) %> + <%= I18nVariable.from_locale(valid_locale) %> + </label> + <% end %> + <%= hidden_field_tag 'page[enabled_for][]', '' %> + <!-- <p class="help-block">In addition to freeform text, any HTML5 text-based input appears like so.</p> --> + </div> +</div> diff --git a/app/views/admin/pages/_new.html.erb b/app/views/admin/pages/_new.html.erb index a2991bec..ecbda3de 100644 --- a/app/views/admin/pages/_new.html.erb +++ b/app/views/admin/pages/_new.html.erb @@ -1,13 +1,11 @@ -<h1><%= t('admin.new_page') %></h1> - <%= flash_messages %> - -<%= form_for @item, :url => admin_pages_path, :html => { :class => 'form' } do |f| %> - - <%= render :partial => "form", :locals => { :f => f } %> - - <p> - <%= f.submit t('create') %> <%= link_back %> - </p> - -<% end %> \ No newline at end of file +<div id="poststuff"> + <h1><%= t('admin.new_page') %></h1> + <%= form_for @item, :url => admin_pages_path, :html => { :class => 'form-horizontal edit_page' } do |f| %> + <%= render :partial => "form", :locals => { :f => f } %> + <div class="form-actions"> + <%= f.submit t('update'), :class => 'btn btn-primary' %> + <%= link_to t('cancel'), get_go_back, :class=>"btn" %> + </div> + <% end %> +</div> \ No newline at end of file diff --git a/app/views/layouts/_side_bar.html.erb b/app/views/layouts/_side_bar.html.erb index 72baca6b..7a9bcf4e 100644 --- a/app/views/layouts/_side_bar.html.erb +++ b/app/views/layouts/_side_bar.html.erb @@ -5,29 +5,29 @@ <%= javascript_include_tag "/static/kernel.js" %> <% end %> -<%= content_tag :li, :class => (active_for_controllers('bulletins', '/panel/announcement/back_end/tags', 'bulletin_categorys', 'approvals') || active_sys_call_for_app('new_interface_module_apps','setting','Announcement',:module_app_id) ) do -%> +<%= content_tag :li, :class => (active_for_controllers('bulletins', '/panel/announcement/back_end/tags', 'bulletin_categorys', 'approvals') || active_for_app_auth('Announcement') || active_for_ob_auths_object("BulletinCategory") ) do -%> <%= link_to content_tag(:i, nil, :class => 'icons-announcement') + t('admin.announcement'), panel_announcement_back_end_bulletins_path %> <%= content_tag :ul, :class => ("nav nav-list " + visible_for_controllers('bulletins', '/panel/announcement/back_end/tags', 'bulletin_categorys', 'approvals')) do -%> <%= content_tag :li, link_to(t('announcement.all_articles'), panel_announcement_back_end_bulletins_path), :class => active_for_action('bulletins', 'index') %> <%= content_tag :li, link_to(t('announcement.add_new'), new_panel_announcement_back_end_bulletin_path), :class => active_for_action('bulletins', 'new') %> - <%= content_tag :li, link_to(t('announcement.categories'), panel_announcement_back_end_bulletin_categorys_path), :class => (active_for_action('bulletin_categorys', 'index') || active_for_action('bulletin_category_setting', 'setting')) %> + <%= content_tag :li, link_to(t('announcement.categories'), panel_announcement_back_end_bulletin_categorys_path), :class =>( active_for_action('bulletin_categorys', 'index') || active_for_ob_auths_object("BulletinCategory") ) %> <%= content_tag :li, link_to(t('announcement.tags'), panel_announcement_back_end_tags_path), :class => active_for_action('/panel/announcement/back_end/tags', 'index') %> <%= content_tag :li, link_to(t('announcement.bulletin.approval_setting'), panel_announcement_back_end_approval_setting_path), :class => active_for_action('approvals', 'setting') if (is_manager? rescue nil) %> - <%= content_tag :li, link_to(t('admin.module.authorization'),admin_module_app_manager_auth_proc_path(ModuleApp.first(conditions: {title: "Announcement"}))), :class => active_sys_call_for_app('new_interface_module_apps','setting','Announcement',:module_app_id) if (is_admin? rescue nil) %> + <%= content_tag :li, link_to(t('admin.module.authorization'),admin_module_app_manager_auth_proc_path(ModuleApp.first(conditions: {title: "Announcement"}))), :class => active_for_app_auth('Announcement') if (is_admin? rescue nil) %> <% end -%> <% end -%> -<%= content_tag :li, :class =>( active_for_controllers('news_bulletins', '/panel/news/back_end/tags', 'news_bulletin_categorys', 'news_approvals')|| active_sys_call_for_app('new_interface_module_apps','setting','news',:module_app_id)) do -%> +<%= content_tag :li, :class =>( active_for_controllers('news_bulletins', '/panel/news/back_end/tags', 'news_bulletin_categorys', 'news_approvals')|| active_for_app_auth('news') || active_for_ob_auths_object("NewsBulletinCategory")) do -%> <%= link_to content_tag(:i, nil, :class => 'icons-announcement') + t('admin.news'), panel_news_back_end_news_bulletins_path %> <%= content_tag :ul, :class => ("nav nav-list " + visible_for_controllers('news_bulletins', '/panel/news/back_end/tags', 'news_bulletin_categorys', 'news_approvals')) do -%> <%= content_tag :li, link_to(t('announcement.all_articles'), panel_news_back_end_news_bulletins_path), :class => active_for_action('news_bulletins', 'index') %> <%= content_tag :li, link_to(t('announcement.add_new'), new_panel_news_back_end_news_bulletin_path), :class => active_for_action('news_bulletins', 'new') %> - <%= content_tag :li, link_to(t('announcement.categories'), panel_news_back_end_news_bulletin_categorys_path), :class => (active_for_action('news_bulletin_categorys', 'index') || active_for_action('news_bulletin_category_setting', 'setting'))%> + <%= content_tag :li, link_to(t('announcement.categories'), panel_news_back_end_news_bulletin_categorys_path), :class => active_for_action('news_bulletin_categorys', 'index') || active_for_ob_auths_object("NewsBulletinCategory") %> <%= content_tag :li, link_to(t('announcement.tags'), panel_news_back_end_tags_path), :class => active_for_action('/panel/news/back_end/tags', 'index') %> <%= content_tag :li, link_to(t('announcement.bulletin.approval_setting'), panel_news_back_end_news_approval_setting_path), :class => active_for_action('news_approvals', 'setting') if (is_manager? rescue nil) %> - <%= content_tag :li, link_to(t('admin.module.authorization'),admin_module_app_manager_auth_proc_path(ModuleApp.first(conditions: {key: "news"}))), :class => active_sys_call_for_app('new_interface_module_apps','setting','news',:module_app_id) if (is_admin? rescue nil) %> + <%= content_tag :li, link_to(t('admin.module.authorization'),admin_module_app_manager_auth_proc_path(ModuleApp.first(conditions: {key: "news"}))), :class => active_for_app_auth('news') if (is_admin? rescue nil) %> <% end -%> <% end -%> @@ -47,14 +47,14 @@ <%= link_to content_tag(:i, nil, :class => 'icons-window-block') + t('admin.design'), admin_designs_path %> <% end -%> -<%= content_tag :li, :class => active_for_controllers('ad_banners', 'ad_images') || active_sys_call_for_app('module_apps','edit','ad_banners') do -%> +<%= content_tag :li, :class => active_for_controllers('ad_banners', 'ad_images') || active_for_app_auth('ad_banners') do -%> <%= link_to content_tag(:i, nil, :class => 'icons-link') + t('admin.ad_banner'), admin_ad_banners_path %> <%= content_tag :ul, :class => ("nav nav-list " + visible_for_controllers('ad_banners', 'ad_images') ) do -%> <%#= content_tag :li, link_to(t('admin.ad.all_banners'), admin_ad_banners_path), :class => active_for_action('ad_banners', 'index') %> <%#= content_tag :li, link_to(t('admin.ad.new_banner'), new_admin_ad_banner_path), :class => active_for_action('ad_banners', 'new') %> <%#= content_tag :li, link_to(t('admin.ad.new_image'), new_ad_image_admin_ad_banners_path), :class => active_for_action('ad_images', 'new') %> - <%= content_tag :li, link_to(t('admin.module.authorization'),edit_admin_module_app_path(ModuleApp.first(conditions: {title: "ad_banners"}))), :class => active_sys_call_for_app('module_apps','edit','ad_banners') if (is_admin? rescue nil) %> + <%= content_tag :li, link_to(t('admin.module.authorization'),admin_module_app_manager_auth_proc_path(ModuleApp.first(conditions: {title: "ad_banners"}))), :class => active_for_app_auth('ad_banners') if (is_admin? rescue nil) %> <% end -%> <% end %> diff --git a/app/views/layouts/module_widget.html.erb b/app/views/layouts/module_widget.html.erb index 44a2be85..793f7370 100644 --- a/app/views/layouts/module_widget.html.erb +++ b/app/views/layouts/module_widget.html.erb @@ -5,7 +5,9 @@ <%= javascript_include_tag "html5" %> <![endif]--> <%#= stylesheet_link_tag "module_widget" %> - <%= javascript_include_tag "module_widget" %> + <%= javascript_include_tag "module" %> + <%#= javascript_include_tag "#{@app_title}/module_widget" %> + <%= yield :page_specific_javascript %> <%= csrf_meta_tag %> </head> <body> diff --git a/app/views/layouts/site_editor.html.erb b/app/views/layouts/site_editor.html.erb index 158c9f80..da6efd26 100644 --- a/app/views/layouts/site_editor.html.erb +++ b/app/views/layouts/site_editor.html.erb @@ -23,9 +23,9 @@ </div> <div class="viewport"> <div id='back_sidebar' class="overview"> - <ul class="nav nav-list"> + <ol class="nav nav-list"> <%= yield :sidebar %> - </ul> + </ol> </div> </div> </nav> diff --git a/config/locales/en.yml b/config/locales/en.yml index 07bfe189..374b3b33 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -197,9 +197,17 @@ en: new_role: New user role news: News non_multilingual: Non multilingual + object_auth: + list_title_of_users: %{auth_title} Auth List + update_done: Update done,reulst showing in list + update_failed: Update failed options: Options orig_upload_file: Original filename page: Page + page_part_kinds: + text: Text Area + public_r_tag: System Widget + module_widget: Plug-in Module Widget position: Position published?: Published? purchase: Purchase diff --git a/config/locales/zh_tw.yml b/config/locales/zh_tw.yml index f252fd20..20f5cada 100644 --- a/config/locales/zh_tw.yml +++ b/config/locales/zh_tw.yml @@ -197,10 +197,18 @@ zh_tw: new_info: 新增用戶資料 new_role: 新增用戶身份 news: 新聞 - non_multilingual: 非多種語言 + non_multilingual: + object_auth: + list_title_of_users: 授權清單-%{auth_title} + update_done: 更新完成,結果顯示於清單 + update_failed: 更新失敗 options: 選項 orig_upload_file: 原上傳檔名 page: 頁面管理 + page_part_kinds: + text: 文字區塊 + public_r_tag: 系統模塊 + module_widget: 外掛模塊 position: 位置 published?: 發布? purchase: 購買 diff --git a/config/resque_schedule.yml b/config/resque_schedule.yml index 6929152e..60194101 100644 --- a/config/resque_schedule.yml +++ b/config/resque_schedule.yml @@ -10,6 +10,12 @@ nccu_daily_ldap_sync: args: description: Sync NCCU middle site with Orbit for LDAP data +nccu_daily_restart: + cron: * * */3 * * * + class: RestartServer + args: + description: Restart NCCU site + nccu_claender_sync: cron: * * [0,12] * * * class: NccuCalendar diff --git a/config/routes.rb b/config/routes.rb index f6b788a8..58f6151b 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -17,6 +17,11 @@ Orbit::Application.routes.draw do resources :assets resources :app_auths resources :object_auths do + match 'new_interface/:ob_type/:title/new' => "object_auths_new_interface#new" ,:as => :init_ob_auth,:via => :get + match 'new_interface' => "object_auths_new_interface#setting" ,:as => :ob_auth,:via => :get + match 'new_interface' => "object_auths_new_interface#update_setting" ,:as => :ob_auth,:via => :post + match 'new_interface' => "object_auths_new_interface#user_list" ,:as => :ob_auth_show,:via => :put + collection do match 'new/:type/:obj_id',:action => 'new',:via => "get",:as => :init end @@ -50,6 +55,7 @@ Orbit::Application.routes.draw do get 'add_attribute_field' end resources :items + match 'update_position' => 'items#update_position' resources :links do member do get 'delete' @@ -62,9 +68,9 @@ Orbit::Application.routes.draw do end end resources :module_apps do - match 'manager_auth_proc' => "new_interface_module_apps#setting" ,:as => :manager_auth_proc,:via => :get - match 'manager_auth_proc' => "new_interface_module_apps#update_setting" ,:as => :manager_auth_proc,:via => :post - match 'manager_auth_proc' => "new_interface_module_apps#user_list" ,:as => :manager_auth_show,:via => :put + match 'manager_auth_proc' => "module_apps_new_interface#setting" ,:as => :manager_auth_proc,:via => :get + match 'manager_auth_proc' => "module_apps_new_interface#update_setting" ,:as => :manager_auth_proc,:via => :post + match 'manager_auth_proc' => "module_apps_new_interface#user_list" ,:as => :manager_auth_show,:via => :put resources :app_auths do member do match 'remove/:type/:target_id' ,:action=> 'remove',:via => "delete",:as =>:remove diff --git a/lib/orbit_core_lib.rb b/lib/orbit_core_lib.rb index b92f4eca..281654a7 100644 --- a/lib/orbit_core_lib.rb +++ b/lib/orbit_core_lib.rb @@ -19,6 +19,10 @@ module OrbitCoreLib end + def pp_object + "Object Auth method 'pp_object' need to be defined for class #{self.class}" + end + def get_object_auth_by_title(title) self.object_auths.where({title: title }).first end diff --git a/lib/parsers/parser_back_end.rb b/lib/parsers/parser_back_end.rb index 33b19510..aed8f36b 100644 --- a/lib/parsers/parser_back_end.rb +++ b/lib/parsers/parser_back_end.rb @@ -14,7 +14,7 @@ module ParserBackEnd # }.join(' | ') # end # c.define_tag 'link' do |tag| - # item = Item.first(:conditions => { :full_name => tag.attr['name'] }) + # item = Item.first(:conditions => { :path => tag.attr['name'] }) # ret = '' # ret << "<a href='" # ret << eval("admin_#{item._type.downcase}_path(item.id)") @@ -23,67 +23,19 @@ module ParserBackEnd # ret << "</a>" # end - def parse_page_edit_noko(page, id = nil) + def parse_page_edit_noko(page) body = Nokogiri::HTML(page.design.layout.body) parse_menu(body, page, true) - public_r_tags = parse_content_edits(body, page, id) + public_r_tags = parse_contents(body, page, true) parse_images(body, page) - parse_footer(body, page, true) - parse_sub_menu(body, page, true) - + parse_footer(body, page) + parse_sub_menu(body, page) public_r_tags.each do |tag| - send("parse_#{tag}s", body, page, id, true) + send("parse_#{tag}s", body, page, true) end - body.to_html end - # page_contents - def parse_content_edits(body, page, id) - public_r_tags = [] - body.css('.page_content').each do |content| - ret = '' - if (content["main"] == "true" && !page.module_app.nil?) - ret << "<div id='appfrontend' class='dymanic_load' path='/panel/#{page.module_app.key}/front_end/#{page.app_frontend_url}?inner=true&page_id=#{page.id}" - ret << "&category_id=#{page.category}" if page[:category] - ret << "&tag_id=#{page.tag}" if page[:tag] - ret << "'></div>" - else - part = page.page_parts.detect{ |p| p.name.to_s == content['name'].to_s } rescue nil - ret << "<div id='#{content['name']}' part_id='#{part.id}' class='editable' style='border:solid 1px; margin:5px; padding:5px;'>" if part - ret << "<div class='edit_link' style='display:none'>" - ret << " <a href='#{edit_admin_page_part_path(part.id)}' class='nav'>#{t(:edit)}</a>" if part - ret << '</div>' - case part.kind - when 'text' - ret << part.i18n_variable[I18n.locale] rescue '' - when 'module_widget' - if !part[:category].blank? - ret << "<div class='dymanic_load' path='/panel/#{part.module_app.key}/widget/#{part.widget_path}?category_id=#{part[:category]}}'></div>" - elsif !part[:tag].blank? - ret << "<div class='dymanic_load' path='/panel/#{part.module_app.key}/widget/#{part.widget_path}?inner=true&tag_id=#{part[:tag]}'></div>" - else - ret << "<div class='dymanic_load' path='/panel/#{part.module_app.key}/widget/#{part.widget_path}'></div>" - end - when 'public_r_tag' - ret << "<r:#{part.public_r_tag} id='#{part.public_r_tag_object_id}'/>" - public_r_tags << part.public_r_tag - else - '' - end if part - end - scope = "<#{content.name}" - content.attributes.each_pair do |key, value| - scope << " #{key}='#{value}'" - end - scope << ">#{ret}</#{content.name}>" - fragment = Nokogiri::HTML::DocumentFragment.new(body, scope) - content.swap(fragment) - end - public_r_tags.uniq - end - - def self.included(base) base.send :helper_method, :parse_page_edit_noko if base.respond_to? :helper_method end diff --git a/lib/parsers/parser_common.rb b/lib/parsers/parser_common.rb index be676544..d727e68c 100644 --- a/lib/parsers/parser_common.rb +++ b/lib/parsers/parser_common.rb @@ -3,7 +3,7 @@ module ParserCommon def menu_level(page, current_page, current, menu, edit = false) res = '' - if page.ordered_and_visible_children.size > 0 + if page.visible_children.size > 0 res << "<ul class='" res << menu.values["class_#{current}"] rescue nil res << "'>" @@ -12,7 +12,7 @@ module ParserCommon if menu.values['home'] && current == 1 res << menu_li(page, current_page, current, menu, i, edit) end - page.ordered_and_visible_children.each do |child| + page.visible_children.each do |child| res << menu_li(child, current_page, current, menu, i, edit) i += 1 if i end @@ -25,18 +25,18 @@ module ParserCommon res = "<li class='" res << menu.values["li_class_#{current}"] rescue nil res << "_#{i}" if i - res << " active" if (current_page.id.eql?(page.id) || current_page.ancestor_ids.include?(page.id)) + res << " active" if (current_page.id.eql?(page.id) || current_page.descendant_of?(page)) res << "'>" - res << "<a href='/#{edit ? admin_page_path(page.id) : page.full_name}'><span>#{page.i18n_variable[I18n.locale]}</span></a>" - if page.ordered_and_visible_children.size > 0 && current <= menu.levels + res << "<a href='/#{edit ? admin_page_path(page.id) : page.path}'><span>#{page.i18n_variable[I18n.locale]}</span></a>" + if page.visible_children.size > 0 && current <= menu.levels res << "<span class='dot'></span>" res << menu_level(page, current_page, current + 1, menu, edit) - end unless (page.is_home? rescue nil) + end unless (page.root? rescue nil) res << "</li>" end # ad_banners - def parse_ad_banners(body = nil, page = nil, id = nil, edit=nil) + def parse_ad_banners(body = nil, page = nil, edit=nil) body.css('ad_banner').each do |banner| res = '' ad_banner = AdBanner.find(banner["id"]) rescue nil @@ -82,7 +82,7 @@ module ParserCommon end # page_images - def parse_images(body, page, id = nil, edit=nil) + def parse_images(body, page, edit=nil) body.css('.page_image').each do |page_image| # image = page.custom_images.detect{|image| image.name.eql?(tag.attr['name']) } # image = page.design.custom_images.detect{|image| image.name.eql?(tag.attr['name']) } unless image @@ -109,17 +109,17 @@ module ParserCommon end # sub_menus - def parse_sub_menus(body = nil, page = nil, id = nil, edit=nil) + def parse_sub_menus(body = nil, page = nil, edit=nil) body.css('sub_menu').each do |sub_menu| menu_page = Page.find(sub_menu['id']) rescue nil res = '' - if menu_page && menu_page.ordered_and_visible_children.size > 0 + if menu_page && menu_page.visible_children.size > 0 res << "<div class='category_list'>" res << "<h3 class='h3'>#{menu_page.i18n_variable[I18n.locale]}</h3>" res << "<ul class='list'>" - menu_page.ordered_and_visible_children.each do |child| + menu_page.visible_children.each do |child| res << "<li class='#{page.id.eql?(child.id) ? 'active' : nil}'>" - res << "<a href='/#{edit ? admin_page_path(child.id) : child.full_name}'>#{child.i18n_variable[I18n.locale]}</a>" + res << "<a href='/#{edit ? admin_page_path(child.id) : child.path}'>#{child.i18n_variable[I18n.locale]}</a>" res << "</li>" end res << "</ul>" @@ -132,7 +132,7 @@ module ParserCommon end # page_footer - def parse_footer(body, page, edit=nil) + def parse_footer(body, page) page_footer = body.css('.page_footer').first if page_footer res = "<div id='#{page_footer['id']}', class='#{page_footer['class']}'>" @@ -146,7 +146,7 @@ module ParserCommon end # page_sub_menu - def parse_sub_menu(body, page, edit=nil) + def parse_sub_menu(body, page) page_sub_menu = body.css('.page_sub_menu').first if page_sub_menu res = "<div id='#{page_sub_menu['id']}', class='#{page_sub_menu['class']}'>" @@ -159,4 +159,50 @@ module ParserCommon end end + # page_contents + def parse_contents(body, page, edit=nil) + public_r_tags = [] + body.css('.page_content').each do |content| + ret = '' + category = params[:category_id].blank? ? page[:category] : params[:category_id] + tag = params[:tag_id].blank? ? page[:tag] : params[:tag_id] + if (content["main"] == "true" && !page.module_app.nil?) + ret << "<div id='appfrontend' class='dymanic_load' path='/panel/#{page.module_app.key}/front_end/#{page.app_frontend_url}" + ret << "/#{params[:id]}" if params[:id] && !params[:id].eql?(page.id.to_s) + ret << "?inner=true&page_id=#{page.id}&category_id=#{category}&tag_id=#{tag}&preview=#{params[:preview]}&page_main=#{params[:page_main]}" + ret << "'></div>" + else + part = page.page_parts.detect{ |p| p.name.to_s == content['name'].to_s } rescue nil + part_title = part.title[I18n.locale] rescue nil + if edit + ret << "<div id='#{content['name']}' part_id='#{part.id}' class='editable' style='border:solid 1px; margin:5px; padding:5px;'>" if part + ret << "<div class='edit_link' style='display:none'>" + ret << " <a href='#{edit_admin_page_part_path(part.id)}' class='nav'>#{t(:edit)}</a>" if part + ret << '</div>' + end + case part.kind + when 'text' + ret << part.i18n_variable[I18n.locale] rescue '' + when 'module_widget' + url = "/panel/#{part.module_app.key}/widget/#{part.widget_path}?inner=true" + options = "&category_id=#{!part[:category].blank? ? part[:category].blank? : category}&tag_id=#{!part[:tag].blank? ? part[:tag] : tag}&page=#{params[:page]}&part_title=#{Rack::Utils.escape(part_title).gsub("+", "%20") rescue nil}" + ret << "<div class='dymanic_load' path='#{url + options}'></div>" + when 'public_r_tag' + ret << "<r:#{part.public_r_tag} id='#{part.public_r_tag_object_id}'/>" + public_r_tags << part.public_r_tag + else + '' + end if part + end + scope = "<#{content.name}" + content.attributes.each_pair do |key, value| + scope << " #{key}='#{value}'" + end + scope << ">#{ret}</#{content.name}>" + fragment = Nokogiri::HTML::DocumentFragment.new(body, scope) + content.swap(fragment) + end + public_r_tags.uniq + end + end diff --git a/lib/parsers/parser_front_end.rb b/lib/parsers/parser_front_end.rb index a0004f15..3d39bd5f 100644 --- a/lib/parsers/parser_front_end.rb +++ b/lib/parsers/parser_front_end.rb @@ -11,7 +11,7 @@ module ParserFrontEnd # }.join(' | ') # end # c.define_tag 'link' do |tag| - # item = Item.first(:conditions => { :full_name => tag.attr['name'] }) + # item = Item.first(:conditions => { :path => tag.attr['name'] }) # ret = '' # ret << "<a href='#{tag.attr['name']}'>" # ret << item.i18n_variable[I18n.locale] @@ -21,69 +21,18 @@ module ParserFrontEnd require 'nokogiri' - def parse_page_noko(page, id = nil,params) + def parse_page_noko(page) body = Nokogiri::HTML(page.design.layout.body) parse_menu(body, page) - public_r_tags = parse_contents(body, page, id,params[:preview]) + public_r_tags = parse_contents(body, page) parse_images(body, page) parse_footer(body, page) parse_sub_menu(body, page) - public_r_tags.each do |tag| - send("parse_#{tag}s", body, page,id) + send("parse_#{tag}s", body, page) end body.to_html end - - # page_contents - def parse_contents(body, page, id,preview = false) - public_r_tags = [] - body.css('.page_content').each do |content| - ret = '' - if (content["main"] == "true" && !page.module_app.nil?) - ret << "<div id='appfrontend' class='dymanic_load' path='/panel/#{page.module_app.key}/front_end/#{page.app_frontend_url}" - ret << "/#{id}" if id - ret << "?inner=true&page_id=#{page.id}" - # ret << "&category_id=#{page.category}" if page[:category] - ret << "&category_id=#{params[:category_id]}" if !params[:category_id].blank? - ret << "&tag_id=#{params[:tag_id]}" if !params[:tag_id].blank? - ret << "&preview=true" if preview.eql?('true') - ret << "'></div>" - else - part = page.page_parts.detect{ |p| p.name.to_s == content['name'].to_s } rescue nil - case part.kind - when 'text' - ret << part.i18n_variable[I18n.locale] rescue '' - when 'module_widget' - # if part[:category] - # ret << "<div class='dymanic_load' path='/panel/#{part.module_app.key}/widget/#{part.widget_path}?inner=true&category_id=#{part[:category]}'></div>" - # else - # ret << "<div class='dymanic_load' path='/panel/#{part.module_app.key}/widget/#{part.widget_path}?inner=true'></div>" - # end - if !part[:category].blank? - ret << "<div class='dymanic_load' path='/panel/#{part.module_app.key}/widget/#{part.widget_path}?inner=true&category_id=#{part[:category]}'></div>" - elsif !part[:tag].blank? - ret << "<div class='dymanic_load' path='/panel/#{part.module_app.key}/widget/#{part.widget_path}?inner=true&tag_id=#{part[:tag]}'></div>" - else - ret << "<div class='dymanic_load' path='/panel/#{part.module_app.key}/widget/#{part.widget_path}?inner=true'></div>" - end - when 'public_r_tag' - ret << "<r:#{part.public_r_tag} id='#{part.public_r_tag_object_id}'/>" - public_r_tags << part.public_r_tag - else - '' - end if part - end - scope = "<#{content.name}" - content.attributes.each_pair do |key, value| - scope << " #{key}='#{value}'" - end - scope << ">#{ret}</#{content.name}>" - fragment = Nokogiri::HTML::DocumentFragment.new(body, scope) - content.swap(fragment) - end - public_r_tags.uniq - end end diff --git a/lib/tasks/items.rake b/lib/tasks/items.rake new file mode 100644 index 00000000..7d94332e --- /dev/null +++ b/lib/tasks/items.rake @@ -0,0 +1,19 @@ +# encoding: utf-8 + +namespace :items do + task :tree_changes => :environment do + Item.all.each do |item| + item.position -= item.position > 5 ? 2 : 1 + item.parent_ids = ancestors(item) + item.rename(:full_name, :path) + item.save + end + end + + def ancestors(item) + node, nodes = item, [] + nodes << node = node.parent while !node.parent.blank? rescue nil + nodes.reverse + end + +end \ No newline at end of file diff --git a/vendor/built_in_modules/announcement/app/assets/javascripts/module_widget.js b/vendor/built_in_modules/announcement/app/assets/javascripts/module_widget.js deleted file mode 100644 index 9c429aac..00000000 --- a/vendor/built_in_modules/announcement/app/assets/javascripts/module_widget.js +++ /dev/null @@ -1,9 +0,0 @@ -// This is a manifest file that'll be compiled into including all the files listed below. -// Add new JavaScript/Coffee code in separate files in this directory and they'll automatically -// be included in the compiled file accessible from http://example.com/assets/application.js -// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the -// the compiled file. -// -//= require jquery -//= require jquery_ujs -//= require announcement_link \ No newline at end of file diff --git a/vendor/built_in_modules/announcement/app/controllers/panel/announcement/back_end/approvals_controller.rb b/vendor/built_in_modules/announcement/app/controllers/panel/announcement/back_end/approvals_controller.rb index 9f63a8ab..e5c92023 100644 --- a/vendor/built_in_modules/announcement/app/controllers/panel/announcement/back_end/approvals_controller.rb +++ b/vendor/built_in_modules/announcement/app/controllers/panel/announcement/back_end/approvals_controller.rb @@ -12,6 +12,7 @@ class Panel::Announcement::BackEnd::ApprovalsController < OrbitBackendControlle # end def setting + @sys_users = User.all(conditions: {admin: false}) @bulletin_categorys = BulletinCategory.all @options_from_collection_for_select_bulletin_categorys = @bulletin_categorys.collect{|bc| [bc.i18n_variable[I18n.locale],bc.id] } if params.has_key? :category diff --git a/vendor/built_in_modules/announcement/app/controllers/panel/announcement/back_end/bulletin_category_setting_controller.rb b/vendor/built_in_modules/announcement/app/controllers/panel/announcement/back_end/bulletin_category_setting_controller.rb deleted file mode 100644 index 4be5f6bc..00000000 --- a/vendor/built_in_modules/announcement/app/controllers/panel/announcement/back_end/bulletin_category_setting_controller.rb +++ /dev/null @@ -1,63 +0,0 @@ -class Panel::Announcement::BackEnd::BulletinCategorySettingController < OrbitBackendController - before_filter :authenticate_user! - before_filter :for_app_manager - include AdminHelper - # layout 'admin' - def preview_and_approve - @bulletin = Bulletin.find params[:bulletin_id] - end - - # def approve - # - # end - - def setting - @bulletin_categorys = [] - @bulletin_categorys << BulletinCategory.find(params[:bulletin_category_id]) - @options_from_collection_for_select_bulletin_categorys = @bulletin_categorys.collect{|bc| [bc.i18n_variable[I18n.locale],bc.id] } - if params.has_key? :category - @bulletin_category = BulletinCategory.find params[:category][:id] - else - @bulletin_category = @bulletin_categorys.first - end - preload_object_auth = @bulletin_category.object_auths.where(title: 'submit').empty?? (@bulletin_category.object_auths.create! :title=> 'submit') : @bulletin_category.object_auths.where(title: 'submit') - @users_array = preload_object_auth.first.privilege_users rescue [] - respond_to do |format| - format.html - format.js - end - end - - def update_setting - object_auth = update_setting_by_params - if object_auth.save! - flash[:notice] = "Update Done" - else - flash[:notice] = "Update Failed" - end - end - - def user_list - @bulletin_category = BulletinCategory.find params[:category][:id] - end - - protected - def update_setting_by_params - category = BulletinCategory.find params[:category][:id] - privilege_users = params[:users].collect{|key,value| User.find key } rescue [] - object_auth_ary = category.object_auths.where(title: 'submit') || (category.object_auths.create :title=> 'submit') - object_auth = object_auth_ary.first - object_auth.privilege_users = privilege_users - object_auth - end - - def get_categorys(id = nil) - @bulletin_categorys = [] - if(is_manager? || is_admin?) - @bulletin_categorys = (id ? BulletinCategory.find(id).to_a : BulletinCategory.excludes('disabled' => true)) - elsif is_sub_manager? - @bulletin_categorys = BulletinCategory.authed_for_user(current_user,'submit_new') - end - end - -end diff --git a/vendor/built_in_modules/announcement/app/controllers/panel/announcement/back_end/bulletins_controller.rb b/vendor/built_in_modules/announcement/app/controllers/panel/announcement/back_end/bulletins_controller.rb index e1aa7739..44b1f567 100644 --- a/vendor/built_in_modules/announcement/app/controllers/panel/announcement/back_end/bulletins_controller.rb +++ b/vendor/built_in_modules/announcement/app/controllers/panel/announcement/back_end/bulletins_controller.rb @@ -45,10 +45,12 @@ class Panel::Announcement::BackEnd::BulletinsController < OrbitBackendController @bulletin_file = BulletinFile.new @file_url = panel_announcement_back_end_bulletins_path - @bulletins.delete_if{ |bulletin| - bulletin.is_pending == true && (!bulletin.bulletin_category.authed_users('fact_check').include?(current_user) || bulletin.create_user_id!=current_user.id) - } - + if(!is_admin? || !is_manager?) + @bulletins.delete_if{ |bulletin| + bulletin.is_pending == true && (!bulletin.bulletin_category.authed_users('fact_check').include?(current_user) || bulletin.create_user_id!=current_user.id) + } + end + respond_to do |format| format.html # index.html.erb format.js { } diff --git a/vendor/built_in_modules/announcement/app/controllers/panel/announcement/front_end/bulletins_controller.rb b/vendor/built_in_modules/announcement/app/controllers/panel/announcement/front_end/bulletins_controller.rb index 725ffac9..56cbb312 100644 --- a/vendor/built_in_modules/announcement/app/controllers/panel/announcement/front_end/bulletins_controller.rb +++ b/vendor/built_in_modules/announcement/app/controllers/panel/announcement/front_end/bulletins_controller.rb @@ -12,14 +12,14 @@ class Panel::Announcement::FrontEnd::BulletinsController < OrbitWidgetController date_now = Time.now if !params[:category_id].blank? - @bulletins = Bulletin.can_display.where(:bulletin_category_id => params[:category_id]).any_of( {deadline: nil,:postdate.lte => date_now} , {:deadline.gte => date_now,:postdate.lte => date_now} ).desc( :is_top, :postdate).page( params[:page]).per(10) + @bulletins = Bulletin.can_display.where(:bulletin_category_id => params[:category_id]).any_of( {deadline: nil,:postdate.lte => date_now} , {:deadline.gte => date_now,:postdate.lte => date_now} ).desc( :is_top, :postdate).page( params[:page_main]).per(10) @current_category = BulletinCategory.from_id(params[:category_id]) rescue nil elsif !params[:tag_id].blank? @tag = AnnouncementTag.find(params[:tag_id]) rescue nil @tag = AnnouncementTag.where(key: params[:tag_id])[0] unless @tag - @bulletins = @tag.bulletins.can_display.any_of( {deadline: nil,:postdate.lte => date_now} , {:deadline.gte => date_now,:postdate.lte => date_now} ).desc( :is_top, :postdate).page( params[:page]).per(10) + @bulletins = @tag.bulletins.can_display.any_of( {deadline: nil,:postdate.lte => date_now} , {:deadline.gte => date_now,:postdate.lte => date_now} ).desc( :is_top, :postdate).page( params[:page_main]).per(10) else - @bulletins = Bulletin.can_display.any_of( {deadline: nil,:postdate.lte => date_now} , {:deadline.gte => date_now,:postdate.lte => date_now} ).desc( :is_top, :postdate).page( params[:page]).per(10) + @bulletins = Bulletin.can_display.any_of( {deadline: nil,:postdate.lte => date_now} , {:deadline.gte => date_now,:postdate.lte => date_now} ).desc( :is_top, :postdate).page( params[:page_main]).per(10) end end diff --git a/vendor/built_in_modules/announcement/app/controllers/panel/announcement/widget/bulletins_controller.rb b/vendor/built_in_modules/announcement/app/controllers/panel/announcement/widget/bulletins_controller.rb index 57295cc7..316a715b 100644 --- a/vendor/built_in_modules/announcement/app/controllers/panel/announcement/widget/bulletins_controller.rb +++ b/vendor/built_in_modules/announcement/app/controllers/panel/announcement/widget/bulletins_controller.rb @@ -9,7 +9,7 @@ class Panel::Announcement::Widget::BulletinsController < OrbitWidgetController # GET /bulletins.xml def index - + @title = params[:part_title] date_now = Time.now if !params[:category_id].blank? @bulletins = Bulletin.can_display.where(:bulletin_category_id => params[:category_id]).any_of( {deadline: nil,:postdate.lte => date_now} , {:deadline.gte => date_now,:postdate.lte => date_now} ).desc( :is_top, :postdate).page( params[:page]).per(10) @@ -31,7 +31,6 @@ class Panel::Announcement::Widget::BulletinsController < OrbitWidgetController @selected_tag = AnnouncementTag.find(params[:id]) rescue @tags[0] @bulletins = @selected_tag.get_visible_bulletins.can_display.page(params[:page]).per(5) rescue nil @web_links = WebResourceTag.first(:conditions => {:en => @selected_tag[:en]}).get_visible_links.page(params[:page]).per(5) rescue nil - render :layout => 'module_widget' end def reload_bulletins diff --git a/vendor/built_in_modules/announcement/app/helpers/panel/announcement/back_end/bulletin_categorys_helper.rb b/vendor/built_in_modules/announcement/app/helpers/panel/announcement/back_end/bulletin_categorys_helper.rb index 1fccbbe1..92604985 100644 --- a/vendor/built_in_modules/announcement/app/helpers/panel/announcement/back_end/bulletin_categorys_helper.rb +++ b/vendor/built_in_modules/announcement/app/helpers/panel/announcement/back_end/bulletin_categorys_helper.rb @@ -10,7 +10,7 @@ include ActionView::Helpers::UrlHelper oa = bulletin_category.get_object_auth_by_title(type) end # link_to t('announcement.bulletin.cate_auth'), edit_admin_object_auth_path(oa) - link_to t('announcement.bulletin.cate_auth'),panel_announcement_back_end_bulletin_category_setting_path(bulletin_category) + link_to t('announcement.bulletin.cate_auth'),admin_object_auth_ob_auth_path(oa) end end \ No newline at end of file diff --git a/vendor/built_in_modules/announcement/app/models/bulletin_category.rb b/vendor/built_in_modules/announcement/app/models/bulletin_category.rb index 7daaf6db..955d5f18 100644 --- a/vendor/built_in_modules/announcement/app/models/bulletin_category.rb +++ b/vendor/built_in_modules/announcement/app/models/bulletin_category.rb @@ -18,6 +18,10 @@ class BulletinCategory has_many :bulletins + def pp_object + i18n_variable[I18n.locale] + end + def self.from_id(id) BulletinCategory.find(id) rescue nil end diff --git a/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/approvals/_privilege_user.html.erb b/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/approvals/_privilege_user.html.erb index c36941de..90f5cb65 100644 --- a/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/approvals/_privilege_user.html.erb +++ b/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/approvals/_privilege_user.html.erb @@ -1,6 +1,5 @@ <%= content_tag :div ,:id => "users_checkbox_ary",:class => 'clear' do -%> -<% sys_users = User.all -%> - <% sys_users.each do |sys_user| -%> + <% @sys_users.each do |sys_user| -%> <div class="checkblock"> diff --git a/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletin_category_setting/_privilege_user.html.erb b/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletin_category_setting/_privilege_user.html.erb deleted file mode 100644 index c36941de..00000000 --- a/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletin_category_setting/_privilege_user.html.erb +++ /dev/null @@ -1,26 +0,0 @@ -<%= content_tag :div ,:id => "users_checkbox_ary",:class => 'clear' do -%> -<% sys_users = User.all -%> - <% sys_users.each do |sys_user| -%> - - <div class="checkblock"> - - <% sys_user.sub_roles.each do |sr| %> - <div class="for_unit" style="display:none;"> <%= sr.key %></div> - <% end %> - <%= content_tag :div,:data=>{'original-title'=>t('announcement.bulletin.approval_setting_window_title'),:content => "#{sys_user.sub_roles.collect{|sr| sr.i18n_variable[I18n.locale]}.join(',')}"},:class=>"checkbox clear" do %> - <div class="check-icon"> - </div> - <div class='member-avatar'> - <% if sys_user.avatar? %> - <%= image_tag(sys_user.avatar.thumb.url,:class => "member-img") %> - <% else %> - <%= image_tag "person.png",:class => "member-img" %> - <% end %> - </div> - <%= label_tag "lab-user-#{sys_user.id}", (sys_user.name rescue ''),:class=>"member-name",:id=>nil -%> - <%= check_box_tag "[users][#{sys_user.id}]", 'true',users.include?(sys_user),:class => "check" -%> - <%end -%> - </div> - - <% end -%> -<% end -%> \ No newline at end of file diff --git a/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletin_category_setting/user_list.js.erb b/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletin_category_setting/user_list.js.erb deleted file mode 100644 index 4c8bf25d..00000000 --- a/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletin_category_setting/user_list.js.erb +++ /dev/null @@ -1,2 +0,0 @@ -$('#show_preview').html("<%= escape_javascript(render(:partial => 'modal_list',:locals => {:bulletin_category => @bulletin_category})) %>"); -var start_modal_with_id = "bulletin_category-<%=@bulletin_category.id%>" \ No newline at end of file diff --git a/vendor/built_in_modules/announcement/app/views/panel/announcement/front_end/bulletins/index.html.erb b/vendor/built_in_modules/announcement/app/views/panel/announcement/front_end/bulletins/index.html.erb index 086794b9..16ac7d8b 100644 --- a/vendor/built_in_modules/announcement/app/views/panel/announcement/front_end/bulletins/index.html.erb +++ b/vendor/built_in_modules/announcement/app/views/panel/announcement/front_end/bulletins/index.html.erb @@ -3,9 +3,9 @@ <%= flash_messages %> <% if @current_category %> - <h1 class="h1"><%= @current_category.i18n_variable[I18n.locale] + t('announcement.bulletin.list_lower') %></h1> + <h1 class="h1"><%= @current_category.i18n_variable[I18n.locale] %></h1> <% else %> - <h1 class="h1"><%= t('announcement.list_announcement') %></h1> + <h1 class="h1"><%= t('announcement.announcement') %></h1> <% end %> @@ -29,5 +29,5 @@ </table> -<%= paginate @bulletins, :params => {:inner => 'false'} %> +<%= paginate @bulletins, :param_name => :page_main, :params => {:inner => 'false'} %> diff --git a/vendor/built_in_modules/announcement/app/views/panel/announcement/widget/bulletins/_index.html.erb b/vendor/built_in_modules/announcement/app/views/panel/announcement/widget/bulletins/_index.html.erb new file mode 100644 index 00000000..c0fe606f --- /dev/null +++ b/vendor/built_in_modules/announcement/app/views/panel/announcement/widget/bulletins/_index.html.erb @@ -0,0 +1,25 @@ +<% if @title %> + <h1 class="h1"><%= @title %></h1> +<% end %> + + +<table class="table table-bordered"> + <tr> + <th><%= t('announcement.bulletin.category') %></th> + <th><%= t('announcement.bulletin.title') %></th> + <th><%= t('announcement.bulletin.postdate') %></th> + </tr> + +<% @bulletins.each do |post| %> + <tr> + <td><%= post.bulletin_category.i18n_variable[I18n.locale] %></td> + <td><%= link_to post.title[I18n.locale], panel_announcement_front_end_bulletin_path(post, :category_id => post.bulletin_category_id) %> + </td> + <td><%= post.postdate %></td> + </tr> + +<% end %> + +</table> + +<%= paginate @bulletins, :params => {:inner => 'true'}, :remote => true %> \ No newline at end of file diff --git a/vendor/built_in_modules/announcement/app/views/panel/announcement/widget/bulletins/bulletins_and_web_links.html.erb b/vendor/built_in_modules/announcement/app/views/panel/announcement/widget/bulletins/bulletins_and_web_links.html.erb index 3e628120..50ae0674 100644 --- a/vendor/built_in_modules/announcement/app/views/panel/announcement/widget/bulletins/bulletins_and_web_links.html.erb +++ b/vendor/built_in_modules/announcement/app/views/panel/announcement/widget/bulletins/bulletins_and_web_links.html.erb @@ -16,4 +16,8 @@ <ul id='bulletins_web_links_web_links' class="links_list"> <%= render 'web_links' if @web_links %> </ul> -</div> \ No newline at end of file +</div> + +<% content_for :page_specific_javascript do %> + <%= javascript_include_tag "news_link" %> +<% end %> \ No newline at end of file diff --git a/vendor/built_in_modules/announcement/app/views/panel/announcement/widget/bulletins/index.html.erb b/vendor/built_in_modules/announcement/app/views/panel/announcement/widget/bulletins/index.html.erb index c885488f..dacb9eaf 100644 --- a/vendor/built_in_modules/announcement/app/views/panel/announcement/widget/bulletins/index.html.erb +++ b/vendor/built_in_modules/announcement/app/views/panel/announcement/widget/bulletins/index.html.erb @@ -1,29 +1,3 @@ -<% if @current_category %> - <h1 class="h1"><%= @current_category.i18n_variable[I18n.locale] + t('announcement.bulletin.list_lower') %></h1> -<% elsif @tag %> - <h1 class="h1"><%= @tag[I18n.locale] + t('announcement.bulletin.list_lower') %></h1> -<% else %> - <h1 class="h1"><%= t('announcement.list_announcement') %></h1> -<% end %> - - -<table class="table table-bordered"> - <tr> - <th><%= t('announcement.bulletin.category') %></th> - <th><%= t('announcement.bulletin.title') %></th> - <th><%= t('announcement.bulletin.postdate') %></th> - </tr> - -<% @bulletins.each do |post| %> - <tr> - <td><%= post.bulletin_category.i18n_variable[I18n.locale] %></td> - <td><%= link_to post.title[I18n.locale], panel_announcement_front_end_bulletin_path(post, :category_id => post.bulletin_category_id) %> - </td> - <td><%= post.postdate %></td> - </tr> - -<% end %> - -</table> - -<%= paginate @bulletins, :params => {:inner => 'false'} %> \ No newline at end of file +<div id="bulletin_widget"> + <%= render 'index' %> +</div> \ No newline at end of file diff --git a/vendor/built_in_modules/announcement/app/views/panel/announcement/widget/bulletins/index.js.erb b/vendor/built_in_modules/announcement/app/views/panel/announcement/widget/bulletins/index.js.erb new file mode 100644 index 00000000..e1be79eb --- /dev/null +++ b/vendor/built_in_modules/announcement/app/views/panel/announcement/widget/bulletins/index.js.erb @@ -0,0 +1 @@ +$('#bulletin_widget').html("<%= j render 'index' %>") \ No newline at end of file diff --git a/vendor/built_in_modules/announcement/config/locales/en.yml b/vendor/built_in_modules/announcement/config/locales/en.yml index 5a1d2f13..4d4d426d 100644 --- a/vendor/built_in_modules/announcement/config/locales/en.yml +++ b/vendor/built_in_modules/announcement/config/locales/en.yml @@ -58,6 +58,7 @@ en: announcement: all_articles: List add_new: Add + announcement: Announcement categories: Categories error: no_avilb_cate_for_posting: You need a category to submit your post,please contact admin @@ -66,7 +67,6 @@ en: more: more+ bulletins: Bulletins related_links: Related Links - list_announcement: List Announcement bulletin: submit_user_list: Submit User category: Category diff --git a/vendor/built_in_modules/announcement/config/locales/zh_tw.yml b/vendor/built_in_modules/announcement/config/locales/zh_tw.yml index 5e559b6a..4fb22bb9 100644 --- a/vendor/built_in_modules/announcement/config/locales/zh_tw.yml +++ b/vendor/built_in_modules/announcement/config/locales/zh_tw.yml @@ -37,6 +37,7 @@ zh_tw: announcement: add_new: 新增 all_articles: 列表 + announcement: 公告 error: no_avilb_cate_for_posting: 您目前沒有分類可以刊登公告,請聯絡系統管理員為您開通分類 tags: 標籤 @@ -47,7 +48,6 @@ zh_tw: more: 更多+ bulletins: 公告訊息 related_links: 相關連結 - list_announcement: 公告列表 bulletin: category: 分類 submit_user_list: 張貼人 diff --git a/vendor/built_in_modules/announcement/config/routes.rb b/vendor/built_in_modules/announcement/config/routes.rb index c6a406b0..a9f1c496 100644 --- a/vendor/built_in_modules/announcement/config/routes.rb +++ b/vendor/built_in_modules/announcement/config/routes.rb @@ -21,11 +21,7 @@ Rails.application.routes.draw do match "file_quick_edit/:bulletin_id" => "bulletins#file_quick_edit" ,:as => :file_quick_edit end - resources :bulletin_categorys do - match 'submit_setting' => "bulletin_category_setting#setting" ,:as => :setting,:via => :get - match 'submit_setting' => "bulletin_category_setting#update_setting" ,:as => :setting,:via => :post - match 'submit_setting' => "bulletin_category_setting#user_list" ,:as => :user_list,:via => :put - end + resources :bulletin_categorys resources :bulletin_links, :controller => 'bulletin_links' do match "link_quick_edit/:bulletin_link_id" => "bulletin_links#link_quick_edit" ,:as => :link_quick_edit diff --git a/vendor/built_in_modules/announcement/lib/tasks/data_for_ut_list_for_posting_anc.rake b/vendor/built_in_modules/announcement/lib/tasks/data_for_ut_list_for_posting_anc.rake index e5bd0be2..9b8b05e5 100644 --- a/vendor/built_in_modules/announcement/lib/tasks/data_for_ut_list_for_posting_anc.rake +++ b/vendor/built_in_modules/announcement/lib/tasks/data_for_ut_list_for_posting_anc.rake @@ -4,9 +4,9 @@ namespace :nccu_data do desc "load nccu data from csv" task :setup_ut_list => :environment do require 'csv' - CSV.foreach("vendor/built_in_modules/announcement/lib/ut_list_from_nccu_2012feb.csv") do |row| new_unit = UnitListForAnc.new(:order => row[0], :ut_code => row[1], :up_ut_code => row[2], :created_at => Time.now,:updated_at => Time.now) + # order,ut_code,up_tu_code,ut_zh_tw,ut_en new_unit.build_title :en => row[4], :zh_tw => row[3] new_unit.save end diff --git a/vendor/built_in_modules/announcement/lib/ut_list_from_nccu_2012feb.csv b/vendor/built_in_modules/announcement/lib/ut_list_from_nccu_2012feb.csv index 548ad528..806d0b9a 100644 --- a/vendor/built_in_modules/announcement/lib/ut_list_from_nccu_2012feb.csv +++ b/vendor/built_in_modules/announcement/lib/ut_list_from_nccu_2012feb.csv @@ -1,4 +1,3 @@ -order,ut_code,up_tu_code,ut_zh_tw,ut_en 0100,H00,H00,校長室,Office of the President 0110,H01,H01,副校長室一,Office of the Vice President 0110,H03,H03,副校長室二,Office of the Vice President diff --git a/vendor/built_in_modules/news/app/controllers/panel/news/back_end/news_approvals_controller.rb b/vendor/built_in_modules/news/app/controllers/panel/news/back_end/news_approvals_controller.rb index c6eda9d0..80838ec5 100644 --- a/vendor/built_in_modules/news/app/controllers/panel/news/back_end/news_approvals_controller.rb +++ b/vendor/built_in_modules/news/app/controllers/panel/news/back_end/news_approvals_controller.rb @@ -12,6 +12,7 @@ class Panel::News::BackEnd::NewsApprovalsController < OrbitBackendController end def setting + @sys_users = User.all(conditions: {admin: false}) @news_bulletin_categorys = NewsBulletinCategory.all if params.has_key?(:category_id) first_category = NewsBulletinCategory.find params[:category_id] diff --git a/vendor/built_in_modules/news/app/controllers/panel/news/back_end/news_bulletin_category_setting_controller.rb b/vendor/built_in_modules/news/app/controllers/panel/news/back_end/news_bulletin_category_setting_controller.rb deleted file mode 100644 index 6b92195f..00000000 --- a/vendor/built_in_modules/news/app/controllers/panel/news/back_end/news_bulletin_category_setting_controller.rb +++ /dev/null @@ -1,63 +0,0 @@ -class Panel::News::BackEnd::NewsBulletinCategorySettingController < OrbitBackendController - before_filter :authenticate_user! - before_filter :for_app_manager - include AdminHelper - # layout 'admin' - # def preview_and_approve - # @bulletin = Bulletin.find params[:bulletin_id] - # end - - # def approve - # - # end - - def setting - @bulletin_categorys = [] - @bulletin_categorys << NewsBulletinCategory.find(params[:news_bulletin_category_id]) - @options_from_collection_for_select_bulletin_categorys = @bulletin_categorys.collect{|bc| [bc.i18n_variable[I18n.locale],bc.id] } - if params.has_key? :category - @bulletin_category = NewsBulletinCategory.find params[:category][:id] - else - @bulletin_category = @bulletin_categorys.first - end - preload_object_auth = @bulletin_category.object_auths.where(title: 'submit').empty?? (@bulletin_category.object_auths.create! :title=> 'submit') : @bulletin_category.object_auths.where(title: 'submit') - @users_array = preload_object_auth.first.privilege_users rescue [] - respond_to do |format| - format.html - format.js - end - end - - def update_setting - object_auth = update_setting_by_params - if object_auth.save! - flash[:notice] = "Update Done" - else - flash[:notice] = "Update Failed" - end - end - - def user_list - @bulletin_category = NewsBulletinCategory.find params[:category][:id] - end - - protected - def update_setting_by_params - category = NewsBulletinCategory.find params[:category][:id] - privilege_users = params[:users].collect{|key,value| User.find key } rescue [] - object_auth_ary = category.object_auths.where(title: 'submit') || (category.object_auths.create :title=> 'submit') - object_auth = object_auth_ary.first - object_auth.privilege_users = privilege_users - object_auth - end - - def get_categorys(id = nil) - @bulletin_categorys = [] - if(is_manager? || is_admin?) - @bulletin_categorys = (id ? NewsBulletinCategory.find(id).to_a : NewsBulletinCategory.excludes('disabled' => true)) - elsif is_sub_manager? - @bulletin_categorys = NewsBulletinCategory.authed_for_user(current_user,'submit_new') - end - end - -end diff --git a/vendor/built_in_modules/news/app/controllers/panel/news/front_end/news_bulletins_controller.rb b/vendor/built_in_modules/news/app/controllers/panel/news/front_end/news_bulletins_controller.rb index 263d1cf2..57ff9e0a 100644 --- a/vendor/built_in_modules/news/app/controllers/panel/news/front_end/news_bulletins_controller.rb +++ b/vendor/built_in_modules/news/app/controllers/panel/news/front_end/news_bulletins_controller.rb @@ -11,13 +11,13 @@ class Panel::News::FrontEnd::NewsBulletinsController < OrbitWidgetController def index date_now = Time.now if !params[:category_id].blank? - @news_bulletins = NewsBulletin.can_display.where(:news_bulletin_category_id => params[:category_id]).any_of( {deadline: nil,:postdate.lte => date_now} , {:deadline.gte => date_now,:postdate.lte => date_now} ).desc( :is_top, :postdate).page( params[:page]).per(10) + @news_bulletins = NewsBulletin.can_display.where(:news_bulletin_category_id => params[:category_id]).any_of( {deadline: nil,:postdate.lte => date_now} , {:deadline.gte => date_now,:postdate.lte => date_now} ).desc( :is_top, :postdate).page( params[:page_main]).per(10) elsif !params[:tag_id].blank? tmp = NewsTag.find(params[:tag_id]) rescue nil tmp = NewsTag.where(key: params[:tag_id])[0] unless tmp - @news_bulletins = tmp.news_bulletins.can_display.any_of( {deadline: nil,:postdate.lte => date_now} , {:deadline.gte => date_now,:postdate.lte => date_now} ).desc( :is_top, :postdate).page( params[:page]).per(10) rescue nil + @news_bulletins = tmp.news_bulletins.can_display.any_of( {deadline: nil,:postdate.lte => date_now} , {:deadline.gte => date_now,:postdate.lte => date_now} ).desc( :is_top, :postdate).page( params[:page_main]).per(10) rescue nil else - @news_bulletins = NewsBulletin.can_display.any_of( {deadline: nil,:postdate.lte => date_now} , {:deadline.gte => date_now,:postdate.lte => date_now} ).desc( :is_top, :postdate).page( params[:page]).per(10) + @news_bulletins = NewsBulletin.can_display.any_of( {deadline: nil,:postdate.lte => date_now} , {:deadline.gte => date_now,:postdate.lte => date_now} ).desc( :is_top, :postdate).page( params[:page_main]).per(10) end get_categorys diff --git a/vendor/built_in_modules/news/app/controllers/panel/news/widget/news_bulletins_controller.rb b/vendor/built_in_modules/news/app/controllers/panel/news/widget/news_bulletins_controller.rb index a6d20ca7..dad3c781 100644 --- a/vendor/built_in_modules/news/app/controllers/panel/news/widget/news_bulletins_controller.rb +++ b/vendor/built_in_modules/news/app/controllers/panel/news/widget/news_bulletins_controller.rb @@ -9,16 +9,17 @@ class Panel::News::Widget::NewsBulletinsController < OrbitWidgetController # GET /news_bulletins.xml def index + @title = params[:part_title] date_now = Time.now if !params[:category_id].blank? - @news_bulletins = NewsBulletin.can_display.where(:news_bulletin_category_id => params[:category_id]).any_of( {deadline: nil,:postdate.lte => date_now} , {:deadline.gte => date_now,:postdate.lte => date_now} ).desc( :is_top, :postdate).page( params[:page]).per(10) + @news_bulletins = NewsBulletin.can_display.where(:news_bulletin_category_id => params[:category_id]).any_of( {deadline: nil,:postdate.lte => date_now} , {:deadline.gte => date_now,:postdate.lte => date_now} ).desc( :is_top, :postdate).page( params[:page]).per(5) @current_category = NewsBulletinCategory.from_id(params[:category_id]) rescue nil elsif !params[:tag_id].blank? @tag = NewsTag.find(params[:tag_id]) rescue nil @tag = NewsTag.where(key: params[:tag_id])[0] unless @tag - @news_bulletins = @tag.news_bulletins.can_display.any_of( {deadline: nil,:postdate.lte => date_now} , {:deadline.gte => date_now,:postdate.lte => date_now} ).desc( :is_top, :postdate).page( params[:page]).per(10) rescue nil + @news_bulletins = @tag.news_bulletins.can_display.any_of( {deadline: nil,:postdate.lte => date_now} , {:deadline.gte => date_now,:postdate.lte => date_now} ).desc( :is_top, :postdate).page( params[:page]).per(5) rescue nil else - @news_bulletins = NewsBulletin.can_display.any_of( {deadline: nil,:postdate.lte => date_now} , {:deadline.gte => date_now,:postdate.lte => date_now} ).desc( :is_top, :postdate).page( params[:page]).per(10) + @news_bulletins = NewsBulletin.can_display.any_of( {deadline: nil,:postdate.lte => date_now} , {:deadline.gte => date_now,:postdate.lte => date_now} ).desc( :is_top, :postdate).page( params[:page]).per(5) end end @@ -28,7 +29,6 @@ class Panel::News::Widget::NewsBulletinsController < OrbitWidgetController @selected_tag = NewsTag.find(params[:id]) rescue @tags[0] @news_bulletins = @selected_tag.get_visible_news_bulletins.can_display.page(params[:page]).per(5) rescue nil @web_links = WebResourceTag.first(:conditions => {:en => @selected_tag[:en]}).get_visible_links.page(params[:page]).per(5) rescue nil - render :layout => 'module_widget' end def reload_news_bulletins diff --git a/vendor/built_in_modules/news/app/helpers/panel/news/back_end/news_bulletin_categorys_helper.rb b/vendor/built_in_modules/news/app/helpers/panel/news/back_end/news_bulletin_categorys_helper.rb index 74905640..4b896555 100644 --- a/vendor/built_in_modules/news/app/helpers/panel/news/back_end/news_bulletin_categorys_helper.rb +++ b/vendor/built_in_modules/news/app/helpers/panel/news/back_end/news_bulletin_categorys_helper.rb @@ -10,7 +10,7 @@ include ActionView::Helpers::UrlHelper oa = news_bulletin_category.get_object_auth_by_title(type) end # link_to t('announcement.bulletin.cate_auth'), edit_admin_object_auth_path(oa) -link_to t('announcement.bulletin.cate_auth'),panel_news_back_end_news_bulletin_category_setting_path(news_bulletin_category) + link_to t('announcement.bulletin.cate_auth'),admin_object_auth_ob_auth_path(oa) end diff --git a/vendor/built_in_modules/news/app/models/news_bulletin_category.rb b/vendor/built_in_modules/news/app/models/news_bulletin_category.rb index 45576589..b3dd7bc4 100644 --- a/vendor/built_in_modules/news/app/models/news_bulletin_category.rb +++ b/vendor/built_in_modules/news/app/models/news_bulletin_category.rb @@ -18,6 +18,10 @@ class NewsBulletinCategory has_many :news_bulletins + def pp_object + i18n_variable[I18n.locale] + end + def self.from_id(id) NewsBulletinCategory.find(id) rescue nil end diff --git a/vendor/built_in_modules/news/app/views/panel/news/back_end/news_approvals/_privilege_user.html.erb b/vendor/built_in_modules/news/app/views/panel/news/back_end/news_approvals/_privilege_user.html.erb index 87d4d78e..d48bb850 100644 --- a/vendor/built_in_modules/news/app/views/panel/news/back_end/news_approvals/_privilege_user.html.erb +++ b/vendor/built_in_modules/news/app/views/panel/news/back_end/news_approvals/_privilege_user.html.erb @@ -1,6 +1,5 @@ <%= content_tag :div ,:id => "users_checkbox_ary",:class => 'clear' do -%> -<% sys_users = User.all -%> - <% sys_users.each do |user| -%> + <% @sys_users.each do |user| -%> <div class="checkblock"> diff --git a/vendor/built_in_modules/news/app/views/panel/news/back_end/news_bulletin_category_setting/setting.js.erb b/vendor/built_in_modules/news/app/views/panel/news/back_end/news_bulletin_category_setting/setting.js.erb deleted file mode 100644 index 0ca148da..00000000 --- a/vendor/built_in_modules/news/app/views/panel/news/back_end/news_bulletin_category_setting/setting.js.erb +++ /dev/null @@ -1,2 +0,0 @@ -$("#users_checkbox_ary").replaceWith('<%= escape_javascript(render :partial => "privilege_user", :locals => {:users => @users_array})%>'); -permissionCheckbox(); \ No newline at end of file diff --git a/vendor/built_in_modules/news/app/views/panel/news/back_end/news_bulletin_category_setting/update_setting.js.erb b/vendor/built_in_modules/news/app/views/panel/news/back_end/news_bulletin_category_setting/update_setting.js.erb deleted file mode 100644 index 7486000a..00000000 --- a/vendor/built_in_modules/news/app/views/panel/news/back_end/news_bulletin_category_setting/update_setting.js.erb +++ /dev/null @@ -1 +0,0 @@ -alert( "<% flash.each do |key, msg| %><%= msg %><% end%>"); \ No newline at end of file diff --git a/vendor/built_in_modules/news/app/views/panel/news/back_end/news_bulletin_category_setting/user_list.js.erb b/vendor/built_in_modules/news/app/views/panel/news/back_end/news_bulletin_category_setting/user_list.js.erb deleted file mode 100644 index 4c8bf25d..00000000 --- a/vendor/built_in_modules/news/app/views/panel/news/back_end/news_bulletin_category_setting/user_list.js.erb +++ /dev/null @@ -1,2 +0,0 @@ -$('#show_preview').html("<%= escape_javascript(render(:partial => 'modal_list',:locals => {:bulletin_category => @bulletin_category})) %>"); -var start_modal_with_id = "bulletin_category-<%=@bulletin_category.id%>" \ No newline at end of file diff --git a/vendor/built_in_modules/news/app/views/panel/news/front_end/news_bulletins/index.html.erb b/vendor/built_in_modules/news/app/views/panel/news/front_end/news_bulletins/index.html.erb index 9fc3f129..4c2292a6 100644 --- a/vendor/built_in_modules/news/app/views/panel/news/front_end/news_bulletins/index.html.erb +++ b/vendor/built_in_modules/news/app/views/panel/news/front_end/news_bulletins/index.html.erb @@ -3,9 +3,9 @@ <%= flash_messages %> <% if @current_category %> - <h1 class="h1"><%= @current_category.i18n_variable[I18n.locale] + t('news.news_bulletin.list_lower') %></h1> + <h1 class="h1"><%= @current_category.i18n_variable[I18n.locale] %></h1> <% else %> - <h1 class="h1"><%= t('news.list_news') %></h1> + <h1 class="h1"><%= t('news.news') %></h1> <% end %> <table class="table table-bordered"> @@ -28,5 +28,5 @@ </tbody> </table> -<%= paginate @news_bulletins, :params => {:inner => 'false'} %> +<%= paginate @news_bulletins, :param_name => :page_main, :params => {:inner => 'false'} %> diff --git a/vendor/built_in_modules/news/app/views/panel/news/widget/news_bulletins/_index.html.erb b/vendor/built_in_modules/news/app/views/panel/news/widget/news_bulletins/_index.html.erb new file mode 100644 index 00000000..d345f037 --- /dev/null +++ b/vendor/built_in_modules/news/app/views/panel/news/widget/news_bulletins/_index.html.erb @@ -0,0 +1,27 @@ +<% # encoding: utf-8 %> + +<% if @title %> + <h1 class="h1"><%= @title %></h1> +<% end %> + +<table class="table table-bordered"> + <tbody> + <tr> + <th class="span2"><%= t('news.news_bulletin.image') %></th> + <th><%= t('news.news_bulletin.title') %></th> + <th class="span2 pagination-right"><%= t('news.news_bulletin.postdate') %></th> + </tr> + <% @news_bulletins.each do |post| %> + <tr> + <td><%= image_tag post.image %></td> + <td> + <%= link_to post.title[I18n.locale], panel_news_front_end_news_bulletin_path(post), :class => 'news_title' %> + <%= post.subtitle[I18n.locale].html_safe %> + </td> + <td><%= post.postdate %></td> + </tr> + <% end %> + </tbody> +</table> + +<%= paginate @news_bulletins, :params => {:inner => 'true'}, :remote => true %> diff --git a/vendor/built_in_modules/news/app/views/panel/news/widget/news_bulletins/index.html.erb b/vendor/built_in_modules/news/app/views/panel/news/widget/news_bulletins/index.html.erb index bb2ff639..1b59c3f9 100644 --- a/vendor/built_in_modules/news/app/views/panel/news/widget/news_bulletins/index.html.erb +++ b/vendor/built_in_modules/news/app/views/panel/news/widget/news_bulletins/index.html.erb @@ -1,33 +1,3 @@ -<% # encoding: utf-8 %> - -<%= flash_messages %> - -<% if @current_category %> - <h1 class="h1"><%= @current_category.i18n_variable[I18n.locale] + t('news.news_bulletin.list_lower') %></h1> -<% elsif @tag %> - <h1 class="h1"><%= @tag[I18n.locale] + t('news.news_bulletin.list_lower') %></h1> -<% else %> - <h1 class="h1"><%= t('news.list_news') %></h1> -<% end %> - -<table class="table table-bordered"> - <tbody> - <tr> - <th class="span2"><%= t('news.news_bulletin.image') %></th> - <th><%= t('news.news_bulletin.title') %></th> - <th class="span2 pagination-right"><%= t('news.news_bulletin.postdate') %></th> - </tr> - <% @news_bulletins.each do |post| %> - <tr> - <td><%= image_tag post.image %></td> - <td> - <%= link_to post.title[I18n.locale], panel_news_front_end_news_bulletin_path(post), :class => 'news_title' %> - <%= post.subtitle[I18n.locale].html_safe %> - </td> - <td><%= post.postdate %></td> - </tr> - <% end %> - </tbody> -</table> - -<%= paginate @news_bulletins, :params => {:inner => 'false'} %> +<div id='news_bulletin_widget'> + <%= render 'index' %> +</div> \ No newline at end of file diff --git a/vendor/built_in_modules/news/app/views/panel/news/widget/news_bulletins/index.js.erb b/vendor/built_in_modules/news/app/views/panel/news/widget/news_bulletins/index.js.erb new file mode 100644 index 00000000..d4862b87 --- /dev/null +++ b/vendor/built_in_modules/news/app/views/panel/news/widget/news_bulletins/index.js.erb @@ -0,0 +1 @@ +$('#news_bulletin_widget').html("<%= j render 'index' %>") \ No newline at end of file diff --git a/vendor/built_in_modules/news/app/views/panel/news/widget/news_bulletins/news_bulletins_and_web_links.html.erb b/vendor/built_in_modules/news/app/views/panel/news/widget/news_bulletins/news_bulletins_and_web_links.html.erb index 9e8ae742..b71f26f9 100644 --- a/vendor/built_in_modules/news/app/views/panel/news/widget/news_bulletins/news_bulletins_and_web_links.html.erb +++ b/vendor/built_in_modules/news/app/views/panel/news/widget/news_bulletins/news_bulletins_and_web_links.html.erb @@ -16,4 +16,8 @@ <ul id='news_bulletins_web_links_web_links' class="links_list"> <%= render 'web_links' if @web_links %> </ul> -</div> \ No newline at end of file +</div> + +<% content_for :page_specific_javascript do %> + <%= javascript_include_tag "announcement_link" %> +<% end %> \ No newline at end of file diff --git a/vendor/built_in_modules/news/config/locales/en.yml b/vendor/built_in_modules/news/config/locales/en.yml index 557a643b..37f06ea4 100644 --- a/vendor/built_in_modules/news/config/locales/en.yml +++ b/vendor/built_in_modules/news/config/locales/en.yml @@ -63,7 +63,7 @@ en: more: more+ news_bulletins: NewsBulletins related_links: Related Links - list_news: List News + news: News news_bulletin: category: Category list_lower: " list" diff --git a/vendor/built_in_modules/news/config/locales/zh_tw.yml b/vendor/built_in_modules/news/config/locales/zh_tw.yml index afbca2b0..290df5e6 100644 --- a/vendor/built_in_modules/news/config/locales/zh_tw.yml +++ b/vendor/built_in_modules/news/config/locales/zh_tw.yml @@ -43,9 +43,9 @@ zh_tw: sure?: 確定嗎? campus_news: 校園新聞 more: 更多+ - news_bulletins: 公告訊息 + news_bulletins: 新聞訊息 related_links: 相關連結 - list_news: 公告列表 + news: 新聞 news_bulletin: category: 分類 list_lower: 列表 diff --git a/vendor/built_in_modules/news/config/routes.rb b/vendor/built_in_modules/news/config/routes.rb index d718e7d6..5aa7118f 100644 --- a/vendor/built_in_modules/news/config/routes.rb +++ b/vendor/built_in_modules/news/config/routes.rb @@ -20,11 +20,7 @@ Rails.application.routes.draw do match "file_quick_edit/:news_bulletin_id" => "news_bulletins#file_quick_edit" ,:as => :file_quick_edit end - resources :news_bulletin_categorys do - match 'submit_setting' => "news_bulletin_category_setting#setting" ,:as => :setting,:via => :get - match 'submit_setting' => "news_bulletin_category_setting#update_setting" ,:as => :setting,:via => :post - match 'submit_setting' => "news_bulletin_category_setting#user_list" ,:as => :user_list,:via => :put - end + resources :news_bulletin_categorys resources :news_bulletin_links, :controller => 'news_bulletin_links' do match "link_quick_edit/:news_bulletin_link_id" => "news_bulletin_links#link_quick_edit" ,:as => :link_quick_edit diff --git a/vendor/built_in_modules/news/news.json b/vendor/built_in_modules/news/news.json index 74b2bfcc..e1b5c95e 100644 --- a/vendor/built_in_modules/news/news.json +++ b/vendor/built_in_modules/news/news.json @@ -7,6 +7,6 @@ "update_info": "Some info", "create_date": "11-11-2011", "app_pages": ["news_bulletins"], - "widgets": ["news_bulletins", "news_bulletins_and_web_links", "home_banner"], + "widgets": ["news_bulletins", "home_banner"], "enable_frontend": true } diff --git a/vendor/built_in_modules/page_content/app/views/panel/page_content/back_end/page_contexts/_page_context.html.erb b/vendor/built_in_modules/page_content/app/views/panel/page_content/back_end/page_contexts/_page_context.html.erb index 08db9b2d..81b31b93 100644 --- a/vendor/built_in_modules/page_content/app/views/panel/page_content/back_end/page_contexts/_page_context.html.erb +++ b/vendor/built_in_modules/page_content/app/views/panel/page_content/back_end/page_contexts/_page_context.html.erb @@ -1,7 +1,7 @@ <tr id="<%= dom_id page_context %>" class="with_action"> <td> - <%= page_context.page.i18n_variable[I18n.locale] %> + <%= page_context.page.path %> <div class="quick-edit"> <ul class="nav nav-pills hide"> <li><%= link_to t('page_context.edit'), edit_panel_page_content_back_end_page_context_path(page_context) %></li> diff --git a/vendor/built_in_modules/web_resource/app/assets/javascripts/web_resource/.gitkeep b/vendor/built_in_modules/web_resource/app/assets/javascripts/web_resource/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/vendor/built_in_modules/web_resource/app/controllers/panel/web_resource/front_end/web_links_controller.rb b/vendor/built_in_modules/web_resource/app/controllers/panel/web_resource/front_end/web_links_controller.rb index 82804979..e605c768 100644 --- a/vendor/built_in_modules/web_resource/app/controllers/panel/web_resource/front_end/web_links_controller.rb +++ b/vendor/built_in_modules/web_resource/app/controllers/panel/web_resource/front_end/web_links_controller.rb @@ -12,7 +12,7 @@ class Panel::WebResource::FrontEnd::WebLinksController < OrbitWidgetController date_now = Time.now - @web_links = WebLink.where( :is_hidden => false ).desc(:is_top, :name).page( params[:page]).per(20) + @web_links = WebLink.where( :is_hidden => false ).desc(:is_top, :name).page(params[:page]).per(10) get_categorys end diff --git a/vendor/built_in_modules/web_resource/app/controllers/panel/web_resource/widget/web_links_controller.rb b/vendor/built_in_modules/web_resource/app/controllers/panel/web_resource/widget/web_links_controller.rb index de36e3d6..42419db2 100644 --- a/vendor/built_in_modules/web_resource/app/controllers/panel/web_resource/widget/web_links_controller.rb +++ b/vendor/built_in_modules/web_resource/app/controllers/panel/web_resource/widget/web_links_controller.rb @@ -24,6 +24,7 @@ class Panel::WebResource::Widget::WebLinksController < OrbitWidgetController def home_list + @title = params[:part_title] # deadline diff --git a/vendor/built_in_modules/web_resource/app/views/panel/web_resource/front_end/web_links/index.html.erb b/vendor/built_in_modules/web_resource/app/views/panel/web_resource/front_end/web_links/index.html.erb index 2c30da53..2c32f800 100644 --- a/vendor/built_in_modules/web_resource/app/views/panel/web_resource/front_end/web_links/index.html.erb +++ b/vendor/built_in_modules/web_resource/app/views/panel/web_resource/front_end/web_links/index.html.erb @@ -2,7 +2,7 @@ <%= flash_messages %> -<%= paginate @web_links %> +<%= paginate @web_links, :params => {:inner => false}%> <h1><%= t('web_link.list_web_resource') %></h1> diff --git a/vendor/built_in_modules/web_resource/app/views/panel/web_resource/front_end/web_links/index.js.erb b/vendor/built_in_modules/web_resource/app/views/panel/web_resource/front_end/web_links/index.js.erb new file mode 100644 index 00000000..c5efda63 --- /dev/null +++ b/vendor/built_in_modules/web_resource/app/views/panel/web_resource/front_end/web_links/index.js.erb @@ -0,0 +1 @@ +alert('bob'); \ No newline at end of file diff --git a/vendor/built_in_modules/web_resource/app/views/panel/web_resource/widget/web_links/home_list.html.erb b/vendor/built_in_modules/web_resource/app/views/panel/web_resource/widget/web_links/home_list.html.erb index 5be53041..1f9fd304 100644 --- a/vendor/built_in_modules/web_resource/app/views/panel/web_resource/widget/web_links/home_list.html.erb +++ b/vendor/built_in_modules/web_resource/app/views/panel/web_resource/widget/web_links/home_list.html.erb @@ -1,5 +1,7 @@ <div class="quicklinks"> - <h3 class="link_title"><%= t("announcement.related_links") %></h3> + <% if @title %> + <h3 class="link_title"><%= @title %></h3> + <% end %> <div id='web_links_links'> <%= render 'web_links' %> diff --git a/vendor/built_in_modules/web_resource/config/routes.rb b/vendor/built_in_modules/web_resource/config/routes.rb index fed85983..02c81a82 100644 --- a/vendor/built_in_modules/web_resource/config/routes.rb +++ b/vendor/built_in_modules/web_resource/config/routes.rb @@ -13,7 +13,6 @@ Rails.application.routes.draw do resources :tags end namespace :front_end do - root :to => "web_links#index" resources :web_links end namespace :widget do diff --git a/vendor/built_in_modules/web_resource/web_resource.json b/vendor/built_in_modules/web_resource/web_resource.json index 07cc6df0..ea014b3c 100644 --- a/vendor/built_in_modules/web_resource/web_resource.json +++ b/vendor/built_in_modules/web_resource/web_resource.json @@ -6,8 +6,7 @@ "intro": "A simple blog……", "update_info": "Some info", "create_date": "11-11-2011", - "app_pages": ["web_links"], - "widgets": ["web_links", "home_list"] + "widgets": ["home_list"]. "category": ["WebLinkCategory"], "enable_frontend": true }