mirror of
				https://github.com/getgrav/grav-plugin-admin.git
				synced 2025-10-31 10:25:50 +01:00 
			
		
		
		
	Added support for root selection in parents field
This commit is contained in:
		| @@ -1435,7 +1435,7 @@ class AdminController extends AdminBaseController | ||||
|     protected function getFolderListing($data) | ||||
|     { | ||||
|         // Valid types are dir|file|link | ||||
|         $default_filters =  ['type'=> ['dir','file'], 'name' => null, 'extension' => null]; | ||||
|         $default_filters =  ['type'=> ['root', 'dir', 'file'], 'name' => null, 'extension' => null]; | ||||
|  | ||||
|  | ||||
|         $page_instances = Grav::instance()['pages']->instances(); | ||||
| @@ -1446,6 +1446,7 @@ class AdminController extends AdminBaseController | ||||
|         $filters = isset($data['filters']) ? $default_filters + json_decode($data['filters']) : $default_filters; | ||||
|         $sortby = $data['sortby'] ?? 'filename'; | ||||
|         $order = $data['order'] ?? SORT_ASC; | ||||
|         $initial = $data['initial'] ?? null; | ||||
|         $filter_type = (array) $filters['type']; | ||||
|  | ||||
|         $status = 'error'; | ||||
| @@ -1493,24 +1494,42 @@ class AdminController extends AdminBaseController | ||||
|             $status = 'success'; | ||||
|             $msg = 'PLUGIN_ADMIN.PAGE_ROUTE_FOUND'; | ||||
|             foreach (new \DirectoryIterator($path) as $fileInfo) { | ||||
|                 if ($fileInfo->isDot() || Utils::startsWith($fileInfo->getFilename(), '.')) { | ||||
|                 $fileName = $fileInfo->getFilename(); | ||||
|                 if (($fileInfo->isDot() && $fileName !== '.' && $initial) || (Utils::startsWith($fileName, '.') && strlen($fileName) > 1)) { | ||||
|                     continue; | ||||
|                 } | ||||
|  | ||||
|                 if ($fileInfo->isDot()) { | ||||
|                     if (!$initial) { | ||||
|                         continue; | ||||
|                     } | ||||
|  | ||||
|                     $payload = [ | ||||
|                         'name' => '<root>', | ||||
|                         'value' => '', | ||||
|                         'item-key' => '', | ||||
|                         'filename' => '.', | ||||
|                         'extension' => '', | ||||
|                         'type' => 'root', | ||||
|                         'modified' => $fileInfo->getMTime(), | ||||
|                         'size' => 0 | ||||
|                     ]; | ||||
|                 } else { | ||||
|                     $file_page = $page_instances[$fileInfo->getPathname()] ?? null; | ||||
|                     $file_path = Utils::replaceFirstOccurrence(GRAV_ROOT, '', $fileInfo->getPathname()); | ||||
|  | ||||
|                     $type = $fileInfo->getType(); | ||||
|  | ||||
|                     $payload = [ | ||||
|                     'name' => $file_page ? $file_page->title() : $fileInfo->getFilename(), | ||||
|                         'name' => $file_page ? $file_page->title() : $fileName, | ||||
|                         'value' => $file_page ? $file_page->route() : $file_path, | ||||
|                         'item-key' => basename($file_page ? $file_page->route() : $file_path), | ||||
|                     'filename' => $fileInfo->getFilename(), | ||||
|                         'filename' => $fileName, | ||||
|                         'extension' => $type === 'dir' ? '' : $fileInfo->getExtension(), | ||||
|                         'type' => $type, | ||||
|                         'modified' => $fileInfo->getMTime(), | ||||
|                         'size' => $fileInfo->getSize() | ||||
|                     ]; | ||||
|                 } | ||||
|  | ||||
|                 // Simple filter for name or extension | ||||
|                 if (($filters['name'] && Utils::contains($payload['basename'], $filters['name'])) || | ||||
|   | ||||
| @@ -47,6 +47,8 @@ export class Parents { | ||||
|         // prepend icon | ||||
|         if (item.children || item.type === 'dir') { | ||||
|             prependClasses.push('fa-folder'); | ||||
|         } else if (item.type === 'root') { | ||||
|             prependClasses.push('fa-sitemap'); | ||||
|         } else if (item.type === 'file') { | ||||
|             prependClasses.push('fa-file-o'); | ||||
|         } | ||||
|   | ||||
							
								
								
									
										2
									
								
								themes/grav/css-compiled/preset.css
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								themes/grav/css-compiled/preset.css
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										2
									
								
								themes/grav/css-compiled/template.css
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								themes/grav/css-compiled/template.css
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										2
									
								
								themes/grav/js/admin.min.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								themes/grav/js/admin.min.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| @@ -538,6 +538,10 @@ textarea.frontmatter { | ||||
| } | ||||
|  | ||||
| [data-remodal-id="parents"] { | ||||
|     form { | ||||
|         overflow: hidden; | ||||
|     } | ||||
|      | ||||
|     form > h1 { | ||||
|         margin-bottom: 0; | ||||
|     } | ||||
| @@ -555,6 +559,10 @@ textarea.frontmatter { | ||||
|         list-style-type: none; | ||||
|         text-align: left; | ||||
|     } | ||||
|      | ||||
|     .parents-content:empty { | ||||
|         display: none; | ||||
|     } | ||||
| } | ||||
|  | ||||
| // Sortables | ||||
|   | ||||
		Reference in New Issue
	
	Block a user