From bba95bb0634308a1ff9dc4881cf5f7d98fb585e1 Mon Sep 17 00:00:00 2001 From: amd_k8 Date: Thu, 5 Mar 2015 17:26:53 +0200 Subject: [PATCH 1/2] EASYDDB 61 - Force toggle format inserted on certain pages. --- ding_toggle_format.module | 27 +++++++++++++++++++++++++++ js/ding_toggle_format.js | 18 +++++++++--------- 2 files changed, 36 insertions(+), 9 deletions(-) diff --git a/ding_toggle_format.module b/ding_toggle_format.module index 9755d1b..3ac7338 100644 --- a/ding_toggle_format.module +++ b/ding_toggle_format.module @@ -69,3 +69,30 @@ function ding_toggle_format_render_link() { return $format_link; } + +/** + * Implements hook_preprocess(). + */ +function ding_toggle_format_preprocess(&$variables, $hook) { + $search_result = arg(0) == 'search' && arg(1) == 'ting'; + $user_page = arg(0) == 'user' && arg(2) == 'status'; + + // Force toggle format being inserted to search result and + // user pages. + if (!$search_result && !$user_page) { + return; + } + + if ($hook == '25_50_25') { + $block = module_invoke('ding_toggle_format', 'block_view', ''); + $toggle_format_markup = + '
' . + '
' . + render($block['content']) . + '
' . + '
'; + + $existing_content = $variables['content']['main_content']; + $variables['content']['main_content'] = $toggle_format_markup . $existing_content; + } +} diff --git a/js/ding_toggle_format.js b/js/ding_toggle_format.js index 1bf1c3d..9dd0c3d 100644 --- a/js/ding_toggle_format.js +++ b/js/ding_toggle_format.js @@ -3,7 +3,7 @@ Drupal.behaviors.toggleFormat = { attach: function(context, settings) { $('#ding-toggle-format', context).click(function() { - var toFormat = ($.cookie("ding_toggle_format") == 'short') ? 'long': 'short'; + var toFormat = ($.cookie('ding_toggle_format') == 'short') ? 'long': 'short'; Drupal.setFormat(toFormat); return false; }); @@ -13,20 +13,20 @@ Drupal.behaviors.readyFormat = { attach: function(context, settings) { $('#ding-toggle-format', context).ready(function() { - var format = ($.cookie("ding_toggle_format")) ? $.cookie("ding_toggle_format") : 'long'; + var format = ($.cookie('ding_toggle_format')) ? $.cookie('ding_toggle_format') : 'long'; Drupal.setFormat(format); }); } }; Drupal.setFormat = function(format) { - $("#ding-toggle-format").removeClass('ding-toggle-format-long'); - $("#ding-toggle-format").removeClass('ding-toggle-format-short'); - $("#ding-toggle-format").addClass('ding-toggle-format-' + format); - $("li.search-result").removeClass('ding-format-long'); - $("li.search-result").removeClass('ding-format-short'); - $("li.search-result").addClass('ding-format-' + format); - $.cookie("ding_toggle_format", format, { + $('#ding-toggle-format').removeClass('ding-toggle-format-long'); + $('#ding-toggle-format').removeClass('ding-toggle-format-short'); + $('#ding-toggle-format').addClass('ding-toggle-format-' + format); + $('li.search-result, div.material-item').removeClass('ding-format-long'); + $('li.search-result, div.material-item').removeClass('ding-format-short'); + $('li.search-result, div.material-item').addClass('ding-format-' + format); + $.cookie('ding_toggle_format', format, { expires: 30 }); }; From da7b7183dafa6396bf2b23590ad642dc5900cfde Mon Sep 17 00:00:00 2001 From: Voykov Alexandr Date: Mon, 18 May 2015 14:37:40 +0300 Subject: [PATCH 2/2] DDBEASY 61 - Update jquery.cookie plugin --- js/ding_toggle_format.js | 7 +- js/jquery.cookie.min.js | 141 +++++++++++++++++++++++++++++++++++++-- 2 files changed, 137 insertions(+), 11 deletions(-) diff --git a/js/ding_toggle_format.js b/js/ding_toggle_format.js index 9dd0c3d..1a91ee5 100644 --- a/js/ding_toggle_format.js +++ b/js/ding_toggle_format.js @@ -3,7 +3,7 @@ Drupal.behaviors.toggleFormat = { attach: function(context, settings) { $('#ding-toggle-format', context).click(function() { - var toFormat = ($.cookie('ding_toggle_format') == 'short') ? 'long': 'short'; + var toFormat = (Cookies.get('ding_toggle_format') == 'short') ? 'long': 'short'; Drupal.setFormat(toFormat); return false; }); @@ -13,7 +13,7 @@ Drupal.behaviors.readyFormat = { attach: function(context, settings) { $('#ding-toggle-format', context).ready(function() { - var format = ($.cookie('ding_toggle_format')) ? $.cookie('ding_toggle_format') : 'long'; + var format = (Cookies.get('ding_toggle_format')) ? Cookies.get('ding_toggle_format') : 'long'; Drupal.setFormat(format); }); } @@ -26,10 +26,9 @@ $('li.search-result, div.material-item').removeClass('ding-format-long'); $('li.search-result, div.material-item').removeClass('ding-format-short'); $('li.search-result, div.material-item').addClass('ding-format-' + format); - $.cookie('ding_toggle_format', format, { + Cookies('ding_toggle_format', format, { expires: 30 }); }; } (jQuery)); - diff --git a/js/jquery.cookie.min.js b/js/jquery.cookie.min.js index 514f045..51b6785 100644 --- a/js/jquery.cookie.min.js +++ b/js/jquery.cookie.min.js @@ -1,10 +1,137 @@ /*! - * jQuery Cookie Plugin v1.3 - * https://github.com/carhartl/jquery-cookie + * JavaScript Cookie v2.0.0-pre + * https://github.com/js-cookie/js-cookie * - * Copyright 2011, Klaus Hartl - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://www.opensource.org/licenses/mit-license.php - * http://www.opensource.org/licenses/GPL-2.0 + * Copyright 2006, 2015 Klaus Hartl + * Released under the MIT license */ -(function(a,b,c){function e(a){return a}function f(a){return decodeURIComponent(a.replace(d," "))}var d=/\+/g,g=a.cookie=function(d,h,i){if(h!==c){if(i=a.extend({},g.defaults,i),null===h&&(i.expires=-1),"number"==typeof i.expires){var j=i.expires,k=i.expires=new Date;k.setDate(k.getDate()+j)}return h=g.json?JSON.stringify(h):h+"",b.cookie=[encodeURIComponent(d),"=",g.raw?h:encodeURIComponent(h),i.expires?"; expires="+i.expires.toUTCString():"",i.path?"; path="+i.path:"",i.domain?"; domain="+i.domain:"",i.secure?"; secure":""].join("")}for(var l=g.raw?e:f,m=b.cookie.split("; "),n=0,o=m.length;o>n;n++){var p=m[n].split("=");if(l(p.shift())===d){var q=l(p.join("="));return g.json?JSON.parse(q):q}}return null};g.defaults={},a.removeCookie=function(b,c){return null!==a.cookie(b)?(a.cookie(b,null,c),!0):!1}})(jQuery,document); \ No newline at end of file +(function (factory) { + if (typeof define === 'function' && define.amd) { + define(factory); + } else if (typeof exports === 'object') { + module.exports = factory(); + } else { + var _OldCookies = window.Cookies; + var api = window.Cookies = factory(window.jQuery); + api.noConflict = function () { + window.Cookies = _OldCookies; + return api; + }; + } +}(function () { + function extend () { + var i = 0; + var result = {}; + for (; i < arguments.length; i++) { + var attributes = arguments[ i ]; + for (var key in attributes) { + result[key] = attributes[key]; + } + } + return result; + } + + function init (converter) { + function api (key, value, attributes) { + var result; + + // Write + + if (arguments.length > 1) { + attributes = extend({ + path: '/' + }, api.defaults, attributes); + + if (typeof attributes.expires === 'number') { + var expires = new Date(); + expires.setMilliseconds(expires.getMilliseconds() + attributes.expires * 864e+5); + attributes.expires = expires; + } + + try { + result = JSON.stringify(value); + if (/^[\{\[]/.test(result)) { + value = result; + } + } catch (e) {} + + value = encodeURIComponent(String(value)); + value = value.replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent); + + key = encodeURIComponent(String(key)); + key = key.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent); + key = key.replace(/[\(\)]/g, escape); + + return (document.cookie = [ + key, '=', value, + attributes.expires && '; expires=' + attributes.expires.toUTCString(), // use expires attribute, max-age is not supported by IE + attributes.path && '; path=' + attributes.path, + attributes.domain && '; domain=' + attributes.domain, + attributes.secure && '; secure' + ].join('')); + } + + // Read + + if (!key) { + result = {}; + } + + // To prevent the for loop in the first place assign an empty array + // in case there are no cookies at all. Also prevents odd result when + // calling "get()" + var cookies = document.cookie ? document.cookie.split('; ') : []; + var rdecode = /(%[0-9A-Z]{2})+/g; + var i = 0; + + for (; i < cookies.length; i++) { + var parts = cookies[i].split('='); + var name = parts[0].replace(rdecode, decodeURIComponent); + var cookie = parts.slice(1).join('='); + + if (cookie.charAt(0) === '"') { + cookie = cookie.slice(1, -1); + } + + cookie = converter && converter(cookie, name) || cookie.replace(rdecode, decodeURIComponent); + + if (this.json) { + try { + cookie = JSON.parse(cookie); + } catch (e) {} + } + + if (key === name) { + result = cookie; + break; + } + + if (!key) { + result[name] = cookie; + } + } + + return result; + } + + api.get = api.set = api; + api.getJSON = function () { + return api.apply({ + json: true + }, [].slice.call(arguments)); + }; + api.defaults = {}; + + api.remove = function (key, attributes) { + api(key, '', extend(attributes, { + expires: -1 + })); + }; + + api.withConverter = init; + + return api; + } + + return init(); +}));