* Copyright (C) 2005-2022 Laurent Destailleur * Copyright (C) 2014 Marcos GarcĂ­a * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ /** * \file htdocs/bookmarks/card.php * \ingroup bookmark * \brief Page display/creation of bookmarks */ // Load Dolibarr environment require '../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/bookmarks/class/bookmark.class.php'; // Load translation files required by the page $langs->loadLangs(array('bookmarks', 'other')); // Get Parameters $id = GETPOST("id", 'int'); $action = GETPOST("action", "alpha"); $title = (string) GETPOST("title", "alpha"); $url = (string) GETPOST("url", "alpha"); $urlsource = GETPOST("urlsource", "alpha"); $target = GETPOST("target", "int"); $userid = GETPOST("userid", "int"); $position = GETPOST("position", "int"); $backtopage = GETPOST('backtopage', 'alpha'); // Initialize Objects $object = new Bookmark($db); if ($id > 0) { $object->fetch($id); } // Security check restrictedArea($user, 'bookmark', $object); $permissiontoread = $user->hasRight('bookmark', 'lire'); $permissiontoadd = $user->hasRight('bookmark', 'creer'); $permissiontodelete = $user->hasRight('bookmark', 'supprimer'); /* * Actions */ if ($action == 'add' || $action == 'addproduct' || $action == 'update') { if ($action == 'update') { $invertedaction = 'edit'; } else { $invertedaction = 'create'; } $error = 0; if (GETPOST('cancel', 'alpha')) { if (empty($backtopage)) { $backtopage = ($urlsource ? $urlsource : ((!empty($url) && !preg_match('/^http/i', $url)) ? $url : DOL_URL_ROOT.'/bookmarks/list.php')); } header("Location: ".$backtopage); exit; } if ($action == 'update') { $object->fetch(GETPOST("id", 'int')); } // Check if null because user not admin can't set an user and send empty value here. if (!empty($userid)) { $object->fk_user = $userid; } $object->title = $title; $object->url = $url; $object->target = $target; $object->position = $position; if (!$title) { $error++; setEventMessages($langs->transnoentities("ErrorFieldRequired", $langs->trans("BookmarkTitle")), null, 'errors'); } if (!$url) { $error++; setEventMessages($langs->transnoentities("ErrorFieldRequired", $langs->trans("UrlOrLink")), null, 'errors'); } if (!$error) { $object->favicon = 'none'; if ($action == 'update') { $res = $object->update(); } else { $res = $object->create(); } if ($res > 0) { if (empty($backtopage)) { $backtopage = ($urlsource ? $urlsource : ((!empty($url) && !preg_match('/^http/i', $url)) ? $url : DOL_URL_ROOT.'/bookmarks/list.php')); } header("Location: ".$backtopage); exit; } else { if ($object->errno == 'DB_ERROR_RECORD_ALREADY_EXISTS') { $langs->load("errors"); setEventMessages($langs->transnoentities("WarningBookmarkAlreadyExists"), null, 'warnings'); } else { setEventMessages($object->error, $object->errors, 'errors'); } $action = $invertedaction; } } else { $action = $invertedaction; } } /* * View */ llxHeader(); $form = new Form($db); $head = array(); $h = 1; $head[$h][0] = $_SERVER["PHP_SELF"].($object->id ? '?id='.$object->id : ''); $head[$h][1] = $langs->trans("Bookmark"); $head[$h][2] = 'card'; $h++; $hselected = 'card'; if ($action == 'create') { /* * Fact bookmark creation mode */ print '
'."\n"; print ''; print ''; print ''; print load_fiche_titre($langs->trans("NewBookmark"), '', 'bookmark'); print dol_get_fiche_head(null, 'bookmark', '', 0, ''); print ''; print ''; dol_set_focus('#titlebookmark'); // Url print ''; // Target print ''; // Visibility / Owner print ''; // Position print ''; print '
'.$langs->trans("BookmarkTitle").''.$langs->trans("SetHereATitleForLink").'
'.$langs->trans("UrlOrLink").''.$langs->trans("UseAnExternalHttpLinkOrRelativeDolibarrLink").'
'.$langs->trans("BehaviourOnClick").''; $liste = array(0=>$langs->trans("ReplaceWindow"), 1=>$langs->trans("OpenANewWindow")); $defaulttarget = 1; if ($url && !preg_match('/^http/i', $url)) { $defaulttarget = 0; } print $form->selectarray('target', $liste, GETPOSTISSET('target') ? GETPOST('target', 'int') : $defaulttarget, 0, 0, 0, '', 0, 0, 0, '', 'maxwidth300'); print ''.$langs->trans("ChooseIfANewWindowMustBeOpenedOnClickOnBookmark").'
'.$langs->trans("Visibility").''; print img_picto('', 'user', 'class="pictofixedwidth"'); print $form->select_dolusers(GETPOSTISSET('userid') ? GETPOST('userid', 'int') : $user->id, 'userid', 0, '', 0, ($user->admin ? '' : array($user->id)), '', 0, 0, 0, '', ($user->admin) ? 1 : 0, '', 'maxwidth300 widthcentpercentminusx'); print '
'.$langs->trans("Position").''; print 'position).'">'; print '
'; print dol_get_fiche_end(); print $form->buttonsSaveCancel("CreateBookmark"); print '
'; } if ($id > 0 && !preg_match('/^add/i', $action)) { if ($action == 'edit') { print '
'; print ''; print ''; print ''; print ''; print ''; } print dol_get_fiche_head($head, $hselected, $langs->trans("Bookmark"), -1, 'bookmark'); $linkback = ''.$langs->trans("BackToList").''; dol_banner_tab($object, 'id', $linkback, 1, 'rowid', 'ref', '', '', 0, '', '', 0); print '
'; print '
'; print ''; print ''; print ''; print ''; // Visibility / owner print ''; // Position print ''; // Date creation print ''; print '
'; if ($action == 'edit') { print ''; } print $langs->trans("BookmarkTitle"); if ($action == 'edit') { print ''; } print ''; if ($action == 'edit') { print 'title).'">'; } else { print dol_escape_htmltag($object->title); } print '
'; if ($action == 'edit') { print ''; } print $langs->trans("UrlOrLink"); if ($action == 'edit') { print ''; } print ''; if ($action == 'edit') { print 'url).'">'; } else { print 'target ? ' target="_blank" rel="noopener noreferrer"' : '').'>'; print img_picto('', 'globe', 'class="paddingright"'); print $object->url; print ''; } print '
'.$langs->trans("BehaviourOnClick").''; if ($action == 'edit') { $liste = array(1=>$langs->trans("OpenANewWindow"), 0=>$langs->trans("ReplaceWindow")); print $form->selectarray('target', $liste, GETPOSTISSET("target") ? GETPOST("target") : $object->target); } else { if ($object->target == 0) { print $langs->trans("ReplaceWindow"); } if ($object->target == 1) { print $langs->trans("OpenANewWindow"); } } print '
'.$langs->trans("Visibility").''; if ($action == 'edit' && $user->admin) { print img_picto('', 'user', 'class="pictofixedwidth"'); print $form->select_dolusers(GETPOSTISSET('userid') ? GETPOST('userid', 'int') : ($object->fk_user ? $object->fk_user : ''), 'userid', 1, '', 0, '', '', 0, 0, 0, '', 0, '', 'maxwidth300 widthcentpercentminusx'); } else { if ($object->fk_user > 0) { $fuser = new User($db); $fuser->fetch($object->fk_user); print $fuser->getNomUrl(-1); } else { print ''.$langs->trans("Everybody").''; } } print '
'.$langs->trans("Position").''; if ($action == 'edit') { print 'position).'">'; } else { print $object->position; } print '
'.$langs->trans("DateCreation").''.dol_print_date($object->datec, 'dayhour').'
'; print '
'; print dol_get_fiche_end(); if ($action == 'edit') { print $form->buttonsSaveCancel(); print '
'; } // Buttons print "
\n"; // Edit if ($permissiontoadd && $action != 'edit') { print ''.$langs->trans("Edit").''."\n"; } // Remove if ($permissiontodelete && $action != 'edit') { print ''.$langs->trans("Delete").''."\n"; } print '
'; } // End of page llxFooter(); $db->close();