Browse Source

dashboard wip

idleman 1 year ago
parent
commit
0b51fec6af

+ 58 - 24
plugin/navigation/action.php

@@ -190,30 +190,64 @@ Action::register('navigation_widget_configure',function(&$response){
 	exit;
 });
 
-Action::register('navigation_widget_configure_autocomplete',function(&$response){
-	global $myUser,$_;
-	User::check_access('navigation','read');
-	require_once(__DIR__.SLASH.'MenuItem.class.php');
-	if(!$myUser->connected()) throw new Exception("Vous devez être connecté",401);
-	if(empty($_['keyword'])) return;
-
-	$rows = array();
-	foreach(MenuItem::staticQuery('SELECT item.* FROM {{table}} item LEFT JOIN {{table}} menu ON item.menu=menu.id  WHERE item.label LIKE ? AND item.menu!=? AND menu.user=?',array('%'.$_['keyword'].'%',0,$myUser->login),true) as $menu){
-		$row = $menu->toArray();
-		$row['name'] = $row['label'];
-		$rows[] = $row;
-	}
 
-	Plugin::callHook("menu_main", array(&$pages));
 
-	foreach($pages as $page){
-		if( strpos(slugify($page['label']), slugify($_["keyword"])) === false ) continue;
-		$icon = isset($page['icon'])? $page['icon'] : 'far fa-bookmark';
-		$row =  $page;
-		$row['name'] = $page['label'];
-		$rows[] = $row;
-	}
 
-	usort ($rows , function($a,$b){return $a['sort']>$b['sort']?-1:1;});
-	$response['rows'] = $rows;
-});
+	Action::register('page_autocomplete',function(&$response){
+        	global $myUser,$_,$myFirm;
+
+			
+			User::check_access('navigation','read');
+			require_once(__DIR__.SLASH.'MenuItem.class.php');
+			if(!$myUser->connected()) throw new Exception("Vous devez être connecté",401);
+			if(empty($_['keyword'])) return;
+
+			$rows = array();
+			foreach(MenuItem::staticQuery('SELECT item.* FROM {{table}} item LEFT JOIN {{table}} menu ON item.menu=menu.id  WHERE item.label LIKE ? AND item.menu!=? AND menu.user=?',array('%'.$_['keyword'].'%',0,$myUser->login),true) as $menu){
+				$row = $menu->toArray();
+				$rows[] = $row;
+			}
+
+			Plugin::callHook("menu_main", array(&$pages));
+
+			foreach($pages as $page){
+				if( strpos(slugify($page['label']), slugify($_["keyword"])) === false ) continue;
+				$icon = isset($page['icon'])? $page['icon'] : 'far fa-bookmark';
+				$row =  $page;
+				$row['label'] = $page['label'];
+				$rows[] = $row;
+			}
+
+			usort ($rows , function($a,$b){return $a['sort']>$b['sort']?-1:1;});
+			$response['rows'] = $rows;
+
+
+        });
+
+
+
+    Action::register('page_by_uid',function(&$response){
+        global $myUser,$_;
+    	if (!$myUser->connected()) throw new Exception("Vous devez être connecté",401);
+    	require_once(__DIR__.SLASH.'MenuItem.class.php');
+
+    	$response['items'] = array();
+    	//@TODO
+    	// $query = 'SELECT item.* FROM {{table}} item  WHERE item.label LIKE ? AND item.menu!=? AND menu.user=? IN(';
+    	// $query .= implode(',', array_fill(0, count($_['items']), '?'));
+    	// $query .= ')';
+
+
+	    // foreach(MenuItem::staticQuery($query,$_['items'],true) as  $client) {
+
+	    //    $row = $client->toArray();
+	    //    unset($row['parent']);
+	    //    if(!empty($client->foreign('parentLabel'))) $row['parent'] = array('label'=>$client->foreign('parentLabel'));
+    	//    $row['label'] =  html_entity_decode($row['label'], ENT_QUOTES);
+    	//    if(!empty($row['pseudonym'])) $row['label'].= ' ('.html_entity_decode($row['pseudonym'], ENT_QUOTES).')' ;
+    	//    $response['items'][$row['id']] = $row;
+	    // }
+
+	    
+
+    });

+ 39 - 0
plugin/navigation/js/component.js

@@ -0,0 +1,39 @@
+function init_components_page(input){
+
+
+	input.component_autocomplete('page',{
+		skin: function(item){
+			var html = '';
+			var re = new RegExp(input.val(),"gi");
+
+			var label = item.label.replace(re, function (x) {
+				return '<strong>'+x+'</strong>';
+			});
+
+			html += '<div class="media">';
+			html += '<h5 class="mt-1"><i class="'+item.icon+'"></i> <span>'+label+'</span></h5>';
+			html +='<small>'+item.url+'</small></div>';
+			html += '<div class="clear"></div>';
+			html += '</div>'
+
+
+
+			return html;
+		},
+		onClick: function(selected,element){
+			container = input.data("data-component");
+			input.val(selected.id);
+			var label = selected.label;
+			if(selected.parentLabel) label +=' ('+selected.parentLabel+')';
+			container.val(label);
+			input.trigger('click').trigger('change');
+		},
+		onLoad: function(component,item){
+			var label = item.label;
+
+			if(item.parent) label+=' ('+item.parent.label+')';
+			component.container.val(label);
+		}
+	});
+
+}

+ 0 - 29
plugin/navigation/js/widget.js

@@ -1,29 +0,0 @@
-function navigation_widget_configure_init(){
-	var widgetTitle = $('#widget-title');
-	$('#widget-title').autocomplete({
-		action : 'navigation_widget_configure_autocomplete',
-		skin : function(item){
-			var html = '';
-			var re = new RegExp(widgetTitle.val(),"gi");
-
-			name = item.name.replace(re, function (x) {
-				return '<strong>'+x+'</strong>';
-			});
-
-			html += '<h5 class="mt-1"><i class="'+item.icon+'"></i> <span>'+name+'</span></h5>';
-			html +='<small>'+item.url+'</small></div>';
-			html += '<div class="clear"></div>';
-			return html;
-		},
-		highlight : function(item){
-			return item;
-		},
-		onClick : function(selected,element){
-			widgetTitle.val(selected.name);
-			$('#widget-url').val(selected.url);
-			$('#widget-icon').val(selected.icon);
-			init_components();
-		}
-	});
-}
-

+ 2 - 1
plugin/navigation/navigation.plugin.php

@@ -236,6 +236,7 @@ Configuration::setting('navigation',array(
 //Déclation des assets
 Plugin::addCss("/css/main.css");
 Plugin::addJs("/js/main.js");
+Plugin::addJs("/js/component.js");
 
 Plugin::addHook("menu_user", function(&$userMenu){
 	global $conf, $myUser;
@@ -317,7 +318,7 @@ Plugin::addHook('widget',function(&$models){
 				    	<input data-type="checkbox" name="widget-redirect" id="widget-redirect" <?php echo $widget->meta['redirect'] ? 'checked' : ''; ?>>
 				    </div>
 				</div>
-				<input class="form-control text-success" type="text" value="<?php echo $widget->meta['url']; ?>" id="widget-url">
+				<input class="form-control text-success" data-type="page" type="text" value="<?php echo $widget->meta['url']; ?>" id="widget-url">
 				<div class="input-group-append">
 					<a href="<?php echo $widget->meta['url']; ?>" target="_blank" class="text-success text-decoration-none input-group-text"><i class="fas fa-globe"></i></a>
 				</div>