From a3f5977b74431f4768266c8c9bcc1d90fa055c44 Mon Sep 17 00:00:00 2001 From: Harry Bomrah Date: Tue, 15 Apr 2014 12:49:38 +0800 Subject: [PATCH] change in rendering .. added working ad banner module and also changed the rendering of widgets and fixed the js problem in items page. --- app/assets/javascripts/lib/items/items.js.erb | 37 +++++++++---- app/controllers/page_parts_controller.rb | 2 +- app/controllers/pages_controller.rb | 2 +- app/helpers/application_helper.rb | 4 +- app/helpers/pages_helper.rb | 16 +++--- .../assets/javascripts/adbanner.js | 5 ++ .../assets/javascripts/orbit_classic.js | 3 +- .../plugin/jquery.simplyscroll.min.js | 27 ++++++++++ .../assets/stylesheets/adbanner.css | 54 +++++++++++++++++++ .../modules/ad_banner/_widget.html.erb | 6 +++ .../_widget.html.erb | 0 .../index.html.erb | 0 .../show.html.erb | 0 .../modules/banner/_widget.html.erb | 5 -- app/views/pages/create.js | 3 +- app/views/pages/destroy.js | 1 + built_in_extensions.rb | 2 +- 17 files changed, 137 insertions(+), 30 deletions(-) create mode 100644 app/templates/orbit_classic/assets/javascripts/adbanner.js create mode 100644 app/templates/orbit_classic/assets/javascripts/plugin/jquery.simplyscroll.min.js create mode 100644 app/templates/orbit_classic/assets/stylesheets/adbanner.css create mode 100644 app/templates/orbit_classic/modules/ad_banner/_widget.html.erb rename app/templates/orbit_classic/modules/{announcements => announcement}/_widget.html.erb (100%) rename app/templates/orbit_classic/modules/{announcements => announcement}/index.html.erb (100%) rename app/templates/orbit_classic/modules/{announcements => announcement}/show.html.erb (100%) delete mode 100644 app/templates/orbit_classic/modules/banner/_widget.html.erb diff --git a/app/assets/javascripts/lib/items/items.js.erb b/app/assets/javascripts/lib/items/items.js.erb index d0b67e7..5e02910 100755 --- a/app/assets/javascripts/lib/items/items.js.erb +++ b/app/assets/javascripts/lib/items/items.js.erb @@ -1,11 +1,28 @@ - var $openSlide = $('.open-slide'), +var Items = function(){ + var i = this; + this.initialize = function(){ + i.bindHandlers(); + } + + this.bindHandlers = function(){ + var $openSlide = $('.open-slide'), $pageslideW; - $(window).width() > 1440 ? $pageslideW = 1024 : $pageslideW = 954; - $(window).resize(function() { - $(this).width() > 1440 ? $pageslideW = 1024 : $pageslideW = 954; -}); -$iFrame = $openSlide.filter('.view-page.open-slide'); -$iFrame.pageslide({ - W: $pageslideW, - iframe: true - }); \ No newline at end of file + $(window).width() > 1440 ? $pageslideW = 1024 : $pageslideW = 954; + $(window).resize(function() { + $(this).width() > 1440 ? $pageslideW = 1024 : $pageslideW = 954; + }); + $iFrame = $openSlide.filter('.view-page.open-slide'); + $iFrame.pageslide({ + W: $pageslideW, + iframe: true + }); + } + this.reBindHandlers = function(){ + $.pageslide.close(); + window.openSlide(); + i.bindHandlers(); + } + i.initialize(); +} + +itemsLibrary = new Items(); diff --git a/app/controllers/page_parts_controller.rb b/app/controllers/page_parts_controller.rb index b21b978..f7af121 100644 --- a/app/controllers/page_parts_controller.rb +++ b/app/controllers/page_parts_controller.rb @@ -21,7 +21,7 @@ class PagePartsController < ApplicationController @select_number = params[:number_of_select] @widget_types = [] - Dir.glob("#{Rails.root}/app/templates/#{@key}/modules/#{module_name.downcase.pluralize}/*").each do |w| + Dir.glob("#{Rails.root}/app/templates/#{@key}/modules/#{module_name.downcase}/*").each do |w| w = File.basename(w, ".*") w = File.basename(w, ".*") @widget_types << w.gsub("_","") if w != "index" && w != "show" diff --git a/app/controllers/pages_controller.rb b/app/controllers/pages_controller.rb index 4daddc2..3eea14b 100644 --- a/app/controllers/pages_controller.rb +++ b/app/controllers/pages_controller.rb @@ -147,7 +147,7 @@ class PagesController < ApplicationController if page == Page.first @view = File.join(Rails.root, 'app', 'templates', "#{@key}", 'home/index.html.erb') else - module_name = page.module.downcase.pluralize + module_name = page.module.downcase.singularize @view = File.join(Rails.root, 'app', 'templates', "#{@key}", "modules/#{module_name}/index.html.erb") end end diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index c7aa59a..e425a06 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -80,7 +80,7 @@ module ApplicationHelper def render_view if params[:target_action] == "index" - file = File.open(File.join(Rails.root, 'app', 'templates', "#{@key}", 'modules', params[:target_controller], "#{params[:target_action]}.html.erb")) + file = File.open(File.join(Rails.root, 'app', 'templates', "#{@key}", 'modules', params[:target_controller].singularize, "#{params[:target_action]}.html.erb")) doc = Nokogiri::HTML(file, nil, "UTF-8") file.close wrap_elements = doc.css("*[data-module]") @@ -110,7 +110,7 @@ module ApplicationHelper end html.html_safe elsif params[:target_action] == "show" - file = File.open(File.join(Rails.root, 'app', 'templates', "#{@key}", 'modules', params[:target_controller], "#{params[:target_action]}.html.erb")) + file = File.open(File.join(Rails.root, 'app', 'templates', "#{@key}", 'modules', params[:target_controller].singularize, "#{params[:target_action]}.html.erb")) doc = Nokogiri::HTML(file, nil, "UTF-8") file.close wrap_element_html = doc.to_s diff --git a/app/helpers/pages_helper.rb b/app/helpers/pages_helper.rb index 769b685..e5bc063 100644 --- a/app/helpers/pages_helper.rb +++ b/app/helpers/pages_helper.rb @@ -12,13 +12,13 @@ module PagesHelper end def render_widget_for_frontend(controller_name, widget_method, widget_file) - controller_name = controller_name.downcase.pluralize - file = File.open(File.join(Rails.root, 'app', 'templates', "#{Template::KEY}", 'modules', "#{controller_name}", "_#{widget_file}.html.erb")) - doc = Nokogiri::HTML(file, nil, "UTF-8") - file.close + controller_name = controller_name.downcase.singularize + f = File.join('../templates', "#{Template::KEY}", 'modules', "#{controller_name}", "_#{widget_file}.html.erb"); + s = render_to_string(f) + doc = Nokogiri::HTML(s, nil, "UTF-8") wrap_elements = doc.css("*[data-repeat]") - controller = "#{controller_name.capitalize}Controller".classify.constantize.new - OrbitHelper.set_current_widget_module controller_name.downcase.singularize + controller = "#{controller_name.capitalize.pluralize}_controller".classify.constantize.new + OrbitHelper.set_current_widget_module controller_name data = controller.send("#{widget_method}") keys = data.keys wrap_elements.each do |wrap_element| @@ -27,8 +27,8 @@ module PagesHelper el = wrap_element.inner_html item.each do |key,value| value = value.nil? ? "" : value - el = el.gsub("{{#{key}}}",value) - el = el.gsub("%7B%7B#{key}%7D%7D",value) + el = el.gsub("{{#{key}}}",value.to_s) + el = el.gsub("%7B%7B#{key}%7D%7D",value.to_s) end html_to_render = html_to_render + el end diff --git a/app/templates/orbit_classic/assets/javascripts/adbanner.js b/app/templates/orbit_classic/assets/javascripts/adbanner.js new file mode 100644 index 0000000..d8156d8 --- /dev/null +++ b/app/templates/orbit_classic/assets/javascripts/adbanner.js @@ -0,0 +1,5 @@ +(function($) { + $(function() { //on DOM ready + $("#scroller").simplyScroll(); + }); + })(jQuery); \ No newline at end of file diff --git a/app/templates/orbit_classic/assets/javascripts/orbit_classic.js b/app/templates/orbit_classic/assets/javascripts/orbit_classic.js index 214008d..639ec71 100644 --- a/app/templates/orbit_classic/assets/javascripts/orbit_classic.js +++ b/app/templates/orbit_classic/assets/javascripts/orbit_classic.js @@ -11,4 +11,5 @@ // about supported directives. // -//= require_tree \ No newline at end of file +//= require lib/jquery-1.11.0.min.js +//= require plugin/jquery.simplyscroll.min.js diff --git a/app/templates/orbit_classic/assets/javascripts/plugin/jquery.simplyscroll.min.js b/app/templates/orbit_classic/assets/javascripts/plugin/jquery.simplyscroll.min.js new file mode 100644 index 0000000..88a455c --- /dev/null +++ b/app/templates/orbit_classic/assets/javascripts/plugin/jquery.simplyscroll.min.js @@ -0,0 +1,27 @@ +/* + * simplyScroll 2 - a scroll-tastic jQuery plugin + * + * http://logicbox.net/jquery/simplyscroll/ + * + * Copyright (c) 2009-2012 Will Kelly - http://logicbox.net + * + * Dual licensed under the MIT and GPL licenses. + * + * Version: 2.0.5 Last revised: 10/05/2012 + * + */ +(function(c,j,i){c.fn.simplyScroll=function(a){return this.each(function(){new c.simplyScroll(this,a)})};var h={customClass:"simply-scroll",frameRate:24,speed:1,orientation:"horizontal",auto:!0,autoMode:"loop",manualMode:"end",direction:"forwards",pauseOnHover:!0,pauseOnTouch:!0,pauseButton:!1,startOnLoad:!1};c.simplyScroll=function(a,b){var g=this;this.o=c.extend({},h,b||{});this.isAuto=!1!==this.o.auto&&null!==this.o.autoMode.match(/^loop|bounce$/);this.isRTL=(this.isHorizontal=null!==this.o.orientation.match(/^horizontal|vertical$/)&& +this.o.orientation==h.orientation)&&"rtl"==c("html").attr("dir");this.isForwards=!this.isAuto||this.isAuto&&(null!==this.o.direction.match(/^forwards|backwards$/)&&this.o.direction==h.direction)&&!this.isRTL;this.isLoop=this.isAuto&&"loop"==this.o.autoMode||!this.isAuto&&"loop"==this.o.manualMode;this.events=(this.supportsTouch="createTouch"in document)?{start:"touchstart MozTouchDown",move:"touchmove MozTouchMove",end:"touchend touchcancel MozTouchRelease"}:{start:"mouseenter",end:"mouseleave"}; +this.$list=c(a);var d=this.$list.children();this.$list.addClass("simply-scroll-list").wrap('
').parent().wrap('
');this.isAuto?this.o.pauseButton&&(this.$list.parent().parent().prepend('
'),this.o.pauseOnHover=!1):this.$list.parent().parent().prepend('
').prepend('
'); +if(1").parent().addClass("simply-scroll-list"),this.isHorizontal?this.$list.children().css({"float":"left",width:e+"px"}):this.$list.children().css({height:e+"px"}))}this.o.startOnLoad?c(j).load(function(){g.init()}):this.init()};c.simplyScroll.fn= +c.simplyScroll.prototype={};c.simplyScroll.fn.extend=c.simplyScroll.extend=c.extend;c.simplyScroll.fn.extend({init:function(){this.$items=this.$list.children();this.$clip=this.$list.parent();this.$container=this.$clip.parent();this.$btnBack=c(".simply-scroll-back",this.$container);this.$btnForward=c(".simply-scroll-forward",this.$container);this.isHorizontal?(this.itemMax=this.$items.eq(0).outerWidth(!0),this.clipMax=this.$clip.width(),this.dimension="width",this.moveBackClass="simply-scroll-btn-left", +this.moveForwardClass="simply-scroll-btn-right",this.scrollPos="Left"):(this.itemMax=this.$items.eq(0).outerHeight(!0),this.clipMax=this.$clip.height(),this.dimension="height",this.moveBackClass="simply-scroll-btn-up",this.moveForwardClass="simply-scroll-btn-down",this.scrollPos="Top");this.posMin=0;this.posMax=this.$items.length*this.itemMax;var a=Math.ceil(this.clipMax/this.itemMax);if(this.isAuto&&"loop"==this.o.autoMode)this.$list.css(this.dimension,this.posMax+this.itemMax*a+"px"),this.posMax+= +this.clipMax-this.o.speed,this.isForwards?(this.$items.slice(0,a).clone(!0).appendTo(this.$list),this.resetPosition=0):(this.$items.slice(-a).clone(!0).prependTo(this.$list),this.resetPosition=this.$items.length*this.itemMax,this.isRTL&&(this.$clip[0].dir="ltr",this.$items.css("float","right")));else if(!this.isAuto&&"loop"==this.o.manualMode){this.posMax+=this.itemMax*a;this.$list.css(this.dimension,this.posMax+this.itemMax*a+"px");this.posMax+=this.clipMax-this.o.speed;this.$items.slice(0,a).clone(!0).appendTo(this.$list); +this.$items.slice(-a).clone(!0).prependTo(this.$list);this.resetPositionForwards=this.resetPosition=a*this.itemMax;this.resetPositionBackwards=this.$items.length*this.itemMax;var b=this;this.$btnBack.bind(this.events.start,function(){b.isForwards=false;b.resetPosition=b.resetPositionBackwards});this.$btnForward.bind(this.events.start,function(){b.isForwards=true;b.resetPosition=b.resetPositionForwards})}else this.$list.css(this.dimension,this.posMax+"px"),this.isForwards?this.resetPosition=0:(this.resetPosition= +this.$items.length*this.itemMax,this.isRTL&&(this.$clip[0].dir="ltr",this.$items.css("float","right")));this.resetPos();this.interval=null;this.intervalDelay=Math.floor(1E3/this.o.frameRate);if(this.isAuto||"end"!=this.o.manualMode)for(;0!==this.itemMax%this.o.speed;)if(this.o.speed--,0===this.o.speed){this.o.speed=1;break}b=this;this.trigger=null;this.funcMoveBack=function(a){a!==i&&a.preventDefault();b.trigger=!b.isAuto&&b.o.manualMode=="end"?this:null;b.isAuto?b.isForwards?b.moveBack():b.moveForward(): +b.moveBack()};this.funcMoveForward=function(a){a!==i&&a.preventDefault();b.trigger=!b.isAuto&&b.o.manualMode=="end"?this:null;b.isAuto?b.isForwards?b.moveForward():b.moveBack():b.moveForward()};this.funcMovePause=function(){b.movePause()};this.funcMoveStop=function(){b.moveStop()};this.funcMoveResume=function(){b.moveResume()};if(this.isAuto){this.paused=!1;var g=function(){if(b.paused===false){b.paused=true;b.funcMovePause()}else{b.paused=false;b.funcMoveResume()}return b.paused};this.supportsTouch&& +this.$items.find("a").length&&(this.supportsTouch=!1);if(this.isAuto&&this.o.pauseOnHover&&!this.supportsTouch)this.$clip.bind(this.events.start,this.funcMovePause).bind(this.events.end,this.funcMoveResume);else if(this.isAuto&&this.o.pauseOnTouch&&!this.o.pauseButton&&this.supportsTouch){var d,f;this.$clip.bind(this.events.start,function(a){g();var c=a.originalEvent.touches[0];d=b.isHorizontal?c.pageX:c.pageY;f=b.$clip[0]["scroll"+b.scrollPos];a.stopPropagation();a.preventDefault()}).bind(this.events.move, +function(a){a.stopPropagation();a.preventDefault();a=a.originalEvent.touches[0];a=d-(b.isHorizontal?a.pageX:a.pageY)+f;if(a<0)a=0;else if(a>b.posMax)a=b.posMax;b.$clip[0]["scroll"+b.scrollPos]=a;b.funcMovePause();b.paused=true})}else this.o.pauseButton&&(this.$btnPause=c(".simply-scroll-btn-pause",this.$container).bind("click",function(a){a.preventDefault();g()?c(this).addClass("active"):c(this).removeClass("active")}));this.funcMoveForward()}else this.$btnBack.addClass("simply-scroll-btn "+this.moveBackClass).bind(this.events.start, +this.funcMoveBack).bind(this.events.end,this.funcMoveStop),this.$btnForward.addClass("simply-scroll-btn "+this.moveForwardClass).bind(this.events.start,this.funcMoveForward).bind(this.events.end,this.funcMoveStop),"end"==this.o.manualMode&&(!this.isRTL?this.$btnBack.addClass("disabled"):this.$btnForward.addClass("disabled"))},moveForward:function(){var a=this;this.movement="forward";null!==this.trigger&&this.$btnBack.removeClass("disabled");a.interval=setInterval(function(){a.$clip[0]["scroll"+a.scrollPos]< +a.posMax-a.clipMax?a.$clip[0]["scroll"+a.scrollPos]+=a.o.speed:a.isLoop?a.resetPos():a.moveStop(a.movement)},a.intervalDelay)},moveBack:function(){var a=this;this.movement="back";null!==this.trigger&&this.$btnForward.removeClass("disabled");a.interval=setInterval(function(){a.$clip[0]["scroll"+a.scrollPos]>a.posMin?a.$clip[0]["scroll"+a.scrollPos]-=a.o.speed:a.isLoop?a.resetPos():a.moveStop(a.movement)},a.intervalDelay)},movePause:function(){clearInterval(this.interval)},moveStop:function(a){this.movePause(); +null!==this.trigger&&("undefined"!==typeof a&&c(this.trigger).addClass("disabled"),this.trigger=null);this.isAuto&&"bounce"==this.o.autoMode&&("forward"==a?this.moveBack():this.moveForward())},moveResume:function(){"forward"==this.movement?this.moveForward():this.moveBack()},resetPos:function(){this.$clip[0]["scroll"+this.scrollPos]=this.resetPosition}})})(jQuery,window); \ No newline at end of file diff --git a/app/templates/orbit_classic/assets/stylesheets/adbanner.css b/app/templates/orbit_classic/assets/stylesheets/adbanner.css new file mode 100644 index 0000000..a14cc61 --- /dev/null +++ b/app/templates/orbit_classic/assets/stylesheets/adbanner.css @@ -0,0 +1,54 @@ +/* Container DIV - automatically generated */ +.simply-scroll-container { + position: relative; +} + +/* Clip DIV - automatically generated */ +.simply-scroll-clip { + position: relative; + overflow: hidden; +} + +/* UL/OL/DIV - the element that simplyScroll is inited on +Class name automatically added to element */ +.simply-scroll-list { + overflow: hidden; + margin: 0; + padding: 0; + list-style: none; +} + +.simply-scroll-list li { + padding: 0; + margin: 0; + list-style: none; +} + +.simply-scroll-list li img { + border: none; + display: block; +} + +/* Custom class modifications - adds to / overrides above + +.simply-scroll is default base class */ + +/* Container DIV */ +.simply-scroll { + width: 576px; + height: 200px; + margin-bottom: 1em; +} + +/* Clip DIV */ +.simply-scroll .simply-scroll-clip { + width: 576px; + height: 200px; +} + +/* Explicitly set height/width of each list item */ +.simply-scroll .simply-scroll-list li { + float: left; /* Horizontal scroll only */ + width: auto; + height: auto; +} \ No newline at end of file diff --git a/app/templates/orbit_classic/modules/ad_banner/_widget.html.erb b/app/templates/orbit_classic/modules/ad_banner/_widget.html.erb new file mode 100644 index 0000000..05b8835 --- /dev/null +++ b/app/templates/orbit_classic/modules/ad_banner/_widget.html.erb @@ -0,0 +1,6 @@ + +<%= javascript_include_tag "adbanner.js" %> diff --git a/app/templates/orbit_classic/modules/announcements/_widget.html.erb b/app/templates/orbit_classic/modules/announcement/_widget.html.erb similarity index 100% rename from app/templates/orbit_classic/modules/announcements/_widget.html.erb rename to app/templates/orbit_classic/modules/announcement/_widget.html.erb diff --git a/app/templates/orbit_classic/modules/announcements/index.html.erb b/app/templates/orbit_classic/modules/announcement/index.html.erb similarity index 100% rename from app/templates/orbit_classic/modules/announcements/index.html.erb rename to app/templates/orbit_classic/modules/announcement/index.html.erb diff --git a/app/templates/orbit_classic/modules/announcements/show.html.erb b/app/templates/orbit_classic/modules/announcement/show.html.erb similarity index 100% rename from app/templates/orbit_classic/modules/announcements/show.html.erb rename to app/templates/orbit_classic/modules/announcement/show.html.erb diff --git a/app/templates/orbit_classic/modules/banner/_widget.html.erb b/app/templates/orbit_classic/modules/banner/_widget.html.erb deleted file mode 100644 index a56f7e5..0000000 --- a/app/templates/orbit_classic/modules/banner/_widget.html.erb +++ /dev/null @@ -1,5 +0,0 @@ - \ No newline at end of file diff --git a/app/views/pages/create.js b/app/views/pages/create.js index 6aefddc..13afaae 100644 --- a/app/views/pages/create.js +++ b/app/views/pages/create.js @@ -1,2 +1,3 @@ $("#main-wrap ol.sortable").html("<%= j render 'admin/items/node_and_children', {node: Page.root, level: 0} %>"); -$.pageslide.close(); \ No newline at end of file +$.pageslide.close(); +itemsLibrary.reBindHandlers(); \ No newline at end of file diff --git a/app/views/pages/destroy.js b/app/views/pages/destroy.js index e98be7e..59f1595 100644 --- a/app/views/pages/destroy.js +++ b/app/views/pages/destroy.js @@ -1 +1,2 @@ $("#main-wrap ol.sortable").html("<%= j render 'admin/items/node_and_children', {node: Page.root, level: 0} %>"); +itemsLibrary.reBindHandlers(); \ No newline at end of file diff --git a/built_in_extensions.rb b/built_in_extensions.rb index c91f1e7..196c4af 100644 --- a/built_in_extensions.rb +++ b/built_in_extensions.rb @@ -1,2 +1,2 @@ gem 'announcement', git: 'git@gitlab.tp.rulingcom.com:saurabh/announcement-test.git' -gem 'ad_banner', git: 'git@gitlab.tp.rulingcom.com:saurabh/adbanner-test.git' \ No newline at end of file +gem 'ad_banner', git: 'git@gitlab.tp.rulingcom.com:saurabh/adbanner-test.git'