dbXapp 2.0
RAD, CMS, Module und Runtime-IDE fuer dbXapp
Loading...
Searching...
No Matches
dbxContent_folder.class.php
Go to the documentation of this file.
1<?php
2namespace dbx\dbxContent_admin;
3dbx()->get_system_obj('dbxReport','use');
4
5
7 public $_folders = array(); // speed up
8 public $_groups = array(); // speed up
9
10 private function get_parent_folder_name($id) {
11 $folders=$this->_folders;
12 $folder = "(0) -root-";
13 if ($id) {
14 $folder_name='-?-';
15 if (isset($folders[$id])) $folder_name=$folders[$id];
16 $folder = "($id) $folder_name";
17 }
18 return $folder;
19 }
20
21 private function get_group_name($dat_groups) {
22 $groups=$this->_groups;
23 $groups_name=''; $gid=0;
24 $dat_groups = explode(',',$dat_groups);
25 //dbx_debug("DAT-Groups=",$dat_groups);
26 foreach ($dat_groups as $no => $gid) {
27 //dbx_debug("Group ID=($gid)");
28 if (isset($groups[$gid])) {
29 $groups_name.='[('.$gid.') '.$groups[$gid].'] ';
30 } else {
31 if ($gid) $groups_name.='('.$gid.') -?- ';
32 }
33 }
34 return $groups_name;
35 }
36
37
38
39 public function run_body($content) {
40 $record =$this->_record;
41 if (isset($record['parent_id'])) $record['parent_id'] =$this->get_parent_folder_name($record['parent_id']);
42 //if (isset($record['group_read'])) $record['group_read'] =$this->get_group_name($record['group_read']);
43 $this->_record=$record;
44 return $content;
45 }
46}
47
48
49
50
51class dbxFolder_edit extends \dbxObj {
52
53
55 Public $oTPL;
56
57
58 public function __construct() {
59 $this->oValidator=dbx()->get_system_obj('dbxValidator');
60 $this->oTPL =dbx()->get_system_obj('dbxTPL');
61 }
62
63 function make_select_data($data,$id,$name,$parent='') {
64 $select_data=array();
65 $select_data[0]='/ ';
66 if (is_array($data)) {
67 foreach ($data as $no => $record) {
68 if (is_array($record)) {
69 if ( isset($record[$id]) && isset($record[$name]) ) {
70 $xid=$record[$id];
71 $xna=$record[$name];
72 if ($parent && isset($record[$parent])) {
73 $pid=$record[$parent];
74 if ($pid==$xid) $pid=0;
75 if ($pid) {
76 while ($pid > 0) {
77 foreach ($data as $no2 => $rec2) {
78 if ($rec2[$id]==$pid) {
79 $xna=$rec2[$name].' -> '.$xna;
80 $pid=$rec2[$parent];
81 break;
82 } // == $pid
83 } //foreach
84 } // while $pid > 0
85 } // $pid
86 } // parent
87 $xna='/ -> '.$xna;
88 $select_data[$xid]=$xna;
89 } // isset $id && $name
90 } else {
91 // ?
92 }
93 }
94 }
95 return $select_data;
96 }
97
98 function get_select_tpl($modul) {
99 $pfx='c-';
100 $select_data=array();
101 $folder=$this->oTPL->get_tpl_dir('dbxContent').'htm/';
102
103 dbx()->debug("folder=($folder)");
104
105 $folder_files=array_diff(scandir($folder), array('..', '.'));
106 foreach ($folder_files as $no => $filename) {
107 $id=substr($filename, 0 , (strrpos($filename, ".")));
108 dbx()->debug("folder-files=($filename) id=($id)");
109
110 $na=$id;
111 if ($pfx) {
112 if (substr($na, 0, strlen($pfx)) != $pfx) $id=0;
113 }
114 if ($id) $select_data[$id]=$na;
115 }
116 //dbx_debug("Directory=($folder)",$folder_files);
117
118 return $select_data;
119 }
120
121
122
123
124
125
126
127 public function run() {
128 $content=''; $ok=false;
129 $uid = dbx()->user();
130 $rid = dbx()->get_modul_var('rid',0,'int');;
131 //dbx_debug("#EDIT-Folder=($rid) uid=($uid)");
132
133 if ($uid) {
134 //dbx()->set_system_var('dbx_page','admin');
135 $db = dbx()->get_system_obj('dbxDB');
136 $lng = dbx()->get_system_var('dbx_lng','de');
137
138 $dd_content = dbx_lng_name('content', $lng);
139 $dd_folder = dbx_lng_name('content_folder', $lng);
140
141
142 $data =$db->select1($dd_folder,$rid);
143 $data_folder =$db->select($dd_folder);
144 $data_folder =$this->make_select_data($data_folder,'id','name','parent_id');
145 $data_template=$this->get_select_tpl('dbxContent','c-');
146
147 $options_groups=array();
148 $user_groups=$db->select('dbxUser_groups','active = 1','*','name');
149 foreach ($user_groups as $no => $record) {
150 $id =$record['name'];
151 $group =$record['description'];
152 $options_groups[$id]=$group;
153 }
154
155
156
157 $oForm=dbx()->get_system_obj('dbxForm');
158 $oForm->init('dbxContent_folder_edit','form-folder');
159 $oForm->_data = $data;
160 $oForm->_action='?dbx_modul=dbxContent_admin&dbx_run1=content&dbx_run2=edit_folder&dbx_target=dbx_target_{i}&rid='.$rid; // fid 'new' or record.id
161
162 $oForm->add_fld('id' ,'text-label' ,rules: 'int' ,label: 'ID');
163 $oForm->add_fld('name' ,'text-label' ,rules: 'parameter|min=1' ,label: 'Ordner', errormsg: 'Bezeichnung vom Ordner. Keine Sonderzeichen erlaubt.'); // #+
164 $oForm->add_fld('parent_id' ,'select-single-label' ,rules: 'array|int' ,label: 'Unterordener von' ,options: $data_folder);
165 $oForm->add_fld('template' ,'select-single-label' ,rules: 'parameter' ,label: 'Template' ,options: $data_template );
166 $oForm->add_fld('group_read','multi-select-label' ,rules: 'array|parameter' ,label: 'Zugriff Gruppen' ,options: $options_groups); // #+
167
168 //dbx_debug("#EDIT-Folder=(data)",$data);
169
170
171 if ($oForm->submit()) {
172 //dbx_debug("#FORM-SUBMIT#");
173 if (!$oForm->errors()) { // submit && no errors // we ignore warnings
174 //dbx_debug("#FORM-No-Errors");
175 $change=$oForm->changed();
176 if ($change) {
177 //dbx_debug("#Form-Change");
178 $ok=$oForm->save_post($dd_folder,$rid);
179 if ( $ok) $oForm->_msg_success = 'Daten gespeichert';
180 if (!$ok) $oForm->_msg_success = 'Daten konnten nicht gespeichert werden';
181 } else {
182 //dbx_debug("#Form-NO-Change");
183 $oForm->_msg_success = 'Keine Änderung';
184 }
185 } else {
186 $flds='';
187 $errors=$oForm->_errors;
188 foreach ($errors as $fld => $msg) {
189 $flds.=$fld.' ';
190 // code...
191 }
192 $oForm->_msg_error = "Prüfen sie bitte ihre Eingaben ($flds)";
193
194 }
195 }
196
197
198 $content= $oForm->run();
199 }
200
201 return $content;
202 } // run()
203
204
205} // class
206
207
208
209
210
211
212
213
214
215
216
217
218// - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
220
221 public $oTPL;
222
223 public function __construct() {
224 $this->oTPL = dbx()->get_system_obj('dbxTPL');
225 }
226
227 function get_select_tpl($modul,$pfx='') {
228 $select_data=array();
229 $folder=$this->oTPL->get_tpl_dir($modul);
230 $folder_files=array_diff(scandir($folder), array('..', '.'));
231 foreach ($folder_files as $no => $filename) {
232 $id=substr($filename, 0 , (strrpos($filename, ".")));
233 $na=$id;
234 if ($pfx) {
235 if (substr($na, 0, strlen($pfx)) != $pfx) $id=0;
236 }
237 if ($id) $select_data[$id]=$na;
238 }
239 //dbx_debug("Directory=($folder)",$folder_files);
240
241 return $select_data;
242 }
243
244
245
246
247 private function report_folder_flat() {
248
249 //return 'folder-flat';
250
251 $oReport = new dbxReport_Folder;
252 $oDB = dbx()->get_system_obj('dbxDB');
253 $lng = dbx()->get_modul_var('lng','de');
254
255 $dd_content = dbx_lng_name('content', $lng);
256 $dd_folder = dbx_lng_name('content_folder', $lng);
257 $dd_groups = 'dbxUser_groups';
258
259 $rid=dbx()->get_modul_var('rid',0,'int');
260 $do =dbx()->get_modul_var('dbx_run3');
261
262 if ($do == 'row_delete' && $rid) $oDB->delete($dd_folder,$rid);
263
264 if ($do == 'row_edit' ) return $this->folder_edit($rid);
265 if ($do == 'multi_delete') {
266 $ids=$oReport->get_post('Report-content_select','','array|int');
267 if (is_array($ids)) {
268 foreach ($ids as $no => $rid) {
269 $ok=$oDB->delete($dd_folder,$rid);
270 }
271 }
272 }
273
274
275
276 $folders=array(); $groups=array();
277 $data_folder=$oDB->select($dd_folder);
278 foreach ($data_folder as $no => $record) {
279 $id =$record['id'];
280 $folders[$id]=$record['name'];
281 }
282 $data_groups=$oDB->select($dd_groups);
283 foreach ($data_groups as $no => $record) {
284 $id =$record['id'];
285 $groups[$id] =$record['name'];
286 }
287
288 $oReport->_folders =$folders; // speed up
289 $oReport->_groups = $groups; // speed up
290
291
292
293 $flds['id'] ='ID';
294 $flds['name'] ='Ordner';
295 $flds['parent_id'] ='Parent';
296 $flds['group_read'] ='Zugriff Lesen';
297
298 $options_rsort['id'] ='ID';
299 $options_rsort['name'] ='Ortner';
300
301
302 $data['dbx_rrows']= 100;
303 $data['dbx_rsort']='id';
304
305 $oReport->init('report-folder-flat');
306 $oReport->_data=$data;
307
308 $oReport->_action='?dbx_modul=dbxContent_admin&dbx_run1=content&dbx_run2=list_folder'; // set_action() cid 'new' or record.id
309 $oReport->_options_rsort = $options_rsort;
310 $oReport->_but_pagination =9;
311 $oReport->_create_row_select=1;
312 $oReport->_create_row_edit =1;
313 $oReport->_create_row_delete=1;
314 $oReport->_tabel_tpls['tpl_row_edit'] = 'table_row_modal-edit';
315 $oReport->_tabel_tpls['tpl_row_delete'] = 'modul|confirm_row_delete_folder';
316 $oReport->_confirm_delete='modul|confirm-delete-methode';
317 $oReport->_msg_info ='';
318
319
320 $add['dbx_get']='?dbx_modul=dbxContent_admin&dbx_run1=content&dbx_run2=new_folder';
321 $add['label']='Neuer Content Ordner';
322 $add['title']='Neuer Content Ordner';
323 $oReport->add_obj('add_folder','button-modal1',$add);
324
325 $oReport->add_action('rows_delete' ,'action_button_delete' ,'&dbx_run2=multi_delete');
326 $oReport->add_action('rows_activate' ,'action_button_activate' ,'&dbx_run2=multi_activate');
327 $oReport->add_action('rows_deactivate','action_button_deactivate','&dbx_run2=multi_deactivate');
328
329 $work=$oReport->get_sel('dbx_run2');
330 $rid =$oReport->get_sel('rid',0,'int');
331
332
333 if($oReport->submit()) {
334 if(!$oReport->errors()) { // submit && no errors
335 $work=$oReport->get_post('dbx_run2');
336 $oReport->_msg_success = '';
337 } else {
338 $oReport->_msg_err = 'Prüfen sie bitte ihre Eingaben';
339 }
340 }
341
342 // get all selections and order
343 $rgroup='';
344 $rwhere=$oReport->get_sel('dbx_rwhere','');
345 $rrows =$oReport->get_sel('dbx_rrows',10);
346 $rpos =$oReport->get_sel('dbx_rpos',0);
347 $rsort =$oReport->get_sel('dbx_rsort','id');
348 $rdesc =$oReport->get_sel('dbx_rdesc','ASC');
349
350 if ($rwhere) $rwhere="title LIKE '$rwhere%' ";
351 $oReport->_rcount=$oDB->count($dd_folder,$rwhere);
352 $oReport->_rdata =$oDB->select($dd_folder,$rwhere,$flds,$rsort,$rdesc,$rgroup,$rrows,$rpos);
353
354 $content=$oReport->run(1,$flds,'table');
355
356
357
358
359 return $content;
360 } // report_content_flat()
361
362
363 private function folder_edit($fid=0) {
364 $obj= new dbxFolder_edit;
365 $content=$obj->run();
366 return $content;
367 }
368
369
370 private function folder_delete() {
371 $fid=dbx()->get_request_var('id',0,'int');
372 return "Delete Folder ($fid)";
373
374 }
375
376
377 // ----------------------------------------------------
378
379 public function run($work='') {
380 if (!$work) $work=dbx()->get_request_var('dbx_run2','flat');
381 $content="Modul dbxContent_admin work($work) not defined";
382
383 switch ($work) {
384 case 'list_folder';
385 $content=$this->report_folder_flat();
386 break;
387 case 'row_edit':
388 $content=$this->report_folder_flat();
389 break;
390 case 'row_delete':
391 $content=$this->report_folder_flat();
392 break;
393 case 'edit_folder':
394 $content=$this->folder_edit();
395 break;
396 case 'new_folder':
397 $content=$this->folder_edit();
398 break;
399
400 }
401
402 return $content;
403 } // run
404
405} // class
406
407
408
409?>
make_select_data($data, $id, $name, $parent='')
Gemeinsame Basisklasse fuer dbXapp-System-, Modul- und Include-Objekte.
Definition dbxKernel.php:63
$_record
Aktueller Datensatz im Body-Lauf.
DBX schema administration.