Version 5.0.0 beta 1

This commit is contained in:
Neo committed 2025-12-19 16:27:35 -08:00
1 parent 25ddeb65d6
commit 15c7beabc5
6736 files changed
+627902 -497943

No files matched your search

+152 -424
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<javascript app="cms">
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/blocks" javascript_name="ips.blocks.form.js" javascript_type="controller" javascript_version="107827" javascript_position="1000100"><![CDATA[/**
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/blocks" javascript_name="ips.blocks.form.js" javascript_type="controller" javascript_version="5000026" javascript_position="1000100"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -16,7 +16,7 @@
this.on( 'change', '#elSelect_block_template_use_how', this.toggle );
this.on( 'click', '[data-role=viewTemplate]', this.viewTemplate );
$('#elCodemirror_block_content-input').attr('loaded', 'false');
$('#elTextarea_block_content').attr('loaded', 'false');
},
/**
@@ -26,17 +26,7 @@
* @returns {void}
*/
viewTemplate: function (e) {
var span = $( e.currentTarget );
if ( !_.isUndefined( this.scope.find('input[name=block_plugin_app]').val() ) )
{
var appOrPlugin = '&block_app=' + this.scope.find('input[name=block_plugin_app]').val();
}
else
{
var appOrPlugin = '&block_plugin=' + this.scope.find('input[name=block_plugin_plugin]').val();
}
var appOrPlugin = '&block_app=' + this.scope.find('input[name=block_plugin_app]').val();
var dialogRef = ips.ui.dialog.create({
title: this.scope.find('input[name=block_plugin]').val(),
url: '?app=cms&module=pages&controller=ajax&do=loadTemplate&show=modal&t_location=block' + appOrPlugin + '&block_key=' + this.scope.find('input[name=block_plugin]').val() + '&t_key=' + this.scope.find('#elSelect_block_template_id').val(),
@@ -56,10 +46,9 @@
toggle: function (e) {
var thisToggle = $( e.currentTarget );
if ( thisToggle.val() === 'copy' && $('#elCodemirror_block_content-input').attr('loaded') == 'false' )
if ( thisToggle.val() === 'copy' && $('#elTextarea_block_content').attr('loaded') == 'false' )
{
var save = { 't_location': 'block', 't_key': this.scope.find('#elSelect_block_template_id').val(), 'block_key': this.scope.find('input[name=block_plugin]').val(), 'block_app': this.scope.find('input[name=block_plugin_app]').val() };
var self = this;
ips.getAjax()( '?app=cms&module=pages&controller=ajax&do=loadTemplate&show=json&noencode=1', {
dataType: 'json',
@@ -68,15 +57,62 @@
} )
.done( function (response) {
/* Update codemirror */
$('#elCodemirror_block_content-input').data('CodeMirrorInstance').setValue( response.template_content );
let content = response.template_content;
$('#elTextarea_block_content')
.get(0).dispatchEvent(new CustomEvent('insertCode', {detail: {content}}));
$('input[name=template_params]').val( response.template_params );
$('#elCodemirror_block_content-input').attr('loaded', 'true');
$('#elTextarea_block_content').attr('loaded', 'true');
});
}
}
});
}(jQuery, _));]]></file>
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/databases" javascript_name="ips.databases.download.js" javascript_type="controller" javascript_version="107827" javascript_position="1000150">/**
<file javascript_app="cms" javascript_location="front" javascript_path="controllers/blocks" javascript_name="ips.blocks.navigation.js" javascript_type="controller" javascript_version="5000026" javascript_position="1000050"><![CDATA[/*
+--------------------------------------------------------------------------
|
| =============================================
| by Esther Eisner
| 1/3/2024 3:35 PM
| esther@headstandconsulting.com
+--------------------------------------------------------------------------
*/
;(function ($, _, undefined) {
"use strict";
ips.controller.register('cms.front.blocks.navigation', {
initialize: function () {
this.on( 'click', 'details', this.loadNavigationItems );
var openSection = $( this.scope ).find( 'details[open]:first' );
if( openSection.length ){
this.loadNavigationItems( null, openSection );
}
},
loadNavigationItems: function (e, details=null) {
if( details === null ){
details = $( e.target ).parents( 'details:first' );
}
var itemContainer = $( details ).find( '> [data-role="containerItems"]' );
var self = this;
if( !itemContainer.html().trim().length ){
ips.getAjax()( ips.getSetting( 'baseURL' ) + '?app=cms&module=pages&controller=ajax&do=loadItems',{
data: {
navType: $( self.scope ).attr( 'data-navType' ),
navId: $( self.scope ).attr( 'data-navId' ),
container: $( details ).data( 'container' )
}
}).done( function(response){
$( itemContainer ).html( response );
});
}
}
});
}(jQuery, _));]]></file>
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/databases" javascript_name="ips.databases.download.js" javascript_type="controller" javascript_version="5000026" javascript_position="1000150">/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -107,7 +143,7 @@
ips.ui.alert.show({
type: 'confirm',
message: ips.getString('cms_download_db_explain'),
icon: 'fa fa-download',
icon: 'fa-solid fa-download',
buttons: {
ok: ips.getString('cms_download_db'),
cancel: ips.getString('cancel')
@@ -121,7 +157,7 @@
}
});
}(jQuery, _));</file>
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/databases" javascript_name="ips.databases.form.js" javascript_type="controller" javascript_version="107827" javascript_position="1000150"><![CDATA[/**
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/databases" javascript_name="ips.databases.form.js" javascript_type="controller" javascript_version="5000026" javascript_position="1000150"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -197,7 +233,7 @@
}
});
}(jQuery, _));]]></file>
<file javascript_app="cms" javascript_location="front" javascript_path="controllers/external" javascript_name="ips.external.communication.js" javascript_type="controller" javascript_version="107827" javascript_position="1000150"><![CDATA[/**
<file javascript_app="cms" javascript_location="front" javascript_path="controllers/external" javascript_name="ips.external.communication.js" javascript_type="controller" javascript_version="5000026" javascript_position="1000150"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -332,7 +368,7 @@
}
});
}(jQuery, _));]]></file>
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/fields" javascript_name="ips.fields.form.js" javascript_type="controller" javascript_version="107827" javascript_position="1000200"><![CDATA[/**
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/fields" javascript_name="ips.fields.form.js" javascript_type="controller" javascript_version="5000026" javascript_position="1000200"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -345,83 +381,57 @@
ips.controller.register('cms.admin.fields.form', {
currentValue: null,
initialize: function () {
$('#elTextarea_field_default_value').on( 'keypress', this.checkChange );
if ( $('#field_default_update_existing').length )
{
this.currentValue = $('#elTextarea_field_default_value').val();
$('#field_default_update_existing').hide();
const fieldDefaultValue = document.querySelector('#elTextarea_field_default_value')
if (fieldDefaultValue) {
fieldDefaultValue.addEventListener( 'input', _.throttle(() => this.checkChange(), 50));
this.currentValue = fieldDefaultValue.value || '';
document.querySelectorAll('#field_default_update_existing').ipsHide();
}
this.on( 'change', '#check_field_display_listing', this.updateListingFields );
this.on( 'change', '#check_field_display_display', this.updateDisplayFields );
this.on( 'change', 'select[name="field_type"]', this.setup );
this.setup();
},
setup: function(){
this.updateListingFields();
this.updateDisplayFields();
this.on('change', 'input[data-control="color"]', this.changeBadgeColor);
this.on('change', 'input[type="checkbox"][name*="color"]', this.changeBadgeColor);
this.elem.querySelector('form').addEventListener('ips:calculateToggles', e => {
const form = e.target;
if (!(form instanceof HTMLFormElement)) {
return;
}
const showMapActive = !!form.querySelector('select[name="field_type"] option[value="Address"]')?.selected;
const mapEl = form.querySelectorAll('#field_show_map_listing,#field_show_map_display');
if (mapEl && !showMapActive) {
mapEl.forEach(el => e.detail.togglesOff.add(el));
}
})
},
/**
* checkChange handler
*
* @param {event} e Event object
* @returns {void}
*/
checkChange: function (e) {
if ( $('#elTextarea_field_default_value').val() != this.currentValue )
{
$('#field_default_update_existing').show();
checkChange() {
if (document.querySelector('#elTextarea_field_default_value').value !== this.currentValue) {
document.querySelector('#field_default_update_existing').ipsShow();
} else {
document.querySelector('#field_default_update_existing').ipsHide();
}
},
updateListingFields: function(){
let fieldType = $( 'select[name="field_type"]' ).val();
if( $( '#check_field_display_listing' ).is( ':checked' ) ){
if( fieldType !== 'Text' && fieldType !== 'TextArea' ){
$( '#field_truncate' ).hide();
} else {
$( '#field_truncate' ).show();
}
if( fieldType !== 'Address' ){
$( '#field_show_map_listing' ).hide();
} else {
$( '#field_show_map_listing' ).show();
}
if( fieldType === 'Youtube' || fieldType === 'Spotify' || fieldType === 'Soundcloud' ){
$( '#field_display_listing_json_badge' ).hide();
$( '#media_display_listing_method' ).show();
}
} else {
$( '#field_truncate' ).hide();
$( '#field_show_map_listing' ).hide();
$( '#media_display_listing_method' ).hide();
}
},
changeBadgeColor(e){
const colorPicker = e.target?.closest?.('.ipsFieldRow[id]').getAttribute('id');
updateDisplayFields: function(){
let fieldType = $( 'select[name="field_type"]' ).val();
if( $( '#check_field_display_display' ).is( ':checked' ) ){
if( fieldType !== 'Address' ){
$( '#field_show_map_display' ).hide();
} else {
$( '#field_show_map_display' ).show();
}
if( fieldType === 'Youtube' || fieldType === 'Spotify' || fieldType === 'Soundcloud' ){
$( '#field_display_display_json_badge' ).hide();
$( '#media_display_display_method' ).show();
}
} else {
$( '#field_show_map_display' ).hide();
$( '#media_display_display_method' ).hide();
}
const badge = `#elField_field_display_${colorPicker?.includes('listing') ? 'listing' : 'display'}_json_badge_badge_label`;
const color = (!colorPicker || document.querySelector(`#${colorPicker}_none`)?.checked) ?
'' : document.querySelector(`input[name="${colorPicker}"]`)?.value;
document
.querySelectorAll(`${badge} span`)
.forEach(
span => span.style[colorPicker?.includes('bgcolor') ? 'background' : 'color'] = color
);
}
});
}(jQuery, _));]]></file>
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/media" javascript_name="ips.media.main.js" javascript_type="controller" javascript_version="107827" javascript_position="1000300"><![CDATA[/**
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/media" javascript_name="ips.media.main.js" javascript_type="controller" javascript_version="5000026" javascript_position="1000300"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -472,7 +482,8 @@
this.scope.find('[data-role="uploadButton"]').attr('href', this._uploadURL + '&media_parent=0' );
this.scope.find('[data-role="folderButton"]').attr('href', this._newFolderURL + '&media_parent=0' );
this.scope.find('[data-role="fileListing"]').click();
this.resizePanels();
},
@@ -919,7 +930,7 @@
if( info.itemIsImage ){
info.itemPreview = $('<img/>').attr( 'src', selected.attr('data-url') ).attr('data-ipsLightbox', true );
} else {
info.itemPreview = $('<div/>').addClass('ipsNoThumb');
info.itemPreview = '';
}
// Update the easy info
_.each( info, function (value, key) {
@@ -933,7 +944,7 @@
elem.html( $('<a/>').attr('href', value).text( value ).attr('target', '_blank') );
}
else if( value === null ){
elem.html( $('<span/>').addClass('ipsType_light').text('Loading...') );
elem.html( $('<span/>').addClass('i-color_soft').text('Loading...') );
} else {
elem.text( value );
}
@@ -1054,13 +1065,13 @@
*/
_switchToTab: function (tab) {
if( tab == 'overview' ){
this.scope.find('#elTab_overview').removeClass('ipsTabs_itemDisabled');
this.scope.find('#elTab_overview').removeClass('ipsTabs__tabDisabled');
this.scope.find('#elTab_overview').click();
}
}
});
}(jQuery, _));]]></file>
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/pages" javascript_name="ips.pages.embed.js" javascript_type="controller" javascript_version="107827" javascript_position="1000250"><![CDATA[/**
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/pages" javascript_name="ips.pages.embed.js" javascript_type="controller" javascript_version="5000026" javascript_position="1000250"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -1074,18 +1085,7 @@
ips.controller.register('cms.admin.pages.embed', {
initialize: function () {
this.on( 'change', 'input[type="checkbox"]', this.toggleInherit );
this.on( 'mouseenter', 'textarea', this.mouseEnterTextarea );
},
/**
* Event handler for mousing over the textareas - we'll select hem to make them easy to copy and paste
*
* @param {event} e Event object
* @returns {void}
*/
mouseEnterTextarea: function (e) {
$( e.currentTarget ).select();
this.on( 'change', '[type="checkbox"]', this.toggleInherit );
},
/**
@@ -1095,7 +1095,7 @@
* @returns {void}
*/
toggleInherit: function (e) {
var toggle = this.scope.find('input[type="checkbox"]');
var toggle = this.scope.find('[type="checkbox"]');
var textbox = this.scope.find('[data-role="blockCode"]');
if( toggle.is(':checked') ){
@@ -1106,7 +1106,7 @@
}
});
}(jQuery, _));]]></file>
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/pages" javascript_name="ips.pages.form.js" javascript_type="controller" javascript_version="107827" javascript_position="1000250"><![CDATA[/**
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/pages" javascript_name="ips.pages.form.js" javascript_type="controller" javascript_version="5000026" javascript_position="1000250"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -1228,7 +1228,7 @@
}
});
}(jQuery, _));]]></file>
<file javascript_app="cms" javascript_location="front" javascript_path="controllers/records" javascript_name="ips.records.form.js" javascript_type="controller" javascript_version="107827" javascript_position="1000100"><![CDATA[/**
<file javascript_app="cms" javascript_location="front" javascript_path="controllers/records" javascript_name="ips.records.form.js" javascript_type="controller" javascript_version="5000026" javascript_position="1000100"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -1340,7 +1340,7 @@
}
});
}(jQuery, _));]]></file>
<file javascript_app="cms" javascript_location="front" javascript_path="controllers/records" javascript_name="ips.records.revisions.js" javascript_type="controller" javascript_version="107827" javascript_position="1000100">/**
<file javascript_app="cms" javascript_location="front" javascript_path="controllers/records" javascript_name="ips.records.revisions.js" javascript_type="controller" javascript_version="5000026" javascript_position="1000100">/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -1395,7 +1395,7 @@
}
});
}(jQuery, _));</file>
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/templates" javascript_name="ips.templates.addForm.js" javascript_type="controller" javascript_version="107827" javascript_position="1000050">/**
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/templates" javascript_name="ips.templates.addForm.js" javascript_type="controller" javascript_version="5000026" javascript_position="1000050">/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -1445,7 +1445,7 @@
}
});
}(jQuery, _));</file>
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/templates" javascript_name="ips.templates.conflict.js" javascript_type="controller" javascript_version="107827" javascript_position="1000050">/**
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/templates" javascript_name="ips.templates.conflict.js" javascript_type="controller" javascript_version="5000026" javascript_position="1000050">/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -1480,22 +1480,22 @@
var id = $( radio ).attr('name').replace( /conflict_/, '' );
// Button disabled
if ( span.hasClass('ipsButton_disabled') ){
if ( span.hasClass('ipsButton--disabled') ){
return false;
}
// Undo selection
else if ( span.hasClass('ipsButton_alternate') ){
else if ( span.hasClass('ipsButton--secondary') ){
radio.removeAttr('checked');
span.removeClass('ipsButton_alternate')
.addClass('ipsButton_primary')
span.removeClass('ipsButton--secondary')
.addClass('ipsButton--primary')
.find('strong')
.html( ips.getString('sc_use_this_version') );
$('input[type=radio][name=conflict_' + id + ']').closest('span.ipsButton[data-conflict-name=' + ( name == 'new' ? 'old' : 'new' ) +']').removeClass('ipsButton_disabled');
$('input[type=radio][name=conflict_' + id + ']').closest('span.ipsButton[data-conflict-name=' + ( name == 'new' ? 'old' : 'new' ) +']').removeClass('ipsButton--disabled');
$('th span[data-conflict-id=' + id + '][data-conflict-name=' + name + ']').removeClass('ipsPos_left ipsBadge ipsBadge_positive');
$('th span[data-conflict-id=' + id + '][data-conflict-name=' + name + ']').removeClass('ipsBadge ipsBadge--positive');
ips.utils.anim.go( 'blindDown', this.scope.find('div[data-conflict-id=' + id + ']') );
}
@@ -1503,21 +1503,21 @@
else
{
radio.attr('checked', 'checked');
span.removeClass('ipsButton_primary')
.addClass('ipsButton_alternate')
span.removeClass('ipsButton--primary')
.addClass('ipsButton--secondary')
.find('strong')
.html( ips.getString('sc_remove_selection') );
$('input[type=radio][name=conflict_' + id + ']').closest('span.ipsButton[data-conflict-name=' + ( name == 'new' ? 'old' : 'new' ) +']').addClass('ipsButton_disabled');
$('input[type=radio][name=conflict_' + id + ']').closest('span.ipsButton[data-conflict-name=' + ( name == 'new' ? 'old' : 'new' ) +']').addClass('ipsButton--disabled');
$('th span[data-conflict-id=' + id + '][data-conflict-name=' + name + ']').addClass('ipsPos_left ipsBadge ipsBadge_positive');
$('th span[data-conflict-id=' + id + '][data-conflict-name=' + name + ']').addClass('ipsBadge ipsBadge--positive');
ips.utils.anim.go( 'fadeOut', this.scope.find('div[data-conflict-id=' + id + ']') );
}
}
});
}(jQuery, _));</file>
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/templates" javascript_name="ips.templates.fileEditor.js" javascript_type="controller" javascript_version="107827" javascript_position="1000050"><![CDATA[/**
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/templates" javascript_name="ips.templates.fileEditor.js" javascript_type="controller" javascript_version="5000026" javascript_position="1000050"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -1550,7 +1550,7 @@
this.on( 'tabChanged', this.changedTab );
this.on( 'click', '[data-action="closeTab"]', this.closeTab );
this.on( 'click', '[data-action="save"]', this.save );
this.on( 'click', '[data-action="revert"]:not( .ipsButton_disabled )', this.revert );
this.on( 'click', '[data-action="revert"]:not( .ipsButton--disabled )', this.revert );
this.on( 'savedFile.templates', this.updateFile );
this.on( 'revertedFile.templates', this.updateFile );
this.on( 'openDialog', this.openedDialog );
@@ -1572,7 +1572,7 @@
var self = this;
// Set element references
this._tabBar = this.scope.find('#elTemplateEditor_tabbar');
this._tabBar = this.scope.find('#elTemplateEditor_tabbar > ul');
this._tabContent = this.scope.find('#elTemplateEditor_panels');
// Get the current height of the tab bar
@@ -1843,10 +1843,12 @@
panel.prepend( headers );
// Set size
/*
var height = self._getTabContentHeight() - panel.find('.cTemplateMergeHeaders').outerHeight();
self._cmInstances[ key ].edit.setSize( null, height );
self._cmInstances[ key ].left.orig.setSize( null, height );
$( self._cmInstances[ key ].left.gap ).css( 'height', height );
*/
// Add change handler
self._cmInstances[ key ].edit.on( 'change', function (doc, cm) {
@@ -2103,7 +2105,7 @@
* @returns {void}
*/
closeTab: function (e) {
var tab = $( e.currentTarget ).closest('.ipsTabs_item');
var tab = $( e.currentTarget ).closest('.ipsTabs__tab');
this._doCloseTab( tab );
},
@@ -2120,7 +2122,7 @@
var self = this;
var tabParent = tab.closest('[data-fileid]');
var key = tabParent.attr('data-fileid');
var allTabs = this._tabBar.find('.ipsTabs_item').closest('[data-fileid]');
var allTabs = this._tabBar.find('.ipsTabs__tab').closest('[data-fileid]');
var newTab = null;
// Check if there's unsaved content
@@ -2140,7 +2142,7 @@
}
// Is this tab active?
var active = tab.hasClass('ipsTabs_activeItem');
var active = tab.hasClass('ipsTabs__tab--active');
// Let the document know what we're up to
this.trigger( 'closedTab.templates', {
@@ -2212,19 +2214,19 @@
case 'original':
case 'inherit':
revert
.addClass('ipsButton_disabled')
.addClass('ipsButton--disabled')
break;
case 'custom':
revert
.html( ips.getString('skin_delete') )
.removeClass('ipsButton_disabled')
.removeClass('ipsButton--disabled')
.attr('data-actionType', 'delete')
.show();
break;
case 'changed':
revert
.html( ips.getString('skin_delete') )
.removeClass('ipsButton_disabled')
.removeClass('ipsButton--disabled')
.attr('data-actionType', 'delete')
.show();
break;
@@ -2371,7 +2373,7 @@
lineWrapping: this._editorPreferences['wrap'],
lineNumbers: this._editorPreferences['lines']
} );
this._cmInstances[ key ].setSize( null, this._getTabContentHeight() );
//this._cmInstances[ key ].setSize( null, this._getTabContentHeight() );
this._cmInstances[ key ].on( 'change', function (doc, cm) {
self._setChanged( true, key );
@@ -2408,6 +2410,8 @@
* @returns {void}
*/
_recalculatePanelWrapper: function () {
/*
// Get height of the tab bar
var tabHeight = this._tabBar.outerHeight();
@@ -2419,7 +2423,7 @@
if ( this._tabContent.find('.cTemplateMergeHeaders').length )
{
/* We are viewing a diff, so we need to account for this bar too */
// We are viewing a diff, so we need to account for this bar too
contentHeight -= this._tabContent.find('.cTemplateMergeHeaders').outerHeight();
}
@@ -2430,6 +2434,7 @@
this._tabContent.find('.CodeMirror-merge-gap').css( { height: contentHeight + 'px' } );
this._currentHeight = tabHeight;
*/
},
/**
@@ -2443,7 +2448,7 @@
tabPanel: null
};
var tab = this._tabBar.find('.ipsTabs_item.ipsTabs_activeItem').first().parent();
var tab = this._tabBar.find('.ipsTabs__tab.ipsTabs__tab--active').first().parent();
if( !tab.length ){
return toReturn;
@@ -2473,7 +2478,7 @@
}
});
}(jQuery, _));]]></file>
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/templates" javascript_name="ips.templates.fileList.js" javascript_type="controller" javascript_version="107827" javascript_position="1000050"><![CDATA[/**
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/templates" javascript_name="ips.templates.fileList.js" javascript_type="controller" javascript_version="5000026" javascript_position="1000050"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -2492,7 +2497,6 @@
initialize: function () {
// Events started here
this.on( 'click', '[data-action="openFile"]', this.openFile );
this.on( 'click', '[data-action="toggleBranch"]', this.toggleBranch );
this.on( 'modifiedFile.templates', this.refreshFileList );
// Events coming from elsewhere
@@ -2503,9 +2507,6 @@
this.on( document, 'addedFile.templates', this.refreshFileList );
this.on( document, 'deletedFile.templates', this.refreshFileList );
var debounce = _.debounce( _.bind( this.resizeFileList, this ), 100 );
this.on( window, 'resize', debounce );
// Other setup
this.setup();
},
@@ -2518,28 +2519,8 @@
setup: function () {
this._tabBar = this.scope.find('#elTemplateEditor_typeTabs');
this._tabContent = this.scope.find('#elTemplateEditor_fileList');
this.resizeFileList();
},
/**
* Resizes the file list to full height
*
* @returns {void}
*/
resizeFileList: function () {
// Get height of parts we want to exclude
var fileListTop = this._tabContent.offset().top;
var infoHeight = $('#elTemplateEditor_info').height();
var newButtonHeight = this.scope.find('#elTemplateEditor_newButton').outerHeight();
var browserHeight = $( window ).height();
var fileListNewTop = browserHeight - fileListTop - infoHeight - newButtonHeight;
this._tabContent.css({
height: fileListNewTop + 'px'
});
},
/**
* Something has changed in the file list, so we refresh it and try and remember
* the position we were at. If a new file ID is provided, we'll also select it.
@@ -2701,33 +2682,6 @@
});
},
/**
* Event handler for clicking a branch in the listing.
* Expends or collapses the branch
*
* @param {event} e Event object
* @returns {void}
*/
toggleBranch: function (e) {
e.preventDefault();
var branchTrigger = $( e.currentTarget );
var branchItem = branchTrigger.parent();
if( branchItem.hasClass('cTemplateList_inactiveBranch') ){
ips.utils.anim.go( 'fadeInDown', branchItem.find(' > ul') );
branchItem
.removeClass('cTemplateList_inactiveBranch')
.addClass('cTemplateList_activeBranch');
} else {
branchItem.find(' > ul').hide();
branchItem
.removeClass('cTemplateList_activeBranch')
.addClass('cTemplateList_inactiveBranch');
}
},
/**
* Updates the ID of any element with the old ID
*
@@ -2805,10 +2759,10 @@
* @returns {string}
*/
_currentType: function () {
if( this._tabBar.find('[data-type="template"]').hasClass('ipsTabs_activeItem') ){
if( this._tabBar.find('[data-type="template"]').hasClass('ipsTabs__tab--active') ){
return 'template';
}
if( this._tabBar.find('[data-type="js"]').hasClass('ipsTabs_activeItem') ){
if( this._tabBar.find('[data-type="js"]').hasClass('ipsTabs__tab--active') ){
return 'js';
}
@@ -2816,7 +2770,7 @@
}
});
}(jQuery, _));]]></file>
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/templates" javascript_name="ips.templates.main.js" javascript_type="controller" javascript_version="107827" javascript_position="1000050"><![CDATA[/**
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/templates" javascript_name="ips.templates.main.js" javascript_type="controller" javascript_version="5000026" javascript_position="1000050"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -2945,7 +2899,7 @@
this._textField.addClass('ipsField_loading');
}
var type = $('#elTemplateEditor_typeTabs').find('.ipsTabs_activeItem').attr('data-type');
var type = $('#elTemplateEditor_typeTabs').find('.ipsTabs__tab--active').attr('data-type');
var type = ( type == 'templates' ) ? 'template' : type; // Because it's fun to be inconsistent, the database 'type' is 'template' yet in templates we use 'templates' - thanks past Matt
$('#elTemplateEditor_fileList').find('li[data-type=' + type + ']').addClass('ipsHide');
@@ -2985,7 +2939,7 @@
});
}(jQuery, _));]]></file>
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/templates" javascript_name="ips.templates.variablesDialog.js" javascript_type="controller" javascript_version="107827" javascript_position="1000050">/**
<file javascript_app="cms" javascript_location="admin" javascript_path="controllers/templates" javascript_name="ips.templates.variablesDialog.js" javascript_type="controller" javascript_version="5000026" javascript_position="1000050">/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
@@ -2996,33 +2950,12 @@
;( function($, _, undefined){
&quot;use strict&quot;;
const regex = /[^a-z0-9_]+|^[^a-z_]/gi;
ips.controller.register('cms.admin.templates.variablesDialog', {
initialize: function () {
this.on( 'blur', '[data-role=&quot;title&quot;]', this.checkTitle );
this.on( 'click', 'input[type=&quot;submit&quot;]', this.submitChange );
},
/**
* Check the template title for spaces
* @param e
*/
checkTitle: function (e) {
var elem = $( e.currentTarget );
var val = elem.val();
if ( val.match(regex) ) {
elem.val( val.replaceAll( regex, '' ) );
ips.ui.alert.show({
type: 'alert',
message: ips.getString('template_title_desc'),
icon: 'warn'
});
}
},
/**
* Event handler called when the submit button within the dialog is clicked
* Fires an event that the editor controller can respond to
@@ -3051,238 +2984,33 @@
}
});
}(jQuery, _));</file>
<file javascript_app="cms" javascript_location="front" javascript_path="mixins" javascript_name="ips.cms.builder.area.js" javascript_type="mixins" javascript_version="107827" javascript_position="1000050"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
* ips.cms.builder.area.js - Front-end mixin for tables
*
* Author: Matt Mecham
*/
;( function($, _, undefined){
"use strict";
ips.controller.mixin('builder.area', 'core.front.widgets.area', true, function () {
_pageID: null;
/**
* After init, init
*
* @returns {void}
*/
this.after('setup', function () {
if( ! $('.cWidgetContainer').length ) {
$('[data-action="openSidebar"]').hide();
}
});
/**
* Updates the ordering of widgets in this area
*
* @returns {void}
*/
this.updateOrdering = function (without) {
var body = $('body');
var order = this.scope.find('> ul').sortable('toArray', {
attribute: 'data-blockID'
});
order = ( without ) ? _.without( _.uniq( order ), without ) : _.uniq( order );
// Remove hidden blocks as these should not be stored
var self = this;
_.each( order, function( value, key )
{
if ( self.scope.find('li[data-blockID=' + value + ']').attr('data-hidden') == 'true' )
{
order = _.without( order, value );
}
} );
ips.getAjax()( ips.getSetting('baseURL') + 'index.php?app=cms&module=pages&controller=builder&do=saveOrder&orientation=' + this._orientation, {
method: 'POST',
data: {
order: order,
pageID: $('#elCmsPageWrap').attr('data-pageid'),
area: this._areaID,
exclude: _.isString(without) ? without : ''
}
})
.fail( function () {
ips.ui.alert.show( {
type: 'alert',
icon: 'warn',
message: ips.getString('sidebarError'),
callbacks: {}
});
});
};
});
}(jQuery, _));]]></file>
<file javascript_app="cms" javascript_location="front" javascript_path="mixins" javascript_name="ips.cms.builder.block.js" javascript_type="mixins" javascript_version="107827" javascript_position="1000050"><![CDATA[/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
* ips.cms.builder.block.js - Front-end mixin for CMS sidebar
*
* Author: Matt Mecham
*/
;( function($, _, undefined){
"use strict";
ips.controller.mixin('builder.block', 'core.front.widgets.block', true, function () {
/**
* When the menu is opened, we need to load the form into it
*
* @returns {void}
*/
this.menuOpened = function (e, data) {
/* Don't override menus inside the block */
if ( ! this.scope.closest('[data-widgetArea]').hasClass('cWidgetContainer_managing') )
{
return;
}
var body = $('body');
var area = this.scope.closest('[data-widgetArea]').attr('data-widgetArea');
var block = this._blockID;
var self = this;
var managerBlock = $('[data-role="availableBlocks"] [data-blockID="' + this._getBlockIDWithoutUniqueKey( this._blockID ) + '"]');
var menuStyle = managerBlock.attr('data-menuStyle');
if ( menuStyle == 'modal' )
{
var dialogRef = ips.ui.dialog.create({
title: managerBlock.find('h4').html(),
url: ips.getSetting('baseURL') + 'index.php?app=cms&module=pages&controller=builder&do=getConfiguration&block=' + block + '&pageID=' + $('#elCmsPageWrap').attr('data-pageid') + '&pageArea=' + area,
forceReload: true,
remoteSubmit: true
});
dialogRef.show();
Debug.log( dialogRef );
$('#' + dialogRef.dialogID ).css( "height", "1000px");
this._modalOpen = block;
}
else
{
data.menu.html( $('<div/>').addClass('ipsLoading').css({ height: '100px' }) );
setTimeout( function () {
ips.getAjax()( ips.getSetting('baseURL') + 'index.php?app=cms&module=pages&controller=builder&do=getConfiguration', {
data: {
block: block,
pageID: $('#elCmsPageWrap').attr('data-pageid'),
pageArea: area
}
} )
.done( function (response) {
data.menu
.html( response )
.find('form')
.on( 'submit', _.bind( self._configurationForm, self, data.menu ) );
$( document ).trigger('contentChange', [ data.menu ] );
});
}, 1000);
}
};
/**
* Event handler/method that reloads the entire contents of this widget
*
* @returns {void}
*/
this.reloadContent = function () {
var self = this;
this._setLoading( true );
// Get content
if( this._ajaxObj && this._ajaxObj.abort ){
this._ajaxObj.abort();
}
var body = $('body');
var url = ips.getSetting('baseURL') + 'index.php?app=cms&module=pages&controller=builder&do=getBlock&blockID=' + this._blockID + '&pageID=' + $('#elCmsPageWrap').attr('data-pageid') + '&orientation=' + this._orientation;
this._ajaxObj = ips.getAjax()( url )
.done( function (response) {
self.scope.hide().html( response );
ips.utils.anim.go('fadeIn', self.scope);
self.trigger('loadedWidget.widgets', {
blockID: self._blockID
});
})
.fail( function () {
self.scope.html('Error');
})
.always( function () {
self._setLoading( false );
});
};
});
}(jQuery, _));]]></file>
<file javascript_app="cms" javascript_location="front" javascript_path="mixins" javascript_name="ips.cms.comment.js" javascript_type="mixins" javascript_version="107827" javascript_position="1000050">/**
* Invision Community
* (c) Invision Power Services, Inc. - https://www.invisioncommunity.com
*
* ips.cms.comment.js - Front-end mixin for comments
*
* Author: Matt Mecham
*/
;( function($, _, undefined){
&quot;use strict&quot;;
ips.controller.mixin('comment', 'core.front.core.comment', true, function () {
/**
* Switch off table loading after results are fetched
*
* @returns {void}
*/
this.after('saveEditCommentDone', function () {
this.scope
.find('[data-role=&quot;commentContent&quot;]')
.addClass('sm:ipsPadding_vertical:half')
.addClass('ipsPadding_vertical')
.addClass('ipsPadding_horizontal')
.removeClass('ipsPadding_bottom')
});
});
}(jQuery, _));</file>
<file javascript_app="cms" javascript_location="admin" javascript_path="templates" javascript_name="ips.templates.media.js" javascript_type="template" javascript_version="107827" javascript_position="1000050"><![CDATA[ips.templates.set( 'templates.media.grid', "\
<ul class='ipsGrid' data-ipsGrid data-ipsGrid-minItemSize='100' data-ipsGrid-maxItemSize='200'>\
<file javascript_app="cms" javascript_location="admin" javascript_path="templates" javascript_name="ips.templates.media.js" javascript_type="template" javascript_version="5000026" javascript_position="1000050"><![CDATA[ips.templates.set( 'templates.media.grid', "\
<ul class='ipsGrid ipsGrid--pages-media'>\
{{{contents}}}\
</ul>\
");
ips.templates.set( 'templates.media.noItems', "\
<div class='ipsType_center ipsType_large ipsType_light ipsPad_double'>\
<div class='i-text-align_center i-font-size_2 i-color_soft i-padding_4'>\
{{#lang}}mediaEmptyFolder{{/lang}}\
</div>\
");
ips.templates.set( 'templates.media.noSearchResults', "\
<div class='ipsType_center ipsType_large ipsType_light ipsPad_double'>\
<div class='i-text-align_center i-font-size_2 i-color_soft i-padding_4'>\
{{#lang}}mediaNoResults{{/lang}}\
</div>\
");]]></file>
<file javascript_app="cms" javascript_location="admin" javascript_path="templates" javascript_name="ips.templates.templates.js" javascript_type="template" javascript_version="107827" javascript_position="1000050"><![CDATA[/* TEMPLATE EDITOR TEMPLATES */
<file javascript_app="cms" javascript_location="admin" javascript_path="templates" javascript_name="ips.templates.templates.js" javascript_type="template" javascript_version="5000026" javascript_position="1000050"><![CDATA[/* TEMPLATE EDITOR TEMPLATES */
/* TEMPLATECEPTION */
ips.templates.set('templates.editor.newTab', " \
<li data-fileid='{{fileid}}' data-location='{{location}}'>\
<a href='#' class='ipsTabs_item' id='{{id}}'>{{title}} <span data-action='closeTab'><i class='fa fa-times'></i></span></a>\
<a href='#' class='ipsTabs__tab' id='{{id}}'>{{title}} <span data-action='closeTab'><i class='fa-solid fa-xmark'></i></span></a>\
</li>\
");
ips.templates.set('templates.editor.tabPanel', " \
<div data-fileid='{{fileid}}' id='ipsTabs_elTemplateEditor_tabbar_tab_{{fileid}}_panel' class='ipsTabs_panel' style='display: none' data-location='{{location}}' data-type='{{type}}' data-group='{{group}}' data-name='{{name}}' data-type='{{type}}' data-itemID='{{id}}' data-inherited-value='{{inherited}}'>\
<div data-fileid='{{fileid}}' id='ipsTabs_elTemplateEditor_tabbar_tab_{{fileid}}_panel' class='ipsTabs__panel' style='display: none' data-location='{{location}}' data-type='{{type}}' data-group='{{group}}' data-name='{{name}}' data-type='{{type}}' data-itemID='{{id}}' data-inherited-value='{{inherited}}'>\
{{{content}}}\
</div>\
");
@@ -3296,20 +3024,20 @@ ips.templates.set('templates.editor.tabContent', " \
");
ips.templates.set('templates.editor.unsaved', " \
<i class='fa fa-circle'></i>\
<i class='fa-solid fa-circle'></i>\
");
ips.templates.set('templates.editor.saved', " \
<i class='fa fa-times'></i>\
<i class='fa-solid fa-xmark'></i>\
");
ips.templates.set('templates.editor.pagesDiffHeaders', " \
<div class='cTemplateMergeHeaders ipsAreaBackground_light'>\
<div class='cTemplateMergeHeaders i-background_2'>\
<div class='cTemplateMergeHeader'>\
<div class='ipsPad_half'><strong>{{#lang}}theme_diff_original_header{{/lang}}</strong> <span class='ipsType_small ipsType_light'>{{#lang}}theme_diff_original_desc{{/lang}}</span></div>\
<div class='i-padding_2'><strong>{{#lang}}theme_diff_original_header{{/lang}}</strong> <span class='i-font-size_-1 i-color_soft'>{{#lang}}theme_diff_original_desc{{/lang}}</span></div>\
</div>\
<div class='cTemplateMergeHeader ipsPos_right'>\
<div class='ipsPad_half'><strong>{{#lang}}theme_diff_custom_header{{/lang}}</strong> <span class='ipsType_small ipsType_light'>{{#lang}}theme_diff_custom_desc{{/lang}}</span></div>\
<div class='cTemplateMergeHeader'>\
<div class='i-padding_2'><strong>{{#lang}}theme_diff_custom_header{{/lang}}</strong> <span class='i-font-size_-1 i-color_soft'>{{#lang}}theme_diff_custom_desc{{/lang}}</span></div>\
</div>\
</div>\
");]]></file>