1function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } 2 3function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } 4 5function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } 6 7/** 8 * Copyright (c) 2000-present Liferay, Inc. All rights reserved. 9 * 10 * This library is free software; you can redistribute it and/or modify it under 11 * the terms of the GNU Lesser General Public License as published by the Free 12 * Software Foundation; either version 2.1 of the License, or (at your option) 13 * any later version. 14 * 15 * This library is distributed in the hope that it will be useful, but WITHOUT 16 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 17 * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more 18 * details. 19 */ 20(function (A, Liferay) { 21 var Lang = A.Lang; 22 var Util = Liferay.Util; 23 var STR_HEAD = 'head'; 24 var TPL_NOT_AJAXABLE = '<div class="alert alert-info">{0}</div>'; 25 26 var Portlet = _objectSpread({}, Liferay.Portlet, { 27 _defCloseFn: function _defCloseFn(event) { 28 event.portlet.remove(true); 29 30 if (!event.nestedPortlet) { 31 var formData = Liferay.Util.objectToFormData({ 32 cmd: 'delete', 33 doAsUserId: event.doAsUserId, 34 p_auth: Liferay.authToken, 35 p_l_id: event.plid, 36 p_p_id: event.portletId, 37 p_v_l_s_g_id: themeDisplay.getSiteGroupId() 38 }); 39 Liferay.Util.fetch(themeDisplay.getPathMain() + '/portal/update_layout', { 40 body: formData, 41 method: 'POST' 42 }).then(function (response) { 43 if (response.ok) { 44 Liferay.fire('updatedLayout'); 45 } 46 }); 47 } 48 }, 49 _loadMarkupHeadElements: function _loadMarkupHeadElements(response) { 50 var markupHeadElements = response.markupHeadElements; 51 52 if (markupHeadElements && markupHeadElements.length) { 53 var head = A.one(STR_HEAD); 54 head.append(markupHeadElements); 55 var container = A.Node.create('<div />'); 56 container.plug(A.Plugin.ParseContent); 57 container.setContent(markupHeadElements); 58 } 59 }, 60 _loadPortletFiles: function _loadPortletFiles(response, loadHTML) { 61 var footerCssPaths = response.footerCssPaths || []; 62 var headerCssPaths = response.headerCssPaths || []; 63 var javascriptPaths = response.headerJavaScriptPaths || []; 64 javascriptPaths = javascriptPaths.concat(response.footerJavaScriptPaths || []); 65 var body = A.getBody(); 66 var head = A.one(STR_HEAD); 67 68 if (headerCssPaths.length) { 69 A.Get.css(headerCssPaths, { 70 insertBefore: head.get('firstChild').getDOM() 71 }); 72 } 73 74 var lastChild = body.get('lastChild').getDOM(); 75 76 if (footerCssPaths.length) { 77 A.Get.css(footerCssPaths, { 78 insertBefore: lastChild 79 }); 80 } 81 82 var responseHTML = response.portletHTML; 83 84 if (javascriptPaths.length) { 85 A.Get.script(javascriptPaths, { 86 onEnd: function onEnd() { 87 loadHTML(responseHTML); 88 } 89 }); 90 } else { 91 loadHTML(responseHTML); 92 } 93 }, 94 _mergeOptions: function _mergeOptions(portlet, options) { 95 options = options || {}; 96 options.doAsUserId = options.doAsUserId || themeDisplay.getDoAsUserIdEncoded(); 97 options.plid = options.plid || themeDisplay.getPlid(); 98 options.portlet = portlet; 99 options.portletId = portlet.portletId; 100 return options; 101 }, 102 _staticPortlets: {}, 103 destroyComponents: function destroyComponents(portletId) { 104 Liferay.destroyComponents(function (_component, componentConfig) { 105 return portletId === componentConfig.portletId; 106 }); 107 }, 108 isStatic: function isStatic(portletId) { 109 var instance = this; 110 var id = Util.getPortletId(portletId.id || portletId); 111 return id in instance._staticPortlets; 112 }, 113 list: [], 114 readyCounter: 0, 115 refreshLayout: function refreshLayout(_portletBoundary) {}, 116 register: function register(portletId) { 117 var instance = this; 118 119 if (instance.list.indexOf(portletId) < 0) { 120 instance.list.push(portletId); 121 } 122 } 123 }); 124 125 Liferay.provide(Portlet, 'add', function (options) { 126 var instance = this; 127 Liferay.fire('initLayout'); 128 var doAsUserId = options.doAsUserId || themeDisplay.getDoAsUserIdEncoded(); 129 var plid = options.plid || themeDisplay.getPlid(); 130 var portletData = options.portletData; 131 var portletId = options.portletId; 132 var portletItemId = options.portletItemId; 133 var placeHolder = options.placeHolder; 134 135 if (!placeHolder) { 136 placeHolder = A.Node.create('<div class="loading-animation" />'); 137 } else { 138 placeHolder = A.one(placeHolder); 139 } 140 141 var beforePortletLoaded = options.beforePortletLoaded; 142 var onCompleteFn = options.onComplete; 143 144 var onComplete = function onComplete(portlet, portletId) { 145 if (onCompleteFn) { 146 onCompleteFn(portlet, portletId); 147 } 148 149 instance.list.push(portlet.portletId); 150 151 if (portlet) { 152 portlet.attr('data-qa-id', 'app-loaded'); 153 } 154 155 Liferay.fire('addPortlet', { 156 portlet: portlet 157 }); 158 }; 159 160 var container = null; 161 162 if (Liferay.Layout && Liferay.Layout.INITIALIZED) { 163 container = Liferay.Layout.getActiveDropContainer(); 164 } 165 166 if (!container) { 167 return; 168 } 169 170 var currentColumnId = Util.getColumnId(container.attr('id')); 171 var portletPosition = 0; 172 173 if (options.placeHolder) { 174 var column = placeHolder.get('parentNode'); 175 176 if (!column) { 177 return; 178 } 179 180 placeHolder.addClass('portlet-boundary'); 181 var columnPortlets = column.all('.portlet-boundary'); 182 var nestedPortlets = column.all('.portlet-nested-portlets'); 183 portletPosition = columnPortlets.indexOf(placeHolder); 184 var nestedPortletOffset = 0; 185 nestedPortlets.some(function (nestedPortlet) { 186 var nestedPortletIndex = columnPortlets.indexOf(nestedPortlet); 187 188 if (nestedPortletIndex !== -1 && nestedPortletIndex < portletPosition) {
189 nestedPortletOffset += nestedPortlet.all('.portlet-boundary').size(); 190 } else if (nestedPortletIndex >= portletPosition) { 191 return true; 192 } 193 }); 194 portletPosition -= nestedPortletOffset; 195 currentColumnId = Util.getColumnId(column.attr('id')); 196 } 197 198 var url = themeDisplay.getPathMain() + '/portal/update_layout'; 199 var data = { 200 cmd: 'add', 201 dataType: 'JSON', 202 doAsUserId: doAsUserId, 203 p_auth: Liferay.authToken, 204 p_l_id: plid, 205 p_p_col_id: currentColumnId, 206 p_p_col_pos: portletPosition, 207 p_p_i_id: portletItemId, 208 p_p_id: portletId, 209 p_p_isolated: true, 210 p_v_l_s_g_id: themeDisplay.getSiteGroupId(), 211 portletData: portletData 212 }; 213 var firstPortlet = container.one('.portlet-boundary'); 214 var hasStaticPortlet = firstPortlet && firstPortlet.isStatic; 215 216 if (!options.placeHolder && !options.plid) { 217 if (!hasStaticPortlet) { 218 container.prepend(placeHolder); 219 } else { 220 firstPortlet.placeAfter(placeHolder); 221 } 222 } 223 224 data.currentURL = Liferay.currentURL; 225 instance.addHTML({ 226 beforePortletLoaded: beforePortletLoaded, 227 data: data, 228 onComplete: onComplete, 229 placeHolder: placeHolder, 230 url: url 231 }); 232 }, ['aui-base']); 233 Liferay.provide(Portlet, 'addHTML', function (options) { 234 var instance = this; 235 var portletBoundary = null; 236 var beforePortletLoaded = options.beforePortletLoaded; 237 var data = options.data; 238 var dataType = 'HTML'; 239 var onComplete = options.onComplete; 240 var placeHolder = options.placeHolder; 241 var url = options.url; 242 243 if (data && Lang.isString(data.dataType)) { 244 dataType = data.dataType; 245 } 246 247 dataType = dataType.toUpperCase(); 248 249 var addPortletReturn = function addPortletReturn(html) { 250 var container = placeHolder.get('parentNode'); 251 var portletBound = A.Node.create('<div></div>'); 252 portletBound.plug(A.Plugin.ParseContent); 253 portletBound.setContent(html); 254 portletBound = portletBound.one('> *'); 255 var portletId; 256 257 if (portletBound) { 258 var id = portletBound.attr('id'); 259 portletId = Util.getPortletId(id); 260 portletBound.portletId = portletId; 261 placeHolder.hide(); 262 placeHolder.placeAfter(portletBound); 263 placeHolder.remove(); 264 instance.refreshLayout(portletBound); 265 266 if (window.location.hash) { 267 window.location.href = window.location.hash; 268 } 269 270 portletBoundary = portletBound; 271 var Layout = Liferay.Layout; 272 273 if (Layout && Layout.INITIALIZED) { 274 Layout.updateCurrentPortletInfo(portletBoundary); 275 276 if (container) { 277 Layout.syncEmptyColumnClassUI(container); 278 } 279 280 Layout.syncDraggableClassUI(); 281 Layout.updatePortletDropZones(portletBoundary); 282 } 283 284 if (onComplete) { 285 onComplete(portletBoundary, portletId); 286 } 287 } else { 288 placeHolder.remove(); 289 } 290 291 return portletId; 292 }; 293 294 if (beforePortletLoaded) { 295 beforePortletLoaded(placeHolder); 296 } 297 298 Liferay.Util.fetch(url, { 299 body: Liferay.Util.objectToURLSearchParams(data), 300 method: 'POST' 301 }).then(function (response) { 302 if (dataType === 'JSON') { 303 return response.json(); 304 } else { 305 return response.text(); 306 } 307 }).then(function (response) { 308 if (dataType === 'HTML') { 309 addPortletReturn(response); 310 } else if (response.refresh) { 311 addPortletReturn(response.portletHTML); 312 } else { 313 Portlet._loadMarkupHeadElements(response); 314 315 Portlet._loadPortletFiles(response, addPortletReturn); 316 } 317 318 if (!data || !data.preventNotification) { 319 Liferay.fire('updatedLayout'); 320 } 321 })["catch"](function (error) { 322 var message = typeof error === 'string' ? error : 'Il\x20y\x20a\x20eu\x20une\x20erreur\x20inattendue\x2e\x20Veuillez\x20rafraîchir\x20la\x20page\x20actuelle\x2e'; 323 Liferay.Util.openToast({ 324 message: message, 325 type: 'danger' 326 }); 327 }); 328 }, ['aui-parse-content']); 329 Liferay.provide(Portlet, 'close', function (portlet, skipConfirm, options) { 330 var instance = this; 331 portlet = A.one(portlet); 332 333 if (portlet && (skipConfirm || confirm('Ãtes-vous\x20sûr\x20de\x20vouloir\x20supprimer\x20ce\x20composant\x20\x3f'))) { 334 var portletId = portlet.portletId; 335 var portletIndex = instance.list.indexOf(portletId); 336 337 if (portletIndex >= 0) { 338 instance.list.splice(portletIndex, 1); 339 } 340 341 options = Portlet._mergeOptions(portlet, options); 342 Portlet.destroyComponents(portletId); 343 Liferay.fire('destroyPortlet', options); 344 Liferay.fire('closePortlet', options); 345 } else { 346 A.config.win.focus(); 347 } 348 }, []); 349 Liferay.provide(Portlet, 'destroy', function (portlet, options) { 350 portlet = A.one(portlet); 351 352 if (portlet) { 353 var portletId = portlet.portletId || Util.getPortletId(portlet.attr('id')); 354 Portlet.destroyComponents(portletId); 355 Liferay.fire('destroyPortlet', Portlet._mergeOptions(portlet, options)); 356 } 357 }, ['aui-node-base']); 358 Liferay.provide(Portlet, 'onLoad', function (options) { 359 var instance = this; 360 var canEditTitle = options.canEditTitle; 361 var columnPos = options.columnPos; 362 var isStatic = options.isStatic == 'no' ? null : options.isStatic; 363 var namespacedId = options.namespacedId; 364 var portletId = options.portletId; 365 var refreshURL = options.refreshURL; 366 var refreshURLData = options.refreshURLData; 367 368 if (isStatic) { 369 instance.registerStatic(portletId); 370 } 371
372 var portlet = A.one('#' + namespacedId); 373 374 if (portlet && !portlet.portletProcessed) { 375 portlet.portletProcessed = true; 376 portlet.portletId = portletId; 377 portlet.columnPos = columnPos; 378 portlet.isStatic = isStatic; 379 portlet.refreshURL = refreshURL; 380 portlet.refreshURLData = refreshURLData; // Functions to run on portlet load 381 382 if (canEditTitle) { 383 // https://github.com/yui/yui3/issues/1808 384 var events = 'focus'; 385 386 if (!A.UA.touchEnabled) { 387 events = ['focus', 'mousemove']; 388 } 389 390 var handle = portlet.on(events, function () { 391 Util.portletTitleEdit({ 392 doAsUserId: themeDisplay.getDoAsUserIdEncoded(), 393 obj: portlet, 394 plid: themeDisplay.getPlid(), 395 portletId: portletId 396 }); 397 handle.detach(); 398 }); 399 } 400 } 401 402 Liferay.fire('portletReady', { 403 portlet: portlet, 404 portletId: portletId 405 }); 406 instance.readyCounter++; 407 408 if (instance.readyCounter === instance.list.length) { 409 Liferay.fire('allPortletsReady', { 410 portletId: portletId 411 }); 412 } 413 }, ['aui-base', 'aui-timer', 'event-move']); 414 Liferay.provide(Portlet, 'refresh', function (portlet, data) { 415 var instance = this; 416 portlet = A.one(portlet); 417 418 if (portlet) { 419 data = data || portlet.refreshURLData || {}; 420 421 if (!Object.prototype.hasOwnProperty.call(data, 'portletAjaxable')) { 422 data.portletAjaxable = true; 423 } 424 425 var id = portlet.attr('portlet'); 426 var url = portlet.refreshURL; 427 var placeHolder = A.Node.create('<div class="loading-animation" id="p_p_id' + id + '" />'); 428 429 if (data.portletAjaxable && url) { 430 portlet.placeBefore(placeHolder); 431 portlet.remove(true); 432 Portlet.destroyComponents(portlet.portletId); 433 var params = {}; 434 var urlPieces = url.split('?'); 435 436 if (urlPieces.length > 1) { 437 params = A.QueryString.parse(urlPieces[1]); 438 delete params.dataType; 439 url = urlPieces[0]; 440 } 441 442 instance.addHTML({ 443 data: A.mix(params, data, true), 444 onComplete: function onComplete(portlet, portletId) { 445 portlet.refreshURL = url; 446 447 if (portlet) { 448 portlet.attr('data-qa-id', 'app-refreshed'); 449 } 450 451 Liferay.fire(portlet.portletId + ':portletRefreshed', { 452 portlet: portlet, 453 portletId: portletId 454 }); 455 }, 456 placeHolder: placeHolder, 457 url: url 458 }); 459 } else if (!portlet.getData('pendingRefresh')) { 460 portlet.setData('pendingRefresh', true); 461 var nonAjaxableContentMessage = Lang.sub(TPL_NOT_AJAXABLE, ['Ce\x20changement\x20sera\x20affiché\x20uniquement\x20après\x20que\x20vous\x20régénériez\x20la\x20page\x20courante\x2e']); 462 var portletBody = portlet.one('.portlet-body'); 463 portletBody.placeBefore(nonAjaxableContentMessage); 464 portletBody.hide(); 465 } 466 } 467 }, ['aui-base', 'querystring-parse']); 468 Liferay.provide(Portlet, 'registerStatic', function (portletId) { 469 var instance = this; 470 var Node = A.Node; 471 472 if (Node && portletId instanceof Node) { 473 portletId = portletId.attr('id'); 474 } else if (portletId.id) { 475 portletId = portletId.id; 476 } 477 478 var id = Util.getPortletId(portletId); 479 instance._staticPortlets[id] = true; 480 }, ['aui-base']); 481 Liferay.publish('closePortlet', { 482 defaultFn: Portlet._defCloseFn 483 }); 484 Liferay.publish('allPortletsReady', { 485 fireOnce: true 486 }); // Backwards compatability 487 488 Portlet.ready = function (fn) { 489 Liferay.on('portletReady', function (event) { 490 fn(event.portletId, event.portlet); 491 }); 492 }; 493 494 Liferay.Portlet = Portlet; 495})(AUI(), Liferay); 496//# sourceMappingURL=portlet.js.map
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.