YaWK  24.1
Yet another WebKit
menu-edit.php
Go to the documentation of this file.
1 <?php
2 // IMPORT REQUIRED CLASSES
3 use YAWK\alert;
4 use YAWK\backend;
5 use YAWK\db;
6 use YAWK\language;
7 use YAWK\menu;
8 use YAWK\sys;
9 
10 // CHECK REQUIRED OBJECTS
11 if (!isset($page)) // if no page object is set
12 { // create new page object
13  $page = new YAWK\page();
14 }
15 if (!isset($db))
16 { // create database object
17  $db = new db();
18 }
19 if (!isset($lang))
20 { // create language object
21  $lang = new language();
22 }
23 // TOGGLE MENU ITEM
24 if (isset($_GET['toggleItem']))
25 {
26  if (isset($_GET['published']) && (isset($_GET['menu']) && ($_GET['id'])))
27  {
28  if (is_numeric($_GET['published'])
29  && (is_numeric($_GET['menu'])
30  && (is_numeric($_GET['id']))))
31  {
32  // data is set, types seem to be correct, go ahead...
33  if (!isset($menu))
34  { // create new menu object
35  $menu = new YAWK\menu();
36  }
37  $menu->parent = $db->quote($_GET['menu']);
38  $menu->id = $db->quote($_GET['id']);
39  $menu->published = $db->quote($_GET['published']);
40 
41  // check status and toggle it
42  if ($menu->published === '1') {
43  $menu->published = 0;
44  $status = $lang['OFFLINE'];
45  $color = "warning";
46  }
47  else {
48  $menu->published = 1;
49  $status = $lang['ONLINE'];
50  $color = "success";
51  }
52  // all ok, now toggle that menu entry
53  if($menu->toggleItemOffline($db, $menu->id, $menu->published, $menu->parent))
54  { // throw notification
55  alert::draw("$color", "$lang[MENU_ITEM] $lang[IS_NOW] $status", "$lang[MENU_ITEM] $lang[TOGGLED_TO] $status.", "", 800);
56  }
57  else
58  { // throw error
59  alert::draw("danger", "$lang[ERROR]", "$lang[FAILED] $lang[TOGGLE] $lang[MENU_ITEM] $status.", "",5800);
60  }
61 
62  }
63  }
64 }
65 
66 // DELETE MENU ENTRY
67 if (isset($_GET['del']) && ($_GET['del'] === "1")) {
68  switch ($_GET['deleteitem'])
69  {
70  case 1:
71  $menuID = $_GET['menu'];
72  $entry = $_GET['entry'];
73  if (YAWK\menu::deleteEntry($db, $menuID, $entry) === true)
74  { // delete successful
75  alert::draw("success", "$lang[ITEM] $lang[DELETED].", "$lang[MENU_ITEM] $lang[DELETED]", "", 800);
76  }
77  else
78  { // could not delete - throw error
79  alert::draw("danger", "$lang[MENU_ITEM] $lang[DELETE] $lang[FAILED].", "$lang[DATABASE] $lang[ERROR].", "", 5800);
80  }
81  break;
82  }
83 }
84 /* CHANGE MENU TITLE */
85 if(isset($_POST['changetitle'])) {
86  if (!$res = menu::changeTitle($db, $db->quote($_GET['menu']),$db->quote($_POST['menutitle'])))
87  { // throw error
88  alert::draw("warning", "$lang[WARNING]!", "$lang[MENU_CHANGE_FAILED]", "page=menu-edit&menu=$_GET[menu]","4200");
89  exit;
90  }
91 }
92 /* CHANGE MENU LANGUAGE */
93 if(isset($_POST['changeLanguage'])) {
94  if (!$res = menu::changeLanguage($db, $db->quote($_GET['menu']),$db->quote($_POST['menuLanguage'])))
95  { // throw error
96  alert::draw("warning", "$lang[WARNING]!", "$lang[MENU_CHANGE_FAILED]", "page=menu-edit&menu=$_GET[menu]","4200");
97  exit;
98  }
99 }
100 /* ADD MENU ENTRY */
101 if(isset($_POST['add'])) {
102  $_POST['newtitle'] = trim($_POST['newtitle']);
103  $_POST['newurl'] = trim($_POST['newurl']);
104  if (!$res = YAWK\menu::addEntry($db, $db->quote($_GET['menu']),$db->quote($_POST['newtitle']),$db->quote($_POST['newurl'])))
105  {
106  alert::draw("danger", "$lang[ERROR]", "$lang[MENU_ADD_FAILED].","page=menu-edit&menu=$_GET[menu]","2200");
107  exit;
108  }
109 }
110  else if(isset($_POST['save'])) {
111  $entries = array();
112  foreach ($_POST as $param => $value) {
113  $key = '';
114  if (substr($param, -4, 4) === "_gid") {
115  $key = substr($param, 0, -4);
116  $entries[$key]['gid'] = $value;
117  } else {
118  $suffixes = array('_href', '_target', '_text', '_title', '_sort', '_published', '_parentID', '_divider', '_icon');
119  foreach ($suffixes as $suffix) {
120  if (substr($param, -strlen($suffix), strlen($suffix)) === $suffix) {
121  $key = substr($param, 0, -strlen($suffix));
122  $entries[$key][substr($suffix, 1)] = $value;
123  break;
124  }
125  }
126  }
127  }
128 
129  foreach($entries as $id=>$params){
130  // echo "<br>".$params['gid']; exit;
131  $_GET['menu'] = $db->quote($_GET['menu']);
132  $id = $db->quote($id);
133  $params['text'] = $db->quote($params['text']);
134  $params['title'] = $db->quote($params['title']);
135  $params['href'] = $db->quote($params['href']);
136  $params['sort'] = $db->quote($params['sort']);
137  $params['gid'] = $db->quote($params['gid']);
138  $params['published'] = $db->quote($params['published']);
139  if (isset($params['parentID']) && (!empty($params['parentID'])))
140  { $params['parentID'] = $db->quote($params['parentID']); } else { $params['parentID'] = 0; }
141  $params['target'] = $db->quote($params['target']);
143  $_GET['menu'],
144  $id,
145  $params['text'],
146  $params['title'],
147  $params['href'],
148  $params['sort'],
149  $params['gid'],
150  $params['published'],
151  $params['parentID'],
152  $params['target'],
153  $params['icon']);
154  }
155  }
156  else {
157  foreach($_POST as $param=>$value){
158  if(strlen($param) >= 8){
159  if(substr($param,-7,7) === "_delete"){
160  YAWK\menu::deleteEntry($db, $_GET['menu'], substr($param,0,-7));
161  }
162  }
163  }
164  }
165 ?>
166 <!-- iconpicker css + JS -->
167 <link href="../system/engines/iconpicker/css/fontawesome-iconpicker.min.css" rel="stylesheet">
168 <script src="../system/engines/iconpicker/js/fontawesome-iconpicker.min.js"></script>
169 
170 <!-- data tables JS -->
171 <script type="text/javascript">
172  $(document).ready(function() {
173  var iconField = $('[role="iconpicker"]');
174  iconField.each(function () {
175  $(this).iconpicker();
176  });
177 
178  $('#table-sort').dataTable( {
179  "bPaginate": false,
180  "bLengthChange": false,
181  "bFilter": true,
182  "bSort": true,
183  "bInfo": true,
184  "bAutoWidth": false
185  });
186 
187  // TRY TO DISABLE CTRL-S browser hotkey
188  function saveHotkey() {
189  // simply disables save event for chrome
190  $(window).keypress(function (event) {
191  if (!(event.which === 115 && (navigator.platform.match("Mac") ? event.metaKey : event.ctrlKey)) && !(event.which === 19)) return true;
192  event.preventDefault();
193  formmodified=0; // do not warn user, just save.
194  return false;
195  });
196  // used to process the cmd+s and ctrl+s events
197  $(document).keydown(function (event) {
198  if (event.which === 83 && (navigator.platform.match("Mac") ? event.metaKey : event.ctrlKey)) {
199  event.preventDefault();
200  $('#savebutton').click(); // SAVE FORM AFTER PRESSING STRG-S hotkey
201  formmodified=0; // do not warn user, just save.
202  // save(event);
203  return false;
204  }
205  });
206  }
207  saveHotkey();
208  });
209 </script>
210 <!-- Content Wrapper. Contains page content -->
211 <div class="content-wrapper" id="content-FX">
212  <!-- Content Header (Page header) -->
213  <section class="content-header">
214  <!-- draw title on top-->
215  <?php
216  /* MENU Title */
218  echo backend::getTitle($menuName, $lang['EDIT']);
219  ?>
220  <ol class="breadcrumb">
221  <li><a href="./" title="<?php echo $lang['DASHBOARD']; ?>"><i class="fa fa-dashboard"></i> <?php echo $lang['DASHBOARD']; ?></a></li>
222  <li><a href="index.php?page=menus" title="<?php echo $lang['MENUS']; ?>"> <?php echo $lang['MENUS']; ?></a></li>
223  <li class="active"><a href="index.php?page=menu-edit&menu=<?php echo $_GET['menu']; ?>" title="<?php echo $lang['EDIT_MENU']; ?>"> <?php echo $lang['EDIT_MENU']; ?></a></li>
224  </ol>
225  </section>
226  <!-- Main content -->
227  <section class="content">
228  <!-- START CONTENT HERE -->
229 <form role="form" action="index.php?page=menu-edit&menu=<?php echo $_GET['menu']; ?>" method="POST">
230 <div class="box box-default">
231  <div class="box-body">
232  <!-- save btn -->
233  <button name="save"
234  id="savebutton"
235  class="btn btn-success pull-right"
236  type="submit"><i class="fa fa-save"></i>&nbsp; <?php echo $lang['MENU_SAVE']; ?>
237  </button>
238  <!-- back btn -->
239  <a class="btn btn-default pull-right" href="index.php?page=menus">
240  <i class="glyphicon glyphicon-backward"></i> &nbsp;<?php print $lang['BACK']; ?></a>
241  <?php
242  // DISPLAY EDITABLE MENU ENTRIES
243  menu::displayEditable($db, $db->quote($_GET['menu']), $lang);
244  ?>
245 
246  <br><br>
247 
248  </div>
249 </div>
250 
251  <div class="row">
252  <div class="col-md-6">
253  <div class="box default">
254  <div class="box-header with border">
255  <h3 class="box-title"><?php echo $lang['ENTRY_ADD']; ?></h3>
256  </div>
257  <div class="box-body">
258  <label for="newtitle"><?php echo $lang['TITLE']; ?></label><input type="text"
259  id="newtitle"
260  class="form-control"
261  name="newtitle"
262  maxlength="128"
263  placeholder="<?php echo $lang['TITLE']; ?>">
264  <label for="newurl"><?php echo $lang['LINK_OR_FILENAME']; ?></label><input type="text"
265  id="newurl"
266  class="form-control"
267  name="newurl"
268  maxlength="128"
269  placeholder="<?php echo $lang['LINK_OR_FILENAME']; ?>">
270  <input name="add"
271  id="savebutton3"
272  style="margin-top:5px;"
273  class="btn btn-default pull-right"
274  type="submit"
275  value="<?php echo $lang['ADD']; ?>">
276  </div>
277  </div>
278  </div>
279  <!-- 2nd col -->
280  <div class="col-md-6">
281  <div class="box default">
282  <div class="box-header with border">
283  <h3 class="box-title"><?php echo $lang['MENU_TITLE_CHANGE']; ?></h3>
284  </div>
285  <div class="box-body">
286  <label for="menutitle"><?php echo $lang['TITLE']; ?></label>
287  <input type="text"
288  id = "menutitle"
289  class="form-control"
290  name="menutitle"
291  maxlength="128"
292  value="<?php echo $menuName; ?>">
293 
294  <input name="changetitle"
295  style="margin-top:5px;"
296  id="savebutton2"
297  class="btn btn-default pull-right"
298  type="submit"
299  value="<?php echo $lang['SAVE']; ?>">
300  </div>
301  </div>
302  <div class="box default">
303  <div class="box-header with border">
304  <h3 class="box-title"><?php echo $lang['MENU_LANGUAGE_CHANGE']; ?></h3>
305  </div>
306  <div class="box-body">
307  <label for="menuLanguage"><?php echo $lang['LANGUAGE']; ?></label>
308  <select id="menuLanguage" name="menuLanguage" class="form-control">
309  <?php $menuLanguage = sys::getMenuLanguage($db, $_GET['menu']); ?>
310 
311  <?php
312  if (isset($menuLanguage) && (!empty($menuLanguage)))
313  {
314  echo "<option value=".$menuLanguage." selected>$menuLanguage</option>";
315  }
316  echo language::drawLanguageSelectOptions();
317  ?>
318  </select>
319  <input name="changeLanguage"
320  style="margin-top:5px;"
321  id="savebutton2"
322  class="btn btn-default pull-right"
323  type="submit"
324  value="<?php echo $lang['SAVE']; ?>">
325  </div>
326  </div>
327  </div>
328  </div>
329 </form>
Throws a fancy Bootstrap Alert (success, info, warning or danger)
Definition: alert.php:19
Backend class serves a few useful functions for the admin backend.
Definition: backend.php:27
Mysqli database class; returns db connection object.
Definition: db.php:16
The language class - support multilingual backend.
Definition: language.php:17
The default menu class. Serves all the menu functions.
Definition: menu.php:17
static deleteEntry($db, $menu, $id)
delete a single menu entry
Definition: menu.php:447
static editEntry($db, $menu, $id, $text, $title, $href, $sort, $gid, $published, $parentID, $target, $icon)
edit a single menu entry
Definition: menu.php:408
The default pages class. Provide all functions to handle static pages.
Definition: page.php:20
The sys class - handles yawk's system core functions.
Definition: sys.php:17
static getMenuName($db, $id)
returns menu name for given menu ID
Definition: sys.php:1384
if(!isset($db)) $id
function window
Definition: fuckAdBlock.js:8
FuckAdBlock prototype on
Definition: fuckAdBlock.js:227
function a
Definition: browser.js:14
c jPlayer event
if(!isset($page)) if(!isset($db)) if(!isset($lang)) if(isset($_GET['toggleItem'])) if(isset($_GET['del']) &&($_GET['del']==="1")) if(isset($_POST['changetitle'])) if(isset($_POST['changeLanguage'])) if(isset($_POST['add'])) else if(isset($_POST['save'])) else $menuName
Definition: menu-edit.php:217
print $lang['BACK']
Definition: menu-edit.php:218
$menuLanguage
Definition: menu-edit.php:309
type
Definition: menu-new.php:35
exit
This class serves methods to create backup from files.
Definition: AdminLTE.php:2
print $page title
Definition: page-edit.php:377
print $_GET['id']
Definition: page-edit.php:357
$page
Definition: pages.php:355
function i(e, t)
Definition: plyr.js:1
<!-- backend language -->< h3 >< i class="fa fa-language"></i > & nbsp
$template name
$value
document ready(function() { $('a[data-confirm]').click(function(ev) { modal='#dataConfirmModal';var href=$(this).attr('href');var title=$(this).attr('title');var icon=$(this).attr('data-icon');if(!icon) { icon='fa fa-trash-o';} if(!$(modal).length) { $('body').append('< div id="dataConfirmModal" class="modal fade" role="dialog" aria-labelledby="dataConfirmLabel" aria-hidden="true">< div class="modal-dialog">< div class="modal-content">< div class="modal-header">< button type="button" class="close" data-dismiss="modal" aria-hidden="true">< i class="fa fa-times"></i ></button >< br >< div class="col-md-1">< h3 class="modal-title">< i class="'+icon+'"></i ></h3 ></div >< div class="col-md-11">< h3 class="modal-title" id="dataConfirmLabel">'+title+'</h3 ></div ></h3 ></div >< div class="modal-body"></div >< div class="modal-footer">< button type="button" class="btn btn-default" data-dismiss="modal" aria-hidden="true">Abbrechen</button >< a type="button" class="btn btn-danger" id="dataConfirmOK">< i class="'+icon+'"></i > L &ouml;schen</a ></div ></div ></div ></div >');} $(modal).find('.modal-body').text($(this).attr('data-confirm'));$('#dataConfirmOK').attr('href', href);$(modal).modal({show:true});return false;});$('#terminateUser').click(function() { var terminate=window.confirm("ACHTUNG!\nDas wird Deinen Account permanent deaktivieren.\n"+"Bist Du Dir sicher, dass Du das tun willst?");if(terminate===true) { var terminateUser=window.confirm("Bist Du Dir wirklich ganz sicher?\n"+"Diese Aktion kann nicht rueckgaengig gemacht werden.");if(terminateUser===true) { $.get('system/templates/YaWK-bootstrap3/js/terminate-user.php', function(data) { if(data==="true") { setTimeout("window.location='logout.html'", 0);} else { alert("Fehler: "+data);} });} } });function dismissNotifications() { $.ajax({ url:'js/dismiss-notifications.php', type:'POST', success:function(data) { if(!data) { alert('Something went wrong!');return false;} } });$("#bell-label").fadeOut();$('#notification-header').html('You have 0 notifications');$('#notification-menu').fadeOut();} $("#dismiss").click(function() { dismissNotifications();});function disableButtons(delay) { $('#loginButton').removeClass().addClass('btn btn-success disabled').attr('id', 'LOGIN_FORBIDDEN');$('#resetPasswordButton').removeClass().addClass('btn btn-danger disabled');setTimeout(function() { $('#LOGIN_FORBIDDEN').attr('id', 'loginButton').removeClass().addClass('btn btn-success');$('#resetPasswordButton').removeClass().addClass('btn btn-danger');}, delay);} $("#loginButton").click(function(){ if($('#loginButton').length > 0) { if($('#loginButton').hasClass('btn') &&$('#loginButton').hasClass('btn-success') &&$('#loginButton').hasClass('disabled')) { } else { $("#loginForm").submit();disableButtons(10000);} } else if($('#LOGIN_FORBIDDEN').length > 0) { if($('#LOGIN_FORBIDDEN').hasClass('btn') &&$('#LOGIN_FORBIDDEN').hasClass('btn-success') &&$('#LOGIN_FORBIDDEN').hasClass('disabled')) { } else { } } });$("#blockedBtn").hover(function() { $("#blockedBtn").hide();$("#askBtn").fadeIn(820);});})