getName() . '.php';
if(file_exists($viewFile))
{
if(self::$new_article_mode){
$id = $_GET['id']; // ici l'id est le nom du block news_block parent
$title = '';
$preview = '';
// lettre au début de l'id: t = title, p = preview, i = article, d = date
$id_title = $id;
$id_title[0] = 't';
$id_preview = $id;
$id_preview[0] = 'p';
$id_content = 'i' . $id;
$id_content[0] = 'i';
$id_date = $id;
$id_date[0] = 'd';
}
else{
$id = (string)$node->getId();
// id (timestamp)
if(!empty($node->getAttributes()))
{
extract($node->getAttributes());
}
// html, date
$title = $node->getArticle()->getTitle();
$preview = $node->getArticle()->getPreview();
// lettre au début de l'id: t = title, p = preview, i = article, d = date
$id_title = 't' . $id;
$id_preview = 'p' . $id;
$id_content = 'i' . $id;
$id_date = 'd' . $id;
}
$content = '';
if(CURRENT_PAGE === 'article'){
$content = $node->getArticle()->getContent();
$from_to_button = '
';
$overflow = '';
}
else{
$from_to_button = '
';
$overflow = ' overflow_hidden';
}
$date = $node->getArticle()->getDateTime()->format('Y-m-d\TH:i:s.v\Z'); // format: 2025-07-17T13:54:00.000Z
// format(\DateTime::ATOM) produit le format: 2025-10-10T12:17:00+00:00, c'est aussi de la norme ISO, mais à éviter pour être compatible avec date.toISOString en JS
// partage
$share_link = new URL(['page' => 'article', 'id' => $id]);
$share_js = 'onclick="copyInClipBoard(\'' . $share_link . '\')"';
if(isset($_GET['id']) && $_GET['id'][0] === 'n'){
$class = 'class="share hidden"';
}
else{
$class = 'class="share"';
}
$share_button = '
' . "\n";
// modifier un article
$title_buttons = '';
$preview_buttons = '';
$article_buttons = '';
$date_buttons = '';
$admin_buttons = '';
if($_SESSION['admin']){
if(CURRENT_PAGE === 'article'){
$title_js = 'onclick="openEditor(\'' . $id_title . '\')"';
$modify_title = '' . "\n";
$close_js_title = 'onclick="closeEditor(\'' . $id_title . '\')"';
$close_editor_title = '';
$submit_js_title = 'onclick="submitArticle(\'' . $id_title . '\')"';
$submit_title = '';
$title_buttons = '' . $modify_title . $close_editor_title . $submit_title . '
';
$preview_js = 'onclick="openEditor(\'' . $id_preview . '\')"';
$modify_preview = '' . "\n";
$close_js_preview = 'onclick="closeEditor(\'' . $id_preview . '\')"';
$close_editor_preview = '';
$submit_js_preview = 'onclick="submitArticle(\'' . $id_preview . '\')"';
$submit_preview = '';
$preview_buttons = '' . $modify_preview . $close_editor_preview . $submit_preview . '
';
$article_js = 'onclick="openEditor(\'' . $id_content . '\')"';
$modify_article = '' . "\n";
$close_js_article = 'onclick="closeEditor(\'' . $id_content . '\')"';
$close_editor_article = '';
$submit_js_article = 'onclick="submitArticle(\'' . $id_content . '\')"';
$submit_article = '';
$article_buttons = '' . $modify_article . $close_editor_article . $submit_article . '
';
$date_js = 'onclick="openDatetimeLocalInput(\'' . $id_date . '\', \'article\');';
$modify_date = '' . "\n";
$close_js_date = 'onclick="closeInput(\'' . $id_date . '\')"';
$close_editor_date = '';
$submit_js_date = 'onclick="submitDate(\'' . $id_date . '\')"';
$submit_date = '';
$date_buttons = '' . $modify_date . $close_editor_date . $submit_date . '
';
// mode nouvel article
if(self::$new_article_mode){
$delete_article = '';
// valider la création d'un nouvel article
$submit_js = 'onclick="submitArticle(\'' . $_GET['id'] . '\')"';
$submit_article = '
' . "\n";
}
// mode article existant
else{
$url = new URL(['action' => 'delete_article', 'id' => $_GET['id'], 'from' => $_GET['from'] ?? '']);
$delete_article = '' . "\n"; // this.closest('form').submit() = submit du formulaire avec javascript
$submit_article = '';
}
$admin_buttons = $share_button . $delete_article . $submit_article . $from_to_button;
}
// autre page
else{
$delete_js = 'onclick="deleteArticle(\'' . $id . '\')"';
$delete_article = '
' . "\n";
$close_editor = '';
$submit_article = '';
$admin_buttons = $from_to_button . $share_button . $delete_article . $close_editor . $submit_article;
}
}
else{
$admin_buttons = $share_button . $from_to_button;
}
ob_start();
require($viewFile);
$this->html .= ob_get_clean();
}
}
}