123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- /**
- * Copyright (C) 2014 KO GmbH <copyright@kogmbh.com>
- *
- * @licstart
- * This file is part of WebODF.
- *
- * WebODF is free software: you can redistribute it and/or modify it
- * under the terms of the GNU Affero General Public License (GNU AGPL)
- * as published by the Free Software Foundation, either version 3 of
- * the License, or (at your option) any later version.
- *
- * WebODF is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with WebODF. If not, see <http://www.gnu.org/licenses/>.
- * @licend
- *
- * @source: http://www.webodf.org/
- * @source: https://github.com/kogmbh/WebODF/
- */
- /*global define, document, dojo, dijit */
- define("webodf/editor/widgets/dialogWidgets/idMangler", ["dojo", "dijit"], function (dojo, dijit) {
- "use strict";
- var instanceCount = 0;
- /**
- * Mangles html id attributes and associated references so that the same HTML code can be copied into
- * a page multiple times without identifier clashes. This also provides helper functions for retrieving
- * these now-mangled identifiers.
- * @constructor
- */
- function IdMangler() {
- var suffix;
- /**
- * Returns the supplied text with identifiers mangled
- * @param {!string} text
- * @return {!string}
- */
- function mangleIds(text) {
- /*jslint regexp: true*/
- var newText = text.replace(/((id|for|data-dojo-id)\s*=\s*["'][^"']+)/g, "$1" + suffix);
- /*jslint regexp: false*/
- return newText;
- }
- this.mangleIds = mangleIds;
- /**
- * Replacement method for ContentPane's ioMethod
- * @return {*} See http://dojotoolkit.org/api/?qs=1.9/dojo/_base/xhr#1_9dojo__base_xhr_get for return details
- */
- this.ioMethod = function() {
- var args = Array.prototype.slice.call(arguments, 0);
- return dojo.xhr.get.apply(dojo, args).then(function(html) {
- return mangleIds(html);
- });
- };
- /**
- * Replacement for dijit.byId
- * @param {!string} id
- * @return {*} See http://dojotoolkit.org/api/?qs=1.9/dojo/_base/xhr#1_9dijit_registry_byId for return details
- */
- this.byId = function(id) {
- return dijit.byId(id + suffix);
- };
- /**
- * Replacement for document.getElementById
- * @param {!string} id
- * @return {HTMLElement|*}
- */
- this.getElementById = function(id) {
- return document.getElementById(id + suffix);
- };
- function init() {
- suffix = "_" + instanceCount;
- instanceCount += 1;
- }
- init();
- }
- return IdMangler;
- });
|