Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 27 additions & 0 deletions ding_toggle_format.module
Original file line number Diff line number Diff line change
Expand Up @@ -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 =
'<div class="panel-pane pane-block pane-ding-toggle-format-toggle">' .
'<div class="pane-content">' .
render($block['content']) .
'</div>' .
'</div>';

$existing_content = $variables['content']['main_content'];
$variables['content']['main_content'] = $toggle_format_markup . $existing_content;
}
}
19 changes: 9 additions & 10 deletions js/ding_toggle_format.js
Original file line number Diff line number Diff line change
Expand Up @@ -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;
});
Expand All @@ -13,23 +13,22 @@
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);
});
}
};

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);
Cookies('ding_toggle_format', format, {
expires: 30
});
};

} (jQuery));

141 changes: 134 additions & 7 deletions js/jquery.cookie.min.js
Original file line number Diff line number Diff line change
@@ -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);
(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();
}));