dolibarr  13.0.2
bookmarks.lib.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (C) 2009 Laurent Destailleur <eldy@users.sourceforge.net>
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation; either version 3 of the License, or
7  * (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program. If not, see <https://www.gnu.org/licenses/>.
16  */
17 
31 {
32  global $conf, $user, $db, $langs;
33 
34  require_once DOL_DOCUMENT_ROOT.'/bookmarks/class/bookmark.class.php';
35  require_once DOL_DOCUMENT_ROOT.'/core/lib/functions.lib.php';
36 
37  $langs->load("bookmarks");
38 
39  $url = $_SERVER["PHP_SELF"];
40 
41  if (!empty($_SERVER["QUERY_STRING"])) {
42  $url .= (dol_escape_htmltag($_SERVER["QUERY_STRING"]) ? '?'.dol_escape_htmltag($_SERVER["QUERY_STRING"]) : '');
43  } else {
44  global $sortfield, $sortorder;
45  $tmpurl = '';
46  // No urlencode, all param $url will be urlencoded later
47  if ($sortfield) {
48  $tmpurl .= ($tmpurl ? '&' : '').'sortfield='.$sortfield;
49  }
50  if ($sortorder) {
51  $tmpurl .= ($tmpurl ? '&' : '').'sortorder='.$sortorder;
52  }
53  if (is_array($_POST)) {
54  foreach ($_POST as $key => $val) {
55  if (preg_match('/^search_/', $key) && $val != '') {
56  $tmpurl .= ($tmpurl ? '&' : '').$key.'='.$val;
57  }
58  }
59  }
60  $url .= ($tmpurl ? '?'.$tmpurl : '');
61  }
62 
63  $searchForm = '<!-- form with POST method by default, will be replaced with GET for external link by js -->'."\n";
64  $searchForm .= '<form id="top-menu-action-bookmark" name="actionbookmark" method="POST" action=""'.(empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER) ? ' onsubmit="return false"' : '').'>';
65  $searchForm .= '<input type="hidden" name="token" value="'.newToken().'">';
66 
67 
68  // Url to list bookmark
69  $listbtn = '<a class="top-menu-dropdown-link" title="'.$langs->trans('AddThisPageToBookmarks').'" href="'.DOL_URL_ROOT.'/bookmarks/list.php" >';
70  $listbtn .= '<span class="fa fa-list paddingright"></span>'.$langs->trans('Bookmarks').'</a>';
71 
72  // Url to go on create new bookmark page
73  $newbtn = '';
74  if (!empty($user->rights->bookmark->creer)) {
75  //$urltoadd=DOL_URL_ROOT.'/bookmarks/card.php?action=create&amp;urlsource='.urlencode($url).'&amp;url='.urlencode($url);
76  $urltoadd = DOL_URL_ROOT.'/bookmarks/card.php?action=create&amp;url='.urlencode($url);
77  $newbtn .= '<a class="top-menu-dropdown-link" title="'.$langs->trans('AddThisPageToBookmarks').'" href="'.dol_escape_htmltag($urltoadd).'" >';
78  $newbtn .= img_picto('', 'bookmark', '', false, 0, 0, '', 'paddingright').dol_escape_htmltag($langs->trans('AddThisPageToBookmarks')).'</a>';
79  }
80 
81  // Menu with list of bookmarks
82  $sql = "SELECT rowid, title, url, target FROM ".MAIN_DB_PREFIX."bookmark";
83  $sql .= " WHERE (fk_user = ".$user->id." OR fk_user is NULL OR fk_user = 0)";
84  $sql .= " AND entity IN (".getEntity('bookmarks').")";
85  $sql .= " ORDER BY position";
86  if ($resql = $db->query($sql)) {
87  if (empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)) {
88  $bookmarkList = '<div id="dropdown-bookmarks-list" >';
89  $i = 0;
90  while ((empty($conf->global->BOOKMARKS_SHOW_IN_MENU) || $i < $conf->global->BOOKMARKS_SHOW_IN_MENU) && $obj = $db->fetch_object($resql)) {
91  $bookmarkList .= '<a class="dropdown-item bookmark-item'.(strpos($obj->url, 'http') === 0 ? ' bookmark-item-external' : '').'" id="bookmark-item-'.$obj->rowid.'" data-id="'.$obj->rowid.'" '.($obj->target == 1 ? ' target="_blank"' : '').' href="'.dol_escape_htmltag($obj->url).'" >';
92  $bookmarkList .= dol_escape_htmltag($obj->title);
93  $bookmarkList .= '</a>';
94  $i++;
95  }
96  $bookmarkList .= '</div>';
97 
98  $searchForm .= '<input name="bookmark" id="top-bookmark-search-input" class="dropdown-search-input" placeholder="'.$langs->trans('Bookmarks').'" autocomplete="off" >';
99  } else {
100  $searchForm .= '<select name"=bookmark" id="boxbookmark" class="topmenu-bookmark-dropdown .dropdown-toggle">';
101  //$searchForm .= '<option>--'.$langs->trans("Bookmarks").'--</option>';
102  $searchForm .= '<option hidden value="listbookmarks" class="optiongrey" selected rel="'.DOL_URL_ROOT.'/bookmarks/list.php">'.$langs->trans('Bookmarks').'</option>';
103  $searchForm .= '<option value="listbookmark" class="optionblue" rel="'.dol_escape_htmltag(DOL_URL_ROOT.'/bookmarks/list.php').'" ';
104  $searchForm .= ' data-html="'.dol_escape_htmltag(img_picto('', 'bookmark').' '.($user->rights->bookmark->creer ? $langs->trans('EditBookmarks') : $langs->trans('ListOfBookmarks')).'...').'">';
105  $searchForm .= dol_escape_htmltag($user->rights->bookmark->creer ? $langs->trans('EditBookmarks') : $langs->trans('ListOfBookmarks')).'...</option>';
106  // Url to go on create new bookmark page
107  if (!empty($user->rights->bookmark->creer)) {
108  $urltoadd = DOL_URL_ROOT.'/bookmarks/card.php?action=create&amp;url='.urlencode($url);
109  $searchForm .= '<option value="newbookmark" class="optionblue" rel="'.dol_escape_htmltag($urltoadd).'"';
110  $searchForm .= ' data-html="'.dol_escape_htmltag(img_picto('', 'bookmark').' '.$langs->trans('AddThisPageToBookmarks').'...').'">'.dol_escape_htmltag($langs->trans('AddThisPageToBookmarks').'...').'</option>';
111  }
112  $i = 0;
113  while ((empty($conf->global->BOOKMARKS_SHOW_IN_MENU) || $i < $conf->global->BOOKMARKS_SHOW_IN_MENU) && $obj = $db->fetch_object($resql)) {
114  $searchForm .= '<option name="bookmark'.$obj->rowid.'" value="'.$obj->rowid.'" '.($obj->target == 1 ? ' target="_blank"' : '').' rel="'.dol_escape_htmltag($obj->url).'" >';
115  $searchForm .= dol_escape_htmltag($obj->title);
116  $searchForm .= '</option>';
117  $i++;
118  }
119  $searchForm .= '</select>';
120  }
121  } else {
122  dol_print_error($db);
123  }
124 
125  $searchForm .= '</form>';
126 
127  // Generate the return string
128  if (!empty($conf->global->MAIN_OPTIMIZEFORTEXTBROWSER)) {
129  $html = $searchForm;
130 
131  $html .= '<!-- script to open selected choice -->
132  <script>
133  $(document).ready(function () {
134  jQuery("#boxbookmark").change(function() {
135  var urlselected = jQuery("#boxbookmark option:selected").attr("rel");
136  if (! urlselected) console.log("Error, failed to get the URL to jump to from the rel attribute");
137  var urltarget = jQuery("#boxbookmark option:selected").attr("target");
138  if (! urltarget) { urltarget=""; }
139  jQuery("form#top-menu-action-bookmark").attr("target",urltarget);
140  jQuery("form#top-menu-action-bookmark").attr("action",urlselected);
141 
142  console.log("We change select bookmark. We choose urlselected="+urlselected+" with target="+urltarget);
143 
144  // Method is POST for internal link, GET for external
145  if (urlselected.startsWith(\'http\'))
146  {
147  var newmethod=\'GET\';
148  jQuery("form#top-menu-action-bookmark").attr("method", newmethod);
149  console.log("We change method to newmethod="+newmethod);
150  jQuery("form#top-menu-action-bookmark").submit();
151  console.log("We restore method to POST");
152  jQuery("form#top-menu-action-bookmark").attr("method", \'POST\');
153  }
154  else
155  {
156  jQuery("form#top-menu-action-bookmark").submit();
157  }
158  });
159  })
160  </script>';
161  } else {
162  $html = '
163  <!-- search input -->
164  <div class="dropdown-header bookmark-header">
165  ' . $searchForm.'
166  </div>
167  ';
168 
169  $html .= '
170  <!-- Menu Body -->
171  <div class="bookmark-body dropdown-body">
172  '.$bookmarkList.'
173  </div>
174  ';
175 
176  $html .= '
177  <!-- Menu Footer-->
178  <div class="bookmark-footer">
179  '.$newbtn.$listbtn.'
180  <div style="clear:both;"></div>
181  </div>
182  ';
183 
184  $html .= '<!-- script to open/close the popup -->
185  <script>
186  $( document ).on("keyup", "#top-bookmark-search-input", function () {
187 
188  var filter = $(this).val(), count = 0;
189  $("#dropdown-bookmarks-list .bookmark-item").each(function () {
190 
191  if ($(this).text().search(new RegExp(filter, "i")) < 0) {
192  $(this).addClass("hidden-search-result");
193  } else {
194  $(this).removeClass("hidden-search-result");
195  count++;
196  }
197  });
198  $("#top-bookmark-search-filter-count").text(count);
199  });
200  </script>';
201  }
202 
203  return $html;
204 }
img_picto($titlealt, $picto, $moreatt= '', $pictoisfullpath=false, $srconly=0, $notitle=0, $alt= '', $morecss= '', $marginleftonlyshort=2)
Show picto whatever it&#39;s its name (generic function)
print $_SERVER["PHP_SELF"]
Edit parameters.
if(!empty($conf->facture->enabled)&&$user->rights->facture->lire) if((!empty($conf->fournisseur->enabled)&&empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)||!empty($conf->supplier_invoice->enabled))&&$user->rights->fournisseur->facture->lire) if(!empty($conf->don->enabled)&&$user->rights->don->lire) if(!empty($conf->tax->enabled)&&$user->rights->tax->charges->lire) if(!empty($conf->facture->enabled)&&!empty($conf->commande->enabled)&&$user->rights->commande->lire &&empty($conf->global->WORKFLOW_DISABLE_CREATE_INVOICE_FROM_ORDER)) if(!empty($conf->facture->enabled)&&$user->rights->facture->lire) if((!empty($conf->fournisseur->enabled)&&empty($conf->global->MAIN_USE_NEW_SUPPLIERMOD)||!empty($conf->supplier_invoice->enabled))&&$user->rights->fournisseur->facture->lire) $resql
Social contributions to pay.
Definition: index.php:1232
dol_print_error($db= '', $error= '', $errors=null)
Displays error message system with all the information to facilitate the diagnosis and the escalation...
printDropdownBookmarksList()
Add area with bookmarks in top menu.
dol_escape_htmltag($stringtoescape, $keepb=0, $keepn=0, $keepmoretags= '', $escapeonlyhtmltags=0)
Returns text escaped for inclusion in HTML alt or title tags, or into values of HTML input fields...