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 * SPDX-FileCopyrightText: (c) 2000 Liferay, Inc. https://liferay.com 9 * SPDX-License-Identifier: LGPL-2.1-or-later OR LicenseRef-Liferay-DXP-EULA-2.0.0-2023-06 10 */ 11(function (A) { 12 var Lang = A.Lang; 13 var Util = Liferay.Util; 14 var STR_HEAD = 'head'; 15 var TPL_NOT_AJAXABLE = '<div class="alert alert-info">{0}</div>'; 16 17 var Portlet = _objectSpread(_objectSpread({}, Liferay.Portlet), {}, { 18 _defCloseFn: function _defCloseFn(event) { 19 event.portlet.remove(true); 20 21 if (!event.nestedPortlet) { 22 var formData = Liferay.Util.objectToFormData({ 23 cmd: 'delete', 24 doAsUserId: event.doAsUserId, 25 p_auth: Liferay.authToken, 26 p_l_id: event.plid, 27 p_p_id: event.portletId, 28 p_v_l_s_g_id: themeDisplay.getSiteGroupId() 29 }); 30 Liferay.Util.fetch(themeDisplay.getPathMain() + '/portal/update_layout', { 31 body: formData, 32 method: 'POST' 33 }).then(function (response) { 34 if (response.ok) { 35 Liferay.fire('updatedLayout'); 36 } 37 }); 38 } 39 }, 40 _loadMarkupHeadElements: function _loadMarkupHeadElements(response) { 41 var markupHeadElements = response.markupHeadElements; 42 43 if (markupHeadElements && markupHeadElements.length) { 44 var head = A.one(STR_HEAD); 45 head.append(markupHeadElements); 46 var container = A.Node.create('<div />'); 47 container.plug(A.Plugin.ParseContent); 48 container.setContent(markupHeadElements); 49 } 50 }, 51 _loadPortletFiles: function _loadPortletFiles(response, loadHTML) { 52 var footerCssPaths = response.footerCssPaths || []; 53 var headerCssPaths = response.headerCssPaths || []; 54 var javascriptPaths = response.headerJavaScriptPaths || []; 55 javascriptPaths = javascriptPaths.concat(response.footerJavaScriptPaths || []); 56 var body = A.getBody(); 57 var head = A.one(STR_HEAD); 58 59 if (headerCssPaths.length) { 60 A.Get.css(headerCssPaths, { 61 insertBefore: head.get('firstChild').getDOM() 62 }); 63 } 64 65 var lastChild = body.get('lastChild').getDOM(); 66 67 if (footerCssPaths.length) { 68 A.Get.css(footerCssPaths, { 69 insertBefore: lastChild 70 }); 71 } 72 73 var responseHTML = response.portletHTML; 74 75 if (javascriptPaths.length) { 76 A.Get.script(javascriptPaths, { 77 onEnd: function onEnd() { 78 loadHTML(responseHTML); 79 } 80 }); 81 } else { 82 loadHTML(responseHTML); 83 } 84 }, 85 _mergeOptions: function _mergeOptions(portlet, options) { 86 options = options || {}; 87 options.doAsUserId = options.doAsUserId || themeDisplay.getDoAsUserIdEncoded(); 88 options.plid = options.plid || themeDisplay.getPlid(); 89 options.portlet = portlet; 90 options.portletId = portlet.portletId; 91 return options; 92 }, 93 _staticPortlets: {}, 94 destroyComponents: function destroyComponents(portletId) { 95 Liferay.destroyComponents(function (_component, componentConfig) { 96 return portletId === componentConfig.portletId; 97 }); 98 }, 99 isStatic: function isStatic(portletId) { 100 var instance = this; 101 var id = Util.getPortletId(portletId.id || portletId); 102 return id in instance._staticPortlets; 103 }, 104 list: [], 105 readyCounter: 0, 106 refreshLayout: function refreshLayout(_portletBoundary) {}, 107 register: function register(portletId) { 108 var instance = this; 109 110 if (instance.list.indexOf(portletId) < 0) { 111 instance.list.push(portletId); 112 } 113 } 114 }); 115 116 Liferay.provide(Portlet, 'add', function (options) { 117 var instance = this; 118 Liferay.fire('initLayout'); 119 var doAsUserId = options.doAsUserId || themeDisplay.getDoAsUserIdEncoded(); 120 var plid = options.plid || themeDisplay.getPlid(); 121 var portletData = options.portletData; 122 var portletId = options.portletId; 123 var portletItemId = options.portletItemId; 124 var placeHolder = options.placeHolder; 125 126 if (!placeHolder) { 127 placeHolder = A.Node.create('<div class="loading-animation" />'); 128 } else { 129 placeHolder = A.one(placeHolder); 130 } 131 132 var beforePortletLoaded = options.beforePortletLoaded; 133 var onCompleteFn = options.onComplete; 134 135 var onComplete = function onComplete(portlet, portletId) { 136 if (onCompleteFn) { 137 onCompleteFn(portlet, portletId); 138 } 139 140 instance.list.push(portlet.portletId); 141 142 if (portlet) { 143 portlet.attr('data-qa-id', 'app-loaded'); 144 } 145 146 Liferay.fire('addPortlet', { 147 portlet: portlet 148 }); 149 }; 150 151 var container = null; 152 153 if (Liferay.Layout && Liferay.Layout.INITIALIZED) { 154 container = Liferay.Layout.getActiveDropContainer(); 155 } 156 157 if (!container) { 158 return; 159 } 160 161 var currentColumnId = Util.getColumnId(container.attr('id')); 162 var portletPosition = 0; 163 164 if (options.placeHolder) { 165 var column = placeHolder.get('parentNode'); 166 167 if (!column) { 168 return; 169 } 170 171 placeHolder.addClass('portlet-boundary'); 172 var columnPortlets = column.all('.portlet-boundary'); 173 var nestedPortlets = column.all('.portlet-nested-portlets'); 174 portletPosition = columnPortlets.indexOf(placeHolder); 175 var nestedPortletOffset = 0; 176 nestedPortlets.some(function (nestedPortlet) { 177 var nestedPortletIndex = columnPortlets.indexOf(nestedPortlet); 178 179 if (nestedPortletIndex !== -1 && nestedPortletIndex < portletPosition) {
180 nestedPortletOffset += nestedPortlet.all('.portlet-boundary').size(); 181 } else if (nestedPortletIndex >= portletPosition) { 182 return true; 183 } 184 }); 185 portletPosition -= nestedPortletOffset; 186 currentColumnId = Util.getColumnId(column.attr('id')); 187 } 188 189 var url = themeDisplay.getPathMain() + '/portal/update_layout'; 190 var data = { 191 cmd: 'add', 192 dataType: 'JSON', 193 doAsUserId: doAsUserId, 194 p_auth: Liferay.authToken, 195 p_l_id: plid, 196 p_p_col_id: currentColumnId, 197 p_p_col_pos: portletPosition, 198 p_p_i_id: portletItemId, 199 p_p_id: portletId, 200 p_p_isolated: true, 201 p_v_l_s_g_id: themeDisplay.getSiteGroupId(), 202 portletData: portletData 203 }; 204 var firstPortlet = container.one('.portlet-boundary'); 205 var hasStaticPortlet = firstPortlet && firstPortlet.isStatic; 206 207 if (!options.placeHolder && !options.plid) { 208 if (!hasStaticPortlet) { 209 container.prepend(placeHolder); 210 } else { 211 firstPortlet.placeAfter(placeHolder); 212 } 213 } 214 215 data.currentURL = Liferay.currentURL; 216 instance.addHTML({ 217 beforePortletLoaded: beforePortletLoaded, 218 data: data, 219 onComplete: onComplete, 220 placeHolder: placeHolder, 221 url: url 222 }); 223 }, ['aui-base']); 224 Liferay.provide(Portlet, 'addHTML', function (options) { 225 var instance = this; 226 var portletBoundary = null; 227 var beforePortletLoaded = options.beforePortletLoaded; 228 var data = options.data; 229 var dataType = 'HTML'; 230 var onComplete = options.onComplete; 231 var placeHolder = options.placeHolder; 232 var url = options.url; 233 234 if (data && Lang.isString(data.dataType)) { 235 dataType = data.dataType; 236 } 237 238 dataType = dataType.toUpperCase(); 239 240 var addPortletReturn = function addPortletReturn(html) { 241 var container = placeHolder.get('parentNode'); 242 var portletBound = A.Node.create('<div></div>'); 243 portletBound.plug(A.Plugin.ParseContent); 244 portletBound.setContent(html); 245 portletBound = portletBound.one('> *'); 246 var portletId; 247 248 if (portletBound) { 249 var id = portletBound.attr('id'); 250 portletId = Util.getPortletId(id); 251 portletBound.portletId = portletId; 252 placeHolder.hide(); 253 placeHolder.placeAfter(portletBound); 254 placeHolder.remove(); 255 instance.refreshLayout(portletBound); 256 257 if (window.location.hash) { 258 window.location.href = encodeURI(window.location.hash); 259 } 260 261 portletBoundary = portletBound; 262 var Layout = Liferay.Layout; 263 264 if (Layout && Layout.INITIALIZED) { 265 Layout.updateCurrentPortletInfo(portletBoundary); 266 267 if (container) { 268 Layout.syncEmptyColumnClassUI(container); 269 } 270 271 Layout.syncDraggableClassUI(); 272 Layout.updatePortletDropZones(portletBoundary); 273 } 274 275 if (onComplete) { 276 onComplete(portletBoundary, portletId); 277 } 278 } else { 279 placeHolder.remove(); 280 } 281 282 return portletId; 283 }; 284 285 if (beforePortletLoaded) { 286 beforePortletLoaded(placeHolder); 287 } 288 289 Liferay.Util.fetch(url, { 290 body: Liferay.Util.objectToURLSearchParams(data), 291 method: 'POST' 292 }).then(function (response) { 293 if (dataType === 'JSON') { 294 return response.json(); 295 } else { 296 return response.text(); 297 } 298 }).then(function (response) { 299 if (dataType === 'HTML') { 300 addPortletReturn(response); 301 } else if (response.refresh) { 302 addPortletReturn(response.portletHTML); 303 } else { 304 Portlet._loadMarkupHeadElements(response); 305 306 Portlet._loadPortletFiles(response, addPortletReturn); 307 } 308 309 if (!data || !data.preventNotification) { 310 Liferay.fire('updatedLayout'); 311 } 312 }).catch(function (error) { 313 var message = typeof error === 'string' ? error : 'Tapahtui\x20odottamaton\x20virhe\x2e\x20Ole\x20hyvä\x20ja\x20päivitä\x20sivu\x2e'; 314 Liferay.Util.openToast({ 315 message: message, 316 type: 'danger' 317 }); 318 }); 319 }, ['aui-parse-content']); 320 Liferay.provide(Portlet, 'close', function (portlet, skipConfirm, options) { 321 var instance = this; 322 portlet = A.one(portlet); 323 324 if (portlet && (skipConfirm || confirm('Oletko\x20varma\x2c\x20että\x20haluat\x20poistaa\x20tämän\x20komponentin\x3f'))) { 325 var portletId = portlet.portletId; 326 var portletIndex = instance.list.indexOf(portletId); 327 328 if (portletIndex >= 0) { 329 instance.list.splice(portletIndex, 1); 330 } 331 332 options = Portlet._mergeOptions(portlet, options); 333 Portlet.destroyComponents(portletId); 334 Liferay.fire('destroyPortlet', options); 335 Liferay.fire('closePortlet', options); 336 } else { 337 A.config.win.focus(); 338 } 339 }, []); 340 Liferay.provide(Portlet, 'destroy', function (portlet, options) { 341 portlet = A.one(portlet); 342 343 if (portlet) { 344 var portletId = portlet.portletId || Util.getPortletId(portlet.attr('id')); 345 Portlet.destroyComponents(portletId); 346 Liferay.fire('destroyPortlet', Portlet._mergeOptions(portlet, options)); 347 } 348 }, ['aui-node-base']); 349 Liferay.provide(Portlet, 'onLoad', function (options) { 350 var instance = this; 351 var canEditTitle = options.canEditTitle; 352 var columnPos = options.columnPos; 353 var isStatic = options.isStatic == 'no' ? null : options.isStatic; 354 var namespacedId = options.namespacedId; 355 var portletId = options.portletId; 356 var refreshURL = options.refreshURL; 357 var refreshURLData = options.refreshURLData; 358 359 if (isStatic) { 360 instance.registerStatic(portletId); 361 } 362
363 var portlet = A.one('#' + namespacedId); 364 365 if (portlet && !portlet.portletProcessed) { 366 portlet.portletProcessed = true; 367 portlet.portletId = portletId; 368 portlet.columnPos = columnPos; 369 portlet.isStatic = isStatic; 370 portlet.refreshURL = refreshURL; 371 portlet.refreshURLData = refreshURLData; // Functions to run on portlet load 372 373 if (canEditTitle) { 374 // https://github.com/yui/yui3/issues/1808 375 var events = 'focus'; 376 377 if (!A.UA.touchEnabled) { 378 events = ['focus', 'mousemove']; 379 } 380 381 var handle = portlet.on(events, function () { 382 Util.portletTitleEdit({ 383 doAsUserId: themeDisplay.getDoAsUserIdEncoded(), 384 obj: portlet, 385 plid: themeDisplay.getPlid(), 386 portletId: portletId 387 }); 388 handle.detach(); 389 }); 390 } 391 } 392 393 Liferay.fire('portletReady', { 394 portlet: portlet, 395 portletId: portletId 396 }); 397 instance.readyCounter++; 398 399 if (instance.readyCounter === instance.list.length) { 400 Liferay.fire('allPortletsReady', { 401 portletId: portletId 402 }); 403 } 404 }, ['aui-base', 'aui-timer', 'event-move']); 405 Liferay.provide(Portlet, 'refresh', function (portlet, data) { 406 var instance = this; 407 portlet = A.one(portlet); 408 409 if (portlet) { 410 data = data || portlet.refreshURLData || {}; 411 412 if (!Object.prototype.hasOwnProperty.call(data, 'portletAjaxable')) { 413 data.portletAjaxable = true; 414 } 415 416 var id = portlet.attr('portlet'); 417 var url = portlet.refreshURL; 418 var placeHolder = A.Node.create('<div class="loading-animation" id="p_p_id' + id + '" />'); 419 420 if (data.portletAjaxable && url) { 421 portlet.placeBefore(placeHolder); 422 portlet.remove(true); 423 Portlet.destroyComponents(portlet.portletId); 424 var params = {}; 425 var urlPieces = url.split('?'); 426 427 if (urlPieces.length > 1) { 428 params = A.QueryString.parse(urlPieces[1]); 429 delete params.dataType; 430 url = urlPieces[0]; 431 } 432 433 instance.addHTML({ 434 data: A.mix(params, data, true), 435 onComplete: function onComplete(portlet, portletId) { 436 portlet.refreshURL = url; 437 438 if (portlet) { 439 portlet.attr('data-qa-id', 'app-refreshed'); 440 } 441 442 Liferay.fire(portlet.portletId + ':portletRefreshed', { 443 portlet: portlet, 444 portletId: portletId 445 }); 446 }, 447 placeHolder: placeHolder, 448 url: url 449 }); 450 } else if (!portlet.getData('pendingRefresh')) { 451 portlet.setData('pendingRefresh', true); 452 var nonAjaxableContentMessage = Lang.sub(TPL_NOT_AJAXABLE, ['Tämä\x20muutos\x20näkyy\x20vasta\x20kun\x20lataa\x20uudelleen\x20tämän\x20sivun\x2e']); 453 var portletBody = portlet.one('.portlet-body'); 454 portletBody.placeBefore(nonAjaxableContentMessage); 455 portletBody.hide(); 456 } 457 } 458 }, ['aui-base', 'querystring-parse']); 459 Liferay.provide(Portlet, 'registerStatic', function (portletId) { 460 var instance = this; 461 var Node = A.Node; 462 463 if (Node && portletId instanceof Node) { 464 portletId = portletId.attr('id'); 465 } else if (portletId.id) { 466 portletId = portletId.id; 467 } 468 469 var id = Util.getPortletId(portletId); 470 instance._staticPortlets[id] = true; 471 }, ['aui-base']); 472 Liferay.publish('closePortlet', { 473 defaultFn: Portlet._defCloseFn 474 }); 475 Liferay.publish('allPortletsReady', { 476 fireOnce: true 477 }); // Backwards compatability 478 479 Portlet.ready = function (fn) { 480 Liferay.on('portletReady', function (event) { 481 fn(event.portletId, event.portlet); 482 }); 483 }; 484 485 Liferay.Portlet = Portlet; 486})(AUI()); 487//# 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.