causefx пре 8 година
родитељ
комит
1a0c21af9c

+ 54 - 15
api/functions/api-functions.php

@@ -745,6 +745,30 @@ function editCategories($array){
             break;
     }
 }
+function editAppearance($array){
+    switch ($array['data']['value']) {
+        case 'true':
+            $array['data']['value'] = (bool) true;
+            break;
+        case 'false':
+            $array['data']['value'] = (bool) false;
+            break;
+        default:
+            $array['data']['value'] = $array['data']['value'];
+    }
+    //return gettype($array['data']['value']).' - '.$array['data']['value'];
+    switch ($array['data']['action']) {
+        case 'editCustomizeAppearance':
+            $newItem = array(
+                $array['data']['name'] => $array['data']['value']
+            );
+            return (updateConfig($newItem)) ? true : false;
+            break;
+        default:
+            # code...
+            break;
+    }
+}
 function allUsers(){
     try {
     	$connect = new Dibi\Connection([
@@ -805,26 +829,41 @@ function createUser($username,$password,$defaults,$email=null) {
 }
 function getCustomizeAppearance(){
     if(file_exists('config'.DIRECTORY_SEPARATOR.'config.php')){
-        $array = array(
-            'config' => array(
-                'branch' => $GLOBALS['branch']
+        return array(
+            'config' => array(/*
+                array(
+                    'type' => 'select',
+                    'name' => 'branch',
+                    'label' => 'Organizr Branch',
+                    'value' => $GLOBALS['branch'],
+                    'options' => array(
+                        'Master' => 'v2-master',
+                        'Develop' => 'v2-develop'
+                    )
+                ),*/
+                array(
+                    'type' => 'input',
+                    'name' => 'logo',
+                    'label' => 'Logo',
+                    'value' => $GLOBALS['logo']
+                ),
+                array(
+                    'type' => 'input',
+                    'name' => 'title',
+                    'label' => 'Title',
+                    'value' => $GLOBALS['title']
+                ),
+                array(
+                    'type' => 'switch',
+                    'name' => 'useLogo',
+                    'label' => 'Use Logo instead of Title',
+                    'value' => $GLOBALS['useLogo']
+                )
             ),
             'database' => array(
 
             )
         );
-        try {
-        	$connect = new Dibi\Connection([
-        		'driver' => 'sqlite3',
-        		'database' => $GLOBALS['dbLocation'].$GLOBALS['dbName'],
-        	]);
-            //$all['tabs'] = $connect->fetchAll('SELECT * FROM tabs ORDER BY `order` ASC');
-            //$all['categories'] = $connect->fetchAll('SELECT * FROM categories ORDER BY `order` ASC');
-            //$all['groups'] = $connect->fetchAll('SELECT * FROM groups ORDER BY `group_id` ASC');
-            //return $all;
-        } catch (Dibi\Exception $e) {
-            return false;
-        }
     }
 }
 function allTabs(){

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

@@ -22,7 +22,7 @@ function createConfig($array, $path = null, $nest = 0) {
 		$allowCommit = true;
 		switch (gettype($v)) {
 			case 'boolean':
-				$item = ($v?true:false);
+				$item = ($v?'true':'false');
 				break;
 			case 'integer':
 			case 'double':

+ 11 - 0
api/index.php

@@ -69,6 +69,17 @@ switch ($function) {
                     $result['data'] = null;
                 }
                 break;
+            case 'POST':
+                if(qualifyRequest(1)){
+                    $result['status'] = 'success';
+                    $result['statusText'] = 'success';
+                    $result['data'] = editAppearance($_POST);
+                }else{
+                    $result['status'] = 'error';
+                    $result['statusText'] = 'API/Token invalid or not set';
+                    $result['data'] = null;
+                }
+                break;
             default:
                 $result['status'] = 'error';
                 $result['statusText'] = 'The function requested is not defined for method: '.$method;

+ 11 - 22
api/pages/settings-customize-appearance.php

@@ -2,33 +2,22 @@
 
 $pageSettingsCustomizeAppearance = '
 <script>
+	$(document).on(\'focusout\', \'#customize-appearance-form :input\', function(e) {
+		if ($(this).attr(\'data-changed\') !== "false") {
+			console.log("changed");
+		}
+	});
 buildCustomizeAppearance();
 </script>
 <div class="panel bg-theme-dark panel-info">
-    <div class="panel-heading" lang="en"> Customize Appearance</div>
+    <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-spin fa-refresh"></i></span><span lang="en">Reload</span></button>
+	</div>
     <div class="panel-wrapper collapse in" aria-expanded="true">
         <div class="panel-body bg-theme-dark">
-            <form id="customize-appearance-form" class="form-horizontal" onsbumit="return false;">
-
-                <!-- FORM GROUP -->
-                <h3 class="box-title">Person Info</h3>
-                <hr class="m-t-0 m-b-40">
-                <div class="row">
-
-                    <!-- INPUT BOX -->
-                    <div class="col-md-6">
-                        <div class="form-group">
-                            <label class="control-label col-md-3">First Name</label>
-                            <div class="col-md-9">
-                                <input type="text" class="form-control" placeholder="John doe"></div>
-                        </div>
-                    </div>
-                    <!--/ INPUT BOX -->
-
-                </div>
-                <!--/ FORM GROUP -->
-
-            </form>
+            <form id="customize-appearance-form" class="form-horizontal" onsbumit="return false;"></form>
         </div>
     </div>
 </div>

+ 7 - 0
api/pages/settings.php

@@ -156,6 +156,13 @@ $pageSettings = '
 
                                             </ul>
                                         </div>
+                                    </div>
+                                    <div class="col-lg-6 col-sm-12 col-md-6">
+                                        <div class="well">
+                                            <h4 lang="en">Want to help translate?</h4>
+                                            <p lang="en">Head on over to POEditor and help us translate Organizr into your language</p>
+                                            <p><a href="https://poeditor.com/join/project/T6l68hksTE" lang="en">Click Me!</a></p>
+                                        </div>
                                     </div>
     							</div>
                                 <div class="clearfix"></div>

+ 31 - 0
js/custom.js

@@ -953,6 +953,37 @@ $(document).on("click", ".changeDefaultCategory", function () {
     callbacks.add( buildCategoryEditor );
     settingsAPI(post,callbacks);
 });
+// CHANGE CUSTOMIZE Options
+$(document).on('change', '#customize-appearance-form :input', function(e) {
+	$(this).attr('data-changed', true);
+    switch ($(this).attr('type')) {
+        case 'switch':
+        case 'checkbox':
+            var value = $(this).prop("checked") ? true : false;
+            break;
+        default:
+            var value = $(this).val();
+    }
+	var post = {
+        action:'editCustomizeAppearance',
+        api:'api/?v1/settings/customize/appearance',
+        name:$(this).attr("name"),
+        value:value,
+        messageTitle:'',
+        messageBody:'Update Value for '+$(this).parent().parent().find('label').text(),
+        error:'Organizr Function: API Connection Failed'
+    };
+    console.log(post);
+    $('#customize-appearance-reload').removeClass('hidden');
+	var callbacks = $.Callbacks();
+    //callbacks.add( buildCustomizeAppearance );
+    settingsAPI(post,callbacks);
+
+});
+// RELOAD Page
+$(document).on("click", ".reload", function () {
+    location.reload();
+});
 /* ===== Open-Close Right Sidebar ===== */
 
 $(document).on("click", ".right-side-toggle", function () {

+ 68 - 2
js/functions.js

@@ -439,12 +439,78 @@ function hasValue(test){
 /* BUILD FUNCTIONS */
 /* END BUILD FUNCTIONS */
 /* ORGANIZR API FUNCTIONS */
+function buildFormItem(item){
+	var placeholder = (item.placeholder) ? ' placeholder="'+item.placeholder+'"' : '';
+	var id = (item.id) ? ' id="'+item.placeholder+'"' : '';
+	var value = (item.value) ? ' value="'+item.value+'"' : '';
+	var name = (item.name) ? ' name="'+item.name+'"' : '';
+	var extraClass = (item.class) ? ' '+item.class : '';
+	//+tof(item.value,'c')+`
+	switch (item.type) {
+		case 'input':
+			return '<input data-changed="false" lang=en" type="text" class="form-control'+extraClass+'"'+placeholder+value+id+name+' />';
+			break;
+		case 'switch':
+		case 'checkbox':
+			return '<input data-changed="false" type="checkbox" class="js-switch'+extraClass+'" data-size="small" data-color="#99d683" data-secondary-color="#f96262"'+name+value+tof(item.value,'c')+' /><input data-changed="false" type="hidden"'+name+'value="false">';
+			break;
+		default:
+			return false;
+	}
+}
+function buildCustomizeAppearanceItem(array){
+	/*
+	<!-- FORM GROUP -->
+	<h3 class="box-title">Person Info</h3>
+	<hr class="m-t-0 m-b-40">
+	<div class="row">
+
+		<!-- INPUT BOX -->
+		<div class="col-md-6">
+			<div class="form-group">
+				<label class="control-label col-md-3" lang="en">First Name</label>
+				<div class="col-md-9">
+					<input type="text" class="form-control" placeholder="John doe"></div>
+			</div>
+		</div>
+		<!--/ INPUT BOX -->
+
+	</div>
+	<!--/ FORM GROUP -->
+	*/
+	if (Array.isArray(array.config)) {
+		var preRowConfig = `
+			<!-- FORM GROUP -->
+			<h3 class="box-title" lang="en">Config Items</h3>
+			<hr class="m-t-0 m-b-40">
+			<div class="row">
+		`;
+		var customizeItems = preRowConfig;
+		$.each(array.config, function(i,v) {
+			customizeItems += `
+				<!-- INPUT BOX -->
+				<div class="col-md-6">
+					<div class="form-group">
+						<label class="control-label col-md-3" lang="en">`+v.label+`</label>
+						<div class="col-md-9">
+							`+buildFormItem(v)+`
+						</div>
+					</div>
+				</div>
+				<!--/ INPUT BOX -->
+			`;
+		});
+		customizeItems += '</div>';
+	}
+
+	return customizeItems;
+}
 function buildCustomizeAppearance(){
 	ajaxloader(".content-wrap","in");
 	organizrAPI('GET','api/?v1/customize/appearance').success(function(data) {
 		var response = JSON.parse(data);
-		console.log(response)
-		//$('#manageUserTable').html(buildUserManagementItem(response.data));
+		$('#customize-appearance-form').html(buildCustomizeAppearanceItem(response.data));
+		;
 	}).fail(function(xhr) {
 		console.error("Organizr Function: API Connection Failed");
 	});