New post titles extension, resolves #19
This commit is contained in:
parent
45df025e7d
commit
c3f2d2e1bd
@ -29,6 +29,7 @@ abstract class Permissions
|
|||||||
public const EDIT_IMAGE_SOURCE = "edit_image_source";
|
public const EDIT_IMAGE_SOURCE = "edit_image_source";
|
||||||
public const EDIT_IMAGE_OWNER = "edit_image_owner";
|
public const EDIT_IMAGE_OWNER = "edit_image_owner";
|
||||||
public const EDIT_IMAGE_LOCK = "edit_image_lock";
|
public const EDIT_IMAGE_LOCK = "edit_image_lock";
|
||||||
|
public const EDIT_IMAGE_TITLE = "edit_image_title";
|
||||||
public const BULK_EDIT_IMAGE_TAG = "bulk_edit_image_tag";
|
public const BULK_EDIT_IMAGE_TAG = "bulk_edit_image_tag";
|
||||||
public const BULK_EDIT_IMAGE_SOURCE = "bulk_edit_image_source";
|
public const BULK_EDIT_IMAGE_SOURCE = "bulk_edit_image_source";
|
||||||
public const DELETE_IMAGE = "delete_image";
|
public const DELETE_IMAGE = "delete_image";
|
||||||
|
@ -99,6 +99,7 @@ new UserClass("base", null, [
|
|||||||
Permissions::EDIT_IMAGE_SOURCE => false,
|
Permissions::EDIT_IMAGE_SOURCE => false,
|
||||||
Permissions::EDIT_IMAGE_OWNER => false,
|
Permissions::EDIT_IMAGE_OWNER => false,
|
||||||
Permissions::EDIT_IMAGE_LOCK => false,
|
Permissions::EDIT_IMAGE_LOCK => false,
|
||||||
|
Permissions::EDIT_IMAGE_TITLE => false,
|
||||||
Permissions::BULK_EDIT_IMAGE_TAG => false,
|
Permissions::BULK_EDIT_IMAGE_TAG => false,
|
||||||
Permissions::BULK_EDIT_IMAGE_SOURCE => false,
|
Permissions::BULK_EDIT_IMAGE_SOURCE => false,
|
||||||
Permissions::DELETE_IMAGE => false,
|
Permissions::DELETE_IMAGE => false,
|
||||||
@ -146,6 +147,7 @@ new UserClass("user", "base", [
|
|||||||
Permissions::CREATE_COMMENT => true,
|
Permissions::CREATE_COMMENT => true,
|
||||||
Permissions::EDIT_IMAGE_TAG => true,
|
Permissions::EDIT_IMAGE_TAG => true,
|
||||||
Permissions::EDIT_IMAGE_SOURCE => true,
|
Permissions::EDIT_IMAGE_SOURCE => true,
|
||||||
|
Permissions::EDIT_IMAGE_TITLE => true,
|
||||||
Permissions::CREATE_IMAGE_REPORT => true,
|
Permissions::CREATE_IMAGE_REPORT => true,
|
||||||
Permissions::EDIT_IMAGE_RATING => true,
|
Permissions::EDIT_IMAGE_RATING => true,
|
||||||
|
|
||||||
@ -175,6 +177,7 @@ new UserClass("admin", "base", [
|
|||||||
Permissions::EDIT_IMAGE_TAG => true,
|
Permissions::EDIT_IMAGE_TAG => true,
|
||||||
Permissions::EDIT_IMAGE_SOURCE => true,
|
Permissions::EDIT_IMAGE_SOURCE => true,
|
||||||
Permissions::EDIT_IMAGE_OWNER => true,
|
Permissions::EDIT_IMAGE_OWNER => true,
|
||||||
|
Permissions::EDIT_IMAGE_TITLE => true,
|
||||||
Permissions::BULK_EDIT_IMAGE_TAG => true,
|
Permissions::BULK_EDIT_IMAGE_TAG => true,
|
||||||
Permissions::BULK_EDIT_IMAGE_SOURCE => true,
|
Permissions::BULK_EDIT_IMAGE_SOURCE => true,
|
||||||
Permissions::MASS_TAG_EDIT => true,
|
Permissions::MASS_TAG_EDIT => true,
|
||||||
|
8
ext/post_titles/config.php
Normal file
8
ext/post_titles/config.php
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
|
||||||
|
abstract class PostTitlesConfig
|
||||||
|
{
|
||||||
|
public const VERSION = "ext_post_titles_version";
|
||||||
|
public const DEFAULT_TO_FILENAME = "post_titles_default_to_filename";
|
||||||
|
}
|
1
ext/post_titles/events/post_title_set_event.php
Normal file
1
ext/post_titles/events/post_title_set_event.php
Normal file
@ -0,0 +1 @@
|
|||||||
|
<?php
|
85
ext/post_titles/main.php
Normal file
85
ext/post_titles/main.php
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Name: Post Titles
|
||||||
|
* Author: Matthew Barbour <matthew@darkholme.net>
|
||||||
|
* License: MIT
|
||||||
|
* Description: Add titles to media posts
|
||||||
|
*/
|
||||||
|
|
||||||
|
require_once "config.php";
|
||||||
|
require_once "events/post_title_set_event.php";
|
||||||
|
|
||||||
|
class PostTitles extends Extension
|
||||||
|
{
|
||||||
|
public function onInitExt(InitExtEvent $event)
|
||||||
|
{
|
||||||
|
global $config, $database;
|
||||||
|
|
||||||
|
$config->set_default_bool(PostTitlesConfig::DEFAULT_TO_FILENAME, false);
|
||||||
|
|
||||||
|
if ($config->get_int(PostTitlesConfig::VERSION) < 1) {
|
||||||
|
$this->install();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private function install()
|
||||||
|
{
|
||||||
|
global $config, $database;
|
||||||
|
|
||||||
|
if ($config->get_int(PostTitlesConfig::VERSION) < 1) {
|
||||||
|
$database->Execute("ALTER TABLE images ADD COLUMN title varchar(255) NULL");
|
||||||
|
$config->set_int(PostTitlesConfig::VERSION, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function onImageInfoBoxBuilding(ImageInfoBoxBuildingEvent $event)
|
||||||
|
{
|
||||||
|
global $user;
|
||||||
|
|
||||||
|
$event->add_part($this->theme->get_title_set_html(self::get_title($event->image), $user->can(Permissions::EDIT_IMAGE_TITLE)), 10);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function onImageInfoSet(ImageInfoSetEvent $event)
|
||||||
|
{
|
||||||
|
global $user;
|
||||||
|
|
||||||
|
if ($user->can(Permissions::EDIT_IMAGE_TITLE) && isset($_POST["post_title"])) {
|
||||||
|
$title = $_POST["post_title"];
|
||||||
|
send_event(new PostTitleSetEvent($event->image, $title));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function onPostTitleSet(PostTitleSetEvent $event)
|
||||||
|
{
|
||||||
|
$this->set_title($event->image->id, $event->title);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function onSetupBuilding(SetupBuildingEvent $event)
|
||||||
|
{
|
||||||
|
$sb = new SetupBlock("Post Titles");
|
||||||
|
$sb->start_table();
|
||||||
|
$sb->add_bool_option(PostTitlesConfig::DEFAULT_TO_FILENAME,"Default to filename", true);
|
||||||
|
$sb->end_table();
|
||||||
|
|
||||||
|
$event->panel->add_block($sb);
|
||||||
|
}
|
||||||
|
|
||||||
|
private function set_title(int $image_id, string $title)
|
||||||
|
{
|
||||||
|
global $database;
|
||||||
|
$database->Execute("UPDATE images SET title=? WHERE id=?", [$title, $image_id]);
|
||||||
|
log_info("post_titles", "Title for Image #{$image_id} set to: ".$title);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function get_title(Image $image): string
|
||||||
|
{
|
||||||
|
global $config;
|
||||||
|
|
||||||
|
$title = $image->title??"";
|
||||||
|
if(empty($title) && $config->get_bool(PostTitlesConfig::DEFAULT_TO_FILENAME)) {
|
||||||
|
$info = pathinfo($image->filename);
|
||||||
|
$title = basename($image->filename,'.'.$info['extension']);
|
||||||
|
}
|
||||||
|
return $title;
|
||||||
|
}
|
||||||
|
}
|
25
ext/post_titles/theme.php
Normal file
25
ext/post_titles/theme.php
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
<?php
|
||||||
|
class PostTitlesTheme extends Themelet
|
||||||
|
{
|
||||||
|
public function get_title_set_html(string $title, bool $can_set): string
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
$html = "
|
||||||
|
<tr>
|
||||||
|
<th>Title</th>
|
||||||
|
<td>
|
||||||
|
".($can_set ? "
|
||||||
|
<span class='view'>".html_escape($title)."</span>
|
||||||
|
<span class='edit'>
|
||||||
|
<input class='edit' type='text' name='post_title' value='".html_escape($title)."' />
|
||||||
|
</span>
|
||||||
|
" : html_escape("
|
||||||
|
$title
|
||||||
|
"))."
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
";
|
||||||
|
return $html;
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user