diff --git a/web/scripts/requireplugins-jquery-textOverflow.js b/web/scripts/requireplugins-jquery-textOverflow.js new file mode 100644 index 0000000..6be6e62 --- /dev/null +++ b/web/scripts/requireplugins-jquery-textOverflow.js @@ -0,0 +1,108 @@ +/*! + * jQuery Text Overflow v0.7 + * + * Licensed under the new BSD License. + * Copyright 2009-2010, Bram Stein + * All rights reserved. + */ +/*global jQuery, document, setInterval*/ +(function ($) { + var style = document.documentElement.style, + hasTextOverflow = ('textOverflow' in style || 'OTextOverflow' in style), + + domSplit = function (root, maxIndex) { + var index = 0, result = [], + domSplitAux = function (nodes) { + var i = 0, tmp; + + if (index > maxIndex) { + return; + } + + for (i = 0; i < nodes.length; i += 1) { + if (nodes[i].nodeType === 1) { + tmp = nodes[i].cloneNode(false); + result[result.length - 1].appendChild(tmp); + result.push(tmp); + domSplitAux(nodes[i].childNodes); + result.pop(); + } else if (nodes[i].nodeType === 3) { + if (index + nodes[i].length < maxIndex) { + result[result.length - 1].appendChild(nodes[i].cloneNode(false)); + } else { + tmp = nodes[i].cloneNode(false); + tmp.textContent = $.trim(tmp.textContent.substring(0, maxIndex - index)); + result[result.length - 1].appendChild(tmp); + } + index += nodes[i].length; + } else { + result.appendChild(nodes[i].cloneNode(false)); + } + } + }; + result.push(root.cloneNode(false)); + domSplitAux(root.childNodes); + return $(result.pop().childNodes); + }; + + $.extend($.fn, { + textOverflow: function (str, autoUpdate) { + var more = str || '…'; + + if (!hasTextOverflow) { + return this.each(function () { + var element = $(this), + + // the clone element we modify to measure the width + clone = element.clone(), + + // we save a copy so we can restore it if necessary + originalElement = element.clone(), + originalText = element.text(), + originalWidth = element.width(), + low = 0, mid = 0, + high = originalText.length, + reflow = function () { + if (originalWidth !== element.width()) { + element.replaceWith(originalElement); + element = originalElement; + originalElement = element.clone(); + element.textOverflow(str, false); + originalWidth = element.width(); + } + }; + + element.after(clone.hide().css({ + 'position': 'absolute', + 'width': 'auto', + 'overflow': 'visible', + 'max-width': 'inherit' + })); + + if (clone.width() > originalWidth) { + while (low < high) { + mid = Math.floor(low + ((high - low) / 2)); + clone.empty().append(domSplit(originalElement.get(0), mid)).append(more); + if (clone.width() < originalWidth) { + low = mid + 1; + } else { + high = mid; + } + } + + if (low < originalText.length) { + element.empty().append(domSplit(originalElement.get(0), low - 1)).append(more); + } + } + clone.remove(); + + if (autoUpdate) { + setInterval(reflow, 200); + } + }); + } else { + return this; + } + } + }); +})(jQuery); diff --git a/web/share/accounts.html.orig b/web/share/accounts.html.orig new file mode 100644 index 0000000..e14f0bd --- /dev/null +++ b/web/share/accounts.html.orig @@ -0,0 +1,71 @@ + + +
+