* Copyright (C) ---Put here your own copyright and developer email--- * * 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 dev/skeletons/skeleton_page.php * \ingroup mymodule othermodule1 othermodule2 * \brief This file is an example of a php page * Put here some comments */ //if (! defined('NOREQUIREUSER')) define('NOREQUIREUSER','1'); //if (! defined('NOREQUIREDB')) define('NOREQUIREDB','1'); //if (! defined('NOREQUIRESOC')) define('NOREQUIRESOC','1'); //if (! defined('NOREQUIRETRAN')) define('NOREQUIRETRAN','1'); //if (! defined('NOCSRFCHECK')) define('NOCSRFCHECK','1'); // Do not check anti CSRF attack test //if (! defined('NOSTYLECHECK')) define('NOSTYLECHECK','1'); // Do not check style html tag into posted data //if (! defined('NOTOKENRENEWAL')) define('NOTOKENRENEWAL','1'); // Do not check anti POST attack test //if (! defined('NOREQUIREMENU')) define('NOREQUIREMENU','1'); // If there is no need to load and show top and left menu //if (! defined('NOREQUIREHTML')) define('NOREQUIREHTML','1'); // If we don't need to load the html.form.class.php //if (! defined('NOREQUIREAJAX')) define('NOREQUIREAJAX','1'); //if (! defined("NOLOGIN")) define("NOLOGIN",'1'); // If this page is public (can be called outside logged session) // Change this following line to use the correct relative path (../, ../../, etc) $res=0; if (! $res && file_exists("../main.inc.php")) $res=@include '../main.inc.php'; // to work if your module directory is into dolibarr root htdocs directory if (! $res && file_exists("../../main.inc.php")) $res=@include '../../main.inc.php'; // to work if your module directory is into a subdir of root htdocs directory if (! $res && file_exists("../../../dolibarr/htdocs/main.inc.php")) $res=@include '../../../dolibarr/htdocs/main.inc.php'; // Used on dev env only if (! $res && file_exists("../../../../dolibarr/htdocs/main.inc.php")) $res=@include '../../../../dolibarr/htdocs/main.inc.php'; // Used on dev env only if (! $res) die("Include of main fails"); // Change this following line to use the correct relative path from htdocs include_once(DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php'); dol_include_once('/mymodule/class/skeleton_class.class.php'); // Load traductions files requiredby by page $langs->load("companies"); $langs->load("other"); // Get parameters $id = GETPOST('id','int'); $action = GETPOST('action','alpha'); $backtopage = GETPOST('backtopage'); $myparam = GETPOST('myparam','alpha'); $search_field1=GETPOST("search_field1"); $search_field2=GETPOST("search_field2"); // Protection if external user if ($user->societe_id > 0) { //accessforbidden(); } if (empty($action) && empty($id) && empty($ref)) $action='list'; // Load object if id or ref is provided as parameter $object=new Skeleton_Class($db); if (($id > 0 || ! empty($ref)) && $action != 'add') { $result=$object->fetch($id,$ref); if ($result < 0) dol_print_error($db); } // Initialize technical object to manage hooks of modules. Note that conf->hooks_modules contains array array $hookmanager->initHooks(array('skeleton')); $extrafields = new ExtraFields($db); /******************************************************************* * ACTIONS * * Put here all code to do according to value of "action" parameter ********************************************************************/ $parameters=array(); $reshook=$hookmanager->executeHooks('doActions',$parameters); // Note that $action and $object may have been modified by some hooks if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); if (empty($reshook)) { // Action to add record if ($action == 'add') { if (GETPOST('cancel')) { $urltogo=$backtopage?$backtopage:dol_buildpath('/mymodule/list.php',1); header("Location: ".$urltogo); exit; } $error=0; /* object_prop_getpost_prop */ $object->prop1=GETPOST("field1"); $object->prop2=GETPOST("field2"); if (empty($object->ref)) { $error++; setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("Ref")),'errors'); } if (! $error) { $result=$object->create($user); if ($result > 0) { // Creation OK $urltogo=$backtopage?$backtopage:dol_buildpath('/mymodule/list.php',1); header("Location: ".$urltogo); exit; } { // Creation KO if (! empty($object->errors)) setEventMessages(null, $object->errors, 'errors'); else setEventMessages($object->error, null, 'errors'); $action='create'; } } else { $action='create'; } } // Cancel if ($action == 'update' && GETPOST('cancel')) $action='view'; // Action to update record if ($action == 'update' && ! GETPOST('cancel')) { $error=0; $object->prop1=GETPOST("field1"); $object->prop2=GETPOST("field2"); if (empty($object->ref)) { $error++; setEventMessages($langs->transnoentitiesnoconv("ErrorFieldRequired",$langs->transnoentitiesnoconv("Ref")),null,'errors'); } if (! $error) { $result=$object->update($user); if ($result > 0) { $action='view'; } else { // Creation KO if (! empty($object->errors)) setEventMessages(null, $object->errors, 'errors'); else setEventMessages($object->error, null, 'errors'); $action='edit'; } } else { $action='edit'; } } // Action to delete if ($action == 'confirm_delete') { $result=$object->delete($user); if ($result > 0) { // Delete OK setEventMessages("RecordDeleted", null, 'mesgs'); header("Location: ".dol_buildpath('/buildingmanagement/list.php',1)); exit; } else { if (! empty($object->errors)) setEventMessages(null,$object->errors,'errors'); else setEventMessages($object->error,null,'errors'); } } } /*************************************************** * VIEW * * Put here all code to build page ****************************************************/ llxHeader('','MyPageName',''); $form=new Form($db); // Put here content of your page // Example : Adding jquery code print ''; // Part to show a list if ($action == 'list' || (empty($id) && $action != 'create')) { // Put here content of your page print load_fiche_titre('PageTitle'); $sql = "SELECT"; $sql.= " t.rowid,"; $sql.= " t.field1,"; $sql.= " t.field2"; // Add fields for extrafields foreach ($extrafields->attribute_list as $key => $val) $sql.=",ef.".$key.' as options_'.$key; // Add fields from hooks $parameters=array(); $reshook=$hookmanager->executeHooks('printFieldListSelect',$parameters); // Note that $action and $object may have been modified by hook $sql.=$hookmanager->resPrint; $sql.= " FROM ".MAIN_DB_PREFIX."mytable as t"; $sql.= " WHERE 1 = 1"; if ($search_field1) $sql.= natural_search("field1",$search_field1); if ($search_field2) $sql.= natural_search("field2",$search_field2); // Add where from hooks $parameters=array(); $reshook=$hookmanager->executeHooks('printFieldListWhere',$parameters); // Note that $action and $object may have been modified by hook $sql.=$hookmanager->resPrint; // Count total nb of records $nbtotalofrecords = 0; if (empty($conf->global->MAIN_DISABLE_FULL_SCANLIST)) { $result = $db->query($sql); $nbtotalofrecords = $db->num_rows($result); } $sql.= $db->order($sortfield, $sortorder); $sql.= $db->plimit($conf->liste_limit+1, $offset); dol_syslog($script_file, LOG_DEBUG); $resql=$db->query($sql); if ($resql) { $num = $db->num_rows($resql); $params=''; $params.= '&search_field1='.urlencode($search_field1); $params.= '&search_field2='.urlencode($search_field2); print_barre_liste($title, $page, $_SERVER["PHP_SELF"],$params,$sortfield,$sortorder,'',$num,$nbtotalofrecords,'title_companies'); print '
'; if (! empty($moreforfilter)) { print '
'; print $moreforfilter; $parameters=array(); $reshook=$hookmanager->executeHooks('printFieldPreListTitle',$parameters); // Note that $action and $object may have been modified by hook print $hookmanager->resPrint; print '
'; } print ''."\n"; // Fields title print ''; print_liste_field_titre($langs->trans('field1'),$_SERVER['PHP_SELF'],'t.field1','',$param,'',$sortfield,$sortorder); print_liste_field_titre($langs->trans('field2'),$_SERVER['PHP_SELF'],'t.field2','',$param,'',$sortfield,$sortorder); $parameters=array(); $reshook=$hookmanager->executeHooks('printFieldListTitle',$parameters); // Note that $action and $object may have been modified by hook print $hookmanager->resPrint; print ''."\n"; // Fields title search print ''; print ''; print ''; $parameters=array(); $reshook=$hookmanager->executeHooks('printFieldListOption',$parameters); // Note that $action and $object may have been modified by hook print $hookmanager->resPrint; print ''."\n"; $i = 0; while ($i < $num) { $obj = $db->fetch_object($resql); if ($obj) { // You can use here results print ''; print ''; print ''; $parameters=array('obj' => $obj); $reshook=$hookmanager->executeHooks('printFieldListValue',$parameters); // Note that $action and $object may have been modified by hook print $hookmanager->resPrint; print ''; } $i++; } $db->free($resql); $parameters=array('sql' => $sql); $reshook=$hookmanager->executeHooks('printFieldListFooter',$parameters); // Note that $action and $object may have been modified by hook print $hookmanager->resPrint; print "
'.$obj->field1.''.$obj->field2.'
\n"; print "
\n"; } else { $error++; dol_print_error($db); } } // Part to create if ($action == 'create') { print_fiche_titre($langs->trans("NewSkeleton")); print '
'; print ''; print ''; dol_fiche_head(); print ''."\n"; print ''; print '
'.$langs->trans("Label").''; print ''; print '
'."\n"; dol_fiche_end(); print '
 
'; print '
'; } // Part to edit record if (($id || $ref) && $action == 'edit') { print '
'; dol_fiche_head(); print ''; print ''; print ''; dol_fiche_end(); print '
'; print '
'; } // Part to show record if ($id && (empty($action) || $action == 'view')) { dol_fiche_head(); dol_fiche_end(); // Buttons print '
'."\n"; $parameters=array(); $reshook=$hookmanager->executeHooks('addMoreActionsButtons',$parameters,$object,$action); // Note that $action and $object may have been modified by hook if ($reshook < 0) setEventMessages($hookmanager->error, $hookmanager->errors, 'errors'); if (empty($reshook)) { if ($user->rights->mymodule->write) { print ''."\n"; } if ($user->rights->mymodule->delete) { if ($conf->use_javascript_ajax && empty($conf->dol_use_jmobile)) // We can't use preloaded confirm form with jmobile { print '
'.$langs->trans('Delete').'
'."\n"; } else { print ''."\n"; } } } print '
'."\n"; // Example 2 : Adding links to objects //$somethingshown=$form->showLinkedObjectBlock($object); //$linktoelem = $form->showLinkToObjectBlock($object); //if ($linktoelem) print '
'.$linktoelem; } // End of page llxFooter(); $db->close();