1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116
<?php
namespace MatthiasWeb\RealMediaLibrary\general;
use MatthiasWeb\RealMediaLibrary\base;
use MatthiasWeb\RealMediaLibrary\attachment;
use MatthiasWeb\RealMediaLibrary\folder;
defined( 'ABSPATH' ) or die( 'No script kiddies please!' );
class FolderShortcode extends base\Base {
private static $me = null;
public static $TAG = 'folder-gallery';
function __construct($args = array()){
if (is_admin()){
add_action('admin_head', array($this, 'admin_head'));
add_action('RML/Localize', array($this, 'localize'));
}
}
function admin_head() {
if (!current_user_can( 'edit_posts' ) && !current_user_can( 'edit_pages' )) {
return;
}
if ('true' == get_user_option( 'rich_editing' )) {
add_filter('mce_external_plugins', array( $this ,'mce_external_plugins' ));
add_filter('mce_buttons', array($this, 'mce_buttons' ));
}
}
public function shortcode_atts_gallery($out, $pairs, $atts) {
$atts = shortcode_atts( array(
'fid' => -2,
'order' => 'DESC',
'orderby' => 'date'
), $atts );
if ($atts["orderby"] == "rml") {
$out["orderby"] = "menu_order ID";
}
if ($atts["fid"] > -2) {
if ($atts["fid"] > -1) {
$folder = wp_rml_get_object_by_id($atts["fid"]);
if ($folder != null) {
$out["include"] .= ',' . implode(',', $folder->read($atts["order"], $atts["orderby"]));
}
}else{
$out["include"] .= ',' . implode(',', folder\Creatable::xread(-1, $atts["order"], $atts["orderby"]));
}
$out["include"] = ltrim($out["include"], ',');
$out["include"] = rtrim($out["include"], ',');
}
if (isset($out["orderby"]) && $out["orderby"] == "menu_order ID") {
$out["orderby"] = "post__in";
}
return $out;
}
public function localize($arr) {
$arr["mce"] = array(
'mceButtonTooltip' => __('Gallery from Media Folder', RML_TD),
'mceListBoxDirsTooltip' => __('Note: You can only select galleries. Folders and collections are grayed.', RML_TD),
'mceBodyGallery' => __('Folder', RML_TD),
'mceBodyLinkTo' => __('Link to'),
'mceBodyColumns' => __('Columns'),
'mceBodyRandomOrder' => __('Random Order'),
'mceBodySize' => __('Size'),
'mceBodyLinkToValues' => array(
array("value" => "post", "text" => __('Attachment File')),
array("value" => "file", "text" => __('Media File')),
array("value" => "none", "text" => __('None'))
),
'mceBodySizeValues' => array(
array("value" => "thumbnail", "text" => __('Thumbnail')),
array("value" => "medium", "text" => __('Medium')),
array("value" => "large", "text" => __('Large')),
array("value" => "full", "text" => __('Full Size'))
)
);
return $arr;
}
function mce_external_plugins( $plugin_array ) {
$min = defined('SCRIPT_DEBUG') && SCRIPT_DEBUG === true ? '' : '.min';
$assets = $this->getCore()->getAssets();
$dir = $assets->isScriptDebug() ? "dev" : "dist";
$plugin_array[self::$TAG] = plugins_url('public/' . $dir . '/rml_shortcode' . $min . '.js' , RML_FILE );
return $plugin_array;
}
function mce_buttons( $buttons ) {
array_push($buttons, self::$TAG);
return $buttons;
}
public static function getInstance() {
if (self::$me == null) {
self::$me = new FolderShortcode();
}
return self::$me;
}
}