From 2fb143f522fe62c9f032bdc01655628405385c7a Mon Sep 17 00:00:00 2001 From: "vincent@cubedesigners.com" Date: Thu, 10 Feb 2011 10:11:39 +0000 Subject: [PATCH] --- inc/commons/class.common.url.php | 4 +- inc/ws/Controlleur/_common.php | 1 + inc/ws/Controlleur/class.ws.ajax.php | 6 +- inc/ws/Controlleur/class.ws.url.php | 950 ------------------ inc/ws/Controlleur/url/_common.php | 9 + inc/ws/Controlleur/url/class.ws.url.book.php | 440 ++++++++ .../Controlleur/url/class.ws.url.client.php | 209 ++++ .../Controlleur/url/class.ws.url.demande.php | 207 ++++ .../url/class.ws.url.traduction.php | 115 +++ inc/ws/DAO/class.ws.dao.demande.php | 15 +- 10 files changed, 998 insertions(+), 958 deletions(-) create mode 100644 inc/ws/Controlleur/url/_common.php create mode 100644 inc/ws/Controlleur/url/class.ws.url.book.php create mode 100644 inc/ws/Controlleur/url/class.ws.url.client.php create mode 100644 inc/ws/Controlleur/url/class.ws.url.demande.php create mode 100644 inc/ws/Controlleur/url/class.ws.url.traduction.php diff --git a/inc/commons/class.common.url.php b/inc/commons/class.common.url.php index d4330f27c..4379c058b 100644 --- a/inc/commons/class.common.url.php +++ b/inc/commons/class.common.url.php @@ -3,6 +3,8 @@ class commonUrl { public static function hub($args) { global $core; + global $urlClasses; + $args = cubePage::getArgs($args); // Si l'utilisateur n'est pas connecté, on affiche le formulaire // de login @@ -28,7 +30,7 @@ class commonUrl { $f = $args[0]; - $classes = array(MODE . 'Url', 'commonUrl'); + $classes = array_merge(array(MODE . 'Url', 'commonUrl'),array_keys($urlClasses)); echo commonPage::header($args); diff --git a/inc/ws/Controlleur/_common.php b/inc/ws/Controlleur/_common.php index 551049511..e0e838ecc 100644 --- a/inc/ws/Controlleur/_common.php +++ b/inc/ws/Controlleur/_common.php @@ -1,5 +1,6 @@ reinitDemande($demande_id); - } else { + } elseif ($reponse == '1') { $dao->accepteDemande($demande_id, $revendeur_id); + } elseif ($reponse == '-1') { + $dao->setStatus($demande_id, 1); } - $x->addAlert(__('Votre choix a bien été prise en compte.')); if (!isset($args[4])) { + $x->addAlert(__('Votre choix a bien été prise en compte.')); $x->addRedirection(SITE_PATH); } else { $x->addContent('listeDemandes' , wsUrl::listeDemandes()); diff --git a/inc/ws/Controlleur/class.ws.url.php b/inc/ws/Controlleur/class.ws.url.php index 5b4ea8db8..2eedb13b0 100644 --- a/inc/ws/Controlleur/class.ws.url.php +++ b/inc/ws/Controlleur/class.ws.url.php @@ -1,559 +1,11 @@ user->getSettings('books'); - - $shortcuts = array(); - if (wsDroits::creation()) { - $shortcuts[] = '' . $core->typo->Ajouter(__('Créer une nouvelle publication')) . ''; - } - - $filtres = array(); - if (wsDroits::revendeur(false)) { - $filtres[] = new commonFiltre(__('Status'), 'status_book', $settings['filtres']); - } - $filtres[] = new commonFiltre(__('Année'), 'annee_book', $settings['filtres']); - $res = commonPage::barre($filtres , 'filtreBooks', 'books', $shortcuts); - $res .= commonPage::tMain(null, true); - $res .= commonPage::bh(); - $res .= '
'; - $res .= self::listeBooks(); - $res .= '
'; - $res .= commonPage::bf(); - $res .= commonPage::bMain(); - return $res; - } - - public static function listeBooks($dashboard = null, $settings = null) - { - global $core; - cubePage::truePopup(); - cubePage::autocomplete(); - cubePage::contextMenu(); - - $droits = wsDroits::getDroits(); - - commonDroits::min(1); - $settings = is_null($settings)?$core->user->getSettings('books'):$settings; - $change = is_null($dashboard)?'Books':'Dashboard/' . $dashboard; - $dao = new wsDAOBook($core->con); - $context_download_id = is_null($dashboard)?'contextDownloadBook':'contextDashboard_Download' . $dashboard; - $context_status_id = is_null($dashboard)?'contextStatusBook':'contextDashboard_Status' . $dashboard; - - if (isset($settings['search']) && !is_null($settings['search'])) { - $dao->setSearch($settings['search']); - } - $dao->setFiltres($settings['filtres']); - $liste = $dao->getListe($settings['orderby'], $settings['sens'], $settings['limit'], $core->user); - - $res = self::contextBookDownload($context_download_id); - $res = self::contextBookStatus($context_status_id); - - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - if ($droits->revendeur) { - $res .= ''; - } else { - $res .= ''; - } - if ($droits->admin) { - $res .= ''; - } - if ($droits->revendeur) { - $res .= ''; - } - $res .= str_repeat('', $droits->creation?5:4); - $res .= ''; - $i = 0; - - $btVoir = cubeMedia::cssRollover($core->typo->Voir('voir', '', false)); - $btEdit = cubeMedia::cssRollover($core->typo->Editer('éditer', '', false)); - $btStats = cubeMedia::cssRollover($core->typo->Stats('stats', '', false)); - $btDownload = cubeMedia::cssRollover($core->typo->BookTelecharger('télécharger', '', false)); - if ($droits->creation) { - $btDel = cubeMedia::cssRollover($core->typo->Supprimer('suppr.', '', false)); - } - - foreach($liste as $id => $book) { - $odd = cubeMath::isOdd($i)?' class="odd"':''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - - if ($droits->revendeur) { - $p = str_replace(" (", '
', $book->proprietaire); - $p = trim($p, ')'); - $res .= ''; - } else { - $res .= ''; - } - if ($droits->admin) { - $res .= ''; - } - if ($droits->revendeur) { - if ($droits->admin || $book->status <= 1) { - $p = ''; - if (!is_null($book->projet)) { - $p = ' ' . cubeMedia::silk('arrow_right.png') . ''; - } - - $res .= ''; - } else if ($book->status > 1) { - $res .= ''; - } - } - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - if ($droits->creation) { - $res .= ''; - } - $res .= ''; - $i++; - } - if (!isset($settings['search']) || is_null($settings['search'])) { - $odd = cubeMath::isOdd($i)?' class="odd"':''; - $res .= ''; - } - $res .= '
' . commonUrl::orderby('#', 'book_id', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Titre de la publication'), 'nom', $settings, 'sort' . $change) . '' . commonUrl::orderby(__(''), 'lang', $settings, 'sort' . $change) . '' . __('Pages') . '' . commonUrl::orderby(__('Proprietaire'), 'proprietaire_nom', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Proprietaire'), 'proprietaire_utilisateur', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Facturation'), 'facturable', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Status'), 'status', $settings, 'sort' . $change) . '
' . $book->book_id . '' . $book->nom . '' . mb_strtoupper($book->lang) . '' . $book->parametres->pages . '' . $p . '' . $book->proprietaire_utilisateur . '' . $book->facturable . '' . $core->books_status[$book->status] . '' . $p . '' . $core->books_status[1] . '' . $btVoir . '' . $btEdit . '' . $btStats . '' . $btDownload . '' . $btDel . '
'; - $res .= commonPage::pager($settings['page'], $dao->count($core->user) , $settings['par_page'], 'page' . $change . '/%d'); - $res .= commonUrl::formParPage('parPage' . $change, $settings['par_page'], __('publications'), false); - $res .= '
'; - return $res; - } - - public static function contextBookDownload($id) - { - global $core; - - $versions = array(); - $versions['html'] = array('title' => __('Version online'), 'icon' => cubeMedia::silk('page_white_world.png')); - $versions['win-exe'] = array('title' => __('Version offline') . ' - ' . __('Executable Windows'), 'icon' => cubeMedia::silk('application_view_tile.png')); - $versions['win-ins'] = array('title' => __('Version offline') . ' - ' . __('Installeur Auto-executable Windows'), 'icon' => cubeMedia::silk('application_view_tile.png')); - $versions['mac-exe'] = array('title' => __('Version offline') . ' - ' . __('Exécutable Mac OS X'), 'icon' => cubeMedia::image(IMG . '/macos.png')); - $versions['win-cd'] = array('title' => __('Version offline') . ' - ' . __('CD-ROM') . ' / ' . __('Clé USB'), 'icon' => cubeMedia::silk('cd.png')); - - $res = '
'; - $res .= '
'; - return $res; - } - - public static function contextBookStatus($id) - { - global $core; - - if (wsDroits::admin()) { - $status = $core->books_status; - $status[2] = __('Facturé (associé à un projet)'); - } else { - $status = array(); - $status[-1] = $core->books_status[-1]; - $status[0] = $core->books_status[0]; - } - - $res = '
'; - $res .= '
'; - return $res; - } - - public static function traductions($args) - { - global $core; - - commonDroits::min(5); - - if (count($args) < 2) { - $args[1] = 'fr'; - } - - $allLangs = cubeLang::getCodes($core->user->lang); - $existingLangs = array(); - - $dao = new wsDAOLang($core->con); - $langs = $dao->selectAll(); - foreach($langs as $lang) { - if (!isset($allLangs[$lang->lang_id])) { - continue; - } - $existingLangs[$lang->lang_id] = $allLangs[$lang->lang_id]; - - unset($allLangs[$lang->lang_id]); - } - - $langs = array(__('Langues configurées') => array_flip($existingLangs), __('Autres langues') => array_flip($allLangs)); - - $res = commonPage::barre(); - $res .= commonPage::tMain(null, false); - - $res .= commonPage::bh(); - $res .= '
'; - $res .= ''; - $res .= ''; - $res .= '
' . __('Sélectionnez la langue à configurer') . ' : ' . form::combo('lang', $langs, $args[1]) . '
'; - $res .= '
'; - $res .= commonPage::bf(); - - $res .= '
'; - $res .= self::formLang($args[1]); - $res .= '
'; - $res .= commonPage::bMain(true); - - return $res; - } - - public static function formLang($lang_id) - { - commonDroits::min(5); - global $core; - $dao = new wsDAOLang($core->con); - $lang = $dao->selectById($lang_id); - - $res = '
'; - - $res .= commonPage::bh(); - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= '
' . __('Police de caractères') . ' : ' . form::hidden('lang', $lang_id) . form::combo('font', self::getFonts(), $lang->font) . '
' . __('Jeux de caractères') . ' : ' . form::combo('charset', self::getCharsets(), $lang->charset) . '
' . __("Langue de l'installeur") . ' : ' . form::combo('nsis', self::getNSISLangs(), $lang->nsis) . '
' . $core->typo->Ajouter('Valider') . '
'; - $res .= commonPage::bf(); - - $res .= commonPage::bh(); - $res .= cubeLang::translationForm(PLAYER_SOURCES, $lang_id , null, 'liste', array(), '' . $core->typo->Ajouter(__('Enregistrer')) . '', $lang->traductions); - $res .= commonPage::bf(); - $res .= '
'; - return $res; - } - - public static function getFonts() - { - $formats = array('ttf', 'otf', 'TTF', 'OTF'); - - $dr = opendir(FONT_PATH); - $fonts = array(); - while ($file = readdir($dr)) { - if ($file == '.' || $file == '..' || !in_array(files::getExtension($file), $formats)) { - continue; - } - $fonts[$file] = $file; - } - return $fonts; - } - - protected static function getCharsets() - { - $sets = cubeFlexFontAsset::getSets(); - $res = array(); - foreach($sets as $k => $v) { - $res[$k] = $k; - } - return $res; - } - - protected static function getNSISLangs() - { - $res = array(); - $dir = WS_FILES . '/nsislangs'; - $dr = opendir($dir); - while ($file = readdir($dr)) { - if ($file == '.' || $file == '..') { - continue; - } - $e = explode('.', $file); - $res[$e[0]] = $e[0]; - } - - ksort($res); - return $res; - } - - public static function editor($args) - { - commonDroits::min(1); - - global $core; - - $args = cubePage::getArgs($args); - $book_id = $args[0]; - - self::checkDocumentVersionOfBook($book_id); - - if ($book_id == 'new') { - $dao = new wsDAOBook($core->con); - $book = $dao->creeEmpty($core->user->utilisateur_id, $core->user->lang); - http::redirect(SITE_PATH . 'editor/' . $book->book_id); - } - - $res = ''; - $res .= '' . __('Edition de la publication') . ' #' . $args[0] . ''; - $res .= ''; - $res .= ''; - $res .= self::editComposition($args); - $res .= ''; - $res .= ''; - echo $res; - } - - public static function editComposition($args) - { - $fv = array(session_name() => session_id(), - 'book_id' => $args[0]); - $res = cubeMedia::flash2(WEBROOT . '/swf/composer.swf?junk=' . TIME, '100%', '100%', $fv, 'composerSwf', 'swfPanel', 10, '#d2d3c7', '', 'false', 'noscale', 'normal', array(), false, true, true); - return $res; - } - - public static function stats($args) - { - $bid = (isset($args[1]))?$args[1]:null; - $annee = (isset($args[2]))?$args[2]:null; - $mois = (isset($args[3]))?$args[3]:null; - return wsStats::display($bid, $annee, $mois); - } - - public static function viewerp($args) - { - commonDroits::min(5); - - $args = cubePage::getArgs($args); - - $e = explode('_', $args[0]); - if (count($e) == 2 || $e[2] < TIME-10) { - $e[2] = TIME; - http::redirect(SITE_PATH . 'viewerp/' . implode('_', $e) . '/'); - exit; - } - - $book_id = $e[0]; - - self::checkDocumentVersionOfBook($book_id); - - echo self::commonViewer($book_id, $e[1]); - } - - public static function vieweru($args) - { - commonDroits::min(5); - - $args = cubePage::getArgs($args); - - $e = explode('_', $args[0]); - if (count($e) == 2 || $e[2] < TIME-10) { - $e[2] = TIME; - http::redirect(SITE_PATH . 'vieweru/' . implode('_', $e) . '/'); - exit; - } - - $book_id = $e[0]; - - self::checkDocumentVersionOfBook($book_id); - - echo self::commonViewer($book_id, $e[1]); - } - - public static function viewer($args) - { - $args = cubePage::getArgs($args); - - $e = explode('_', $args[0]); - if (count($e) == 2 || $e[2] < TIME-10) { - $e[2] = TIME; - http::redirect(SITE_PATH . 'viewer/' . implode('_', $e) . '/'); - exit; - } - - $book_id = $e[0]; - - self::checkDocumentVersionOfBook($book_id); - wsSecureSWF::checkProtectedSWF(); - - echo self::commonViewer($book_id, $e[1]); - } - - public static function commonViewer($book_id, $hash) - { - if (!defined('MINIMIZE_JS')) { - define('MINIMIZE_JS', false); - } - if (!defined('MINIMIZE_CSS')) { - define('MINIMIZE_CSS', false); - } - if (!defined('JQUERY')) { - define('JQUERY', false); - } - - global $core; - global $css; - global $js; - global $standard; - global $meta; - global $jsvar; - - $dao = new wsDAOBook($core->con); - - $book = $dao->selectById($book_id); - if ($book->hash != $hash) { - commonDroits::error(); - } - - if (!$dao->isUpToDate($book_id)) { - $dao->compile($book_id); - $dao->touchCompile($book_id); - } - - $daoTheme = new wsDAOTheme($core->con); - $theme = $daoTheme->getThemeOfBook($book_id, false); - - $webcompile = WEBROOT . '/fluidbook/compile/'; - - $standard = 'XHTML 1.0 Transitional'; - $css = $js = array(); - $css[] = $webcompile . 'style.css'; - $fv = array(); - - $res = ''; - $res .= ''; - $res .= '' . $book->parametres->title . ''; - // Entêtes Facebook - if ($book->parametres->facebook) { - $meta['og:title'] = ($book->parametres->facebook_title == '')?$book->parametres->title:$book->parametres->facebook_title; - if ($book->parametres->facebook_description != '') { - $meta['og:description'] = $book->parametres->facebook_description; - } - $meta['og:image'] = 'http://dev.ws.fluidbook.com/services/facebook_thumbnail?id=' . $book->book_id ; - } - - $res .= ''; - $res .= ''; - $res .= cubeMedia::flash2('index.swf', '100%', '100%', $fv, 'fluidbook', '', 10, '#' . $theme->parametres->loadingBackColor, '', 'true', 'noscale', 'gpu', array('allowScriptAccess' => 'always')); - $js = array($webcompile . 'fluidbook.js'); - $jsvar = array(); - - $gacodes = array(GA); - if ($book->parametres->googleAnalytics != '') { - $gacodes[] = $book->parametres->googleAnalytics; - } - $res .= cubePage::googleAnalytics($gacodes, false); - $res .= ''; - $res .= ''; - - return $res; - } - public static function statsxls($args) { $bid = (isset($args[1]))?$args[1]:null; wsStats::exportXLS($bid); } - public static function chooseExistingBook() - { - wsDroits::creation(true); - $res = '

' . __("Si votre nouvelle publication a des paramètres en commun avec une publication existante, veuillez rechercher cette publication afin d'attribuer par défaut à votre nouvelle publication les paramètres de l'existante") . '

'; - $res .= '' . __('Rechercher une publication') . ' : ' . form::field('book_nom', 64, 1024) . form::hidden('book', '') . ''; - // $res .= '
'; - $res .= '' . __('Indiquez le titre de votre nouvelle publication') . '' . form::field('title', 64, 1024) . ''; - return $res; - } - - public static function changeBookProprietaire($book_id) - { - global $core; - commonDroits::min(3); - - $dao = new wsDAOBook($core->con); - $book = $dao->selectById($book_id); - - $res = '' . __('Propriétaire actuel') . ' : ' . $book->proprietaire . ''; - $res .= '' . __('Rechercher un utilisateur') . ' : ' . form::field('book_proprietaire', 64, 1024) . form::hidden('proprietaire', '') . ''; - return $res; - } - - public static function chooseBookProject($book_id) - { - global $core; - - wsDroits::admin(true); - - $dao = new wsDAOBook($core->con); - $book = $dao->selectById($book_id); - - $projects = array("--" => '0'); - $r = $core->con->select('SELECT * FROM projets WHERE client IN(SELECT entreprise FROM utilisateurs WHERE utilisateur_id IN( SELECT facturable_id FROM ws_users_tree WHERE utilisateur_id IN (SELECT utilisateur_id FROM utilisateurs WHERE entreprise=\'' . $core->con->escape($book->proprietaire_id) . '\'))) ORDER BY projet_id DESC'); - while ($r->fetch()) { - $projects[$r->projet_id . ' - ' . $r->nom] = $r->projet_id; - } - - $res = '' . __('Choisir un projet') . ' : ' . form::hidden('book_id', $book_id) . form::combo('book_project', $projects, $book->projet) . ''; - $res .= '' . __('ou créer un nouveau projet') . ' : ' . form::field('new_book_project_nom', 64, 1024, $book->nom) . ''; - return $res; - } - - public static function chooseBookTache($book_id, $projet_id) - { - global $core; - wsDroits::admin(true); - - $dao = new wsDAOBook($core->con); - $book = $dao->selectById($book_id); - - $taches = array("--" => '0'); - $r = $core->con->select('SELECT * FROM taches WHERE projet=\'' . $core->con->escape($projet_id) . '\' AND categorie=8'); - while ($r->fetch()) { - $taches[$r->nom] = $r->tache_id; - } - - $res = ''; - - if ($r->count() > 0) { - $res .= '' . __('Choisir une tâche') . ' : ' . form::hidden('book_id', $book_id) . form::hidden('projet_id', $projet_id) . form::combo('tache', $taches) . ''; - $res .= '' . __('ou créer une nouvelle tâche') . ' : ' . form::field('nom', 32, 1024, 'Fluidbook #' . $book->book_id . ' : ' . $book->nom) . ' ' . __('ayant le budget suivant') . ' ' . form::field('budget', 6, 6) . ''; - } else { - $res .= '' . __('Créer une tâche') . ' : ' - . form::hidden('book_id', $book_id) - . form::hidden('projet_id', $projet_id) - . form::hidden('tache', '0') - . form::field('nom', 32, 1024, 'Fluidbook #' . $book->book_id . ' : ' . $book->nom) - . ' ' . __('ayant le budget suivant') - . ' ' . form::field('budget', 6, 6) . ''; - } - - return $res; - } - - public static function valideDownload() - { - global $core; - - $res .= '' . __("Le téléchargement du fluidbook implique qu'il a été testé et définitivement validé.") . '
' . __("Si vous le téléchargez, il vous sera facturé selon les conditions stipulées dans votre contrat.") . ''; - $res .= ''; - - return $res; - } - public static function testAS($args) { global $core; @@ -658,408 +110,6 @@ html{height:100%}' . "\n"; } return $res; } - - public static function clients($args) - { - global $core; - cubePage::truePopup(); - cubePage::autoComplete(); - cubePage::emptyfield(); - commonDroits::min(3); - $settings = $core->user->getSettings('clients'); - - $shortcuts = array(); - $shortcuts[] = '' . $core->typo->Ajouter('Créer un nouveau client') . ''; - - $filtres = array(); - - $res = commonPage::barre($filtres, 'filtreClients', 'clients', $shortcuts); - $res .= commonPage::tMain(); - $res .= commonPage::bh(); - $res .= '
'; - $res .= self::listeClients(); - $res .= '
'; - $res .= commonPage::bf(); - $res .= commonPage::bMain(); - return $res; - } - - public static function listeClients($dashboard = null, $settings = null) - { - global $core; - commonDroits::min(3); - $settings = is_null($settings)?$core->user->getSettings('clients'):$settings; - $change = is_null($dashboard)?'Client':'Dashboard/' . $dashboard; - $dao = new commonDAOEntreprise($core->con); - if (isset($settings['search']) && !is_null($settings['search'])) { - $dao->setSearch($settings['search']); - } - $dao->setFiltres($settings['filtres']); - $liste = $dao->getListe($settings['orderby'], $settings['sens'], $settings['limit'], $core->user); - - $res = ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $i = 0; - foreach($liste as $id => $client) { - if (!is_array($client->contacts)) { - continue; - } - $odd = cubeMath::isOdd($i)?' class="odd"':''; - $res .= ''; - $res .= ''; - $res .= ''; - $contacts = array(); - - foreach($client->contacts as $c) { - $contacts[] = '' . $c->prenom . ' ' . $c->nom . ''; - } - - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $i++; - } - if (!isset($settings['search']) || is_null($settings['search'])) { - $odd = cubeMath::isOdd($i)?' class="odd"':''; - $res .= ''; - } - $res .= '
' . commonUrl::orderby('#', 'entreprise_id', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Raison sociale'), 'nom', $settings, 'sort' . $change) . '' . __('Contacts') . '
' . $client->entreprise_id . '' . $client->nom . '' . implode(', ', $contacts) . ''; - $res .= '' . cubeMedia::image(IMG . '/edit.png') . '
'; - $res .= commonPage::pager($settings['page'], $dao->count($core->user) , $settings['par_page'], 'page' . $change . '/%d'); - $res .= commonUrl::formParPage('parPage' . $change, $settings['par_page'], __('clients')); - $res .= '
'; - return $res; - } - - public static function formClient($entreprise_id = 'new') - { - global $core; - commonDroits::min(3); - $dao = new commonDAOEntreprise($core->con); - $daoUtilisateur = new commonDAOUtilisateur($core->con); - if ($entreprise_id == 'new') { - $client = $dao->cree(); - } else { - $client = $dao->selectById($entreprise_id); - } - - $res = '' . __('Numéro de client') . '' . form::hidden('entreprise_id', $client->entreprise_id) . '' . $client->entreprise_id . ''; - $res .= '' . __('Raison sociale') . '' . form::field('nom', 30, 128, $client->nom) . ''; - $res .= '' . __('Adresse') . '' . form::textarea('adresse', 40, 3, $client->adresse) . ''; - $res .= '' . __('Code postal') . '' . form::field('code_postal', 10, 20, $client->code_postal) . ''; - $res .= '' . __('Ville') . '' . form::field('ville', 30, 128, $client->ville) . ''; - $res .= '' . __('Pays') . '' . form::combo('pays', cubeCountry::getList(), $client->pays) . ''; - if (wsDroits::admin(false)) { - $res .= '' . __('Adresse de facturation') . '' . form::textarea('adresse_facturation', 40, 3, $client->adresse_facturation) . ''; - $res .= '' . __('Numéro de TVA intracommunautaire') . '' . form::field('tva_intra', 15, 13, $client->tva_intra) . ''; - } - // Bloc Fluidbook Workshop - if (wsDroits::admin(false)) { - $res .= '' . __('Fluidbook Workshop') . ''; - $res .= '' . __('Grade') . '' . form::combo('ws_grade', array_flip($core->ws_grades), $client->ws_grade) . ''; - if ($entreprise_id == 'new' || !$client->ws_admin) { - $class = 'empty-field'; - $default_id = ''; - $default = __('Entrez le nom du revendeur ou de l\'administrateur'); - } else { - $class = ''; - $default_id = $client->ws_admin; - $wsa = $daoUtilisateur->selectById($client->ws_admin, 'utilisateurs_entreprise'); - $default = $wsa->utilisateur_id . ' - ' . $wsa->rs . ' (' . $wsa->prenom . ' ' . $wsa->nom . ')'; - } - - $d = $dao->getWSDatas($entreprise_id); - - $res .= '' . __('Revendeur / Administrateur') . '' . form::field('ws_admin_nom', 60, 128, $default, $class) . form::hidden('ws_admin', $default_id) . ''; - if (!is_null($d)) { - $res .= '' . __('Entité facturable') . '' . $d->facturable->prenom . ' ' . $d->facturable->nom . ' (' . $d->facturable->rs . ')'; - $res .= '' . __('Administrateur responsable') . '' . $d->administrateur->prenom . ' ' . $d->administrateur->nom . ' (' . $d->administrateur->rs . ')'; - } - - $daoSignature = new wsDAOSignature($core->con); - $signaturesList = $daoSignature->selectAll(); - - $signatures = array(); - foreach($signaturesList as $s) { - $signatures[$s->nom] = $s->signature_id; - } - - $res .= '' . __('Signatures Fluidbook') . '' . cubeForm::checkMultiple('ws_signatures', $signatures, 5, explode(',', $client->ws_signatures)) . ''; - } - if ($entreprise_id == 'new') { - $daoContact = new commonDAOClient($core->con); - $contact = $daoContact->cree(); - $res .= '' . __('Contact') . ''; - $res .= '' . __('Adresse e-mail') . '' . form::field(array('contact[email]'), 30, 128, $contact->email) . ''; - $res .= '' . __('Mot de passe') . '' . form::field(array('contact[password]'), 30, 128, $contact->password) . ''; - $res .= '' . __('Prénom') . '' . form::field(array('contact[prenom]'), 30, 128, $contact->prenom) . ''; - $res .= '' . __('Nom') . '' . form::field(array('contact[nom]'), 30, 128, $contact->nom) . ''; - $res .= '' . __('Téléphone') . '' . form::field(array('contact[telephone]'), 20, 128, $contact->telephone) . ''; - $res .= '' . __('Mobile') . '' . form::field(array('contact[mobile]'), 20, 128, $contact->mobile) . ''; - $res .= '' . __('Fax') . '' . form::field(array('contact[fax]'), 20, 128, $contact->fax) . ''; - $res .= '' . __('Langue') . '' . form::combo(array('contact[lang]'), cubeLang::getAvailableLangs(true), $contact->lang) . ''; - } - return $res; - } - - public static function listeContacts($entreprise_id) - { - global $core; - commonDroits::min(3); - $dao = new commonDAOEntreprise($core->con); - $contacts = $dao->getContacts($entreprise_id); - - $res = ''; - $res .= ''; - $i = 0; - foreach($contacts as $contact) { - $odd = cubeMath::isOdd($i)?' class="odd"':''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $i++; - } - $res .= '
' . $core->typo->Contact('Ajouter un contact') . '
' . trim($contact->prenom . ' ' . $contact->nom) . '' . $contact->email . 'FTPSe connecter comme ...' . cubeMedia::image(IMG . '/edit.png') . '
'; - return $res; - } - - public static function formContact($client_id = 'new', $entreprise_id = null) - { - global $core; - commonDroits::min(3); - - $dao = new commonDAOClient($core->con); - if ($client_id == 'new') { - $client = $dao->creeFromEntreprise($entreprise_id); - } else { - $client = $dao->selectById($client_id); - } - - $res = '' . __('Numéro de client') . '' . form::hidden('grade', 0) . form::hidden('entreprise', $client->entreprise) . form::hidden('utilisateur_id', $client->utilisateur_id) . '' . $client->utilisateur_id . ''; - $res .= '' . __('Adresse e-mail') . '' . form::field('email', 30, 128, $client->email) . ''; - $res .= '' . __('Mot de passe') . '' . form::field('password', 30, 128, $client->password) . ''; - $res .= '' . __('Prénom du contact') . '' . form::field('prenom', 30, 128, $client->prenom) . ''; - $res .= '' . __('Nom du contact') . '' . form::field('nom', 30, 128, $client->nom) . ''; - $res .= '' . __('Adresse') . '' . form::textarea('adresse', 40, 3, $client->adresse) . ''; - $res .= '' . __('Code postal') . '' . form::field('code_postal', 10, 20, $client->code_postal) . ''; - $res .= '' . __('Ville') . '' . form::field('ville', 30, 128, $client->ville) . ''; - $res .= '' . __('Pays') . '' . form::combo('pays', cubeCountry::getList(), $client->pays) . ''; - $res .= '' . __('Téléphone') . '' . form::field('telephone', 20, 128, $client->telephone) . ''; - $res .= '' . __('Mobile') . '' . form::field('mobile', 20, 128, $client->mobile) . ''; - $res .= '' . __('Fax') . '' . form::field('fax', 20, 128, $client->fax) . ''; - $res .= '' . __('Langue') . '' . form::combo('lang', cubeLang::getAvailableLangs(true), $client->lang) . ''; - if ($client_id != 'new') { - $res .= '' . cubeMedia::spacer(10, 10) . ''; - $res .= '' . __('FTP') . ''; - $res .= '' . __('Se connecter comme ...') . ''; - $res .= '' . __("Paramètres de connexion au Fluidbook Workshop") . '' . __('Adresse') . ' : http://' . $_SERVER['HTTP_HOST'] . '/
' . __("Nom d'utilisateur") . ' : ' . $client->email . '
' . __('Mot de passe') . ' : ' . $client->password . ''; - $res .= '' . cubeMedia::spacer(10, 10) . ''; - } - return $res; - } - - public static function demandes() - { - global $core; - cubePage::truePopup(); - cubePage::autoComplete(); - cubePage::emptyfield(); - commonDroits::min(5); - $settings = $core->user->getSettings('demandes'); - - $shortcuts = array(); - - $filtres = array(); - $filtres[] = new commonFiltre(__('Statut'), 'status_demande', $settings['filtres']); - $filtres[] = new commonFiltre(__('Confiées à'), 'demande_moi', $settings['filtres']); - - $res = commonPage::barre($filtres, 'filtreDemandes', 'demandes', $shortcuts); - $res .= commonPage::tMain(); - $res .= commonPage::bh(); - $res .= '
'; - $res .= self::listeDemandes(); - $res .= '
'; - $res .= commonPage::bf(); - $res .= commonPage::bMain(); - return $res; - } - - public static function listeDemandes($dashboard = null, $settings = null) - { - global $core; - commonDroits::min(5); - $settings = is_null($settings)?$core->user->getSettings('demandes'):$settings; - $change = is_null($dashboard)?'Demandes':'Dashboard/' . $dashboard; - $dao = new wsDAODemande($core->con); - if (isset($settings['search']) && !is_null($settings['search'])) { - $dao->setSearch($settings['search']); - } - $dao->setFiltres($settings['filtres']); - $liste = $dao->getListe($settings['orderby'], $settings['sens'], $settings['limit'], $core->user); - - $res = ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $i = 0; - foreach($liste as $id => $demande) { - $odd = cubeMath::isOdd($i)?' class="odd"':''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $revendeur = $demande->revendeur == 0?'-':$demande->revendeur_nom; - $res .= ''; - $administrateur = $demande->administrateur == 0?'-':$demande->administrateur_nom; - $res .= ''; - // Affichage du status - // Si non traitée ou traitée, pas la possibilité de changer le status - if ($demande->status == 0 || $demande->status == 2) { - $res .= ''; - } else if ($demande->status == 1) { - if ($demande->revendeur == $core->user->utilisateur_id) { - $res .= ''; - } else { - $res .= ''; - } - } - // On ne peut éditer que si la facture est non traitée et qu'elle n'a pas commencé à être éditée par un autre administrateur - if (($demande->administrateur == 0 || $demande->administrateur == $core->user->utilisateur_id) && $demande->status == 0) { - $res .= ''; - } else { - $res .= ''; - } - // On n'affiche le bouton "Supprimer" que si la demande est non-traitée - if (($demande->administrateur == 0 || $demande->administrateur == $core->user->utilisateur_id) && $demande->status == 0) { - $res .= ''; - } else { - $res .= ''; - } - $res .= ''; - $i++; - } - if (!isset($settings['search']) || is_null($settings['search'])) { - $odd = cubeMath::isOdd($i)?' class="odd"':''; - $res .= ''; - } - $res .= '
' . commonUrl::orderby('#', 'demande_id', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Date') , 'date', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Type') , 'type', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Prospect') . '/' . __('Client'), 'utilisateur_nom', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Confiée à'), 'revendeur_nom', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Gérée par'), 'administrateur_nom', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Statut'), 'status', $settings, 'sort' . $change) . '
' . $demande->demande_id . '' . date(__('d/m/Y H:i'), $demande->date) . '' . $core->demandes_type[$demande->type] . '' . $demande->utilisateur_nom . '' . $revendeur . '' . $administrateur . '' . $core->demandes_status[$demande->status] . '' . __('Je me suis chargé de cette demande') . '' . $core->demandes_status[$demande->status] . ' (x)' . cubeMedia::image(IMG . '/edit.png') . '' . cubeMedia::image(IMG . '/delete.png') . '
'; - $res .= commonPage::pager($settings['page'], $dao->count($core->user) , $settings['par_page'], 'page' . $change . '/%d'); - $res .= commonUrl::formParPage('parPage' . $change, $settings['par_page'], __('demandes')); - $res .= '
'; - return $res; - } - - public static function formDemande($demande_id = 'new') - { - global $core; - commonDroits::min(5); - $dao = new wsDAODemande($core->con); - $daoUtilisateur = new commonDAOUtilisateur($core->con); - $demande = $dao->selectById($demande_id); - if ($demande->administrateur != 0 && $demande->administrateur != $core->user->utilisateur_id) { - $res = '

' . __("Cette demande est actuellement en cours d'édition par un autre administrateur") . '

'; - return $res; - } - if ($demande->status > 1) { - $res = '

' . __("Cette demande est actuellement en cours de traitement") . '

'; - return $res; - } - // On place la demande comme en cours d'édition - $dao->setAdministrateur($demande_id, $core->user->utilisateur_id); - // On vérifie que l'utilisateur n'est pas déjà géré par un revendeur - $demandeur = $daoUtilisateur->selectById($demande->utilisateur, 'utilisateurs_entreprise'); - $administrateurs = $daoUtilisateur->selectWSAdministrateursId(); - if (!is_null($demandeur->ws_admin) && !in_array($demandeur->ws_admin, $administrateurs)) { - // Si déjà géré par un revendeur - $revendeur = $daoUtilisateur->selectById($demandeur->ws_admin, 'utilisateurs_entreprise'); - $actions[__('Je confie la demande à ' . $revendeur->rs . ' (' . $revendeur->prenom . ' ' . $revendeur->nom . ')')] = $demandeur->ws_admin; - } else { - $liste = $daoUtilisateur->selectWSRevendeursFacturables(); - $revendeurs = array(); - foreach($liste as $revendeur) { - $revendeurs[$revendeur->rs . '(' . $revendeur->prenom . ' ' . $revendeur->nom . ')'] = $revendeur->utilisateur_id; - } - - $actions = array(__('Je vais me charger de cette demande') => $core->user->utilisateur_id); - $actions[' '] = array(); - $actions[__('Je confie la demande à') . ' : '] = $revendeurs; - } - - $res = '' . __('Numéro de demande') . '' . form::hidden('demande_id', $demande->demande_id) . '' . $demande->demande_id . ''; - $res .= '' . __('Date de la demande') . '' . date(__('d/m/Y H:i'), $demande->date) . ''; - $res .= '' . __('Emetteur de la demande') . '' . $demande->utilisateur_nom . ''; - $res .= '' . __('Nombre de pages') . '' . $demande->pages . ''; - $res .= '' . __('Nombre de liens') . '' . $demande->liens . ''; - $res .= '' . __('Nombre de langues') . '' . $demande->langues . ''; - $res .= '' . __('Détails') . '' . $demande->details . ''; - $res .= '' . __('Action') . '' . form::combo('revendeur', $actions) . ''; - $res .= ''; - - return $res; - } - - public static function reponseDemande($args) - { - global $core; - - commonDroits::min(3); - - $res = commonPage::barre(); - $res .= commonPage::tMain(null, false); - - $res .= commonPage::bh(); - - $demande_id = $args[1]; - $revendeur_id = $args[2]; - - $dao = new wsDAODemande($core->con); - $demande = $dao->selectById($demande_id); - if ($demande->revendeur != $revendeur_id || $demande->revendeur != $core->user->utilisateur_id) { - commonDroits::error(); - exit; - } - - $res = commonPage::barre(); - $res .= commonPage::tMain(); - $res .= commonPage::bh(); - $res .= '
'; - $res .= '

' . $core->typo->Titre(__('Prendre en charge une demande de devis')) . '

'; - $res .= '

'; - $res .= '

' . __('Si vous acceptez de traiter la demande suivante, veuillez cliquer sur le bouton "Accepter la demande" situé à droite de la description.'); - $res .= ' ' . __('Vous avez également la possibilité de décliner la demande en cliquant sur le bouton "Décliner la demande"') . "

"; - $res .= '

'; - - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= ''; - $res .= '
' . __("Détails de la demande") . '' . __('Votre action') . '
' . __('Numéro de demande') . '' . $demande->demande_id . '' . '' . cubeMedia::cssRollover($core->typo->BookTelecharger('Accepter la demande', '', false)) . '' . '
' . __('Date de la demande') . '' . date(__('d/m/Y H:i'), $demande->date) . '' . '' . cubeMedia::cssRollover($core->typo->Supprimer('Décliner la demande', '', false)) . '' . '
' . __('Client') . ' / ' . __('Prospect') . '' . $demande->utilisateur_nom . '
' . __('Nombre de pages') . '' . $demande->pages . '
' . __('Nombre de liens') . '' . $demande->liens . '
' . __('Nombre de langues') . '' . $demande->langues . '
' . __('Détails') . '' . $demande->details . '
'; - - $res .= '
'; - $res .= commonPage::bf(); - $res .= commonPage::bMain(); - return $res; - } } ?> \ No newline at end of file diff --git a/inc/ws/Controlleur/url/_common.php b/inc/ws/Controlleur/url/_common.php new file mode 100644 index 000000000..d8a3ff20f --- /dev/null +++ b/inc/ws/Controlleur/url/_common.php @@ -0,0 +1,9 @@ + \ No newline at end of file diff --git a/inc/ws/Controlleur/url/class.ws.url.book.php b/inc/ws/Controlleur/url/class.ws.url.book.php new file mode 100644 index 000000000..3af2514ea --- /dev/null +++ b/inc/ws/Controlleur/url/class.ws.url.book.php @@ -0,0 +1,440 @@ +user->getSettings('books'); + + $shortcuts = array(); + if (wsDroits::creation()) { + $shortcuts[] = '' . $core->typo->Ajouter(__('Créer une nouvelle publication')) . ''; + } + + $filtres = array(); + if (wsDroits::revendeur(false)) { + $filtres[] = new commonFiltre(__('Status'), 'status_book', $settings['filtres']); + } + $filtres[] = new commonFiltre(__('Année'), 'annee_book', $settings['filtres']); + $res = commonPage::barre($filtres , 'filtreBooks', 'books', $shortcuts); + $res .= commonPage::tMain(null, true); + $res .= commonPage::bh(); + $res .= '
'; + $res .= self::listeBooks(); + $res .= '
'; + $res .= commonPage::bf(); + $res .= commonPage::bMain(); + return $res; + } + + public static function listeBooks($dashboard = null, $settings = null) + { + global $core; + cubePage::truePopup(); + cubePage::autocomplete(); + cubePage::contextMenu(); + + $droits = wsDroits::getDroits(); + + commonDroits::min(1); + $settings = is_null($settings)?$core->user->getSettings('books'):$settings; + $change = is_null($dashboard)?'Books':'Dashboard/' . $dashboard; + $dao = new wsDAOBook($core->con); + $context_download_id = is_null($dashboard)?'contextDownloadBook':'contextDashboard_Download' . $dashboard; + $context_status_id = is_null($dashboard)?'contextStatusBook':'contextDashboard_Status' . $dashboard; + + if (isset($settings['search']) && !is_null($settings['search'])) { + $dao->setSearch($settings['search']); + } + $dao->setFiltres($settings['filtres']); + $liste = $dao->getListe($settings['orderby'], $settings['sens'], $settings['limit'], $core->user); + + $res = self::contextBookDownload($context_download_id); + $res = self::contextBookStatus($context_status_id); + + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + if ($droits->revendeur) { + $res .= ''; + } else { + $res .= ''; + } + if ($droits->admin) { + $res .= ''; + } + if ($droits->revendeur) { + $res .= ''; + } + $res .= str_repeat('', $droits->creation?5:4); + $res .= ''; + $i = 0; + + $btVoir = cubeMedia::cssRollover($core->typo->Voir('voir', '', false)); + $btEdit = cubeMedia::cssRollover($core->typo->Editer('éditer', '', false)); + $btStats = cubeMedia::cssRollover($core->typo->Stats('stats', '', false)); + $btDownload = cubeMedia::cssRollover($core->typo->BookTelecharger('télécharger', '', false)); + if ($droits->creation) { + $btDel = cubeMedia::cssRollover($core->typo->Supprimer('suppr.', '', false)); + } + + foreach($liste as $id => $book) { + $odd = cubeMath::isOdd($i)?' class="odd"':''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + + if ($droits->revendeur) { + $p = str_replace(" (", '
', $book->proprietaire); + $p = trim($p, ')'); + $res .= ''; + } else { + $res .= ''; + } + if ($droits->admin) { + $res .= ''; + } + if ($droits->revendeur) { + if ($droits->admin || $book->status <= 1) { + $p = ''; + if (!is_null($book->projet)) { + $p = ' ' . cubeMedia::silk('arrow_right.png') . ''; + } + + $res .= ''; + } else if ($book->status > 1) { + $res .= ''; + } + } + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + if ($droits->creation) { + $res .= ''; + } + $res .= ''; + $i++; + } + if (!isset($settings['search']) || is_null($settings['search'])) { + $odd = cubeMath::isOdd($i)?' class="odd"':''; + $res .= ''; + } + $res .= '
' . commonUrl::orderby('#', 'book_id', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Titre de la publication'), 'nom', $settings, 'sort' . $change) . '' . commonUrl::orderby(__(''), 'lang', $settings, 'sort' . $change) . '' . __('Pages') . '' . commonUrl::orderby(__('Proprietaire'), 'proprietaire_nom', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Proprietaire'), 'proprietaire_utilisateur', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Facturation'), 'facturable', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Status'), 'status', $settings, 'sort' . $change) . '
' . $book->book_id . '' . $book->nom . '' . mb_strtoupper($book->lang) . '' . $book->parametres->pages . '' . $p . '' . $book->proprietaire_utilisateur . '' . $book->facturable . '' . $core->books_status[$book->status] . '' . $p . '' . $core->books_status[1] . '' . $btVoir . '' . $btEdit . '' . $btStats . '' . $btDownload . '' . $btDel . '
'; + $res .= commonPage::pager($settings['page'], $dao->count($core->user) , $settings['par_page'], 'page' . $change . '/%d'); + $res .= commonUrl::formParPage('parPage' . $change, $settings['par_page'], __('publications'), false); + $res .= '
'; + return $res; + } + + public static function contextBookDownload($id) + { + global $core; + + $versions = array(); + $versions['html'] = array('title' => __('Version online'), 'icon' => cubeMedia::silk('page_white_world.png')); + $versions['win-exe'] = array('title' => __('Version offline') . ' - ' . __('Executable Windows'), 'icon' => cubeMedia::silk('application_view_tile.png')); + $versions['win-ins'] = array('title' => __('Version offline') . ' - ' . __('Installeur Auto-executable Windows'), 'icon' => cubeMedia::silk('application_view_tile.png')); + $versions['mac-exe'] = array('title' => __('Version offline') . ' - ' . __('Exécutable Mac OS X'), 'icon' => cubeMedia::image(IMG . '/macos.png')); + $versions['win-cd'] = array('title' => __('Version offline') . ' - ' . __('CD-ROM') . ' / ' . __('Clé USB'), 'icon' => cubeMedia::silk('cd.png')); + + $res = '
'; + $res .= '
'; + return $res; + } + + public static function contextBookStatus($id) + { + global $core; + + if (wsDroits::admin()) { + $status = $core->books_status; + $status[2] = __('Facturé (associé à un projet)'); + } else { + $status = array(); + $status[-1] = $core->books_status[-1]; + $status[0] = $core->books_status[0]; + } + + $res = '
'; + $res .= '
'; + return $res; + } + + public static function chooseExistingBook() + { + wsDroits::creation(true); + $res = '

' . __("Si votre nouvelle publication a des paramètres en commun avec une publication existante, veuillez rechercher cette publication afin d'attribuer par défaut à votre nouvelle publication les paramètres de l'existante") . '

'; + $res .= '' . __('Rechercher une publication') . ' : ' . form::field('book_nom', 64, 1024) . form::hidden('book', '') . ''; + // $res .= '
'; + $res .= '' . __('Indiquez le titre de votre nouvelle publication') . '' . form::field('title', 64, 1024) . ''; + return $res; + } + + public static function changeBookProprietaire($book_id) + { + global $core; + commonDroits::min(3); + + $dao = new wsDAOBook($core->con); + $book = $dao->selectById($book_id); + + $res = '' . __('Propriétaire actuel') . ' : ' . $book->proprietaire . ''; + $res .= '' . __('Rechercher un utilisateur') . ' : ' . form::field('book_proprietaire', 64, 1024) . form::hidden('proprietaire', '') . ''; + return $res; + } + + public static function chooseBookProject($book_id) + { + global $core; + + wsDroits::admin(true); + + $dao = new wsDAOBook($core->con); + $book = $dao->selectById($book_id); + + $projects = array("--" => '0'); + $r = $core->con->select('SELECT * FROM projets WHERE client IN(SELECT entreprise FROM utilisateurs WHERE utilisateur_id IN( SELECT facturable_id FROM ws_users_tree WHERE utilisateur_id IN (SELECT utilisateur_id FROM utilisateurs WHERE entreprise=\'' . $core->con->escape($book->proprietaire_id) . '\'))) ORDER BY projet_id DESC'); + while ($r->fetch()) { + $projects[$r->projet_id . ' - ' . $r->nom] = $r->projet_id; + } + + $res = '' . __('Choisir un projet') . ' : ' . form::hidden('book_id', $book_id) . form::combo('book_project', $projects, $book->projet) . ''; + $res .= '' . __('ou créer un nouveau projet') . ' : ' . form::field('new_book_project_nom', 64, 1024, $book->nom) . ''; + return $res; + } + + public static function chooseBookTache($book_id, $projet_id) + { + global $core; + wsDroits::admin(true); + + $dao = new wsDAOBook($core->con); + $book = $dao->selectById($book_id); + + $taches = array("--" => '0'); + $r = $core->con->select('SELECT * FROM taches WHERE projet=\'' . $core->con->escape($projet_id) . '\' AND categorie=8'); + while ($r->fetch()) { + $taches[$r->nom] = $r->tache_id; + } + + $res = ''; + + if ($r->count() > 0) { + $res .= '' . __('Choisir une tâche') . ' : ' . form::hidden('book_id', $book_id) . form::hidden('projet_id', $projet_id) . form::combo('tache', $taches) . ''; + $res .= '' . __('ou créer une nouvelle tâche') . ' : ' . form::field('nom', 32, 1024, 'Fluidbook #' . $book->book_id . ' : ' . $book->nom) . ' ' . __('ayant le budget suivant') . ' ' . form::field('budget', 6, 6) . ''; + } else { + $res .= '' . __('Créer une tâche') . ' : ' + . form::hidden('book_id', $book_id) + . form::hidden('projet_id', $projet_id) + . form::hidden('tache', '0') + . form::field('nom', 32, 1024, 'Fluidbook #' . $book->book_id . ' : ' . $book->nom) + . ' ' . __('ayant le budget suivant') + . ' ' . form::field('budget', 6, 6) . ''; + } + + return $res; + } + + public static function editor($args) + { + commonDroits::min(1); + + global $core; + + $args = cubePage::getArgs($args); + $book_id = $args[0]; + + self::checkDocumentVersionOfBook($book_id); + + if ($book_id == 'new') { + $dao = new wsDAOBook($core->con); + $book = $dao->creeEmpty($core->user->utilisateur_id, $core->user->lang); + http::redirect(SITE_PATH . 'editor/' . $book->book_id); + } + + $res = ''; + $res .= '' . __('Edition de la publication') . ' #' . $args[0] . ''; + $res .= ''; + $res .= ''; + $res .= self::editComposition($args); + $res .= ''; + $res .= ''; + echo $res; + } + + public static function editComposition($args) + { + $fv = array(session_name() => session_id(), + 'book_id' => $args[0]); + $res = cubeMedia::flash2(WEBROOT . '/swf/composer.swf?junk=' . TIME, '100%', '100%', $fv, 'composerSwf', 'swfPanel', 10, '#d2d3c7', '', 'false', 'noscale', 'normal', array(), false, true, true); + return $res; + } + + public static function stats($args) + { + $bid = (isset($args[1]))?$args[1]:null; + $annee = (isset($args[2]))?$args[2]:null; + $mois = (isset($args[3]))?$args[3]:null; + return wsStats::display($bid, $annee, $mois); + } + + public static function viewerp($args) + { + commonDroits::min(5); + + $args = cubePage::getArgs($args); + + $e = explode('_', $args[0]); + if (count($e) == 2 || $e[2] < TIME-10) { + $e[2] = TIME; + http::redirect(SITE_PATH . 'viewerp/' . implode('_', $e) . '/'); + exit; + } + + $book_id = $e[0]; + + self::checkDocumentVersionOfBook($book_id); + + echo self::commonViewer($book_id, $e[1]); + } + + public static function vieweru($args) + { + commonDroits::min(5); + + $args = cubePage::getArgs($args); + + $e = explode('_', $args[0]); + if (count($e) == 2 || $e[2] < TIME-10) { + $e[2] = TIME; + http::redirect(SITE_PATH . 'vieweru/' . implode('_', $e) . '/'); + exit; + } + + $book_id = $e[0]; + + self::checkDocumentVersionOfBook($book_id); + + echo self::commonViewer($book_id, $e[1]); + } + + public static function viewer($args) + { + $args = cubePage::getArgs($args); + + $e = explode('_', $args[0]); + if (count($e) == 2 || $e[2] < TIME-10) { + $e[2] = TIME; + http::redirect(SITE_PATH . 'viewer/' . implode('_', $e) . '/'); + exit; + } + + $book_id = $e[0]; + + self::checkDocumentVersionOfBook($book_id); + wsSecureSWF::checkProtectedSWF(); + + echo self::commonViewer($book_id, $e[1]); + } + + public static function commonViewer($book_id, $hash) + { + if (!defined('MINIMIZE_JS')) { + define('MINIMIZE_JS', false); + } + if (!defined('MINIMIZE_CSS')) { + define('MINIMIZE_CSS', false); + } + if (!defined('JQUERY')) { + define('JQUERY', false); + } + + global $core; + global $css; + global $js; + global $standard; + global $meta; + global $jsvar; + + $dao = new wsDAOBook($core->con); + + $book = $dao->selectById($book_id); + if ($book->hash != $hash) { + commonDroits::error(); + } + + if (!$dao->isUpToDate($book_id)) { + $dao->compile($book_id); + $dao->touchCompile($book_id); + } + + $daoTheme = new wsDAOTheme($core->con); + $theme = $daoTheme->getThemeOfBook($book_id, false); + + $webcompile = WEBROOT . '/fluidbook/compile/'; + + $standard = 'XHTML 1.0 Transitional'; + $css = $js = array(); + $css[] = $webcompile . 'style.css'; + $fv = array(); + + $res = ''; + $res .= ''; + $res .= '' . $book->parametres->title . ''; + // Entêtes Facebook + if ($book->parametres->facebook) { + $meta['og:title'] = ($book->parametres->facebook_title == '')?$book->parametres->title:$book->parametres->facebook_title; + if ($book->parametres->facebook_description != '') { + $meta['og:description'] = $book->parametres->facebook_description; + } + $meta['og:image'] = 'http://dev.ws.fluidbook.com/services/facebook_thumbnail?id=' . $book->book_id ; + } + + $res .= ''; + $res .= ''; + $res .= cubeMedia::flash2('index.swf', '100%', '100%', $fv, 'fluidbook', '', 10, '#' . $theme->parametres->loadingBackColor, '', 'true', 'noscale', 'gpu', array('allowScriptAccess' => 'always')); + $js = array($webcompile . 'fluidbook.js'); + $jsvar = array(); + + $gacodes = array(GA); + if ($book->parametres->googleAnalytics != '') { + $gacodes[] = $book->parametres->googleAnalytics; + } + $res .= cubePage::googleAnalytics($gacodes, false); + $res .= ''; + $res .= ''; + + return $res; + } + + public static function valideDownload() + { + global $core; + + $res .= '' . __("Le téléchargement du fluidbook implique qu'il a été testé et définitivement validé.") . '
' . __("Si vous le téléchargez, il vous sera facturé selon les conditions stipulées dans votre contrat.") . ''; + $res .= ''; + + return $res; + } +} + +?> \ No newline at end of file diff --git a/inc/ws/Controlleur/url/class.ws.url.client.php b/inc/ws/Controlleur/url/class.ws.url.client.php new file mode 100644 index 000000000..6fbba8776 --- /dev/null +++ b/inc/ws/Controlleur/url/class.ws.url.client.php @@ -0,0 +1,209 @@ +user->getSettings('clients'); + + $shortcuts = array(); + $shortcuts[] = '' . $core->typo->Ajouter('Créer un nouveau client') . ''; + + $filtres = array(); + + $res = commonPage::barre($filtres, 'filtreClients', 'clients', $shortcuts); + $res .= commonPage::tMain(); + $res .= commonPage::bh(); + $res .= '
'; + $res .= self::listeClients(); + $res .= '
'; + $res .= commonPage::bf(); + $res .= commonPage::bMain(); + return $res; + } + + public static function listeClients($dashboard = null, $settings = null) + { + global $core; + commonDroits::min(3); + $settings = is_null($settings)?$core->user->getSettings('clients'):$settings; + $change = is_null($dashboard)?'Client':'Dashboard/' . $dashboard; + $dao = new commonDAOEntreprise($core->con); + if (isset($settings['search']) && !is_null($settings['search'])) { + $dao->setSearch($settings['search']); + } + $dao->setFiltres($settings['filtres']); + $liste = $dao->getListe($settings['orderby'], $settings['sens'], $settings['limit'], $core->user); + + $res = ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $i = 0; + foreach($liste as $id => $client) { + if (!is_array($client->contacts)) { + continue; + } + $odd = cubeMath::isOdd($i)?' class="odd"':''; + $res .= ''; + $res .= ''; + $res .= ''; + $contacts = array(); + + foreach($client->contacts as $c) { + $contacts[] = '' . $c->prenom . ' ' . $c->nom . ''; + } + + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $i++; + } + if (!isset($settings['search']) || is_null($settings['search'])) { + $odd = cubeMath::isOdd($i)?' class="odd"':''; + $res .= ''; + } + $res .= '
' . commonUrl::orderby('#', 'entreprise_id', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Raison sociale'), 'nom', $settings, 'sort' . $change) . '' . __('Contacts') . '
' . $client->entreprise_id . '' . $client->nom . '' . implode(', ', $contacts) . ''; + $res .= '' . cubeMedia::image(IMG . '/edit.png') . '
'; + $res .= commonPage::pager($settings['page'], $dao->count($core->user) , $settings['par_page'], 'page' . $change . '/%d'); + $res .= commonUrl::formParPage('parPage' . $change, $settings['par_page'], __('clients')); + $res .= '
'; + return $res; + } + + public static function formClient($entreprise_id = 'new') + { + global $core; + commonDroits::min(3); + $dao = new commonDAOEntreprise($core->con); + $daoUtilisateur = new commonDAOUtilisateur($core->con); + if ($entreprise_id == 'new') { + $client = $dao->cree(); + } else { + $client = $dao->selectById($entreprise_id); + } + + $res = '' . __('Numéro de client') . '' . form::hidden('entreprise_id', $client->entreprise_id) . '' . $client->entreprise_id . ''; + $res .= '' . __('Raison sociale') . '' . form::field('nom', 30, 128, $client->nom) . ''; + $res .= '' . __('Adresse') . '' . form::textarea('adresse', 40, 3, $client->adresse) . ''; + $res .= '' . __('Code postal') . '' . form::field('code_postal', 10, 20, $client->code_postal) . ''; + $res .= '' . __('Ville') . '' . form::field('ville', 30, 128, $client->ville) . ''; + $res .= '' . __('Pays') . '' . form::combo('pays', cubeCountry::getList(), $client->pays) . ''; + if (wsDroits::admin(false)) { + $res .= '' . __('Adresse de facturation') . '' . form::textarea('adresse_facturation', 40, 3, $client->adresse_facturation) . ''; + $res .= '' . __('Numéro de TVA intracommunautaire') . '' . form::field('tva_intra', 15, 13, $client->tva_intra) . ''; + } + // Bloc Fluidbook Workshop + if (wsDroits::admin(false)) { + $res .= '' . __('Fluidbook Workshop') . ''; + $res .= '' . __('Grade') . '' . form::combo('ws_grade', array_flip($core->ws_grades), $client->ws_grade) . ''; + if ($entreprise_id == 'new' || !$client->ws_admin) { + $class = 'empty-field'; + $default_id = ''; + $default = __('Entrez le nom du revendeur ou de l\'administrateur'); + } else { + $class = ''; + $default_id = $client->ws_admin; + $wsa = $daoUtilisateur->selectById($client->ws_admin, 'utilisateurs_entreprise'); + $default = $wsa->utilisateur_id . ' - ' . $wsa->rs . ' (' . $wsa->prenom . ' ' . $wsa->nom . ')'; + } + + $d = $dao->getWSDatas($entreprise_id); + + $res .= '' . __('Revendeur / Administrateur') . '' . form::field('ws_admin_nom', 60, 128, $default, $class) . form::hidden('ws_admin', $default_id) . ''; + if (!is_null($d)) { + $res .= '' . __('Entité facturable') . '' . $d->facturable->prenom . ' ' . $d->facturable->nom . ' (' . $d->facturable->rs . ')'; + $res .= '' . __('Administrateur responsable') . '' . $d->administrateur->prenom . ' ' . $d->administrateur->nom . ' (' . $d->administrateur->rs . ')'; + } + + $daoSignature = new wsDAOSignature($core->con); + $signaturesList = $daoSignature->selectAll(); + + $signatures = array(); + foreach($signaturesList as $s) { + $signatures[$s->nom] = $s->signature_id; + } + + $res .= '' . __('Signatures Fluidbook') . '' . cubeForm::checkMultiple('ws_signatures', $signatures, 5, explode(',', $client->ws_signatures)) . ''; + } + if ($entreprise_id == 'new') { + $daoContact = new commonDAOClient($core->con); + $contact = $daoContact->cree(); + $res .= '' . __('Contact') . ''; + $res .= '' . __('Adresse e-mail') . '' . form::field(array('contact[email]'), 30, 128, $contact->email) . ''; + $res .= '' . __('Mot de passe') . '' . form::field(array('contact[password]'), 30, 128, $contact->password) . ''; + $res .= '' . __('Prénom') . '' . form::field(array('contact[prenom]'), 30, 128, $contact->prenom) . ''; + $res .= '' . __('Nom') . '' . form::field(array('contact[nom]'), 30, 128, $contact->nom) . ''; + $res .= '' . __('Téléphone') . '' . form::field(array('contact[telephone]'), 20, 128, $contact->telephone) . ''; + $res .= '' . __('Mobile') . '' . form::field(array('contact[mobile]'), 20, 128, $contact->mobile) . ''; + $res .= '' . __('Fax') . '' . form::field(array('contact[fax]'), 20, 128, $contact->fax) . ''; + $res .= '' . __('Langue') . '' . form::combo(array('contact[lang]'), cubeLang::getAvailableLangs(true), $contact->lang) . ''; + } + return $res; + } + + public static function listeContacts($entreprise_id) + { + global $core; + commonDroits::min(3); + $dao = new commonDAOEntreprise($core->con); + $contacts = $dao->getContacts($entreprise_id); + + $res = ''; + $res .= ''; + $i = 0; + foreach($contacts as $contact) { + $odd = cubeMath::isOdd($i)?' class="odd"':''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $i++; + } + $res .= '
' . $core->typo->Contact('Ajouter un contact') . '
' . trim($contact->prenom . ' ' . $contact->nom) . '' . $contact->email . 'FTPSe connecter comme ...' . cubeMedia::image(IMG . '/edit.png') . '
'; + return $res; + } + + public static function formContact($client_id = 'new', $entreprise_id = null) + { + global $core; + commonDroits::min(3); + + $dao = new commonDAOClient($core->con); + if ($client_id == 'new') { + $client = $dao->creeFromEntreprise($entreprise_id); + } else { + $client = $dao->selectById($client_id); + } + + $res = '' . __('Numéro de client') . '' . form::hidden('grade', 0) . form::hidden('entreprise', $client->entreprise) . form::hidden('utilisateur_id', $client->utilisateur_id) . '' . $client->utilisateur_id . ''; + $res .= '' . __('Adresse e-mail') . '' . form::field('email', 30, 128, $client->email) . ''; + $res .= '' . __('Mot de passe') . '' . form::field('password', 30, 128, $client->password) . ''; + $res .= '' . __('Prénom du contact') . '' . form::field('prenom', 30, 128, $client->prenom) . ''; + $res .= '' . __('Nom du contact') . '' . form::field('nom', 30, 128, $client->nom) . ''; + $res .= '' . __('Adresse') . '' . form::textarea('adresse', 40, 3, $client->adresse) . ''; + $res .= '' . __('Code postal') . '' . form::field('code_postal', 10, 20, $client->code_postal) . ''; + $res .= '' . __('Ville') . '' . form::field('ville', 30, 128, $client->ville) . ''; + $res .= '' . __('Pays') . '' . form::combo('pays', cubeCountry::getList(), $client->pays) . ''; + $res .= '' . __('Téléphone') . '' . form::field('telephone', 20, 128, $client->telephone) . ''; + $res .= '' . __('Mobile') . '' . form::field('mobile', 20, 128, $client->mobile) . ''; + $res .= '' . __('Fax') . '' . form::field('fax', 20, 128, $client->fax) . ''; + $res .= '' . __('Langue') . '' . form::combo('lang', cubeLang::getAvailableLangs(true), $client->lang) . ''; + if ($client_id != 'new') { + $res .= '' . cubeMedia::spacer(10, 10) . ''; + $res .= '' . __('FTP') . ''; + $res .= '' . __('Se connecter comme ...') . ''; + $res .= '' . __("Paramètres de connexion au Fluidbook Workshop") . '' . __('Adresse') . ' : http://' . $_SERVER['HTTP_HOST'] . '/
' . __("Nom d'utilisateur") . ' : ' . $client->email . '
' . __('Mot de passe') . ' : ' . $client->password . ''; + $res .= '' . cubeMedia::spacer(10, 10) . ''; + } + return $res; + } +} + +?> \ No newline at end of file diff --git a/inc/ws/Controlleur/url/class.ws.url.demande.php b/inc/ws/Controlleur/url/class.ws.url.demande.php new file mode 100644 index 000000000..3b69a1657 --- /dev/null +++ b/inc/ws/Controlleur/url/class.ws.url.demande.php @@ -0,0 +1,207 @@ +user->getSettings('demandes'); + + $shortcuts = array(); + + $filtres = array(); + $filtres[] = new commonFiltre(__('Statut'), 'status_demande', $settings['filtres']); + $filtres[] = new commonFiltre(__('Confiées à'), 'demande_moi', $settings['filtres']); + + $res = commonPage::barre($filtres, 'filtreDemandes', 'demandes', $shortcuts); + $res .= commonPage::tMain(); + $res .= commonPage::bh(); + $res .= '
'; + $res .= self::listeDemandes(); + $res .= '
'; + $res .= commonPage::bf(); + $res .= commonPage::bMain(); + return $res; + } + + public static function listeDemandes($dashboard = null, $settings = null) + { + global $core; + commonDroits::min(5); + $settings = is_null($settings)?$core->user->getSettings('demandes'):$settings; + $change = is_null($dashboard)?'Demandes':'Dashboard/' . $dashboard; + $dao = new wsDAODemande($core->con); + if (isset($settings['search']) && !is_null($settings['search'])) { + $dao->setSearch($settings['search']); + } + $dao->setFiltres($settings['filtres']); + $liste = $dao->getListe($settings['orderby'], $settings['sens'], $settings['limit'], $core->user); + + $res = ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $i = 0; + foreach($liste as $id => $demande) { + $odd = cubeMath::isOdd($i)?' class="odd"':''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $revendeur = $demande->revendeur == 0?'-':$demande->revendeur_nom; + $res .= ''; + $administrateur = $demande->administrateur == 0?'-':$demande->administrateur_nom; + $res .= ''; + // Affichage du status + // Si non traitée ou traitée, pas la possibilité de changer le status + if ($demande->status == 0) { + $res .= ''; + } else if ($demande->status == 1) { + if ($demande->revendeur == $core->user->utilisateur_id) { + $res .= ''; + } else { + $res .= ''; + } + } elseif ($demande->status == 2) { + if ($demande->revendeur == $core->user->utilisateur_id) { + $res .= ''; + } else { + $res .= ''; + } + } + // On ne peut éditer que si la facture est non traitée et qu'elle n'a pas commencé à être éditée par un autre administrateur + if (($demande->administrateur == 0 || $demande->administrateur == $core->user->utilisateur_id) && $demande->status == 0) { + $res .= ''; + } else { + $res .= ''; + } + // On n'affiche le bouton "Supprimer" que si la demande est non-traitée + if (($demande->administrateur == 0 || $demande->administrateur == $core->user->utilisateur_id) && $demande->status == 0) { + $res .= ''; + } else { + $res .= ''; + } + $res .= ''; + $i++; + } + if (!isset($settings['search']) || is_null($settings['search'])) { + $odd = cubeMath::isOdd($i)?' class="odd"':''; + $res .= ''; + } + $res .= '
' . commonUrl::orderby('#', 'demande_id', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Date') , 'date', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Type') , 'type', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Prospect') . '/' . __('Client'), 'utilisateur_nom', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Confiée à'), 'revendeur_nom', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Gérée par'), 'administrateur_nom', $settings, 'sort' . $change) . '' . commonUrl::orderby(__('Statut'), 'status', $settings, 'sort' . $change) . '
' . $demande->demande_id . '' . date(__('d/m/Y H:i'), $demande->date) . '' . $core->demandes_type[$demande->type] . '' . $demande->utilisateur_nom . '' . $revendeur . '' . $administrateur . '' . $core->demandes_status[$demande->status] . '' . __('Je me suis chargé de cette demande') . '' . $core->demandes_status[$demande->status] . ' (x)' . $core->demandes_status[$demande->status] . '' . $core->demandes_status[$demande->status] . '' . cubeMedia::image(IMG . '/edit.png') . '' . cubeMedia::image(IMG . '/delete.png') . '
'; + $res .= commonPage::pager($settings['page'], $dao->count($core->user) , $settings['par_page'], 'page' . $change . '/%d'); + $res .= commonUrl::formParPage('parPage' . $change, $settings['par_page'], __('demandes')); + $res .= '
'; + return $res; + } + + public static function formDemande($demande_id = 'new') + { + global $core; + commonDroits::min(5); + $dao = new wsDAODemande($core->con); + $daoUtilisateur = new commonDAOUtilisateur($core->con); + $demande = $dao->selectById($demande_id); + if ($demande->administrateur != 0 && $demande->administrateur != $core->user->utilisateur_id) { + $res = '

' . __("Cette demande est actuellement en cours d'édition par un autre administrateur") . '

'; + return $res; + } + if ($demande->status > 1) { + $res = '

' . __("Cette demande est actuellement en cours de traitement") . '

'; + return $res; + } + // On place la demande comme en cours d'édition + $dao->setAdministrateur($demande_id, $core->user->utilisateur_id); + // On vérifie que l'utilisateur n'est pas déjà géré par un revendeur + $demandeur = $daoUtilisateur->selectById($demande->utilisateur, 'utilisateurs_entreprise'); + $administrateurs = $daoUtilisateur->selectWSAdministrateursId(); + if (!is_null($demandeur->ws_admin) && !in_array($demandeur->ws_admin, $administrateurs)) { + // Si déjà géré par un revendeur + $revendeur = $daoUtilisateur->selectById($demandeur->ws_admin, 'utilisateurs_entreprise'); + $actions[__('Je confie la demande à ' . $revendeur->rs . ' (' . $revendeur->prenom . ' ' . $revendeur->nom . ')')] = $demandeur->ws_admin; + } else { + $liste = $daoUtilisateur->selectWSRevendeursFacturables(); + $revendeurs = array(); + foreach($liste as $revendeur) { + $revendeurs[$revendeur->rs . '(' . $revendeur->prenom . ' ' . $revendeur->nom . ')'] = $revendeur->utilisateur_id; + } + + $actions = array(__('Je vais me charger de cette demande') => $core->user->utilisateur_id); + $actions[' '] = array(); + $actions[__('Je confie la demande à') . ' : '] = $revendeurs; + } + + $res = '' . __('Numéro de demande') . '' . form::hidden('demande_id', $demande->demande_id) . '' . $demande->demande_id . ''; + $res .= '' . __('Date de la demande') . '' . date(__('d/m/Y H:i'), $demande->date) . ''; + $res .= '' . __('Emetteur de la demande') . '' . $demande->utilisateur_nom . ''; + $res .= '' . __('Nombre de pages') . '' . $demande->pages . ''; + $res .= '' . __('Nombre de liens') . '' . $demande->liens . ''; + $res .= '' . __('Nombre de langues') . '' . $demande->langues . ''; + $res .= '' . __('Détails') . '' . $demande->details . ''; + $res .= '' . __('Action') . '' . form::combo('revendeur', $actions) . ''; + $res .= ''; + + return $res; + } + + public static function reponseDemande($args) + { + global $core; + + commonDroits::min(3); + + $res = commonPage::barre(); + $res .= commonPage::tMain(null, false); + + $res .= commonPage::bh(); + + $demande_id = $args[1]; + $revendeur_id = $args[2]; + + $dao = new wsDAODemande($core->con); + $demande = $dao->selectById($demande_id); + if ($demande->revendeur != $revendeur_id || $demande->revendeur != $core->user->utilisateur_id) { + commonDroits::error(); + exit; + } + + $res = commonPage::barre(); + $res .= commonPage::tMain(); + $res .= commonPage::bh(); + $res .= '
'; + $res .= '

' . $core->typo->Titre(__('Prendre en charge une demande de devis')) . '

'; + $res .= '

'; + $res .= '

' . __('Si vous acceptez de traiter la demande suivante, veuillez cliquer sur le bouton "Accepter la demande" situé à droite de la description.'); + $res .= ' ' . __('Vous avez également la possibilité de décliner la demande en cliquant sur le bouton "Décliner la demande"') . "

"; + $res .= '

'; + + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= '
' . __("Détails de la demande") . '' . __('Votre action') . '
' . __('Numéro de demande') . '' . $demande->demande_id . '' . '' . cubeMedia::cssRollover($core->typo->BookTelecharger('Accepter la demande', '', false)) . '' . '
' . __('Date de la demande') . '' . date(__('d/m/Y H:i'), $demande->date) . '' . '' . cubeMedia::cssRollover($core->typo->Supprimer('Décliner la demande', '', false)) . '' . '
' . __('Client') . ' / ' . __('Prospect') . '' . $demande->utilisateur_nom . '
' . __('Nombre de pages') . '' . $demande->pages . '
' . __('Nombre de liens') . '' . $demande->liens . '
' . __('Nombre de langues') . '' . $demande->langues . '
' . __('Détails') . '' . $demande->details . '
'; + + $res .= '
'; + $res .= commonPage::bf(); + $res .= commonPage::bMain(); + return $res; + } +} + +?> \ No newline at end of file diff --git a/inc/ws/Controlleur/url/class.ws.url.traduction.php b/inc/ws/Controlleur/url/class.ws.url.traduction.php new file mode 100644 index 000000000..7efd737db --- /dev/null +++ b/inc/ws/Controlleur/url/class.ws.url.traduction.php @@ -0,0 +1,115 @@ +user->lang); + $existingLangs = array(); + + $dao = new wsDAOLang($core->con); + $langs = $dao->selectAll(); + foreach($langs as $lang) { + if (!isset($allLangs[$lang->lang_id])) { + continue; + } + $existingLangs[$lang->lang_id] = $allLangs[$lang->lang_id]; + + unset($allLangs[$lang->lang_id]); + } + + $langs = array(__('Langues configurées') => array_flip($existingLangs), __('Autres langues') => array_flip($allLangs)); + + $res = commonPage::barre(); + $res .= commonPage::tMain(null, false); + + $res .= commonPage::bh(); + $res .= '
'; + $res .= ''; + $res .= ''; + $res .= '
' . __('Sélectionnez la langue à configurer') . ' : ' . form::combo('lang', $langs, $args[1]) . '
'; + $res .= '
'; + $res .= commonPage::bf(); + + $res .= '
'; + $res .= self::formLang($args[1]); + $res .= '
'; + $res .= commonPage::bMain(true); + + return $res; + } + + public static function formLang($lang_id) + { + commonDroits::min(5); + global $core; + $dao = new wsDAOLang($core->con); + $lang = $dao->selectById($lang_id); + + $res = '
'; + + $res .= commonPage::bh(); + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= ''; + $res .= '
' . __('Police de caractères') . ' : ' . form::hidden('lang', $lang_id) . form::combo('font', self::getFonts(), $lang->font) . '
' . __('Jeux de caractères') . ' : ' . form::combo('charset', self::getCharsets(), $lang->charset) . '
' . __("Langue de l'installeur") . ' : ' . form::combo('nsis', self::getNSISLangs(), $lang->nsis) . '
' . $core->typo->Ajouter('Valider') . '
'; + $res .= commonPage::bf(); + + $res .= commonPage::bh(); + $res .= cubeLang::translationForm(PLAYER_SOURCES, $lang_id , null, 'liste', array(), '' . $core->typo->Ajouter(__('Enregistrer')) . '', $lang->traductions); + $res .= commonPage::bf(); + $res .= '
'; + return $res; + } + + public static function getFonts() + { + $formats = array('ttf', 'otf', 'TTF', 'OTF'); + + $dr = opendir(FONT_PATH); + $fonts = array(); + while ($file = readdir($dr)) { + if ($file == '.' || $file == '..' || !in_array(files::getExtension($file), $formats)) { + continue; + } + $fonts[$file] = $file; + } + return $fonts; + } + + protected static function getCharsets() + { + $sets = cubeFlexFontAsset::getSets(); + $res = array(); + foreach($sets as $k => $v) { + $res[$k] = $k; + } + return $res; + } + + protected static function getNSISLangs() + { + $res = array(); + $dir = WS_FILES . '/nsislangs'; + $dr = opendir($dir); + while ($file = readdir($dr)) { + if ($file == '.' || $file == '..') { + continue; + } + $e = explode('.', $file); + $res[$e[0]] = $e[0]; + } + + ksort($res); + return $res; + } +} +?> \ No newline at end of file diff --git a/inc/ws/DAO/class.ws.dao.demande.php b/inc/ws/DAO/class.ws.dao.demande.php index 44867a15a..e39de1582 100644 --- a/inc/ws/DAO/class.ws.dao.demande.php +++ b/inc/ws/DAO/class.ws.dao.demande.php @@ -102,17 +102,22 @@ class wsDAODemande extends commonDAO { public function accepteDemande($demande_id, $revendeur) { - $c = $this->con->openCursor('demandes'); - $c->status = 2; - $c->update('WHERE demande_id=\'' . $this->con->escape($demande_id) . '\''); - - $demande = $this->selectById($demande_id); + $demande = $this->setStatus($demande_id, 2); // Mets également à jour l'entreprise afin d'associer client et revendeur $daoEntreprise = new commonDAOEntreprise($this->con); $daoEntreprise->setWSAdmin($demande->entreprise, $revendeur); return $demande; } + public function setStatus($demande_id, $status) + { + $c = $this->con->openCursor('demandes'); + $c->status = $status; + $c->update('WHERE demande_id=\'' . $this->con->escape($demande_id) . '\''); + + return $this->selectById($demande_id); + } + public function setRevendeur($demande_id, $revendeur) { // Mets à jour l'entreprise -- 2.39.5