implemented the feature of current working page not collapsed .. the pages are not collapsed if you are working under a page in site structure

This commit is contained in:
Harry Bomrah 2014-07-21 22:20:36 +08:00
parent bbb537f7bb
commit 3fae3327b3
6 changed files with 115 additions and 16 deletions

View File

@ -18,16 +18,6 @@ var Items = function(){
} }
this.bindHandlers = function(){ this.bindHandlers = function(){
var $openSlide = $('.open-slide'),
$pageslideW = $(window).width() > 1440 ? 1024 : 954;
$(window).resize(function() {
$(this).width() > 1440 ? $pageslideW = 1024 : $pageslideW = 954;
});
$iFrame = $openSlide.filter('.view-page.open-slide');
$iFrame.pageslide({
W: $pageslideW,
iframe: true
});
$('.sortable').nestedSortable({ $('.sortable').nestedSortable({
handle: '.brand', handle: '.brand',
items: 'li', items: 'li',
@ -233,3 +223,87 @@ $(function(){
$("#pageslide_iframe").css("box-shadow","0px 0px 40px #333"); $("#pageslide_iframe").css("box-shadow","0px 0px 40px #333");
}); });
}); });
function customOpenSlide() {
var $openSlide = $('.open-slide'),
$pageslideW;
$(window).width() > 1440 ? $pageslideW = 1024 : $pageslideW = 954;
$(window).resize(function() {
$(this).width() > 1440 ? $pageslideW = 1024 : $pageslideW = 954;
});
$noiFrame = $openSlide.not('.view-page');
$iFrame = $openSlide.filter('.view-page.open-slide');
$noiFrame.pageslide({
W: 314,
openFn: function(pageslide, element) {
element.addClass('active')
.closest('.item-menu')
.css('display', 'inline-block')
.closest('.navbar-inner')
.addClass('active');
},
closeFn: function(pageslide, element) {
$('.item-menu').removeAttr('style');
element.removeClass('active')
.closest('.navbar-inner')
.removeClass('active');
},
loadComplete: function(pageslide, element) {
$openSlide.removeClass('active');
$('.navbar-inner').removeClass('active');
$('.item-menu').removeAttr('style');
element.addClass('active')
.closest('.item-menu')
.css('display', 'inline-block')
.closest('.navbar-inner')
.addClass('active');
_type = element.hasClass('page') ? 'page' : 'link';
var _id = element.data('id'),
_parent = element.data('parent'),
_edit = element.hasClass('edit') ? true : false;
$('#pageslide .parent').val(_parent);
if(_id !== 'new') {
$('#pageslide form').attr({
'action': $('#pageslide form').attr('action') + '/' + _id,
'id': 'edit_' + _type + '_' + _id,
'method': 'put'
});
setForm(element.data('form'));
} else {
$('#pageslide form').prop('method', 'post')
};
_type == 'page' ? pageSetting(element.data('id'), _edit, pageslide) : linkSetting(element.data('id'), _edit, pageslide);
}
});
$iFrame.pageslide({
W: $pageslideW,
iframe: true,
openFn: function(pageslide, element) {
element.addClass('active')
.closest('.item-menu')
.css('display', 'inline-block')
.closest('.navbar-inner')
.addClass('active');
},
closeFn: function(pageslide, element) {
$('.item-menu').removeAttr('style');
element.removeClass('active')
.closest('.navbar-inner')
.removeClass('active');
$('#main-wrap').css('width', 'auto')
},
loadComplete: function(pageslide, element) {
$openSlide.removeClass('active');
$('.navbar-inner').removeClass('active');
$('.item-menu').removeAttr('style');
element.addClass('active')
.closest('.item-menu')
.css('display', 'inline-block')
.closest('.navbar-inner')
.addClass('active');
pageslide.find('.content').css('padding', 0);
// iFrameContent()
}
});
}

View File

@ -32,7 +32,6 @@
// Are we loading an element from the page or a URL? // Are we loading an element from the page or a URL?
if ( settings.href.indexOf("#") === 0 ) { if ( settings.href.indexOf("#") === 0 ) {
// Load a page element // Load a page element
window.console.log("in HTML");
var _contentHtml = $(settings.href).html(); var _contentHtml = $(settings.href).html();
var dtd = $.Deferred(); var dtd = $.Deferred();
function appendHtml(dtd) { function appendHtml(dtd) {
@ -53,7 +52,6 @@
} else { } else {
// Load a URL. Into an iframe? // Load a URL. Into an iframe?
if(settings.iframe) { if(settings.iframe) {
window.console.log("iFrame");
var iframe = $('<iframe id="pageslide_iframe" />').attr({ var iframe = $('<iframe id="pageslide_iframe" />').attr({
src: settings.href, src: settings.href,
frameborder: 0, frameborder: 0,
@ -66,7 +64,6 @@
$pageslide.find('.content').css('overflow', 'hidden').html(iframe).show(); $pageslide.find('.content').css('overflow', 'hidden').html(iframe).show();
if(settings.loadComplete)settings.loadComplete.call(this, $pageslide, $element); if(settings.loadComplete)settings.loadComplete.call(this, $pageslide, $element);
} else { } else {
window.console.log("Load");
$pageslide.find('.content').load(settings.href, function(response, status, xhr){ $pageslide.find('.content').load(settings.href, function(response, status, xhr){
if(status == 'success') { if(status == 'success') {
$pageslide.show(); $pageslide.show();
@ -95,9 +92,9 @@
slideAnimateIn = {}; slideAnimateIn = {};
// If the slide is open or opening, just ignore the call // If the slide is open or opening, just ignore the call
if($pageslide.is(':visible') || _sliding) return;
if($pageslide.is(':visible')) return;
_sliding = true; _sliding = true;
switch(settings.direction) { switch(settings.direction) {
case 'left': case 'left':
$pageslide.css({left: 'auto', right: '-' + slideWidth + 'px'}); $pageslide.css({left: 'auto', right: '-' + slideWidth + 'px'});
@ -132,6 +129,7 @@
// On click // On click
$elements.click( function(e) { $elements.click( function(e) {
var $self = $(this), var $self = $(this),
settings = $.extend({href: $self.attr('href'), pageTitle: $self.data('title')}, options); settings = $.extend({href: $self.attr('href'), pageTitle: $self.data('title')}, options);

View File

@ -4,5 +4,7 @@ class Admin::ItemsController < OrbitAdminController
layout "structure" layout "structure"
def index def index
@items = Page.all @items = Page.all
@parent_pages = []
end end
end end

View File

@ -131,6 +131,7 @@ class PagesController < ApplicationController
def destroy def destroy
page = Page.find(params[:id]) page = Page.find(params[:id])
@parent_pages = page.parent_pages_without_root
page.destroy page.destroy
respond_to do |format| respond_to do |format|
format.js format.js
@ -198,6 +199,7 @@ class PagesController < ApplicationController
@page = Page.find(params[:id]) @page = Page.find(params[:id])
@page.update_attributes(page_update_params) @page.update_attributes(page_update_params)
@page.save @page.save
@parent_pages = @page.parent_pages_without_root
respond_to do |format| respond_to do |format|
format.js format.js
end end
@ -208,6 +210,7 @@ class PagesController < ApplicationController
params['page']['page_id'] = params['page']['page_id'].gsub('-','_') params['page']['page_id'] = params['page']['page_id'].gsub('-','_')
@page = Page.new(page_params) @page = Page.new(page_params)
@page.save! @page.save!
@parent_pages = @page.parent_pages_without_root
respond_to do |format| respond_to do |format|
format.js format.js
end end

View File

@ -39,6 +39,28 @@ class Page
self.number = number self.number = number
end end
def parent_pages
parent_page = self.parent_page
pages = []
while parent_page != nil
pages << parent_page.id
parent_page = parent_page.parent_page
end
pages
end
def parent_pages_without_root
parent_page = self.parent_page
pages = []
while parent_page != nil
if parent_page.parent_page_id != nil
pages << parent_page.id
end
parent_page = parent_page.parent_page
end
pages
end
def to_param def to_param
page_id.parameterize page_id.parameterize
end end

View File

@ -1,5 +1,5 @@
<% unless node.root? %> <% unless node.root? %>
<li id='<%= node.id %>' class="<%= 'disabled' unless !node.enabled_for.empty? %> <%= 'collapsed' unless node.child_page.blank? %>" > <li id='<%= node.id %>' class="<%= 'disabled' unless !node.enabled_for.empty? %> <%= 'collapsed' unless (@parent_pages.include?node.id or node.child_page.blank?) %>" >
<% end %> <% end %>
<%= render 'node', {node: node, level: level} rescue render 'admin/items/node', {node: node, level: level} %> <%= render 'node', {node: node, level: level} rescue render 'admin/items/node', {node: node, level: level} %>
<% unless node.child_page.blank? %> <% unless node.child_page.blank? %>