posts: support editing of source_url and keywords
This commit is contained in:
parent
a2d9f93ad9
commit
392c3bc809
@ -126,8 +126,10 @@ function add_meta(array $data) {
|
||||
break;
|
||||
|
||||
case '$description':
|
||||
$add_og_twitter(substr($key, 1), $value);
|
||||
$real_meta[] = ['name' => 'description', 'content' => $value];
|
||||
case '$keywords':
|
||||
$real_name = substr($key, 1);
|
||||
$add_og_twitter($real_name, $value);
|
||||
$real_meta[] = ['name' => $real_name, 'content' => $value];
|
||||
break;
|
||||
|
||||
default:
|
||||
|
@ -502,6 +502,8 @@ class AdminHandler extends request_handler {
|
||||
text: '',
|
||||
langs: PostLanguage::cases(),
|
||||
short_name: '',
|
||||
source_url: '',
|
||||
keywords: '',
|
||||
js_texts: $js_texts,
|
||||
lang: PostLanguage::getDefault()->value);
|
||||
}
|
||||
@ -632,6 +634,8 @@ class AdminHandler extends request_handler {
|
||||
toc: $text->toc,
|
||||
saved: $saved,
|
||||
short_name: $short_name,
|
||||
source_url: $post->sourceUrl,
|
||||
keywords: $post->keywords,
|
||||
langs: PostLanguage::cases(),
|
||||
lang: $text->lang->value,
|
||||
js_texts: $js_texts
|
||||
@ -641,7 +645,7 @@ class AdminHandler extends request_handler {
|
||||
function POST_post_edit() {
|
||||
ensure_xhr();
|
||||
|
||||
list($old_short_name, $short_name, $langs, $date) = input('short_name, new_short_name, langs, date');
|
||||
list($old_short_name, $short_name, $langs, $date, $keywords, $source_url) = input('short_name, new_short_name, langs, date, keywords, source_url');
|
||||
|
||||
$post = posts::getByName($old_short_name);
|
||||
if (!$post)
|
||||
@ -685,7 +689,12 @@ class AdminHandler extends request_handler {
|
||||
}
|
||||
}
|
||||
|
||||
$post_data = ['date' => $date, 'visible' => $visible];
|
||||
$post_data = [
|
||||
'date' => $date,
|
||||
'visible' => $visible,
|
||||
'keywords' => $keywords,
|
||||
'source_url' => $source_url
|
||||
];
|
||||
if ($post->shortName != $short_name)
|
||||
$post_data['short_name'] = $short_name;
|
||||
$post->edit($post_data);
|
||||
|
@ -93,11 +93,15 @@ class MainHandler extends request_handler {
|
||||
$other_langs[] = $pl->value;
|
||||
}
|
||||
|
||||
add_meta([
|
||||
$meta = [
|
||||
'$title' => $pt->title,
|
||||
'$url' => $config['domain'].$post->getUrl(),
|
||||
'$description' => $pt->getDescriptionPreview(155)
|
||||
]);
|
||||
];
|
||||
if ($post->keywords)
|
||||
$meta['$keywords'] = $post->keywords;
|
||||
add_meta($meta);
|
||||
|
||||
if (($img = $pt->getFirstImage()) !== null)
|
||||
add_meta(['$image' => $img->getDirectUrl()]);
|
||||
|
||||
|
@ -150,6 +150,8 @@ extend(AdminWriteEditForm.prototype, {
|
||||
var atLeastOneLangIsWritten = false;
|
||||
var writtenLangs = [];
|
||||
if (this.isPost()) {
|
||||
fd.append('source_url', evt.target.source_url.value)
|
||||
fd.append('keywords', evt.target.keywords.value)
|
||||
this.opts.langs.forEach(function(l) {
|
||||
var title = this.draft.getForLang(l, 'title');
|
||||
var text = this.draft.getForLang(l, 'text');
|
||||
|
@ -19,6 +19,7 @@ class Post extends model {
|
||||
public bool $visible;
|
||||
public string $shortName;
|
||||
public string $sourceUrl;
|
||||
public string $keywords;
|
||||
|
||||
protected array $texts = [];
|
||||
|
||||
|
@ -161,6 +161,8 @@ function postForm(\SkinContext $ctx,
|
||||
string|Stringable $title,
|
||||
string|Stringable $text,
|
||||
string|Stringable $short_name,
|
||||
string|Stringable $source_url,
|
||||
string|Stringable $keywords,
|
||||
array $langs,
|
||||
array $js_texts,
|
||||
string|Stringable|null $date = null,
|
||||
@ -238,6 +240,28 @@ $html = <<<HTML
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
<div class="clearfix">
|
||||
<table width="100%" cellspacing="0" cellpadding="0" style="table-layout: fixed; width: 100%; border-collapse: collapse">
|
||||
<tr>
|
||||
<td width="50%" style="width: 50% !important;">
|
||||
<div class="form-field-label">{$ctx->lang('blog_write_form_keywords')}</div>
|
||||
<div class="form-field">
|
||||
<input class="form-field-input" type="text" name="keywords" value="{$keywords}" />
|
||||
</div>
|
||||
</td>
|
||||
<td width="50%" style="width: 50% !important;">
|
||||
<div class="form-field-label">{$ctx->lang('blog_write_form_source')}</div>
|
||||
<div class="form-field">
|
||||
<input class="form-field-input" type="text" name="source_url" value="{$source_url}" />
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<div class="clearfix">
|
||||
|
@ -1,24 +1,24 @@
|
||||
# common
|
||||
4in1: '4in1'
|
||||
site_title: '4in1. Mask of Shakespeare, mysteries of Bacon, book by Cartier, secrets of the NSA'
|
||||
index: 'Index'
|
||||
4in1: 4in1
|
||||
site_title: 4in1. Mask of Shakespeare, mysteries of Bacon, book by Cartier, secrets of the NSA
|
||||
index: Index
|
||||
|
||||
posts: 'Posts'
|
||||
all_posts: 'All posts'
|
||||
articles: 'Articles'
|
||||
unknown_error: 'Unknown error'
|
||||
error: 'Error'
|
||||
write: 'Write'
|
||||
submit: 'submit'
|
||||
sign_in: "Sign in"
|
||||
edit: 'edit'
|
||||
delete: 'delete'
|
||||
save: "Save"
|
||||
info_saved: 'Information saved.'
|
||||
toc: 'Table of Contents'
|
||||
posts: Posts
|
||||
all_posts: All posts
|
||||
articles: Articles
|
||||
unknown_error: Unknown error
|
||||
error: Error
|
||||
write: Write
|
||||
submit: submit
|
||||
sign_in: Sign in
|
||||
edit: edit
|
||||
delete: delete
|
||||
save: Save
|
||||
info_saved: Information saved.
|
||||
toc: Table of Contents
|
||||
|
||||
lang_en: "English"
|
||||
lang_ru: "Русский"
|
||||
lang_en: English
|
||||
lang_ru: Русский
|
||||
|
||||
# meta
|
||||
meta_index_title: "4in1. Mask of Shakespeare, mysteries of Bacon, book by Cartier, secrets of the NSA"
|
||||
@ -40,75 +40,76 @@ meta_files_baconiana_description: "Searchable archive of Baconiana almanac."
|
||||
blog_expl_en: "Here you can find new episodes of the \"4in1\" investigation that were published after book's initial release in 2022 and throughout the preparation of its 2nd edition and English translation in 2023.\n\nSince the main purpose of this section is publishing English translations of articles from the kiwi arXiv website, they appear here with a slight delay caused by the translation."
|
||||
blog_expl_ru: "Здесь находятся новые эпизоды расследования, опубликованные после первоначального выхода книги «4в1» в 2022-м году и во время и после подготовки её 2-го издания и перевода его на английский язык в 2023-м.\n\nПоскольку основная цель этого раздела – публикация английских переводов статей с киви-архива, здесь они появляются с небольшой задержкой, этим переводом вызванной."
|
||||
|
||||
blog_new_post: "New post"
|
||||
blog_view_post: "View post"
|
||||
view_page: "View page"
|
||||
#blog_editing: "Editing..."
|
||||
blog_latest: 'Latest posts'
|
||||
blog_no: 'No posts yet.'
|
||||
blog_view_all: 'View all'
|
||||
blog_write: 'Write a post'
|
||||
blog_new_post: New post
|
||||
blog_view_post: View post
|
||||
view_page: View page
|
||||
blog_latest: Latest posts
|
||||
blog_no: No posts yet.
|
||||
blog_view_all: View all
|
||||
blog_write: Write a post
|
||||
blog_post_delete_confirmation: 'Are you sure you want to delete this post?'
|
||||
blog_post_edit_title: 'Edit post "%s"'
|
||||
blog_post_hidden: 'Hidden'
|
||||
blog_post_hidden: Hidden
|
||||
blog_comments_text: 'If you have any comments, <a href="mailto:%s?subject=%s">contact me by email</a>.'
|
||||
blog_read_in_ru: "Читать на русском"
|
||||
blog_read_in_en: "Read in English"
|
||||
blog_read_in_ru: Читать на русском
|
||||
blog_read_in_en: Read in English
|
||||
|
||||
blog_write_form_preview_btn: 'Preview'
|
||||
blog_write_form_submit_btn: 'Submit'
|
||||
blog_write_form_title: 'Title'
|
||||
blog_write_form_text: 'Text'
|
||||
blog_write_form_date: 'Date'
|
||||
blog_write_form_preview: 'Preview'
|
||||
blog_write_form_enter_text: 'Enter text..'
|
||||
blog_write_form_enter_title: 'Enter title..'
|
||||
blog_write_form_visible: 'Visible'
|
||||
blog_write_form_toc: 'ToC'
|
||||
blog_write_form_short_name: 'Short name'
|
||||
blog_write_form_toggle_wrap: 'Toggle wrap'
|
||||
blog_post_options: "Post options"
|
||||
blog_text_options: "Text options"
|
||||
blog_write_form_preview_btn: Preview
|
||||
blog_write_form_submit_btn: Submit
|
||||
blog_write_form_title: Title
|
||||
blog_write_form_text: Text
|
||||
blog_write_form_date: Date
|
||||
blog_write_form_preview: Preview
|
||||
blog_write_form_enter_text: Enter text..
|
||||
blog_write_form_enter_title: Enter title..
|
||||
blog_write_form_visible: Visible
|
||||
blog_write_form_toc: ToC
|
||||
blog_write_form_short_name: Short name
|
||||
blog_write_form_source: Source URL
|
||||
blog_write_form_keywords: Keywords
|
||||
blog_write_form_toggle_wrap: Toggle wrap
|
||||
blog_post_options: Post options
|
||||
blog_text_options: Text options
|
||||
|
||||
blog_uploads: 'Uploads'
|
||||
blog_upload: 'Upload files'
|
||||
blog_upload_delete: 'Delete'
|
||||
blog_upload_delete_confirmation: 'Are you sure you want to delete this upload?'
|
||||
blog_upload_show_md: 'Show md'
|
||||
blog_upload_form_file: 'File'
|
||||
blog_upload_form_custom_name: 'Custom name'
|
||||
blog_upload_form_note: 'Note'
|
||||
blog_uploads: Uploads
|
||||
blog_upload: Upload files
|
||||
blog_upload_delete: Delete
|
||||
blog_upload_delete_confirmation: Are you sure you want to delete this upload?
|
||||
blog_upload_show_md: Show md
|
||||
blog_upload_form_file: File
|
||||
blog_upload_form_custom_name: Custom name
|
||||
blog_upload_form_note: Note
|
||||
|
||||
# blog (errors)
|
||||
err_blog_no_text: 'Text or title is not specified'
|
||||
err_blog_no_date: 'Date is not specified'
|
||||
err_blog_db_err: 'Database error'
|
||||
err_blog_no_short_name: 'Short name not specified'
|
||||
err_blog_short_name_exists: 'This short name already exists'
|
||||
err_blog_no_text: Text or title is not specified
|
||||
err_blog_no_date: Date is not specified
|
||||
err_blog_db_err: Database error
|
||||
err_blog_no_short_name: Short name not specified
|
||||
err_blog_short_name_exists: This short name already exists
|
||||
|
||||
# pages
|
||||
pages_create: 'create new page'
|
||||
pages_edit: 'edit'
|
||||
pages_delete: 'delete'
|
||||
pages_create_title: 'create new page "%s"'
|
||||
pages_page_delete_confirmation: 'Are you sure you want to delete this page?'
|
||||
pages_page_edit_title: 'Edit %s'
|
||||
pages_create: create new page
|
||||
pages_edit: edit
|
||||
pages_delete: delete
|
||||
pages_create_title: create new page "%s"
|
||||
pages_page_delete_confirmation: Are you sure you want to delete this page?
|
||||
pages_page_edit_title: Edit %s
|
||||
|
||||
pages_write_form_submit_btn: 'Submit'
|
||||
pages_write_form_title: 'Title'
|
||||
pages_write_form_text: 'Text'
|
||||
pages_write_form_enter_text: 'Enter text..'
|
||||
pages_write_form_enter_title: 'Enter title..'
|
||||
pages_write_form_visible: 'Visible'
|
||||
pages_write_form_short_name: 'Short name'
|
||||
pages_write_form_toggle_wrap: 'Toggle wrap'
|
||||
pages_write_form_options: 'Options'
|
||||
pages_write_form_submit_btn: Submit
|
||||
pages_write_form_title: Title
|
||||
pages_write_form_text: Text
|
||||
pages_write_form_enter_text: Enter text..
|
||||
pages_write_form_enter_title: Enter title..
|
||||
pages_write_form_visible: Visible
|
||||
pages_write_form_short_name: Short name
|
||||
pages_write_form_toggle_wrap: Toggle wrap
|
||||
pages_write_form_options: Options
|
||||
|
||||
# pages (errors)
|
||||
err_pages_no_text: 'Text or title is not specified'
|
||||
err_pages_no_id: 'ID not specified'
|
||||
err_pages_no_short_name: 'Short name not specified'
|
||||
err_pages_db_err: 'Database error'
|
||||
err_pages_no_text: Text or title is not specified
|
||||
err_pages_no_id: ID not specified
|
||||
err_pages_no_short_name: Short name not specified
|
||||
err_pages_db_err: Database error
|
||||
|
||||
# /admin
|
||||
admin_title: Admin
|
||||
@ -153,11 +154,11 @@ files_search_results_count:
|
||||
- "No results"
|
||||
files_show_more: Show more
|
||||
|
||||
pages: 'Страницы'
|
||||
pn_show_more: 'Показать ещё'
|
||||
pn_prev: 'назад'
|
||||
pn_next: 'вперёд'
|
||||
pn_first: 'в начало'
|
||||
pn_last: 'в конец'
|
||||
#pn_goto: 'Перейти'
|
||||
pages: Страницы
|
||||
pn_show_more: Показать ещё
|
||||
pn_prev: назад
|
||||
pn_next: вперёд
|
||||
pn_first: в начало
|
||||
pn_last: в конец
|
||||
#pn_goto: Перейти
|
||||
#pn_goto_n: '№ стр.'
|
Loading…
x
Reference in New Issue
Block a user