diff options
Diffstat (limited to 'src/View/FooterBuilder.php')
| -rw-r--r-- | src/View/FooterBuilder.php | 122 |
1 files changed, 122 insertions, 0 deletions
diff --git a/src/View/FooterBuilder.php b/src/View/FooterBuilder.php new file mode 100644 index 0000000..72a571d --- /dev/null +++ b/src/View/FooterBuilder.php | |||
| @@ -0,0 +1,122 @@ | |||
| 1 | <?php | ||
| 2 | // src/View/FooterBuilder.php | ||
| 3 | |||
| 4 | declare(strict_types=1); | ||
| 5 | |||
| 6 | namespace App\View; | ||
| 7 | |||
| 8 | use App\Entity\Node; | ||
| 9 | use App\Entity\Asset; | ||
| 10 | use App\Controller\ViewController; | ||
| 11 | use App\Model\Model; | ||
| 12 | use App\Service\URL; | ||
| 13 | |||
| 14 | class FooterBuilder extends AbstractBuilder | ||
| 15 | { | ||
| 16 | public function __construct(Node $node) | ||
| 17 | { | ||
| 18 | $viewFile = self::VIEWS_PATH . $node->getName() . '.php'; | ||
| 19 | |||
| 20 | if(file_exists($viewFile)) | ||
| 21 | { | ||
| 22 | $node_data = $node->getNodeData(); | ||
| 23 | // nom du contact, adresse et e-mail | ||
| 24 | if(!empty($node_data->getData())) | ||
| 25 | { | ||
| 26 | extract($node_data->getData()); | ||
| 27 | } | ||
| 28 | |||
| 29 | $footer_logo = Asset::USER_PATH . $node_data->getAssetByRole('footer_logo')?->getFileName() ?? ''; | ||
| 30 | |||
| 31 | $this->useChildrenBuilder($node); | ||
| 32 | $breadcrumb = $this->html; | ||
| 33 | |||
| 34 | $empty_admin_zone = ''; | ||
| 35 | if(IS_ADMIN) | ||
| 36 | { | ||
| 37 | // données du footer | ||
| 38 | $admin_footer_name = '<input type="text" id="footer_name_input" class="hidden" value="' . htmlspecialchars($name ?? '') . '" placeholder="raison sociale" size="30"> | ||
| 39 | <img id="footer_name_open" class="action_icon" src="assets/edit.svg" onclick="footer_name.open()"> | ||
| 40 | <img id="footer_name_submit" class="action_icon hidden" src="assets/save.svg" onclick="footer_name.submit()"> | ||
| 41 | <img id="footer_name_cancel" class="action_icon hidden" src="assets/close.svg" onclick="footer_name.cancel()">'; | ||
| 42 | $admin_footer_address = '<input type="text" id="footer_address_input" class="hidden" value="' . htmlspecialchars($address ?? '') . '" placeholder="adresse" size="30"> | ||
| 43 | <img id="footer_address_open" class="action_icon" src="assets/edit.svg" onclick="footer_address.open()"> | ||
| 44 | <img id="footer_address_submit" class="action_icon hidden" src="assets/save.svg" onclick="footer_address.submit()"> | ||
| 45 | <img id="footer_address_cancel" class="action_icon hidden" src="assets/close.svg" onclick="footer_address.cancel()">'; | ||
| 46 | $admin_footer_email = '<input type="text" id="footer_email_input" class="hidden" value="' . htmlspecialchars($email ?? '') . '" placeholder="e-mail" size="30"> | ||
| 47 | <img id="footer_email_open" class="action_icon" src="assets/edit.svg" onclick="footer_email.open()"> | ||
| 48 | <img id="footer_email_submit" class="action_icon hidden" src="assets/save.svg" onclick="footer_email.submit()"> | ||
| 49 | <img id="footer_email_cancel" class="action_icon hidden" src="assets/close.svg" onclick="footer_email.cancel()">'; | ||
| 50 | |||
| 51 | $admin_footer_logo = '<input type="file" id="footer_logo_input" class="hidden" accept="image/png, image/jpeg, image/gif, image/webp, image/tiff"> | ||
| 52 | <img id="footer_logo_open" class="action_icon" src="assets/edit.svg" onclick="footer_logo.open()"> | ||
| 53 | <img id="footer_logo_submit" class="action_icon hidden" src="assets/save.svg" onclick="footer_logo.submit()"> | ||
| 54 | <img id="footer_logo_cancel" class="action_icon hidden" src="assets/close.svg" onclick="footer_logo.cancel()">'; | ||
| 55 | |||
| 56 | // zone admin | ||
| 57 | $empty_admin_zone = 'empty_admin_zone'; | ||
| 58 | if(MainBuilder::$modif_mode){ | ||
| 59 | $mode = 'modification de page'; | ||
| 60 | $div_admin = 'logged_in modif_mode'; | ||
| 61 | } | ||
| 62 | else{ | ||
| 63 | $mode = 'administrateur'; | ||
| 64 | $div_admin = 'logged_in'; | ||
| 65 | } | ||
| 66 | |||
| 67 | $link_change_password = new URL(['page' => 'user_edit', 'from' => CURRENT_PAGE]); | ||
| 68 | isset($_GET['id']) ? $link_change_password->addParams(['id' => $_GET['id']]) : ''; | ||
| 69 | |||
| 70 | $link_logout = new URL(['action' => 'deconnection', 'from' => CURRENT_PAGE]); | ||
| 71 | isset($_GET['id']) ? $link_logout->addParams(['id' => $_GET['id']]) : ''; | ||
| 72 | |||
| 73 | $zone_admin = '<div class="admin_buttons_zone"> | ||
| 74 | <p>Vous êtes en mode ' . $mode . ".</p>\n" . | ||
| 75 | '<div><a href="' . new URL(['page' => 'new_page']) . '"><button>Nouvelle page</button></a></div>' . "\n" . | ||
| 76 | $this->makePageModifModeButton() . "\n" . | ||
| 77 | '<div><a href="' . new URL(['page' => 'menu_paths']) . '"><button>Menu et chemins</button></a></div>' . "\n" . | ||
| 78 | '<div><a href="' . $link_change_password . '"><button>Mon compte</button></a></div>' . "\n" . | ||
| 79 | '<div><a href="' . new URL(['page' => 'maintenance']) . '"><button>Maintenance</button></a></div>' . "\n" . | ||
| 80 | '<div><a href="' . $link_logout . '"><button>Déconnexion</button></a></div>' . "\n" . | ||
| 81 | '</div>' . "\n"; | ||
| 82 | } | ||
| 83 | else | ||
| 84 | { | ||
| 85 | $div_admin = 'logged_out'; | ||
| 86 | $url = new URL(['page' => 'connection', 'from' => CURRENT_PAGE]); | ||
| 87 | if(Model::$page_path->getLast()->getEndOfPath() === 'article' && isset($_GET['id'])){ | ||
| 88 | $url->addParams(['id' => $_GET['id']]); | ||
| 89 | } | ||
| 90 | $zone_admin = '<button><a href="' . $url . '">Mode admin</a></button>'; | ||
| 91 | |||
| 92 | $admin_footer_name = ''; | ||
| 93 | $admin_footer_address = ''; | ||
| 94 | $admin_footer_email = ''; | ||
| 95 | $admin_footer_logo = ''; | ||
| 96 | } | ||
| 97 | |||
| 98 | ob_start(); | ||
| 99 | require $viewFile; | ||
| 100 | $this->html = ob_get_clean(); | ||
| 101 | } | ||
| 102 | } | ||
| 103 | |||
| 104 | private function makePageModifModeButton(): string | ||
| 105 | { | ||
| 106 | $link_edit_page = new URL(['page' => CURRENT_PAGE]); | ||
| 107 | if(!in_array(CURRENT_PAGE, ViewController::SPECIAL_PAGES)) // cas impossibles: 'user_edit' et 'connection' qui n'ont pas de footer | ||
| 108 | { | ||
| 109 | if(MainBuilder::$modif_mode){ | ||
| 110 | $link_edit_label = 'Sortir du mode modification'; | ||
| 111 | } | ||
| 112 | else{ | ||
| 113 | $link_edit_page->addParams(['mode' => 'page_modif']); | ||
| 114 | $link_edit_label = 'Modifier la page'; | ||
| 115 | } | ||
| 116 | return '<div><a href="' . $link_edit_page . '"><button>' . $link_edit_label . '</button></a></div>'; | ||
| 117 | } | ||
| 118 | else{ | ||
| 119 | return ''; | ||
| 120 | } | ||
| 121 | } | ||
| 122 | } \ No newline at end of file | ||
