Jelajahi Sumber

reworked the way settings save, no longer auto saves on change - expect bugs...
added debug info to activeInfo for ombi

causefx 8 tahun lalu
induk
melakukan
62293e8a3e

+ 1 - 1
api/functions/homepage-functions.php

@@ -769,7 +769,7 @@ function getHomepageList()
 				'Test Connection' => array(
 					array(
 						'type' => 'blank',
-						'label' => ''
+						'label' => 'Please save form before Test'
 					),
 					array(
 						'type' => 'button',

+ 31 - 1
api/functions/organizr-functions.php

@@ -13,6 +13,9 @@ function organizrSpecialSettings()
 			),
 			'ombi' => array(
 				'enabled' => (qualifyRequest($GLOBALS['homepageOmbiAuth']) && $GLOBALS['homepageOmbiEnabled'] == true && $GLOBALS['ssoOmbi'] && isset($_COOKIE['Auth'])) ? true : false,
+				'auth' => (qualifyRequest($GLOBALS['homepageOmbiAuth'])) ? true : false,
+				'sso' => ($GLOBALS['ssoOmbi']) ? true : false,
+				'cookie' => (isset($_COOKIE['Auth'])) ? true : false,
 			),
 			'options' => array(
 				'alternateHomepageHeaders' => $GLOBALS['alternateHomepageHeaders'],
@@ -746,6 +749,34 @@ function updateConfigMultiple($array)
 	return (updateConfig($array['data']['payload'])) ? true : false;
 }
 
+function updateConfigMultipleForm($array)
+{
+	$newItem = array();
+	foreach ($array['data']['payload'] as $k => $v) {
+		switch ($v['value']) {
+			case 'true':
+				$v['value'] = (bool)true;
+				break;
+			case 'false':
+				$v['value'] = (bool)false;
+				break;
+			default:
+				$v['value'] = $v['value'];
+		}
+		// Hash
+		if ($v['type'] == 'password') {
+			if (strpos($v['value'], '==') !== false) {
+				$v['value'] = $v['value'];
+			} else {
+				$v['value'] = encrypt($v['value']);
+			}
+		}
+		$newItem[$v['name']] = $v['value'];
+	}
+	//return $newItem;
+	return (updateConfig($newItem)) ? true : false;
+}
+
 function updateConfigItem($array)
 {
 	switch ($array['data']['value']) {
@@ -762,7 +793,6 @@ function updateConfigItem($array)
 	if ($array['data']['type'] == 'password') {
 		$array['data']['value'] = encrypt($array['data']['value']);
 	}
-	//return gettype($array['data']['value']).' - '.$array['data']['value'];
 	$newItem = array(
 		$array['data']['name'] => $array['data']['value']
 	);

File diff ditekan karena terlalu besar
+ 755 - 312
api/index.php


+ 2 - 3
api/pages/settings-customize-appearance.php

@@ -1,5 +1,4 @@
 <?php
-
 $pageSettingsCustomizeAppearance = '
 <script>
 	buildCustomizeAppearance();
@@ -8,11 +7,11 @@ $pageSettingsCustomizeAppearance = '
     <div class="panel-heading">
 		<span lang="en">Customize Appearance</span>
 		<button type="button" id="customize-appearance-reload" class="btn btn-primary btn-circle pull-right reload hidden m-r-5"><i class="fa fa-spin fa-refresh"></i> </button>
-		<button id="customize-appearance-reload" class="btn btn-sm btn-primary btn-rounded waves-effect waves-light pull-right reload hidden" type="button"><span class="btn-label"><i class="fa fa-refresh"></i></span><span lang="en">Reload</span></button>
+		<button id="customize-appearance-form-save" onclick="submitSettingsForm(\'customize-appearance-form\')" class="btn btn-sm btn-primary btn-rounded waves-effect waves-light pull-right hidden animated loop-animation rubberBand" type="button"><span class="btn-label"><i class="fa fa-save"></i></span><span lang="en">Save</span></button>
 	</div>
     <div class="panel-wrapper collapse in" aria-expanded="true">
         <div class="panel-body bg-org">
-            <form id="customize-appearance-form" class="form-horizontal" onsbumit="return false;"></form>
+            <form id="customize-appearance-form" class="form-horizontal addFormTick" onsbumit="return false;"></form>
         </div>
     </div>
 </div>

+ 2 - 2
api/pages/settings-settings-main.php

@@ -1,5 +1,4 @@
 <?php
-
 $pageSettingsSettingsMain = '
 <script>
 	buildSettingsMain();
@@ -7,10 +6,11 @@ $pageSettingsSettingsMain = '
 <div class="panel bg-org panel-info">
     <div class="panel-heading">
 		<span lang="en">Organizr Settings</span>
+		<button id="settings-main-form-save" onclick="submitSettingsForm(\'settings-main-form\')" class="btn btn-sm btn-primary btn-rounded waves-effect waves-light pull-right hidden animated loop-animation rubberBand" type="button"><span class="btn-label"><i class="fa fa-save"></i></span><span lang="en">Save</span></button>
 	</div>
     <div class="panel-wrapper collapse in" aria-expanded="true">
         <div class="panel-body bg-org">
-            <form id="settings-main-form" class="form-horizontal" onsbumit="return false;"></form>
+            <form id="settings-main-form" class="form-horizontal addFormTick" onsbumit="return false;"></form>
         </div>
     </div>
 </div>

+ 2 - 2
api/pages/settings-settings-sso.php

@@ -1,5 +1,4 @@
 <?php
-
 $pageSettingsSettingsSSO = '
 <script>
 	buildSSO();
@@ -7,10 +6,11 @@ $pageSettingsSettingsSSO = '
 <div class="panel bg-org panel-info">
     <div class="panel-heading">
 		<span lang="en">Single Sign-On</span>
+		<button id="sso-form-save" onclick="submitSettingsForm(\'sso-form\')" class="btn btn-sm btn-primary btn-rounded waves-effect waves-light pull-right hidden animated loop-animation rubberBand" type="button"><span class="btn-label"><i class="fa fa-save"></i></span><span lang="en">Save</span></button>
 	</div>
     <div class="panel-wrapper collapse in" aria-expanded="true">
         <div class="panel-body bg-org">
-            <form id="sso-form" class="form-horizontal" onsbumit="return false;"></form>
+            <form id="sso-form" class="form-horizontal addFormTick" onsbumit="return false;"></form>
         </div>
     </div>
 </div>

+ 31 - 33
api/pages/settings-tab-editor-homepage-order.php

@@ -1,38 +1,36 @@
 <?php
-if(file_exists('config'.DIRECTORY_SEPARATOR.'config.php')){
-$pageSettingsTabEditorHomepageOrder = '
+if (file_exists('config' . DIRECTORY_SEPARATOR . 'config.php')) {
+	$pageSettingsTabEditorHomepageOrder = '
 <script>
     $("#homepage-items-sort").sortable({
-    placeholder:    "sort-placeholder col-md-3 col-xs-12 clearfix",
-    forcePlaceholderSize: true,
-    start: function( e, ui ){
-        ui.item.data( "start-pos", ui.item.index()+1 );
-    },
-    change: function( e, ui ){
-        var seq,
-        startPos = ui.item.data( "start-pos" ),
-        $index,
-        correction;
-        correction = startPos <= ui.placeholder.index() ? 0 : 1;
-        ui.item.parent().find( "div.sort-homepage").each( function( idx, el ){
-            var $this = $( el ),
-            $index = $this.index();
-            if ( ( $index+1 >= startPos && correction === 0) || ($index+1 <= startPos && correction === 1 ) ){
-                $index = $index + correction;
-                $this.find( ".ordinal-position").text( $index);
-                link = $this.find( ".ordinal-position" ).attr("data-link");
-                $("#homepage-values [name="+link+"]").val($index);
-                $("#homepage-values [name="+link+"]").attr("data-changed", "true");
-                console.log(link+" - "+$index);
-            }
-        });
-        seq = ui.item.parent().find( "div.sort-placeholder.col-md-3").index() + correction;
-        ui.item.find( ".ordinal-position" ).text( seq );
-        newlink = ui.item.find( ".ordinal-position" ).attr("data-link");
-        $("#homepage-values [name="+newlink+"]").val(seq);
-        $("#homepage-values [name="+newlink+"]").attr("data-changed", "true");
-        console.log(newlink+" - "+seq);
-    }
+	    placeholder:    "sort-placeholder col-md-3 col-xs-12 clearfix",
+	    forcePlaceholderSize: true,
+	    start: function( e, ui ){
+	        ui.item.data( "start-pos", ui.item.index()+1 );
+	    },
+	    change: function( e, ui ){
+	        var seq,
+	        startPos = ui.item.data( "start-pos" ),
+	        $index,
+	        correction;
+	        correction = startPos <= ui.placeholder.index() ? 0 : 1;
+	        ui.item.parent().find( "div.sort-homepage").each( function( idx, el ){
+	            var $this = $( el ),
+	            $index = $this.index();
+	            if ( ( $index+1 >= startPos && correction === 0) || ($index+1 <= startPos && correction === 1 ) ){
+	                $index = $index + correction;
+	                $this.find( ".ordinal-position").text( $index);
+	                link = $this.find( ".ordinal-position" ).attr("data-link");
+	                $("#homepage-values [name="+link+"]").val($index);
+	                $("#homepage-values [name="+link+"]").attr("data-changed", "true");
+	            }
+	        });
+	        seq = ui.item.parent().find( "div.sort-placeholder.col-md-3").index() + correction;
+	        ui.item.find( ".ordinal-position" ).text( seq );
+	        newlink = ui.item.find( ".ordinal-position" ).attr("data-link");
+	        $("#homepage-values [name="+newlink+"]").val(seq);
+	        $("#homepage-values [name="+newlink+"]").attr("data-changed", "true");
+	    }
     });
 </script>
 <div class="panel bg-org panel-info">
@@ -42,7 +40,7 @@ $pageSettingsTabEditorHomepageOrder = '
 	</div>
     <div class="panel-wrapper collapse in" aria-expanded="true">
         <div class="panel-body bg-org" >
-        <div class="row el-element-overlay m-b-40" id="settings-homepage-order">'.buildHomepageSettings().'</div>
+        <div class="row el-element-overlay m-b-40" id="settings-homepage-order">' . buildHomepageSettings() . '</div>
         </div>
     </div>
 </div>

+ 1 - 1
api/plugins/js/invites.js

@@ -399,7 +399,7 @@ $(document).on('click', '.inviteModal', function() {
 });
 
 // CHANGE CUSTOMIZE Options
-$(document).on('change asColorPicker::close', '#INVITES-settings-page :input', function(e) {
+$(document).on('change asColorPicker::close', '#INVITES-settings-page1 :input', function(e) {
     var input = $(this);
     switch ($(this).attr('type')) {
         case 'switch':

+ 1 - 1
api/plugins/js/php-mailer.js

@@ -252,7 +252,7 @@ function addForgotPassword(){
     }
 }
 // CHANGE CUSTOMIZE Options
-$(document).on('change asColorPicker::close', '#PHPMAILER-settings-page :input', function(e) {
+$(document).on('change asColorPicker::close', '#PHPMAILER-settings-page1 :input', function(e) {
     var input = $(this);
     switch ($(this).attr('type')) {
         case 'switch':

+ 1 - 1
api/plugins/js/speedTest.js

@@ -144,7 +144,7 @@ function speedTestLaunch(){
 }
 
 // CHANGE CUSTOMIZE Options
-$(document).on('change asColorPicker::close', '#SPEEDTEST-settings-page :input', function(e) {
+$(document).on('change asColorPicker::close', '#SPEEDTEST-settings-page1 :input', function(e) {
     var input = $(this);
     switch ($(this).attr('type')) {
         case 'switch':

+ 26 - 4
js/custom.js

@@ -971,7 +971,29 @@ $(document).on('focusout', 'input.pick-a-color', function(e) {
         $(this).attr('style','');
     }
 });
-$(document).on('change colorPicker::close', '#customize-appearance-form :input', function(e) {
+$(document).on('change', '.addFormTick :input', function(e) {
+    $(this).attr('data-changed', true);
+    $(this).addClass('has-success');
+    var formID = $(this).closest('form').attr('id');
+    $('#'+formID+'-save').removeClass('hidden');
+    console.log(formID);
+    switch ($(this).attr('type')) {
+        case 'switch':
+        case 'checkbox':
+            var value = $(this).prop("checked") ? true : false;
+            break;
+        default:
+            var value = $(this).val();
+    }
+    if($(this).hasClass('themeChanger')){
+        changeTheme(value);
+    }
+    if($(this).hasClass('styleChanger')){
+        changeStyle(value);
+    }
+});
+// Added 1 while testing as we are getting rid of this
+$(document).on('change', '#customize-appearance-form1 :input', function(e) {
     $(this).attr('data-changed', true);
     //$(this).addClass('has-success');
     switch ($(this).attr('type')) {
@@ -1100,7 +1122,7 @@ $(document).on('click', '.disablePlugin', function() {
 
 });
 // SSO Option change
-$(document).on('change', '#sso-form :input', function(e) {
+$(document).on('change', '#sso-form1 :input', function(e) {
     var input = $(this);
     switch ($(this).attr('type')) {
         case 'switch':
@@ -1133,7 +1155,7 @@ $(document).on('change', '#sso-form :input', function(e) {
     );
 });
 // MAIN SETTINGS PAGE
-$(document).on('change', '#settings-main-form :input', function(e) {
+$(document).on('change', '#settings-main-form1 :input', function(e) {
     var input = $(this);
     switch ($(this).attr('type')) {
         case 'switch':
@@ -1363,7 +1385,7 @@ $(document).on("click", ".testPath", function () {
     }
 });
 // Save Homepage Form
-$(document).on('change', '.homepageForm :input', function(e) {
+$(document).on('change', '.homepageForm1 :input', function(e) {
     var input = $(this);
     switch ($(this).attr('type')) {
         case 'switch':

+ 72 - 30
js/functions.js

@@ -650,8 +650,10 @@ function buildPluginsItem(array){
 	$.each(array, function(i,v) {
 		var settingsPage = (v.settings == true) ? `
 		<!-- Plugin Settings Page -->
-		<form id="`+v.idPrefix+`-settings-page" class="mfp-hide white-popup-block mfp-with-anim" autocomplete="off">
-			<h1 lang="en">`+v.name+` Settings</h1>
+		<form id="`+v.idPrefix+`-settings-page" class="mfp-hide white-popup-block mfp-with-anim addFormTick" autocomplete="off">
+			<h1 class="pull-left" lang="en">`+v.name+` Settings</h1>
+			<button id="`+v.idPrefix+`-settings-page-save" onclick="submitSettingsForm('`+v.idPrefix+`-settings-page')" class="btn btn-sm btn-primary btn-rounded waves-effect waves-light pull-right hidden animated loop-animation rubberBand" type="button"><span class="btn-label"><i class="fa fa-save"></i></span><span lang="en">Save</span></button>
+			<div class="clearfix"></div>
 			<fieldset id="`+v.idPrefix+`-settings-items" style="border:0;"></fieldset>
 			<div class="clearfix"></div>
 		</form>
@@ -750,8 +752,11 @@ function buildHomepageItem(array){
 						</div>
 					</div>
 				</div>
-				<form id="homepage-`+v.name+`-form" class="mfp-hide white-popup-block mfp-with-anim homepageForm">
-				    <fieldset style="border:0;">`+buildFormGroup(v.settings)+`</fieldset>
+				<form id="homepage-`+v.name+`-form" class="mfp-hide white-popup-block mfp-with-anim homepageForm addFormTick">
+				    <fieldset style="border:0;">
+				    	<button id="homepage-`+v.name+`-form-save" onclick="submitSettingsForm('homepage-`+v.name+`-form')" class="btn btn-sm btn-primary btn-rounded waves-effect waves-light pull-right hidden animated loop-animation rubberBand" type="button"><span class="btn-label"><i class="fa fa-save"></i></span><span lang="en">Save</span></button>
+						`+buildFormGroup(v.settings)+`
+					</fieldset>
 				    <div class="clearfix"></div>
 				</form>
 				`;
@@ -778,22 +783,16 @@ function buildHomepage(){
 		customHTMLoneEditor.setTheme("ace/theme/idle_fingers");
 		customHTMLoneEditor.setShowPrintMargin(false);
 		customHTMLoneEditor.session.on('change', function(delta) {
-			if($('.customHTMLoneTextarea').val() == customHTMLoneEditor.getValue()){
-				$('.savecustomHTMLoneTextarea').addClass('hidden');
-			}else{
-				$('.savecustomHTMLoneTextarea').removeClass('hidden');
-			}
+            $('.customHTMLoneTextarea').val(customHTMLoneEditor.getValue());
+            $('#homepage-CustomHTML-1-form-save').removeClass('hidden');
 		});
 		customHTMLtwoEditor = ace.edit("customHTMLtwoEditor");
 		customHTMLtwoEditor.session.setMode(new HTMLMode());
 		customHTMLtwoEditor.setTheme("ace/theme/idle_fingers");
 		customHTMLtwoEditor.setShowPrintMargin(false);
 		customHTMLtwoEditor.session.on('change', function(delta) {
-			if($('.customHTMLtwoTextarea').val() == customHTMLtwoEditor.getValue()){
-				$('.savecustomHTMLtwoTextarea').addClass('hidden');
-			}else{
-				$('.savecustomHTMLtwoTextarea').removeClass('hidden');
-			}
+            $('.customHTMLtwoTextarea').val(customHTMLtwoEditor.getValue());
+            $('#homepage-CustomHTML-2-form-save').removeClass('hidden');
 		});
 	}).fail(function(xhr) {
 		console.error("Organizr Function: API Connection Failed");
@@ -886,20 +885,9 @@ function buildCustomizeAppearance(){
 		cssEditor.setTheme("ace/theme/idle_fingers");
 		cssEditor.setShowPrintMargin(false);
 		cssEditor.session.on('change', function(delta) {
-			if($('.cssTextarea').val() == cssEditor.getValue()){
-				$('.saveCss').addClass('hidden');
-			}else{
-				$('.saveCss').removeClass('hidden');
-			}
+            $('.cssTextarea').val(cssEditor.getValue());
+            $('#customize-appearance-form-save').removeClass('hidden');
 		});
-		/*var colors = jsColorPicker('input.pick-a-color', {
-			customBG: '#222',
-			readOnly: false,
-			init: function(elm, colors) { // colors is a different instance (not connected to colorPicker)
-				elm.style.backgroundColor = elm.value;
-				elm.style.color = colors.rgbaMixCustom.luminance > 0.22 ? '#222' : '#ddd';
-			}
-		});*/
 		$("input.pick-a-color").ColorPickerSliders({
 			placement: 'bottom',
 			color: '#987654',
@@ -1496,6 +1484,61 @@ function buildTabEditorItem(array){
 	});
 	return tabList;
 }
+function submitSettingsForm(form){
+    var list = $( "#"+form ).serializeToJSON();
+    var size = 0;
+    var submit = {};
+    $.each(list, function(i,v) {
+        if(v !== '#987654' && i.includes('disable-pwd-mgr') == false){
+            size++;
+            var input = $( "#"+form+" [name='"+i+"']" );
+            var dataType = input.attr('data-type');
+            switch (dataType) {
+                case 'switch':
+                case 'checkbox':
+                    var value = input.prop("checked") ? true : false;
+                    break;
+				case 'select2':
+                    var value = input.val().toString();
+                    break;
+                default:
+                    var value = input.val();
+            }
+
+            submit[i] = {name: i , value: value, type: dataType};
+        }
+    });
+    var post = {
+        api:'api/?v1/update/config/multiple/form',
+        payload:submit,
+        messageTitle:'',
+        messageBody:'Updated Items',
+        error:'Organizr Function: API Connection Failed'
+    };
+    var callbacks = $.Callbacks();
+    // Custom Callbacks
+    switch(form){
+        case 'customize-appearance-form':
+            //callbacks.add( buildCustomizeAppearance );
+            break;
+        default:
+
+    }
+    if(size > 0){
+        console.log(submit)
+        settingsAPI(post,callbacks);
+        $("#"+form+" :input").each(function(){
+            var input = $(this);
+            input.removeClass('has-success').removeClass('has-error');
+        });
+        $('#'+form+'-save').addClass('hidden');
+    }else{
+        $("#"+form+" :input").each(function(){
+            var input = $(this);
+            input.removeClass('has-success').addClass('has-error');
+        });
+    }
+}
 function submitHomepageOrder(){
 	var list = $( "#homepage-values" ).serializeToJSON();
 	var size = 0;
@@ -1505,8 +1548,7 @@ function submitHomepageOrder(){
 			size++;
 			submit[i] = v;
 		}
-	})
-
+	});
     var post = {
         api:'api/?v1/update/config/multiple',
         payload:submit,
@@ -1519,7 +1561,7 @@ function submitHomepageOrder(){
 	if(size > 0){
 		settingsAPI(post,callbacks);
 	}else{
-			console.log('addd error');
+	    console.log('add error');
 	}
 
 }

Beberapa file tidak ditampilkan karena terlalu banyak file yang berubah dalam diff ini