first commit

This commit is contained in:
2026-03-05 13:07:40 +01:00
commit 64ba0721ee
25709 changed files with 4691006 additions and 0 deletions

View File

@@ -0,0 +1,2 @@
<?php
// Silence is golden.

View File

@@ -0,0 +1,136 @@
jQuery(
function() {
iworks_options_tabulator_init();
/**
* Switch button
*/
if (jQuery.fn.switchButton) {
jQuery('.iworks_options .switch-button, .iworks-options-switch-button').each(
function() {
var options = {
checked: jQuery(this).checked,
on_label: jQuery(this).data('on_label') || switch_button.labels.on_label,
off_label: jQuery(this).data('off_label') || switch_button.labels.off_label
};
jQuery(this).switchButton(options);
}
);
}
/**
* Color picker
*/
if (jQuery.fn.wpColorPicker) {
jQuery('.wpColorPicker').wpColorPicker();
}
/**
* select2
*/
if (jQuery.fn.select2) {
jQuery('.iworks-options .select2').select2();
}
/**
* slider
*/
if (jQuery.fn.slider) {
jQuery('.iworks-options .slider').each(
function() {
jQuery(this).parent().append('<div class="ui-slider"></div>');
var target = jQuery(this);
var options = {
value: parseInt(target.val()),
step: parseInt(target.data('step') || target.attr('step') || 1),
min: parseInt(target.data('min') || target.attr('min') || 0),
max: parseInt(target.data('max') || target.attr('max') || 100),
slide: function(event, ui) {
target.val(ui.value);
}
};
jQuery('.ui-slider', jQuery(this).parent()).slider(options);
}
);
}
}
);
/**
* Media
*/
jQuery(document).ready(function($) {
var iworks_options_media = [];
$('input.iworks_delete_button').on('click', function(e) {
var $parent = $(this).closest('td');
e.preventDefault();
$('img', $parent).attr('src', '');
$('input[type=hidden]', $parent).val(0);
$(this).hide();
});
$('input.iworks_upload_button').on('click', function(e) {
var $parent = $(this).closest('td');
var key = $(this).attr('rel');
e.preventDefault();
// Extend the wp.media object
if (iworks_options_media[key]) {
iworks_options_media[key].open();
return;
}
iworks_options_media[key] = wp.media.frames.file_frame = wp.media({
title: window.iworks_options.buttons.select_media,
button: {
text: window.iworks_options.buttons.select_media,
rel: this,
},
multiple: false
});
// When a file is selected, grab the URL and set it as the text field's value
iworks_options_media[key].on('select', function() {
var attachment = iworks_options_media[key].state().get('selection').first().toJSON();
$('img', $parent).attr('src', attachment.url);
$('input[type=hidden]', $parent).val(attachment.id);
$('input.iworks_delete_button', $parent).show();
});
// Open the upload dialog
iworks_options_media[key].open();
});
});
/**
* Tabulator Bootup
*/
function iworks_options_tabulator_init() {
if (!jQuery("#hasadmintabs").length) {
return;
}
jQuery('#hasadmintabs').prepend("<ul><\/ul>");
jQuery('#hasadmintabs > fieldset').each(
function(i) {
id = jQuery(this).attr('id');
rel = jQuery(this).attr('rel');
caption = jQuery(this).find('h3').text();
if (rel) {
rel = ' class="' + rel + '"';
} else {
rel = '';
}
jQuery('#hasadmintabs > ul').append('<li><a href="#' + id + '"><span' + rel + '>' + caption + "<\/span><\/a><\/li>");
jQuery(this).find('h3').hide();
}
);
index = 0;
jQuery('#hasadmintabs h3').each(
function(i) {
if (jQuery(this).hasClass('selected')) {
index = i;
}
}
);
if (index < 0) {
index = 0;
}
jQuery("#hasadmintabs").tabs({
active: index
});
jQuery('#hasadmintabs ul a').click(
function(i) {
jQuery('#hasadmintabs #last_used_tab').val(jQuery(this).parent().index());
}
);
}

View File

@@ -0,0 +1,2 @@
<?php
// Silence is golden.

View File

@@ -0,0 +1,312 @@
/**
* jquery.switchButton.js v1.0
* jQuery iPhone-like switch button
* @author Olivier Lance <olivier.lance@sylights.com>
*
* Copyright (c) Olivier Lance - released under MIT License {{{
*
* Permission is hereby granted, free of charge, to any person
* obtaining a copy of this software and associated documentation
* files (the "Software"), to deal in the Software without
* restriction, including without limitation the rights to use,
* copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following
* conditions:
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE.
* }}}
*/
/*
* Meant to be used on a <input type="checkbox">, this widget will replace the receiver element with an iPhone-style
* switch button with two states: "on" and "off".
* Labels of the states are customizable, as are their presence and position. The receiver element's "checked" attribute
* is updated according to the state of the switch, so that it can be used in a <form>.
*
*/
(function($) {
$.widget(
"sylightsUI.switchButton",
{
options: {
checked: undefined, // State of the switch
show_labels: true, // Should we show the on and off labels?
labels_placement: "both", // Position of the labels: "both", "left" or "right"
on_label: "ON", // Text to be displayed when checked
off_label: "OFF", // Text to be displayed when unchecked
width: 25, // Width of the button in pixels
height: 11, // Height of the button in pixels
button_width: 12, // Width of the sliding part in pixels
clear: true, // Should we insert a div with style="clear: both;" after the switch button?
clear_after: null, // Override the element after which the clearing div should be inserted (null > right after the button)
on_callback: undefined, //callback function that will be executed after going to on state
off_callback: undefined //callback function that will be executed after going to off state
},
_create: function() {
// Init the switch from the checkbox if no state was specified on creation
if (this.options.checked === undefined) {
this.options.checked = this.element.prop( "checked" );
}
this._initLayout();
this._initEvents();
},
_initLayout: function() {
// Hide the receiver element
this.element.hide();
// Create our objects: two labels and the button
this.off_label = $( "<span>" ).addClass( "switch-button-label" );
this.on_label = $( "<span>" ).addClass( "switch-button-label" );
this.button_bg = $( "<div>" ).addClass( "switch-button-background" );
this.button = $( "<div>" ).addClass( "switch-button-button" );
// Insert the objects into the DOM
this.off_label.insertAfter( this.element );
this.button_bg.insertAfter( this.off_label );
this.on_label.insertAfter( this.button_bg );
this.button_bg.append( this.button );
// Insert a clearing element after the specified element if needed
if (this.options.clear) {
if (this.options.clear_after === null) {
this.options.clear_after = this.on_label;
}
$( "<div>" ).css(
{
clear: "left"
}
).insertAfter( this.options.clear_after );
}
// Call refresh to update labels text and visibility
this._refresh();
// Init labels and switch state
// This will animate all checked switches to the ON position when
// loading... this is intentional!
this.options.checked = ! this.options.checked;
this._toggleSwitch( true );
},
_refresh: function() {
// Refresh labels display
if (this.options.show_labels) {
this.off_label.show();
this.on_label.show();
} else {
this.off_label.hide();
this.on_label.hide();
}
// Move labels around depending on labels_placement option
switch (this.options.labels_placement) {
case "both":
{
// Don't move anything if labels are already in place
if (this.button_bg.prev() !== this.off_label || this.button_bg.next() !== this.on_label) {
// Detach labels form DOM and place them correctly
this.off_label.detach();
this.on_label.detach();
this.off_label.insertBefore( this.button_bg );
this.on_label.insertAfter( this.button_bg );
// Update label classes
this.on_label.addClass( this.options.checked ? "on" : "off" ).removeClass( this.options.checked ? "off" : "on" );
this.off_label.addClass( this.options.checked ? "off" : "on" ).removeClass( this.options.checked ? "on" : "off" );
}
break;
}
case "left":
{
// Don't move anything if labels are already in place
if (this.button_bg.prev() !== this.on_label || this.on_label.prev() !== this.off_label) {
// Detach labels form DOM and place them correctly
this.off_label.detach();
this.on_label.detach();
this.off_label.insertBefore( this.button_bg );
this.on_label.insertBefore( this.button_bg );
// update label classes
this.on_label.addClass( "on" ).removeClass( "off" );
this.off_label.addClass( "off" ).removeClass( "on" );
}
break;
}
case "right":
{
// Don't move anything if labels are already in place
if (this.button_bg.next() !== this.off_label || this.off_label.next() !== this.on_label) {
// Detach labels form DOM and place them correctly
this.off_label.detach();
this.on_label.detach();
this.off_label.insertAfter( this.button_bg );
this.on_label.insertAfter( this.off_label );
// update label classes
this.on_label.addClass( "on" ).removeClass( "off" );
this.off_label.addClass( "off" ).removeClass( "on" );
}
break;
}
}
// Refresh labels texts
this.on_label.html( this.options.on_label );
this.off_label.html( this.options.off_label );
// Refresh button's dimensions
this.button_bg.width( this.options.width );
this.button_bg.height( this.options.height );
this.button.width( this.options.button_width );
this.button.height( this.options.height );
},
_initEvents: function() {
var self = this;
// Toggle switch when the switch is clicked
this.button_bg.click(
function(e) {
e.preventDefault();
e.stopPropagation();
self._toggleSwitch( false );
return false;
}
);
this.button.click(
function(e) {
e.preventDefault();
e.stopPropagation();
self._toggleSwitch( false );
return false;
}
);
// Set switch value when clicking labels
this.on_label.click(
function(e) {
if (self.options.checked && self.options.labels_placement === "both") {
return false;
}
self._toggleSwitch( false );
return false;
}
);
this.off_label.click(
function(e) {
if ( ! self.options.checked && self.options.labels_placement === "both") {
return false;
}
self._toggleSwitch( false );
return false;
}
);
},
_setOption: function(key, value) {
if (key === "checked") {
this._setChecked( value );
return;
}
this.options[key] = value;
this._refresh();
},
_setChecked: function(value) {
if (value === this.options.checked) {
return;
}
this.options.checked = ! value;
this._toggleSwitch( false );
},
_toggleSwitch: function(isInitializing) {
// Don't toggle the switch if it is set to readonly or disabled, unless it is initializing and animating itself
if ( ! isInitializing && (this.element.attr( 'readonly' ) == 'readonly' || this.element.prop( 'disabled' )) ) {
return;
}
this.options.checked = ! this.options.checked;
var newLeft = "";
if (this.options.checked) {
// Update the underlying checkbox state
this.element.prop( "checked", true );
this.element.change();
var dLeft = this.options.width - this.options.button_width;
newLeft = "+=" + dLeft;
// Update labels states
if (this.options.labels_placement == "both") {
this.off_label.removeClass( "on" ).addClass( "off" );
this.on_label.removeClass( "off" ).addClass( "on" );
} else {
this.off_label.hide();
this.on_label.show();
}
this.button_bg.addClass( "checked" );
//execute on state callback if its supplied
if (typeof this.options.on_callback === 'function') {
this.options.on_callback.call( this );
}
} else {
// Update the underlying checkbox state
this.element.prop( "checked", false );
this.element.change();
newLeft = "-1px";
// Update labels states
if (this.options.labels_placement == "both") {
this.off_label.removeClass( "off" ).addClass( "on" );
this.on_label.removeClass( "on" ).addClass( "off" );
} else {
this.off_label.show();
this.on_label.hide();
}
this.button_bg.removeClass( "checked" );
//execute off state callback if its supplied
if (typeof this.options.off_callback === 'function') {
this.options.off_callback.call( this );
}
}
// Animate the switch
this.button.animate( { left: newLeft }, 250, "easeInOutCubic" );
}
}
);
})( jQuery );

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,2 @@
<?php
// Silence is golden.

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

View File

@@ -0,0 +1,2 @@
<?php
// Silence is golden.

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,44 @@
.switch-button-label {
float: left;
font-size: 10pt;
cursor: pointer;
}
.switch-button-label.off {
color: #adadad;
}
.switch-button-label.on {
color: #0088CC;
}
.switch-button-background {
float: left;
position: relative;
background: #ccc;
border: 1px solid #aaa;
margin: 1px 10px;
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
border-radius: 4px;
cursor: pointer;
}
.switch-button-button {
position: absolute;
left: -1px;
top : -1px;
background: #FAFAFA;
border: 1px solid #aaa;
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
border-radius: 4px;
}

View File

@@ -0,0 +1,49 @@
.iworks-options #hasadmintabs,
.iworks-options #hasadmintabs .ui-widget-header {
border: 0;
background: transparent none;
}
.iworks-options #hasadmintabs .ui-widget-header {
border-bottom: 1px solid #c5c5c5;
}
.iworks-options #hasadmintabs .form-table td {
padding: 10px;
}
@media screen and ( max-width: 425px ) {
.iworks-options #hasadmintabs .ui-widget-header a,
.iworks-options #hasadmintabs .ui-widget-header li {
display: block;
float: none;
}
}
.iworks-options-row .select2-container {
width: 100%;
min-width: 300px;
}
.iworks-options-row .ui-slider {
margin-top: 10px;
max-width: 150px;
}
@media screen and ( max-width: 768px ) {
.iworks_options .has-right-sidebar {
display: grid;
grid-template-areas: "iworks-options" "iworks-sidebar";
}
.iworks_options #side-info-column {
grid-area: iworks-sidebar;
width: 100%;
}
.iworks_options #post-body {
grid-area: iworks-options;
float: none;
}
.iworks_options .has-right-sidebar #side-sortables,
.iworks_options .has-right-sidebar #post-body-content {
width: 100%;
min-height: 0;
}
}

File diff suppressed because one or more lines are too long