Added the incredible Front End Editor plugin
@@ -0,0 +1,147 @@
|
||||
<?php
|
||||
|
||||
class FEE_Admin extends scbBoxesPage {
|
||||
|
||||
function setup() {
|
||||
$this->textdomain = 'front-end-editor';
|
||||
|
||||
$this->args = array('page_title' => __('Front-end Editor', $this->textdomain));
|
||||
|
||||
$this->boxes = array(
|
||||
array('fields', __('Fields', $this->textdomain), 'normal'),
|
||||
array('settings', __('Settings', $this->textdomain), 'side'),
|
||||
);
|
||||
}
|
||||
|
||||
function page_head() {
|
||||
?>
|
||||
<style type="text/css">
|
||||
#fields table {
|
||||
clear: none;
|
||||
width: auto;
|
||||
float: left;
|
||||
margin-right: 1em !important;
|
||||
}
|
||||
|
||||
#fields thead th {
|
||||
background: #F1F1F1;
|
||||
padding: 5px 8px 8px;
|
||||
line-height: 1;
|
||||
font-size: 11px;
|
||||
}
|
||||
#fields .check-column, #fields th, #fields td {padding-left: 0 !important}
|
||||
|
||||
#fields .submit {
|
||||
clear: both !important;
|
||||
}
|
||||
</style>
|
||||
<?php
|
||||
}
|
||||
|
||||
function fields_handler() {
|
||||
if ( ! isset($_POST['manage_fields']) )
|
||||
return;
|
||||
|
||||
$disabled = array();
|
||||
foreach ( array_keys( FEE_Core::get_fields() ) as $field )
|
||||
if ( ! isset($_POST[$field]) )
|
||||
$disabled[] = $field;
|
||||
|
||||
$this->options->disabled = $disabled;
|
||||
|
||||
$this->admin_msg();
|
||||
}
|
||||
|
||||
function fields_box() {
|
||||
// Separate fields
|
||||
$post_fields = $other_fields = array();
|
||||
foreach ( FEE_Core::get_fields() as $field => $args )
|
||||
if ( 'post' == call_user_func(array($args['class'], 'get_object_type') ) )
|
||||
$post_fields[$field] = $args;
|
||||
else
|
||||
$other_fields[$field] = $args;
|
||||
|
||||
echo html('p', __('Enable or disable editable fields', $this->textdomain));
|
||||
|
||||
$tables = self::fields_table(__('Post fields', $this->textdomain), $post_fields);
|
||||
$tables .= self::fields_table(__('Other fields', $this->textdomain), $other_fields);
|
||||
|
||||
echo $this->form_wrap($tables, '', 'manage_fields');
|
||||
}
|
||||
|
||||
private function fields_table($title, $fields) {
|
||||
$thead =
|
||||
html('thead',
|
||||
html('tr',
|
||||
html('th scope="col" class="check-column"', '<input type="checkbox" />')
|
||||
.html('th scope="col"', $title)
|
||||
)
|
||||
);
|
||||
|
||||
$tbody = '';
|
||||
foreach ( $fields as $field => $args )
|
||||
$tbody .=
|
||||
html('tr',
|
||||
html('th scope="row" class="check-column"',
|
||||
$this->input(array(
|
||||
'type' => 'checkbox',
|
||||
'name' => $field,
|
||||
'checked' => ! @in_array($field, $this->options->disabled)
|
||||
))
|
||||
)
|
||||
.html('td', $args['title'])
|
||||
);
|
||||
|
||||
return html('table class="widefat"', $thead . $tbody);
|
||||
}
|
||||
|
||||
function settings_handler() {
|
||||
if ( !isset($_POST['save_settings']) )
|
||||
return;
|
||||
|
||||
foreach ( array('rich', 'chunks', 'reset_date', 'highlight', 'tooltip') as $key )
|
||||
$this->options->$key = (bool) @$_POST[$key];
|
||||
|
||||
$this->admin_msg();
|
||||
}
|
||||
|
||||
function settings_box() {
|
||||
$rows = array(
|
||||
array(
|
||||
'desc' => __('Enable the WYSIWYG editor', $this->textdomain),
|
||||
'type' => 'checkbox',
|
||||
'name' => 'rich',
|
||||
),
|
||||
|
||||
array(
|
||||
'desc' => __('Edit one paragraph at a time, instead of an entire post', $this->textdomain),
|
||||
'type' => 'checkbox',
|
||||
'name' => 'chunks',
|
||||
),
|
||||
|
||||
array(
|
||||
'desc' => __('Reset the post date on each edit', $this->textdomain),
|
||||
'type' => 'checkbox',
|
||||
'name' => 'reset_date',
|
||||
),
|
||||
|
||||
array(
|
||||
'desc' => __('Highlight editable elements', $this->textdomain),
|
||||
'type' => 'checkbox',
|
||||
'name' => 'highlight',
|
||||
),
|
||||
array(
|
||||
'desc' => __('Display a tooltip above editable elements', $this->textdomain),
|
||||
'type' => 'checkbox',
|
||||
'name' => 'tooltip',
|
||||
),
|
||||
);
|
||||
|
||||
$out = '';
|
||||
foreach ( $rows as $row )
|
||||
$out .= html('p', $this->input($row));
|
||||
|
||||
echo $this->form_wrap($out, '', 'save_settings');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,240 @@
|
||||
<?php
|
||||
|
||||
abstract class FEE_Core {
|
||||
static $options;
|
||||
|
||||
private static $fields;
|
||||
private static $active_fields;
|
||||
private static $instances = array();
|
||||
|
||||
private static $plugin_url;
|
||||
private static $version;
|
||||
private static $nonce = 'front-editor';
|
||||
|
||||
static function init($options, $version) {
|
||||
self::$options = $options;
|
||||
self::$version = $version;
|
||||
|
||||
add_action('front_end_editor_fields', array(__CLASS__, 'make_instances'), 100);
|
||||
|
||||
add_action('wp_ajax_front-editor', array(__CLASS__, 'ajax_response'));
|
||||
|
||||
add_action('template_redirect', array(__CLASS__, '_init'));
|
||||
}
|
||||
|
||||
static function _init() {
|
||||
if ( ! is_user_logged_in() || apply_filters('front_end_editor_disable', false) )
|
||||
return;
|
||||
|
||||
add_action('wp_head', array(__CLASS__, 'add_filters'), 100);
|
||||
add_action('wp_footer', array(__CLASS__, 'scripts'));
|
||||
|
||||
if ( self::$options->highlight )
|
||||
add_action('wp_head', array(__CLASS__, 'highlight'));
|
||||
}
|
||||
|
||||
static function highlight() {
|
||||
?>
|
||||
<style type='text/css'>.fee-field:hover, .fee-field:hover > * {background-color: #ffffa5}</style>
|
||||
<?php
|
||||
}
|
||||
|
||||
static function scripts() {
|
||||
$wrapped = FEE_Field_Base::get_wrapped();
|
||||
|
||||
if ( empty($wrapped) )
|
||||
return;
|
||||
|
||||
$url = plugins_url('editor/', __FILE__);
|
||||
|
||||
$css_dev = defined('STYLE_DEBUG') && STYLE_DEBUG ? '.dev' : '';
|
||||
$js_dev = defined('SCRIPT_DEBUG') && SCRIPT_DEBUG ? '.dev' : '';
|
||||
|
||||
// Prepare data
|
||||
$field_types = array();
|
||||
foreach ( self::$active_fields as $name => $args )
|
||||
$field_types[$name] = $args['type'];
|
||||
|
||||
$data = array(
|
||||
'save_text' => __('Save', 'front-end-editor'),
|
||||
'cancel_text' => __('Cancel', 'front-end-editor'),
|
||||
'fields' => $field_types,
|
||||
'ajax_url' => admin_url('admin-ajax.php'),
|
||||
'spinner' => admin_url('images/loading.gif'),
|
||||
'nonce' => wp_create_nonce(self::$nonce),
|
||||
);
|
||||
|
||||
$css_dependencies = array();
|
||||
$js_dependencies = array('jquery');
|
||||
|
||||
// qTip
|
||||
if ( self::$options->tooltip ) {
|
||||
$data['tooltip'] = array(
|
||||
'icon' => $url . 'editor.png',
|
||||
'text' => __('Double-click to edit', 'front-end-editor')
|
||||
);
|
||||
|
||||
wp_register_script('jquery-qtip', $url . "jquery.qtip$js_dev.js", array(), '1.0-rc3', true);
|
||||
$js_dependencies[] = 'jquery-qtip';
|
||||
}
|
||||
|
||||
// Autosuggest
|
||||
if ( array_key_exists('terminput', $wrapped) ) {
|
||||
$js_dependencies[] = 'suggest';
|
||||
}
|
||||
|
||||
// Rich Editor
|
||||
if ( array_key_exists('rich', $wrapped) ) {
|
||||
$data['nicedit'] = apply_filters('front_end_editor_nicedit', array(
|
||||
'iconsPath' => $url . 'nicedit/nicEditorIcons.gif',
|
||||
'buttonList' => array(
|
||||
'bold', 'italic', 'strikethrough',
|
||||
'left','center', 'right',
|
||||
'fontFormat', 'fontFamily', 'forecolor',
|
||||
'removeformat',
|
||||
'ul', 'ol',
|
||||
'link', 'image',
|
||||
'xhtml'
|
||||
)
|
||||
));
|
||||
|
||||
wp_register_script('nicedit', $url . "nicedit/nicEdit$js_dev.js", array(), '0.9r23', true);
|
||||
$js_dependencies[] = 'nicedit';
|
||||
}
|
||||
|
||||
// Thickbox
|
||||
if ( array_key_exists('image', $wrapped) || array_key_exists('thumbnail', $wrapped) ) {
|
||||
$data['admin_url'] = admin_url();
|
||||
|
||||
$data['image'] = array(
|
||||
'change' => __('Change Image', 'front-end-editor'),
|
||||
'revert' => '(' . __('Clear', 'front-end-editor') . ')',
|
||||
'tb_close' => get_bloginfo('wpurl') . '/wp-includes/js/thickbox/tb-close.png',
|
||||
);
|
||||
|
||||
$css_dependencies[] = 'thickbox';
|
||||
$js_dependencies[] = 'thickbox';
|
||||
|
||||
wp_register_script('livequery', $url . 'livequery.js', array('jquery'), '1.1.0-pre', true);
|
||||
$js_dependencies[] = 'livequery';
|
||||
}
|
||||
|
||||
// Core script
|
||||
wp_register_style('front-end-editor', $url . "editor$css_dev.css", $css_dependencies, self::$version);
|
||||
wp_register_script('front-end-editor', $url . "editor$js_dev.js", $js_dependencies, self::$version, true);
|
||||
|
||||
?>
|
||||
<script type='text/javascript'>
|
||||
var FrontEndEditor = {};
|
||||
FrontEndEditor.data = <?php echo json_encode($data) ?>;
|
||||
</script>
|
||||
<?php
|
||||
scbUtil::do_scripts('front-end-editor');
|
||||
scbUtil::do_styles('front-end-editor');
|
||||
}
|
||||
|
||||
// Register a new editable field
|
||||
static function register() {
|
||||
list ( $filter, $args ) = func_get_arg(0);
|
||||
|
||||
if ( ! is_subclass_of($args['class'], 'FEE_Field_Base') ) {
|
||||
trigger_error($args['class'] . " must be a subclass of " . 'FEE_Field_Base', E_USER_ERROR);
|
||||
return false;
|
||||
}
|
||||
|
||||
if ( isset(self::$fields[$filter]) )
|
||||
$args = wp_parse_args($args, self::$fields[$filter]);
|
||||
else
|
||||
$args = wp_parse_args($args, array(
|
||||
'title' => ucfirst(str_replace('_', ' ', $filter)),
|
||||
'type' => 'input',
|
||||
'priority' => 11,
|
||||
'argc' => 1
|
||||
));
|
||||
|
||||
self::$fields[$filter] = $args;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static function make_instances() {
|
||||
self::$active_fields = self::get_fields();
|
||||
foreach ( (array) self::$options->disabled as $name )
|
||||
unset(self::$active_fields[$name]);
|
||||
|
||||
foreach ( self::$active_fields as $name => $args ) {
|
||||
extract($args);
|
||||
|
||||
self::$instances[$name] = new $class($name, $type);
|
||||
}
|
||||
}
|
||||
|
||||
static function add_filters() {
|
||||
foreach ( self::$active_fields as $name => $args ) {
|
||||
extract($args);
|
||||
|
||||
$instance = self::$instances[$name];
|
||||
|
||||
add_filter($name, array($instance, 'wrap'), $priority, $argc);
|
||||
}
|
||||
}
|
||||
|
||||
static function get_fields() {
|
||||
return self::$fields;
|
||||
}
|
||||
|
||||
static function get_args($filter) {
|
||||
return self::$fields[$filter];
|
||||
}
|
||||
|
||||
static function ajax_response() {
|
||||
// Is user trusted?
|
||||
check_ajax_referer(self::$nonce, 'nonce');
|
||||
|
||||
$id = $_POST['item_id'];
|
||||
$name = $_POST['name'];
|
||||
$type = $_POST['type'];
|
||||
$action = $_POST['callback'];
|
||||
|
||||
// Is the current field defined?
|
||||
if ( ! $instance = self::$instances[$name] )
|
||||
die(-1);
|
||||
|
||||
// Does the user have the right to do this?
|
||||
if ( ! $instance->check($id) || ! $instance->allow($id) )
|
||||
die(-1);
|
||||
|
||||
$args = self::get_args($name);
|
||||
|
||||
if ( $action == 'save' ) {
|
||||
$content = stripslashes_deep($_POST['content']);
|
||||
$result = $instance->save($id, $content);
|
||||
$result = @apply_filters($name, $result);
|
||||
}
|
||||
elseif ( $action == 'get' ) {
|
||||
$result = $instance->get($id);
|
||||
|
||||
if ( $type == 'rich' )
|
||||
$result = wpautop($result);
|
||||
}
|
||||
|
||||
die($result);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Registers a new editable field
|
||||
|
||||
@param string $filter
|
||||
@param array $args(
|
||||
'class' => string The name of the field handler class (mandatory)
|
||||
'title' => string The user-friendly title (optional)
|
||||
'type' => string: 'input' | 'textarea' | 'rich' | 'image' (default: input)
|
||||
'priority' => integer (default: 11)
|
||||
'argc' => integer (default: 1)
|
||||
)
|
||||
*/
|
||||
function register_fronted_field() {
|
||||
return FEE_Core::register(func_get_args());
|
||||
}
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
.fee-field,.fee-form{margin:0!important;padding:0!important;border-width:0!important;}div.fee-form,textarea.fee-form-content{clear:both!important;width:100%!important;}.fee-form-spinner{border:0!important;width:16px!important;height:16px!important;}div.fee-form button{margin-top:5px;}span.fee-form input{margin-right:5px;}.fee-form button+button{margin-left:5px;}.fee-form button{text-decoration:none!important;line-height:14px!important;font-size:11px!important;vertical-align:middle!important;padding:2px 8px!important;cursor:pointer!important;-moz-border-radius:11px;-khtml-border-radius:11px;-webkit-border-radius:11px;border-radius:11px;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;-khtml-box-sizing:content-box;box-sizing:content-box;}button.fee-form-save{background-color:#23779f;color:#fff;border:1px solid #1c5e7f;font-weight:bold;}.fee-form-save:hover{border:1px solid #000!important;}button.fee-form-cancel{background-color:#fcfcfc;color:#808080;border:1px solid #ddd;}.fee-form-cancel:hover{border:1px solid #666!important;}.nicEdit-selected:focus{outline:none;}.fee-suggest-results{padding:0;margin:0;list-style:none;position:absolute;display:none;z-index:10000;border-width:1px;border-style:solid;}.fee-suggest-results li{padding:2px 5px;white-space:nowrap;text-align:left;}.fee-suggest-match{text-decoration:underline;}.fee-suggest-over{cursor:pointer;}.fee-suggest-results{background-color:#fff;border-color:#808080;}.fee-suggest-results li{color:#101010;}.fee-suggest-match{color:#000;}.fee-suggest-over{background-color:#f0f0b8;}#TB_window #TB_title{background-color:#222;color:#CFCFCF;height:27px;}#fee-img-revert{display:block;float:left;padding:6px 10px 0;}#fee-img-revert:link,#fee-img-revert:active,#fee-img-revert:visited{color:#21759B!important;}#fee-img-revert:hover{color:#D54E21!important;}
|
||||
@@ -0,0 +1,104 @@
|
||||
/* Main */
|
||||
.fee-field, .fee-form {
|
||||
margin: 0 !important;
|
||||
padding: 0 !important;
|
||||
border-width: 0 !important;
|
||||
}
|
||||
div.fee-form, textarea.fee-form-content {
|
||||
clear: both !important;
|
||||
width: 100% !important;
|
||||
}
|
||||
.fee-form-spinner {
|
||||
border: 0 !important;
|
||||
width: 16px !important;
|
||||
height: 16px !important;
|
||||
}
|
||||
|
||||
/* Buttons */
|
||||
div.fee-form button {margin-top: 5px}
|
||||
span.fee-form input {margin-right: 5px}
|
||||
.fee-form button + button {margin-left: 5px}
|
||||
|
||||
.fee-form button {
|
||||
text-decoration: none !important;
|
||||
line-height: 14px !important;
|
||||
font-size: 11px !important;
|
||||
vertical-align: middle !important;
|
||||
padding: 2px 8px !important;
|
||||
cursor: pointer !important;
|
||||
-moz-border-radius: 11px;
|
||||
-khtml-border-radius: 11px;
|
||||
-webkit-border-radius: 11px;
|
||||
border-radius: 11px;
|
||||
-moz-box-sizing: content-box;
|
||||
-webkit-box-sizing: content-box;
|
||||
-khtml-box-sizing: content-box;
|
||||
box-sizing: content-box;
|
||||
}
|
||||
|
||||
button.fee-form-save {
|
||||
background-color: #23779f;
|
||||
color: #fff;
|
||||
border: 1px solid #1c5e7f;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.fee-form-save:hover {
|
||||
border: 1px solid #000 !important;
|
||||
}
|
||||
|
||||
button.fee-form-cancel {
|
||||
background-color: #fcfcfc;
|
||||
color: #808080;
|
||||
border: 1px solid #ddd;
|
||||
}
|
||||
|
||||
.fee-form-cancel:hover {
|
||||
border: 1px solid #666 !important;
|
||||
}
|
||||
|
||||
/* Rich Editor */
|
||||
.nicEdit-selected:focus {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
/* Suggest */
|
||||
.fee-suggest-results {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
list-style: none;
|
||||
position: absolute;
|
||||
display: none;
|
||||
z-index: 10000;
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
}
|
||||
.fee-suggest-results li {padding: 2px 5px; white-space: nowrap; text-align: left}
|
||||
.fee-suggest-match {text-decoration: underline}
|
||||
.fee-suggest-over {cursor: pointer}
|
||||
|
||||
/* Suggest colors */
|
||||
.fee-suggest-results {background-color: #fff; border-color: #808080}
|
||||
.fee-suggest-results li {color: #101010}
|
||||
.fee-suggest-match {color: #000}
|
||||
.fee-suggest-over {background-color: #f0f0b8}
|
||||
|
||||
/* Image */
|
||||
#TB_window #TB_title {
|
||||
background-color: #222;
|
||||
color: #CFCFCF;
|
||||
height: 27px;
|
||||
}
|
||||
|
||||
#fee-img-revert {
|
||||
display: block;
|
||||
float: left;
|
||||
padding: 6px 10px 0;
|
||||
}
|
||||
#fee-img-revert:link, #fee-img-revert:active, #fee-img-revert:visited {
|
||||
color: #21759B !important;
|
||||
}
|
||||
#fee-img-revert:hover {
|
||||
color: #D54E21 !important;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,669 @@
|
||||
(function($){
|
||||
|
||||
if ( FrontEndEditor._loaded )
|
||||
return;
|
||||
FrontEndEditor._loaded = true;
|
||||
|
||||
// http://ejohn.org/blog/simple-javascript-inheritance/
|
||||
// Inspired by base2 and Prototype
|
||||
(function(){
|
||||
var initializing = false, fnTest = /xyz/.test(function(){xyz;}) ? /\b_super\b/ : /.*/;
|
||||
|
||||
// The base Class implementation (does nothing)
|
||||
this.Class = function(){};
|
||||
|
||||
// Create a new Class that inherits from this class
|
||||
Class.extend = function(prop) {
|
||||
var _super = this.prototype;
|
||||
|
||||
// Instantiate a base class (but only create the instance,
|
||||
// don't run the init constructor)
|
||||
initializing = true;
|
||||
var prototype = new this();
|
||||
initializing = false;
|
||||
|
||||
// Copy the properties over onto the new prototype
|
||||
for (var name in prop) {
|
||||
// Check if we're overwriting an existing function
|
||||
prototype[name] = ( typeof prop[name] == "function" &&
|
||||
typeof _super[name] == "function" && fnTest.test(prop[name]) ) ?
|
||||
(function(name, fn){
|
||||
return function() {
|
||||
var tmp = this._super;
|
||||
|
||||
// Add a new ._super() method that is the same method
|
||||
// but on the super-class
|
||||
this._super = _super[name];
|
||||
|
||||
// The method only need to be bound temporarily, so we
|
||||
// remove it when we're done executing
|
||||
var ret = fn.apply(this, arguments);
|
||||
this._super = tmp;
|
||||
|
||||
return ret;
|
||||
};
|
||||
})(name, prop[name]) :
|
||||
prop[name];
|
||||
}
|
||||
|
||||
// The dummy class constructor
|
||||
function Class() {
|
||||
// All construction is actually done in the init method
|
||||
if ( !initializing && this.init )
|
||||
this.init.apply(this, arguments);
|
||||
}
|
||||
|
||||
// Populate our constructed prototype object
|
||||
Class.prototype = prototype;
|
||||
|
||||
// Enforce the constructor to be what we expect
|
||||
Class.constructor = Class;
|
||||
|
||||
// And make this class extendable
|
||||
Class.extend = arguments.callee;
|
||||
|
||||
return Class;
|
||||
};
|
||||
})();
|
||||
|
||||
|
||||
// _____Actual code starts here_____
|
||||
|
||||
|
||||
var spinner = $('<img>').attr({
|
||||
'src': FrontEndEditor.data.spinner,
|
||||
'class': 'front-editor-spinner'
|
||||
});
|
||||
|
||||
var is_overlay = function($el) {
|
||||
var attr = [$el.attr('id'), $el.attr("class"), $el.attr("rel")];
|
||||
|
||||
var tokens = ['lightbox', 'thickbox', 'shutter', 'awppost_link'];
|
||||
|
||||
for ( var i in tokens )
|
||||
for ( var j in attr )
|
||||
if ( attr[j].indexOf(tokens[i]) != -1 )
|
||||
return true;
|
||||
|
||||
return false;
|
||||
};
|
||||
|
||||
var resume = function() {
|
||||
if ( FrontEndEditor._trap )
|
||||
return;
|
||||
|
||||
var $link = FrontEndEditor._to_click;
|
||||
|
||||
if ( typeof $link == 'undefined' )
|
||||
return;
|
||||
|
||||
/*
|
||||
var ev_reference;
|
||||
var ev_capture = function(ev) { ev_reference = ev; }
|
||||
|
||||
var onClick = $link.attr('onclick');
|
||||
|
||||
$link.bind('click', ev_capture);
|
||||
|
||||
if ( typeof onClick == 'function' )
|
||||
$link.bind('click', onClick);
|
||||
|
||||
$link.click();
|
||||
|
||||
$link.unbind('click', ev_capture);
|
||||
|
||||
if ( typeof onClick == 'function' )
|
||||
$link.unbind('click', onClick);
|
||||
|
||||
if ( ev_reference.isDefaultPrevented() )
|
||||
return;
|
||||
*/
|
||||
|
||||
if ( typeof $link.attr('href') != 'undefined' && $link.attr('href') != '#' ) {
|
||||
if ( $link.attr('target') == '_blank' )
|
||||
window.open($link.attr('href'));
|
||||
else
|
||||
window.location.href = $link.attr('href');
|
||||
}
|
||||
|
||||
delete FrontEndEditor._to_click;
|
||||
};
|
||||
|
||||
var fieldTypes = {};
|
||||
|
||||
fieldTypes['base'] = Class.extend({
|
||||
|
||||
init: function($el, type, name, id) {
|
||||
var self = this;
|
||||
|
||||
self.set_el($el);
|
||||
self.type = type;
|
||||
self.name = name;
|
||||
self.id = id;
|
||||
|
||||
self.bind(self.el, 'click', self.click);
|
||||
self.bind(self.el, 'dblclick', self.dblclick);
|
||||
},
|
||||
|
||||
set_el: function($el) {
|
||||
var self = this;
|
||||
|
||||
self.el = $el;
|
||||
|
||||
// From a > .front-ed > content
|
||||
// To .front-ed > a > content
|
||||
var $parent = self.el.parents('a');
|
||||
|
||||
if ( ! $parent.length )
|
||||
return;
|
||||
|
||||
var $link = $parent.clone(true)
|
||||
.html(self.el.html());
|
||||
|
||||
var $wrap = self.el.clone(true)
|
||||
.html($link);
|
||||
|
||||
$parent.replaceWith($wrap);
|
||||
|
||||
self.el = $wrap;
|
||||
self.switched = true;
|
||||
},
|
||||
|
||||
click: function(ev) {
|
||||
// if ( typeof FrontEndEditor._to_click != 'undefined' )
|
||||
// return;
|
||||
|
||||
var $el = $(ev.target).closest('a');
|
||||
|
||||
if ( ! $el.length )
|
||||
return;
|
||||
|
||||
if ( is_overlay($el) )
|
||||
return;
|
||||
|
||||
ev.stopImmediatePropagation();
|
||||
ev.preventDefault();
|
||||
|
||||
FrontEndEditor._to_click = $el;
|
||||
|
||||
setTimeout(resume, 300);
|
||||
},
|
||||
|
||||
dblclick: function(ev) {
|
||||
var self = this;
|
||||
|
||||
ev.stopPropagation();
|
||||
ev.preventDefault();
|
||||
|
||||
FrontEndEditor._trap = true;
|
||||
},
|
||||
|
||||
get_content: null /* function() */,
|
||||
set_content: null /* function(content) */,
|
||||
|
||||
ajax_get_handler: null /* function(content) */,
|
||||
ajax_set_handler: null /* function(content) */,
|
||||
|
||||
ajax_get: function() {
|
||||
var self = this;
|
||||
|
||||
var data = {
|
||||
'nonce': FrontEndEditor.data.nonce,
|
||||
'action': 'front-editor',
|
||||
'callback': 'get',
|
||||
'name': self.name,
|
||||
'type': self.type,
|
||||
'item_id': self.id
|
||||
};
|
||||
|
||||
$.post(FrontEndEditor.data.ajax_url, data, function(response){
|
||||
self.ajax_get_handler(response);
|
||||
});
|
||||
},
|
||||
|
||||
ajax_set: function(content) {
|
||||
var self = this;
|
||||
|
||||
content = content || self.get_content();
|
||||
|
||||
var data = {
|
||||
'nonce': FrontEndEditor.data.nonce,
|
||||
'action': 'front-editor',
|
||||
'callback': 'save',
|
||||
'name': self.name,
|
||||
'type': self.type,
|
||||
'item_id': self.id,
|
||||
'content': content
|
||||
};
|
||||
|
||||
$.post(FrontEndEditor.data.ajax_url, data, function(response){
|
||||
self.ajax_set_handler(response);
|
||||
});
|
||||
},
|
||||
|
||||
// Event utility: this = self
|
||||
bind: function(element, event, callback) {
|
||||
var self = this;
|
||||
|
||||
element.bind(event, function(ev) {
|
||||
callback.call(self, ev);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
fieldTypes['image'] = fieldTypes['base'].extend({
|
||||
|
||||
dblclick: function(ev) {
|
||||
var self = this;
|
||||
|
||||
self._super(ev);
|
||||
|
||||
self.open_box();
|
||||
},
|
||||
|
||||
open_box: function() {
|
||||
var self = this;
|
||||
|
||||
tb_show(FrontEndEditor.data.image.change, FrontEndEditor.data.admin_url +
|
||||
'/media-upload.php?post_id=0&type=image&TB_iframe=true&width=640&editable_image=1');
|
||||
|
||||
var $revert = $('<a id="fee-img-revert" href="#">').text(FrontEndEditor.data.image.revert);
|
||||
|
||||
$revert.click(function(ev){
|
||||
self.ajax_set(-1);
|
||||
});
|
||||
|
||||
$('#TB_ajaxWindowTitle').after($revert);
|
||||
$('#TB_closeWindowButton img').attr('src', FrontEndEditor.data.image.tb_close);
|
||||
|
||||
self.bind($('#TB_iframeContent'), 'load', self.replace_button);
|
||||
},
|
||||
|
||||
replace_button: function(ev) {
|
||||
var self = this;
|
||||
|
||||
var $frame = $(ev.target).contents();
|
||||
|
||||
$('.media-item', $frame).livequery(function(){
|
||||
var $item = $(this);
|
||||
var $button = $('<a href="#" class="button">').text(FrontEndEditor.data.image.change);
|
||||
|
||||
$button.click(function(ev){
|
||||
self.ajax_set(self.get_content($item));
|
||||
});
|
||||
|
||||
$(this).find(':submit, #go_button').replaceWith($button);
|
||||
});
|
||||
},
|
||||
|
||||
get_content: function($item) {
|
||||
var $field;
|
||||
|
||||
// Media library
|
||||
$field = $item.find('.urlfile');
|
||||
if ( $field.length )
|
||||
return $field.attr('title');
|
||||
|
||||
// From URL (embed)
|
||||
$field = $item.find('#embed-src');
|
||||
if ( $field.length )
|
||||
return $field.val();
|
||||
|
||||
// From URL
|
||||
$field = $item.find('#src');
|
||||
if ( $field.length )
|
||||
return $field.val();
|
||||
|
||||
return false;
|
||||
},
|
||||
|
||||
ajax_set_handler: function(url) {
|
||||
var self = this;
|
||||
|
||||
if ( url == -1 ) {
|
||||
window.location.reload(true);
|
||||
} else {
|
||||
self.el.find('img').attr('src', url);
|
||||
tb_remove();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
fieldTypes['thumbnail'] = fieldTypes['image'].extend({
|
||||
|
||||
replace_button: function(ev) {
|
||||
var self = this;
|
||||
|
||||
var $frame = $(ev.target).contents();
|
||||
|
||||
$frame.find('#tab-type_url').remove();
|
||||
|
||||
self._super(ev);
|
||||
},
|
||||
|
||||
get_content: function($item) {
|
||||
return $item.attr('id').replace('media-item-', '');
|
||||
}
|
||||
});
|
||||
|
||||
fieldTypes['input'] = fieldTypes['base'].extend({
|
||||
|
||||
init: function($el, type, name, id) {
|
||||
var self = this;
|
||||
|
||||
self.spinner = spinner.clone();
|
||||
|
||||
self._super($el, type, name, id);
|
||||
},
|
||||
|
||||
input_tag: '<input type="text">',
|
||||
|
||||
create_input: function() {
|
||||
var self = this;
|
||||
|
||||
self.input = $(self.input_tag);
|
||||
|
||||
self.input.attr({
|
||||
'id': 'edit_' + self.el.attr('id'),
|
||||
'class': 'fee-form-content'
|
||||
}).prependTo(self.form);
|
||||
},
|
||||
|
||||
set_input: function(content) {
|
||||
var self = this;
|
||||
|
||||
self.input.val(content);
|
||||
},
|
||||
|
||||
get_content: function() {
|
||||
var self = this;
|
||||
return self.input.val();
|
||||
},
|
||||
|
||||
set_content: function(content) {
|
||||
var self = this;
|
||||
|
||||
if ( self.switched )
|
||||
self.el.find('a').html(content);
|
||||
else
|
||||
self.el.html(content);
|
||||
},
|
||||
|
||||
ajax_get: function() {
|
||||
var self = this;
|
||||
|
||||
self.el.hide().after(self.spinner.show());
|
||||
|
||||
self.create_input();
|
||||
|
||||
self._super();
|
||||
},
|
||||
|
||||
ajax_set: function() {
|
||||
var self = this;
|
||||
|
||||
self.el.before(self.spinner.show());
|
||||
|
||||
self._super();
|
||||
},
|
||||
|
||||
ajax_get_handler: function(content) {
|
||||
var self = this;
|
||||
|
||||
self.spinner.hide().replaceWith(self.form);
|
||||
|
||||
self.set_input(content);
|
||||
|
||||
self.input.focus();
|
||||
},
|
||||
|
||||
ajax_set_handler: function(content) {
|
||||
var self = this;
|
||||
|
||||
self.set_content(content);
|
||||
|
||||
self.spinner.hide();
|
||||
self.el.show();
|
||||
},
|
||||
|
||||
dblclick: function(ev) {
|
||||
var self = this;
|
||||
|
||||
self._super(ev);
|
||||
|
||||
self.form_handler();
|
||||
},
|
||||
|
||||
form_handler: function() {
|
||||
var self = this;
|
||||
|
||||
// Button actions
|
||||
var form_remove = function(with_spinner) {
|
||||
FrontEndEditor._trap = false;
|
||||
|
||||
self.form.remove();
|
||||
|
||||
if ( with_spinner === true )
|
||||
self.el.before(self.spinner.show());
|
||||
else
|
||||
self.el.show();
|
||||
|
||||
self.el.trigger('fee_remove_form');
|
||||
};
|
||||
|
||||
var form_submit = function() {
|
||||
self.ajax_set();
|
||||
form_remove(true);
|
||||
};
|
||||
|
||||
// Button markup
|
||||
self.save_button = $('<button>').addClass('fee-form-save').text(FrontEndEditor.data.save_text).click(form_submit);
|
||||
self.cancel_button = $('<button>').addClass('fee-form-cancel').text(FrontEndEditor.data.cancel_text).click(form_remove);
|
||||
|
||||
// Create form
|
||||
var inline = self.type == 'input' || self.type == 'terminput';
|
||||
|
||||
self.form = inline ? $('<span>') : $('<div>');
|
||||
|
||||
self.form
|
||||
.addClass('fee-form')
|
||||
.addClass('fee-type-' + self.type)
|
||||
.addClass('fee-filter-' + self.name)
|
||||
.append(self.save_button)
|
||||
.append(self.cancel_button);
|
||||
|
||||
self.bind(self.form, 'keypress', self.keypress);
|
||||
|
||||
self.ajax_get();
|
||||
},
|
||||
|
||||
keypress: function(ev) {
|
||||
var self = this;
|
||||
|
||||
var keys = {ENTER: 13, ESCAPE: 27};
|
||||
var code = (ev.keyCode || ev.which || ev.charCode || 0);
|
||||
|
||||
if ( code == keys.ENTER && self.type == 'input' )
|
||||
self.save_button.click();
|
||||
|
||||
if ( code == keys.ESCAPE )
|
||||
self.cancel_button.click();
|
||||
}
|
||||
});
|
||||
|
||||
fieldTypes['terminput'] = fieldTypes['input'].extend({
|
||||
|
||||
set_input: function(content) {
|
||||
var self = this;
|
||||
|
||||
self._super(content);
|
||||
|
||||
self.input.suggest(FrontEndEditor.data.ajax_url + '?action=ajax-tag-search&tax=' + self.id.split('#')[1], {
|
||||
multiple: true,
|
||||
resultsClass: 'fee-suggest-results',
|
||||
selectClass: 'fee-suggest-over',
|
||||
matchClass: 'fee-suggest-match'
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
fieldTypes['textarea'] = fieldTypes['input'].extend({
|
||||
input_tag: '<textarea rows="10">'
|
||||
});
|
||||
|
||||
fieldTypes['rich'] = fieldTypes['textarea'].extend({
|
||||
|
||||
set_input: function(content) {
|
||||
var self = this;
|
||||
|
||||
self._super(content);
|
||||
|
||||
self.editor = new nicEditor(FrontEndEditor.data.nicedit).panelInstance(self.input.attr('id'));
|
||||
|
||||
self.form.find('.nicEdit-main').focus();
|
||||
},
|
||||
|
||||
get_content: function() {
|
||||
var self = this;
|
||||
return self.pre_wpautop(self.input.val());
|
||||
},
|
||||
|
||||
// Copied from wp-admin/js/editor.dev.js
|
||||
pre_wpautop: function(content) {
|
||||
var blocklist1, blocklist2;
|
||||
|
||||
// Protect pre|script tags
|
||||
content = content.replace(/<(pre|script)[^>]*>[\s\S]+?<\/\1>/g, function(a) {
|
||||
a = a.replace(/<br ?\/?>[\r\n]*/g, '<wp_temp>');
|
||||
return a.replace(/<\/?p( [^>]*)?>[\r\n]*/g, '<wp_temp>');
|
||||
});
|
||||
|
||||
// Pretty it up for the source editor
|
||||
blocklist1 = 'blockquote|ul|ol|li|table|thead|tbody|tfoot|tr|th|td|div|h[1-6]|p|fieldset';
|
||||
content = content.replace(new RegExp('\\s*</('+blocklist1+')>\\s*', 'g'), '</$1>\n');
|
||||
content = content.replace(new RegExp('\\s*<(('+blocklist1+')[^>]*)>', 'g'), '\n<$1>');
|
||||
|
||||
// Mark </p> if it has any attributes.
|
||||
content = content.replace(/(<p [^>]+>.*?)<\/p>/g, '$1</p#>');
|
||||
|
||||
// Sepatate <div> containing <p>
|
||||
content = content.replace(/<div([^>]*)>\s*<p>/gi, '<div$1>\n\n');
|
||||
|
||||
// Remove <p> and <br />
|
||||
content = content.replace(/\s*<p>/gi, '');
|
||||
content = content.replace(/\s*<\/p>\s*/gi, '\n\n');
|
||||
content = content.replace(/\n[\s\u00a0]+\n/g, '\n\n');
|
||||
content = content.replace(/\s*<br ?\/?>\s*/gi, '\n');
|
||||
|
||||
// Fix some block element newline issues
|
||||
content = content.replace(/\s*<div/g, '\n<div');
|
||||
content = content.replace(/<\/div>\s*/g, '</div>\n');
|
||||
content = content.replace(/\s*\[caption([^\[]+)\[\/caption\]\s*/gi, '\n\n[caption$1[/caption]\n\n');
|
||||
content = content.replace(/caption\]\n\n+\[caption/g, 'caption]\n\n[caption');
|
||||
|
||||
blocklist2 = 'blockquote|ul|ol|li|table|thead|tbody|tfoot|tr|th|td|h[1-6]|pre|fieldset';
|
||||
content = content.replace(new RegExp('\\s*<(('+blocklist2+') ?[^>]*)\\s*>', 'g'), '\n<$1>');
|
||||
content = content.replace(new RegExp('\\s*</('+blocklist2+')>\\s*', 'g'), '</$1>\n');
|
||||
content = content.replace(/<li([^>]*)>/g, '\t<li$1>');
|
||||
|
||||
if ( content.indexOf('<object') != -1 ) {
|
||||
content = content.replace(/<object[\s\S]+?<\/object>/g, function(a){
|
||||
return a.replace(/[\r\n]+/g, '');
|
||||
});
|
||||
}
|
||||
|
||||
// Unmark special paragraph closing tags
|
||||
content = content.replace(/<\/p#>/g, '</p>\n');
|
||||
content = content.replace(/\s*(<p [^>]+>[\s\S]*?<\/p>)/g, '\n$1');
|
||||
|
||||
// Trim whitespace
|
||||
content = content.replace(/^\s+/, '');
|
||||
content = content.replace(/[\s\u00a0]+$/, '');
|
||||
|
||||
// put back the line breaks in pre|script
|
||||
content = content.replace(/<wp_temp>/g, '\n');
|
||||
|
||||
return content;
|
||||
},
|
||||
|
||||
ajax_set: function() {
|
||||
var self = this;
|
||||
|
||||
self.editor.nicInstances[0].saveContent();
|
||||
|
||||
self._super();
|
||||
}
|
||||
});
|
||||
|
||||
// export
|
||||
FrontEndEditor.fieldTypes = fieldTypes;
|
||||
|
||||
$(document).ready(function($) {
|
||||
// Widget fields hack: Add data-fee attr to each element
|
||||
$('.fee-filter-widget_title, .fee-filter-widget_text').each(function() {
|
||||
var $el = $(this);
|
||||
var id = $el.parents('.widget').attr('id');
|
||||
|
||||
if ( id )
|
||||
$el.attr('data-fee', id);
|
||||
else
|
||||
// undo wrap; can't find widget id
|
||||
$el.replaceWith($el.html());
|
||||
});
|
||||
|
||||
// Create field instances
|
||||
$.each(FrontEndEditor.data.fields, function(name, type) {
|
||||
$('.fee-filter-' + name).each(function() {
|
||||
var $el = $(this);
|
||||
|
||||
var id = $el.attr('data-fee');
|
||||
|
||||
var parts = id.split('#');
|
||||
|
||||
switch (name) {
|
||||
case 'post_meta': type = parts[2]; break;
|
||||
case 'editable_option': type = parts[1]; break;
|
||||
}
|
||||
|
||||
new fieldTypes[type]($el, type, name, id);
|
||||
});
|
||||
});
|
||||
|
||||
// Tooltip init
|
||||
if ( FrontEndEditor.data.tooltip ) {
|
||||
$.fn.qtip.styles.fee = {
|
||||
height: 10,
|
||||
paddingTop: '4px',
|
||||
paddingRight: '5px',
|
||||
paddingBottom: '6px',
|
||||
paddingLeft: '25px',
|
||||
background: '#bbbebf url(' + FrontEndEditor.data.tooltip.icon + ') top left no-repeat',
|
||||
color: '#ffffff',
|
||||
textAlign: 'left',
|
||||
lineHeight: '100%',
|
||||
fontFamily: 'sans-serif',
|
||||
fontSize: '14px',
|
||||
opacity: '0.75',
|
||||
border: {
|
||||
width: 0,
|
||||
radius: 5,
|
||||
color: '#bbbebf'
|
||||
},
|
||||
tip: 'bottomLeft',
|
||||
name: 'dark'
|
||||
};
|
||||
|
||||
$('.fee-field').qtip({
|
||||
content: FrontEndEditor.data.tooltip.text,
|
||||
position: { corner: { target: 'topMiddle' }, adjust: { x: 0, y: -40 } },
|
||||
show: {
|
||||
effect: 'fade'
|
||||
},
|
||||
|
||||
style: {
|
||||
name: 'fee'
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
})(jQuery);
|
||||
|
After Width: | Height: | Size: 790 B |
@@ -0,0 +1,9 @@
|
||||
/* Copyright (c) 2008 Brandon Aaron (http://brandonaaron.net)
|
||||
* Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
|
||||
* and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
|
||||
*
|
||||
* Version: 1.0.3
|
||||
* Requires jQuery 1.1.3+
|
||||
* Docs: http://docs.jquery.com/Plugins/livequery
|
||||
*/
|
||||
(function($){$.extend($.fn,{livequery:function(type,fn,fn2){var self=this,q;if($.isFunction(type)){fn2=fn,fn=type,type=undefined}$.each($.livequery.queries,function(i,query){if(self.selector==query.selector&&self.context==query.context&&type==query.type&&(!fn||fn.$lqguid==query.fn.$lqguid)&&(!fn2||fn2.$lqguid==query.fn2.$lqguid)){return(q=query)&&false}});q=q||new $.livequery(this.selector,this.context,type,fn,fn2);q.stopped=false;q.run();return this},expire:function(type,fn,fn2){var self=this;if($.isFunction(type)){fn2=fn,fn=type,type=undefined}$.each($.livequery.queries,function(i,query){if(self.selector==query.selector&&self.context==query.context&&(!type||type==query.type)&&(!fn||fn.$lqguid==query.fn.$lqguid)&&(!fn2||fn2.$lqguid==query.fn2.$lqguid)&&!this.stopped){$.livequery.stop(query.id)}});return this}});$.livequery=function(selector,context,type,fn,fn2){this.selector=selector;this.context=context||document;this.type=type;this.fn=fn;this.fn2=fn2;this.elements=[];this.stopped=false;this.id=$.livequery.queries.push(this)-1;fn.$lqguid=fn.$lqguid||$.livequery.guid++;if(fn2){fn2.$lqguid=fn2.$lqguid||$.livequery.guid++}return this};$.livequery.prototype={stop:function(){var query=this;if(this.type){this.elements.unbind(this.type,this.fn)}else{if(this.fn2){this.elements.each(function(i,el){query.fn2.apply(el)})}}this.elements=[];this.stopped=true},run:function(){if(this.stopped){return}var query=this;var oEls=this.elements,els=$(this.selector,this.context),nEls=els.not(oEls);this.elements=els;if(this.type){nEls.bind(this.type,this.fn);if(oEls.length>0){$.each(oEls,function(i,el){if($.inArray(el,els)<0){$.event.remove(el,query.type,query.fn)}})}}else{nEls.each(function(){query.fn.apply(this)});if(this.fn2&&oEls.length>0){$.each(oEls,function(i,el){if($.inArray(el,els)<0){query.fn2.apply(el)}})}}}};$.extend($.livequery,{guid:0,queries:[],queue:[],running:false,timeout:null,checkQueue:function(){if($.livequery.running&&$.livequery.queue.length){var length=$.livequery.queue.length;while(length--){$.livequery.queries[$.livequery.queue.shift()].run()}}},pause:function(){$.livequery.running=false},play:function(){$.livequery.running=true;$.livequery.run()},registerPlugin:function(){$.each(arguments,function(i,n){if(!$.fn[n]){return}var old=$.fn[n];$.fn[n]=function(){var r=old.apply(this,arguments);$.livequery.run();return r}})},run:function(id){if(id!=undefined){if($.inArray(id,$.livequery.queue)<0){$.livequery.queue.push(id)}}else{$.each($.livequery.queries,function(id){if($.inArray(id,$.livequery.queue)<0){$.livequery.queue.push(id)}})}if($.livequery.timeout){clearTimeout($.livequery.timeout)}$.livequery.timeout=setTimeout($.livequery.checkQueue,20)},stop:function(id){if(id!=undefined){$.livequery.queries[id].stop()}else{$.each($.livequery.queries,function(id){$.livequery.queries[id].stop()})}}});$.livequery.registerPlugin("append","prepend","after","before","wrap","attr","removeAttr","addClass","removeClass","toggleClass","empty","remove");$(function(){$.livequery.play()});var init=$.prototype.init;$.prototype.init=function(a,c){var r=init.apply(this,arguments);if(a&&a.selector){r.context=a.context,r.selector=a.selector}if(typeof a=="string"){r.context=c||document,r.selector=a}return r};$.prototype.init.prototype=$.prototype})(jQuery);
|
||||
|
After Width: | Height: | Size: 3.5 KiB |
@@ -0,0 +1,117 @@
|
||||
<?php
|
||||
|
||||
// All field classes should extend from this one or one of it's descendants
|
||||
abstract class FEE_Field_Base {
|
||||
private $filter;
|
||||
private $input_type;
|
||||
|
||||
private static $wrapped = array();
|
||||
|
||||
/**
|
||||
* Constructor; nothing fancy
|
||||
* @return null
|
||||
*/
|
||||
final public function __construct($filter, $type) {
|
||||
$this->filter = $filter;
|
||||
$this->input_type = $type;
|
||||
|
||||
$this->setup();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* The type of object this field operates with
|
||||
* @return string
|
||||
*/
|
||||
abstract public static function get_object_type();
|
||||
|
||||
/**
|
||||
* Optional actions to be done once per instance
|
||||
* @return null
|
||||
*/
|
||||
protected function setup() {}
|
||||
|
||||
/**
|
||||
* Mark the field as editable
|
||||
* @return string Wrapped content
|
||||
*/
|
||||
public function wrap($content, $object_id, $inline = false) {
|
||||
if ( ! $this->allow($object_id) )
|
||||
return $content;
|
||||
|
||||
self::$wrapped[$this->input_type] = true;
|
||||
|
||||
if ( is_null($content) )
|
||||
$content = '';
|
||||
|
||||
if ( ! is_scalar($content) )
|
||||
trigger_error("scalar expected. " . gettype($content) . " given", E_USER_WARNING);
|
||||
|
||||
$class = 'fee-field fee-filter-' . $this->filter;
|
||||
$object_id = esc_attr($object_id);
|
||||
|
||||
$wrap_tag = ( $inline || in_array($this->input_type, array('input', 'terminput', 'image')) ) ? 'span' : 'div';
|
||||
|
||||
return html("$wrap_tag class='{$class}' data-fee='{$object_id}'", $content);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the current data for the field
|
||||
* @return string Unfiltered content
|
||||
*/
|
||||
abstract public function get($object_id);
|
||||
|
||||
/**
|
||||
* Save the data retrieved from the field
|
||||
* @return string Saved content
|
||||
*/
|
||||
abstract public function save($object_id, $content);
|
||||
|
||||
/**
|
||||
* Check user permissions
|
||||
* @return bool
|
||||
*/
|
||||
abstract public function check($object_id = 0);
|
||||
|
||||
|
||||
/**
|
||||
* Generate a standard placeholder
|
||||
* @return string
|
||||
*/
|
||||
protected function placeholder() {
|
||||
return '[' . __('empty', 'front-end-editor') . ']';
|
||||
}
|
||||
|
||||
protected function placehold($content) {
|
||||
if ( empty($content) )
|
||||
$content = $this->placeholder();
|
||||
|
||||
return $content;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the filter of the current instance
|
||||
* @return string
|
||||
*/
|
||||
final protected function get_filter() {
|
||||
return $this->filter;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Allow external code to block editing for certain objects
|
||||
* @return bool
|
||||
*/
|
||||
final public function allow($object_id) {
|
||||
return apply_filters('front_end_editor_allow_' . $this->get_object_type(), true, $object_id, $this->filter, $this->input_type);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the list of used input types
|
||||
* @return array
|
||||
*/
|
||||
final public static function get_wrapped() {
|
||||
return self::$wrapped;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,380 @@
|
||||
<?php
|
||||
|
||||
// Handles comment_text field
|
||||
class FEE_Field_Comment extends FEE_Field_Base {
|
||||
|
||||
static function get_object_type() {
|
||||
return 'comment';
|
||||
}
|
||||
|
||||
function wrap($content) {
|
||||
global $comment;
|
||||
|
||||
if ( ! $this->check($comment->comment_ID) )
|
||||
return $content;
|
||||
|
||||
return parent::wrap(wpautop($content), $comment->comment_ID);
|
||||
}
|
||||
|
||||
function get($comment_id) {
|
||||
$comment = get_comment($comment_id);
|
||||
return $comment->comment_content;
|
||||
}
|
||||
|
||||
function save($comment_id, $content) {
|
||||
wp_update_comment(array(
|
||||
'comment_ID' => $comment_id,
|
||||
'comment_content' => $content
|
||||
));
|
||||
|
||||
return $content;
|
||||
}
|
||||
|
||||
function check($comment_id = 0) {
|
||||
if ( current_user_can('moderate_comments') )
|
||||
return true;
|
||||
|
||||
global $user_ID;
|
||||
|
||||
$comment = get_comment($comment_id);
|
||||
|
||||
return $user_ID == $comment->user_id;
|
||||
}
|
||||
}
|
||||
|
||||
// Handles single_*_title fields
|
||||
class FEE_Field_Single_Title extends FEE_Field_Base {
|
||||
|
||||
static function get_object_type() {
|
||||
return 'term';
|
||||
}
|
||||
|
||||
private $taxonomy;
|
||||
|
||||
protected function setup() {
|
||||
remove_filter($this->get_filter(), 'strip_tags');
|
||||
|
||||
list($a, $tax, $b) = explode('_', $this->get_filter());
|
||||
|
||||
$translate = array(
|
||||
'cat' => 'category',
|
||||
'tag' => 'post_tag'
|
||||
);
|
||||
|
||||
$this->taxonomy = $translate[$tax];
|
||||
}
|
||||
|
||||
function wrap($title) {
|
||||
if ( ! $this->check() )
|
||||
return $title;
|
||||
|
||||
if ( ! $term = get_term_by('name', $title, $this->taxonomy) )
|
||||
return $title;
|
||||
|
||||
return parent::wrap($title, $term->term_id);
|
||||
}
|
||||
|
||||
function get($term_id) {
|
||||
return get_term_field('name', $term_id, $this->taxonomy, 'edit');
|
||||
}
|
||||
|
||||
function save($term_id, $title) {
|
||||
wp_update_term($term_id, $this->taxonomy, array('name' => $title));
|
||||
|
||||
return $title;
|
||||
}
|
||||
|
||||
function check($id = 0) {
|
||||
return current_user_can('manage_categories');
|
||||
}
|
||||
}
|
||||
|
||||
// Handles the_author_description field
|
||||
class FEE_Field_Author_Desc extends FEE_Field_Base {
|
||||
|
||||
static function get_object_type() {
|
||||
return 'user';
|
||||
}
|
||||
|
||||
function wrap($content, $author_id = '') {
|
||||
if ( ! $author_id )
|
||||
$author_id = $this->guess_author_id();
|
||||
|
||||
if ( ! $author_id )
|
||||
return $content;
|
||||
|
||||
if ( ! $this->check($author_id) )
|
||||
return $content;
|
||||
|
||||
$content = $this->placehold($content);
|
||||
|
||||
return parent::wrap($content, $author_id);
|
||||
}
|
||||
|
||||
// Retrieve the current data for the field
|
||||
function get($author_id) {
|
||||
return get_usermeta($author_id, 'description');
|
||||
}
|
||||
|
||||
function save($author_id, $content) {
|
||||
update_usermeta($author_id, 'description', $content);
|
||||
|
||||
return $content;
|
||||
}
|
||||
|
||||
function check($author_id = 0) {
|
||||
if ( current_user_can('edit_users') )
|
||||
return true;
|
||||
|
||||
global $user_ID;
|
||||
|
||||
return $user_ID == $author_id;
|
||||
}
|
||||
|
||||
// WP < 2.9
|
||||
function guess_author_id() {
|
||||
if ( function_exists('get_the_author_meta') )
|
||||
return get_the_author_meta('id');
|
||||
|
||||
global $authordata;
|
||||
|
||||
return $authordata->ID;
|
||||
}
|
||||
}
|
||||
|
||||
// Handles widget_text and widget_title fields
|
||||
class FEE_Field_Widget extends FEE_Field_Base {
|
||||
|
||||
protected $field;
|
||||
|
||||
static function get_object_type() {
|
||||
return 'widget';
|
||||
}
|
||||
|
||||
protected function setup() {
|
||||
$this->field = str_replace('widget_', '', $this->get_filter());
|
||||
}
|
||||
|
||||
function wrap($content) {
|
||||
if ( ! $this->check() )
|
||||
return $content;
|
||||
|
||||
if ( 'text' == $this->field )
|
||||
$content = $this->placehold($content);
|
||||
|
||||
return parent::wrap($content, 0);
|
||||
}
|
||||
|
||||
function get($id) {
|
||||
return $this->do_('get', $id);
|
||||
}
|
||||
|
||||
function save($id, $content) {
|
||||
return $this->do_('save', $id, $content);
|
||||
}
|
||||
|
||||
private function do_($action, $id, $content = '') {
|
||||
list($widget_type, $widget_id) = explode('-', $id);
|
||||
|
||||
$widget_key = 'widget_' . $widget_type;
|
||||
$widgets = get_option($widget_key);
|
||||
$data =& $widgets[$widget_id][$this->field];
|
||||
|
||||
if ( 'get' == $action ) {
|
||||
return $data;
|
||||
}
|
||||
|
||||
if ( 'save' == $action ) {
|
||||
$data = $content;
|
||||
|
||||
update_option($widget_key, $widgets);
|
||||
|
||||
if ( 'text' == $widget_type
|
||||
&& 'text' == $this->field
|
||||
&& $widgets[$widget_id]['filter'] )
|
||||
$content = wpautop($content);
|
||||
|
||||
if ( 'text' == $this->field )
|
||||
$content = $this->placehold($content);
|
||||
|
||||
return $content;
|
||||
}
|
||||
}
|
||||
|
||||
function check($id = 0) {
|
||||
return current_user_can('edit_themes');
|
||||
}
|
||||
}
|
||||
|
||||
// Handles bloginfo fields
|
||||
class FEE_Field_Bloginfo extends FEE_Field_Base {
|
||||
|
||||
static function get_object_type() {
|
||||
return 'option';
|
||||
}
|
||||
|
||||
function wrap($content, $show) {
|
||||
if ( ! $this->check() )
|
||||
return $content;
|
||||
|
||||
if ( empty($show) && $content == get_option('blogname') )
|
||||
$show = 'name';
|
||||
|
||||
if ( $show != 'description' && $show != 'name' )
|
||||
return $content;
|
||||
|
||||
return parent::wrap($content, $show);
|
||||
}
|
||||
|
||||
function get($show) {
|
||||
return get_option('blog' . $show);
|
||||
}
|
||||
|
||||
function save($show, $content) {
|
||||
update_option('blog' . $show, $content);
|
||||
|
||||
return $content;
|
||||
}
|
||||
|
||||
function check($key = 0) {
|
||||
return current_user_can('manage_options');
|
||||
}
|
||||
}
|
||||
|
||||
// Handles editable_option fields
|
||||
class FEE_Field_Option extends FEE_Field_Base {
|
||||
|
||||
static function init($file) {
|
||||
register_uninstall_hook($file, array(__CLASS__, 'uninstall'));
|
||||
}
|
||||
|
||||
static function uninstall() {
|
||||
global $wpdb;
|
||||
|
||||
$wpdb->query("DELETE FROM $wpdb->options WHERE option_name LIKE 'editable!_option!_%' ESCAPE '!'");
|
||||
}
|
||||
|
||||
static function get_object_type() {
|
||||
return 'option';
|
||||
}
|
||||
|
||||
function wrap($content, $key, $type) {
|
||||
if ( ! $this->check($key) )
|
||||
return $content;
|
||||
|
||||
$content = $this->placehold($content);
|
||||
|
||||
$id = implode('#', array($key, $type));
|
||||
|
||||
return parent::wrap($content, $id);
|
||||
}
|
||||
|
||||
function get($id) {
|
||||
list($key, $type) = explode('#', $id);
|
||||
|
||||
return get_option($key);
|
||||
}
|
||||
|
||||
function save($id, $content) {
|
||||
list($key, $type) = explode('#', $id);
|
||||
|
||||
update_option($key, $content);
|
||||
|
||||
$content = $this->placehold($content);
|
||||
|
||||
return $content;
|
||||
}
|
||||
|
||||
function check($key = 0) {
|
||||
return current_user_can('manage_options');
|
||||
}
|
||||
}
|
||||
|
||||
function editable_option($key, $safety = true, $type = 'input', $echo = true) {
|
||||
if ( $safety )
|
||||
$key = "editable_option_$key";
|
||||
|
||||
$output = apply_filters('editable_option', get_option($key), $key, $type);
|
||||
|
||||
if ( $echo )
|
||||
echo $output;
|
||||
|
||||
return $output;
|
||||
}
|
||||
|
||||
// Handles editable_image fields
|
||||
class FEE_Field_Image extends FEE_Field_Base {
|
||||
|
||||
static function init($file) {
|
||||
register_uninstall_hook($file, array(__CLASS__, 'uninstall'));
|
||||
}
|
||||
|
||||
static function uninstall() {
|
||||
global $wpdb;
|
||||
|
||||
$wpdb->query("DELETE FROM $wpdb->options WHERE option_name LIKE 'editable!_image!_%' ESCAPE '!'");
|
||||
}
|
||||
|
||||
static function get_object_type() {
|
||||
return 'option';
|
||||
}
|
||||
|
||||
function wrap($img, $key) {
|
||||
if ( ! $this->check() )
|
||||
return $img;
|
||||
|
||||
return parent::wrap($img, $key);
|
||||
}
|
||||
|
||||
function get($id) {
|
||||
return get_option(self::get_key($id));
|
||||
}
|
||||
|
||||
function save($id, $url) {
|
||||
if ( $url == -1 )
|
||||
delete_option(self::get_key($id));
|
||||
else
|
||||
update_option(self::get_key($id), $url);
|
||||
|
||||
return $url;
|
||||
}
|
||||
|
||||
function check($id = 0) {
|
||||
return current_user_can('edit_themes');
|
||||
}
|
||||
|
||||
private static function get_key($key) {
|
||||
return 'editable_image_' . trim(strip_tags($key));
|
||||
}
|
||||
}
|
||||
|
||||
function editable_image($key, $default_url, $extra_attr = '', $echo = true) {
|
||||
$attr = wp_parse_args($extra_attr, array(
|
||||
'id' => $key
|
||||
));
|
||||
|
||||
if ( ! $src = FEE_Field_Image::get($key) )
|
||||
$src = $default_url;
|
||||
$attr['src'] = $src;
|
||||
|
||||
$attr_str = '';
|
||||
foreach ( $attr as $a_key => $a_value ) {
|
||||
$a_key = trim(strip_tags($a_key));
|
||||
$a_value = trim(esc_attr($a_value));
|
||||
|
||||
if ( empty($a_key) )
|
||||
continue;
|
||||
|
||||
$attr_str .= " $a_key='$a_value'";
|
||||
}
|
||||
|
||||
$attr_str = ltrim($attr_str);
|
||||
|
||||
$img = apply_filters('editable_image', "<img $attr_str />", $key, $default_url);
|
||||
|
||||
if ( $echo )
|
||||
echo $img;
|
||||
|
||||
return $img;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,369 @@
|
||||
<?php
|
||||
|
||||
// Handles the_title and the_content fields
|
||||
class FEE_Field_Post extends FEE_Field_Base {
|
||||
|
||||
protected $field;
|
||||
|
||||
protected function setup() {
|
||||
$this->field = str_replace('the_', 'post_', $this->get_filter());
|
||||
}
|
||||
|
||||
static function get_object_type() {
|
||||
return 'post';
|
||||
}
|
||||
|
||||
function wrap($content, $post_id = 0) {
|
||||
if ( ! $post_id = $this->_get_id($post_id) )
|
||||
return $content;
|
||||
|
||||
return parent::wrap($content, $post_id);
|
||||
}
|
||||
|
||||
protected function _get_id($post_id = 0, $in_loop = true ) {
|
||||
if ( $in_loop && !in_the_loop() )
|
||||
return false;
|
||||
|
||||
if ( ! $post_id )
|
||||
$post_id = get_the_ID();
|
||||
|
||||
if ( ! $post_id || ! $this->check($post_id) )
|
||||
return false;
|
||||
|
||||
return $post_id;
|
||||
}
|
||||
|
||||
function get($post_id) {
|
||||
return get_post_field($this->field, $post_id);
|
||||
}
|
||||
|
||||
function save($post_id, $content) {
|
||||
$postdata = array(
|
||||
'ID' => $post_id,
|
||||
$this->field => $content
|
||||
);
|
||||
|
||||
if ( FEE_Core::$options->reset_date ) {
|
||||
$postdata['post_date'] = current_time('mysql');
|
||||
$postdata['post_date_gmt'] = current_time('mysql', 1);
|
||||
}
|
||||
|
||||
// reset slug
|
||||
if ( $this->field == 'post_title' ) {
|
||||
$current_slug = get_post_field('post_name', $post_id);
|
||||
$current_title = get_post_field('post_title', $post_id);
|
||||
|
||||
// update only if not explicitly set
|
||||
if ( empty($current_slug) || $current_slug == sanitize_title_with_dashes($current_title) ) {
|
||||
$new_slug = sanitize_title_with_dashes($content);
|
||||
$postdata['post_name'] = $new_slug;
|
||||
}
|
||||
}
|
||||
|
||||
wp_update_post((object) $postdata);
|
||||
|
||||
$this->set_post_global($post_id);
|
||||
|
||||
return $content;
|
||||
}
|
||||
|
||||
function check($post_id = 0) {
|
||||
return current_user_can('edit_' . get_post_type($post_id), $post_id);
|
||||
}
|
||||
|
||||
protected function set_post_global($post_id) {
|
||||
$GLOBALS['post'] = get_post($post_id);
|
||||
}
|
||||
}
|
||||
|
||||
// Handles <p> tags in the_content
|
||||
class FEE_Field_Chunks extends FEE_Field_Post {
|
||||
|
||||
const delim = "\n\n";
|
||||
|
||||
function wrap($content, $post_id = 0) {
|
||||
if ( ! $post_id = $this->_get_id($post_id) )
|
||||
return $content;
|
||||
|
||||
$chunks = $this->split($content);
|
||||
|
||||
foreach ( $chunks as $i => $chunk )
|
||||
$content = str_replace($chunk, FEE_Field_Base::wrap($chunk, "$post_id#$i", true), $content);
|
||||
|
||||
return $content;
|
||||
}
|
||||
|
||||
function get($post_id) {
|
||||
list($post_id, $chunk_id) = explode('#', $post_id);
|
||||
|
||||
$field = get_post_field('post_content', $post_id);
|
||||
|
||||
$chunks = $this->split($field, true);
|
||||
|
||||
return @$chunks[$chunk_id];
|
||||
}
|
||||
|
||||
function save($post_id, $chunk_content) {
|
||||
list($post_id, $chunk_id) = explode('#', $post_id);
|
||||
|
||||
$content = get_post_field('post_content', $post_id);
|
||||
|
||||
$chunks = $this->split($content, true);
|
||||
|
||||
$chunk_content = trim($chunk_content);
|
||||
|
||||
$content = str_replace($chunks[$chunk_id], $chunk_content, $content);
|
||||
|
||||
$postdata = array(
|
||||
'ID' => $post_id,
|
||||
'post_content' => $content
|
||||
);
|
||||
|
||||
wp_update_post((object) $postdata);
|
||||
|
||||
$this->set_post_global($post_id);
|
||||
|
||||
// Refresh the page if a new chunk is added
|
||||
if ( empty($chunk_content) || FALSE !== strpos($chunk_content, self::delim) )
|
||||
$this->force_refresh();
|
||||
|
||||
die($chunk_content);
|
||||
}
|
||||
|
||||
// Split content into chunks
|
||||
protected function split($content, $autop = false) {
|
||||
if ( $autop )
|
||||
$content = wpautop($content);
|
||||
|
||||
preg_match_all("#<p>(.*?)</p>#", $content, $matches);
|
||||
|
||||
return $matches[1];
|
||||
}
|
||||
|
||||
protected function force_refresh() {
|
||||
die("<script language='javascript'>location.reload(true)</script>");
|
||||
}
|
||||
}
|
||||
|
||||
// Handles the_excerpt field
|
||||
class FEE_Field_Excerpt extends FEE_Field_Post {
|
||||
|
||||
function get($post_id) {
|
||||
$post = get_post($post_id);
|
||||
|
||||
$excerpt = $post->post_excerpt;
|
||||
|
||||
if ( empty($excerpt) ) {
|
||||
$this->set_post_global($post_id);
|
||||
$excerpt = $this->trim_excerpt($post->post_content);
|
||||
}
|
||||
|
||||
return $excerpt;
|
||||
}
|
||||
|
||||
function save($post_id, $excerpt) {
|
||||
$default_excerpt = $this->get($post_id);
|
||||
|
||||
if ( $excerpt == $default_excerpt )
|
||||
return $excerpt;
|
||||
|
||||
$postdata = array(
|
||||
'ID' => $post_id,
|
||||
'post_excerpt' => $excerpt
|
||||
);
|
||||
|
||||
wp_update_post((object) $postdata);
|
||||
|
||||
$this->set_post_global($post_id);
|
||||
|
||||
if ( empty($excerpt) )
|
||||
return $default_excerpt;
|
||||
|
||||
return $excerpt;
|
||||
}
|
||||
|
||||
// Copy-paste from wp_trim_excerpt()
|
||||
private function trim_excerpt($text) {
|
||||
$text = apply_filters('the_content', $text);
|
||||
$text = str_replace(']]>', ']]>', $text);
|
||||
$text = strip_tags($text);
|
||||
$excerpt_length = apply_filters('excerpt_length', 55);
|
||||
$words = explode(' ', $text, $excerpt_length + 1);
|
||||
if (count($words) > $excerpt_length) {
|
||||
array_pop($words);
|
||||
array_push($words, '[...]');
|
||||
$text = implode(' ', $words);
|
||||
}
|
||||
|
||||
return apply_filters('get_the_excerpt', $text);
|
||||
}
|
||||
}
|
||||
|
||||
// Handles the_terms field
|
||||
class FEE_Field_Terms extends FEE_Field_Post {
|
||||
|
||||
function wrap($content, $taxonomy, $before, $sep, $after) {
|
||||
if ( ! $post_id = $this->_get_id() )
|
||||
return $content;
|
||||
|
||||
$content = $this->placehold(str_replace(array($before, $after), '', $content));
|
||||
|
||||
$id = implode('#', array($post_id, $taxonomy));
|
||||
|
||||
return $before . FEE_Field_Base::wrap($content, $id) . $after;
|
||||
}
|
||||
|
||||
function get($id) {
|
||||
list($post_id, $taxonomy) = explode('#', $id);
|
||||
|
||||
$tags = get_terms_to_edit($post_id, $taxonomy);
|
||||
$tags = str_replace(',', ', ', $tags);
|
||||
|
||||
return $tags;
|
||||
}
|
||||
|
||||
function save($id, $terms) {
|
||||
list($post_id, $taxonomy) = explode('#', $id);
|
||||
|
||||
wp_set_post_terms($post_id, $terms, $taxonomy);
|
||||
|
||||
$response = get_the_term_list($post_id, $taxonomy, '', ', '); // todo: store $sep somehow
|
||||
|
||||
return $this->placehold($response);
|
||||
}
|
||||
}
|
||||
|
||||
// Handles the_tags field
|
||||
class FEE_Field_Tags extends FEE_Field_Terms {
|
||||
|
||||
function wrap($content, $before, $sep, $after) {
|
||||
return parent::wrap($content, 'post_tag', $before, $sep, $after);
|
||||
}
|
||||
}
|
||||
|
||||
// Handles the_category field
|
||||
class FEE_Field_Category extends FEE_Field_Terms {
|
||||
|
||||
function wrap($content, $sep, $parents) {
|
||||
return parent::wrap($content, 'category', '', $sep, '');
|
||||
}
|
||||
|
||||
function save($id, $categories) {
|
||||
list($post_id, $taxonomy) = explode('#', $id);
|
||||
|
||||
$cat_ids = array();
|
||||
foreach ( explode(',', $categories) as $cat_name ) {
|
||||
if ( ! $cat = get_cat_ID(trim($cat_name)) ) {
|
||||
$args = wp_insert_term($cat_name, $taxonomy);
|
||||
|
||||
if ( is_wp_error($args) )
|
||||
continue;
|
||||
|
||||
$cat = $args['term_id'];
|
||||
}
|
||||
|
||||
$cat_ids[] = $cat;
|
||||
}
|
||||
|
||||
wp_set_post_categories($post_id, $cat_ids);
|
||||
|
||||
$response = get_the_term_list($post_id, $taxonomy, '', ', ');
|
||||
|
||||
return $this->placehold($response);
|
||||
}
|
||||
}
|
||||
|
||||
// Handles the post thumbnail
|
||||
class FEE_Field_Thumbnail extends FEE_Field_Post {
|
||||
|
||||
function wrap($html, $post_id, $post_thumbnail_id, $size) {
|
||||
if ( ! $post_id = $this->_get_id($post_id, false) )
|
||||
return $content;
|
||||
|
||||
$id = implode('#', array($post_id, $size));
|
||||
|
||||
return FEE_Field_Base::wrap($html, $id);
|
||||
}
|
||||
|
||||
function get($id) {
|
||||
list($post_id, $size) = explode('#', $id);
|
||||
|
||||
return get_post_thumbnail_id($post_id);
|
||||
}
|
||||
|
||||
function save($id, $thumbnail_id) {
|
||||
list($post_id, $size) = explode('#', $id);
|
||||
|
||||
if ( -1 == $thumbnail_id ) {
|
||||
delete_post_meta($post_id, '_thumbnail_id');
|
||||
return -1;
|
||||
}
|
||||
|
||||
update_post_meta($post_id, '_thumbnail_id', $thumbnail_id);
|
||||
|
||||
list($url) = image_downsize($thumbnail_id, $size);
|
||||
|
||||
return $url;
|
||||
}
|
||||
}
|
||||
|
||||
// Handles post_meta field
|
||||
class FEE_Field_Meta extends FEE_Field_Post {
|
||||
|
||||
function wrap($data, $post_id, $key, $type, $single) {
|
||||
if ( $this->check($post_id) ) {
|
||||
if ( $single )
|
||||
$data = array($this->placehold($data));
|
||||
|
||||
$r = array();
|
||||
foreach ( $data as $i => $val ) {
|
||||
$id = implode('#', array($post_id, $key, $type, $i));
|
||||
$r[$i] = FEE_Field_Base::wrap($val, $id);
|
||||
}
|
||||
}
|
||||
else {
|
||||
$r = (array) $data;
|
||||
}
|
||||
|
||||
if ( $single )
|
||||
return $r[0];
|
||||
|
||||
return $r;
|
||||
}
|
||||
|
||||
function get($id) {
|
||||
list($post_id, $key, $type, $i) = explode('#', $id);
|
||||
|
||||
$data = get_post_meta($post_id, $key);
|
||||
|
||||
return @$data[$i];
|
||||
}
|
||||
|
||||
function save($id, $new_value) {
|
||||
list($post_id, $key, $type, $i) = explode('#', $id);
|
||||
|
||||
$data = get_post_meta($post_id, $key);
|
||||
|
||||
$old_value = @$data[$i];
|
||||
|
||||
update_post_meta($post_id, $key, $new_value, $old_value);
|
||||
|
||||
return $new_value;
|
||||
}
|
||||
}
|
||||
|
||||
function editable_post_meta($post_id, $key, $type = 'input', $echo = true) {
|
||||
$data = get_editable_post_meta($post_id, $key, $type, true);
|
||||
|
||||
if ( ! $echo )
|
||||
return $data;
|
||||
|
||||
echo $data;
|
||||
}
|
||||
|
||||
function get_editable_post_meta($post_id, $key, $type = 'input', $single = false) {
|
||||
$data = get_post_meta($post_id, $key, $single);
|
||||
|
||||
return apply_filters('post_meta', $data, $post_id, $key, $type, $single);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,178 @@
|
||||
<?php
|
||||
/*
|
||||
Plugin Name: Front-end Editor
|
||||
Version: 1.8
|
||||
Description: Allows you to edit your posts without going through the admin interface
|
||||
Author: scribu
|
||||
Author URI: http://scribu.net/
|
||||
Plugin URI: http://scribu.net/wordpress/front-end-editor
|
||||
Text Domain: front-end-editor
|
||||
Domain Path: /lang
|
||||
|
||||
Copyright (C) 2010 scribu.net (scribu@gmail.com)
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
// Load scbFramework
|
||||
require dirname(__FILE__) . '/scb/load.php';
|
||||
|
||||
function _fee_init() {
|
||||
$dir = dirname(__FILE__);
|
||||
|
||||
// Load translations
|
||||
load_plugin_textdomain('front-end-editor', '', basename($dir) . '/lang');
|
||||
|
||||
// Load files
|
||||
require_once $dir . '/core.php';
|
||||
|
||||
foreach ( array('base', 'post', 'other') as $name )
|
||||
require_once "$dir/fields/$name.php";
|
||||
|
||||
// Load options
|
||||
$options = new scbOptions('front-end-editor', __FILE__, array(
|
||||
'disabled' => array(),
|
||||
'highlight' => true,
|
||||
'tooltip' => true,
|
||||
'rich' => true,
|
||||
'chunks' => false,
|
||||
'reset_date' => false
|
||||
));
|
||||
|
||||
FEE_Core::init($options, '1.8');
|
||||
FEE_Field_Image::init(__FILE__);
|
||||
|
||||
if ( is_admin() ) {
|
||||
require_once $dir . '/admin.php';
|
||||
scbAdminPage::register('Fee_Admin', __FILE__, $options);
|
||||
}
|
||||
}
|
||||
_fee_init();
|
||||
|
||||
function fee_register_defaults() {
|
||||
$fields = array(
|
||||
'the_title' => array(
|
||||
'title' => __('Post title', 'front-end-editor'),
|
||||
'class' => 'FEE_Field_Post',
|
||||
'type' => 'input',
|
||||
),
|
||||
|
||||
'the_content' => array(
|
||||
'title' => __('Post content', 'front-end-editor'),
|
||||
'class' => FEE_Core::$options->chunks ? 'FEE_Field_Chunks' : 'FEE_Field_Post',
|
||||
'type' => FEE_Core::$options->rich ? 'rich' : 'textarea',
|
||||
),
|
||||
|
||||
'the_excerpt' => array(
|
||||
'title' => __('Post excerpt', 'front-end-editor'),
|
||||
'class' => 'FEE_Field_Excerpt',
|
||||
'type' => 'textarea',
|
||||
),
|
||||
|
||||
'the_category' => array(
|
||||
'title' => __('Post categories', 'front-end-editor'),
|
||||
'class' => 'FEE_Field_Category',
|
||||
'argc' => 3,
|
||||
'type' => 'terminput',
|
||||
),
|
||||
|
||||
'the_tags' => array(
|
||||
'title' => __('Post tags', 'front-end-editor'),
|
||||
'class' => 'FEE_Field_Tags',
|
||||
'argc' => 4,
|
||||
'type' => 'terminput',
|
||||
),
|
||||
|
||||
'the_terms' => array(
|
||||
'title' => __('Post terms', 'front-end-editor'),
|
||||
'class' => 'FEE_Field_Terms',
|
||||
'argc' => 5,
|
||||
'type' => 'terminput',
|
||||
),
|
||||
|
||||
'post_meta' => array(
|
||||
'title' => __('Post custom fields', 'front-end-editor'),
|
||||
'class' => 'FEE_Field_Meta',
|
||||
'argc' => 5,
|
||||
),
|
||||
|
||||
'post_thumbnail_html' => array(
|
||||
'title' => __('Post thumbnail', 'front-end-editor'),
|
||||
'class' => 'FEE_Field_Thumbnail',
|
||||
'argc' => 4,
|
||||
'type' => 'thumbnail',
|
||||
),
|
||||
|
||||
'comment_text' => array(
|
||||
'title' => __('Comment text', 'front-end-editor'),
|
||||
'class' => 'FEE_Field_Comment',
|
||||
'type' => 'textarea',
|
||||
),
|
||||
|
||||
'single_cat_title' => array(
|
||||
'title' => __('Category title', 'front-end-editor'),
|
||||
'class' => 'FEE_Field_Single_Title',
|
||||
),
|
||||
|
||||
'single_tag_title' => array(
|
||||
'title' => __('Tag title', 'front-end-editor'),
|
||||
'class' => 'FEE_Field_Single_Title',
|
||||
),
|
||||
|
||||
'the_author_description' => array(
|
||||
'title' => __('Author description', 'front-end-editor'),
|
||||
'class' => 'FEE_Field_Author_Desc',
|
||||
'type' => 'textarea',
|
||||
'argc' => 2,
|
||||
),
|
||||
|
||||
'widget_title' => array(
|
||||
'title' => __('Widget title', 'front-end-editor'),
|
||||
'class' => 'FEE_Field_Widget',
|
||||
),
|
||||
|
||||
'widget_text' => array(
|
||||
'title' => __('Text widget content', 'front-end-editor'),
|
||||
'class' => 'FEE_Field_Widget',
|
||||
'type' => FEE_Core::$options->rich ? 'rich' : 'textarea',
|
||||
),
|
||||
|
||||
'bloginfo' => array(
|
||||
'title' => __('Site title and description', 'front-end-editor'),
|
||||
'class' => 'FEE_Field_Bloginfo',
|
||||
'argc' => 2,
|
||||
),
|
||||
|
||||
'editable_option' => array(
|
||||
'title' => __('Site options', 'front-end-editor'),
|
||||
'class' => 'FEE_Field_Option',
|
||||
'argc' => 3,
|
||||
),
|
||||
|
||||
'editable_image' => array(
|
||||
'title' => __('Theme images', 'front-end-editor'),
|
||||
'class' => 'FEE_Field_Image',
|
||||
'type' => 'image',
|
||||
'argc' => 2,
|
||||
),
|
||||
);
|
||||
|
||||
foreach ( $fields as $filter => $args )
|
||||
register_fronted_field($filter, $args);
|
||||
|
||||
// Safe hook for new editable fields to be registered
|
||||
do_action('front_end_editor_fields');
|
||||
}
|
||||
add_action('init', 'fee_register_defaults');
|
||||
|
||||
@@ -0,0 +1,132 @@
|
||||
"Project-Id-Version: Clean Options\n"
|
||||
"Report-Msgid-Bugs-To: http://wordpress.org/tag/front-end-editor\n"
|
||||
"POT-Creation-Date: 2009-08-15 15:41+0300\n"
|
||||
"PO-Revision-Date: 2009-08-17 02:11+0300\n"
|
||||
"Last-Translator: Fat Cow <zhr@tut.by>\n"
|
||||
"Language-Team: Fat Cow <zhr@tut.by>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Poedit-Language: Belarusian\n"
|
||||
"X-Poedit-Country: BELARUS\n"
|
||||
"X-Poedit-KeywordsList: __\n"
|
||||
"X-Poedit-Basepath: .\n"
|
||||
"X-Poedit-SourceCharset: utf-8\n"
|
||||
"X-Poedit-SearchPath-0: ..\n"
|
||||
|
||||
#: admin.php:10
|
||||
msgid "Fields"
|
||||
msgstr "Палі"
|
||||
|
||||
#: admin.php:11
|
||||
#: scb/AdminPage.php:275
|
||||
msgid "Settings"
|
||||
msgstr "Налады"
|
||||
|
||||
#: admin.php:41
|
||||
#: admin.php:85
|
||||
#: scb/AdminPage.php:107
|
||||
msgid "Settings <strong>saved</strong>."
|
||||
msgstr "Налады <strong>захаваны</strong>."
|
||||
|
||||
#: admin.php:47
|
||||
msgid "Enable or disable editable fields"
|
||||
msgstr "Уключыць ці адключыць рэдагуемыя палі"
|
||||
|
||||
#: admin.php:53
|
||||
msgid "Field name"
|
||||
msgstr "Імя поля"
|
||||
|
||||
#: admin.php:74
|
||||
#: admin.php:106
|
||||
msgid "Save changes"
|
||||
msgstr "Захаваць налады"
|
||||
|
||||
#: admin.php:92
|
||||
msgid "Rich text editor"
|
||||
msgstr "RTE-рэдактар"
|
||||
|
||||
#: admin.php:93
|
||||
msgid "Enable the WYSIWYG editor"
|
||||
msgstr "Уключыць WYSIWYG рэдактар"
|
||||
|
||||
#: admin.php:99
|
||||
msgid "Edit paragraphs"
|
||||
msgstr "Рэдагаваць абзацы"
|
||||
|
||||
#: admin.php:100
|
||||
msgid "Edit one paragraph at a time, instead of an entire post"
|
||||
msgstr "Рэдагаваць абзац замест цэлага паста"
|
||||
|
||||
#: core.php:98
|
||||
msgid "Save"
|
||||
msgstr "Захаваць"
|
||||
|
||||
#: core.php:99
|
||||
msgid "Cancel"
|
||||
msgstr "Адмена"
|
||||
|
||||
#: fields.php:42
|
||||
msgid "empty"
|
||||
msgstr "ачыціць"
|
||||
|
||||
#: fields.php:442
|
||||
msgid "Post/page title"
|
||||
msgstr "Загаловак паста/старонкі"
|
||||
|
||||
#: fields.php:448
|
||||
msgid "Post/page content"
|
||||
msgstr "Утрыманне паста/старонкі"
|
||||
|
||||
#: fields.php:454
|
||||
msgid "Post/page excerpt"
|
||||
msgstr "Вытрымка паста/старонкі"
|
||||
|
||||
#: fields.php:460
|
||||
msgid "Post tags"
|
||||
msgstr "Тэгі паста"
|
||||
|
||||
#: fields.php:466
|
||||
#, fuzzy
|
||||
msgid "Post terms"
|
||||
msgstr "Тэгі паста"
|
||||
|
||||
#: fields.php:472
|
||||
msgid "Post/page custom fields"
|
||||
msgstr "Карыстацкія палі паста/старонкі"
|
||||
|
||||
#: fields.php:478
|
||||
msgid "Comment text"
|
||||
msgstr "Тэкст каментара"
|
||||
|
||||
#: fields.php:484
|
||||
msgid "Text widget content"
|
||||
msgstr "Утрыманне тэкставага виджета"
|
||||
|
||||
#: fields.php:489
|
||||
msgid "Text widget title"
|
||||
msgstr "Загаловак тэкставага виджета"
|
||||
|
||||
#. Plugin Name of an extension
|
||||
msgid "Front-end Editor"
|
||||
msgstr "Front-end рэдактар"
|
||||
|
||||
#. Plugin URI of an extension
|
||||
msgid "http://scribu.net/wordpress/front-end-editor"
|
||||
msgstr "http://scribu.net/wordpress/front-end-editor"
|
||||
|
||||
#. Description of an extension
|
||||
msgid "Allows you to edit your posts without going through the admin interface"
|
||||
msgstr "Дазволіць вам рэдагаваць пост без выкарыстання адміністратарскай панэлі"
|
||||
|
||||
#. Author of an extension
|
||||
msgid "scribu"
|
||||
msgstr "scribu"
|
||||
|
||||
#. Author URI of an extension
|
||||
msgid "http://scribu.net/"
|
||||
msgstr "http://scribu.net/"
|
||||
|
||||
#~ msgid "[none]"
|
||||
#~ msgstr "[не]"
|
||||
|
||||
@@ -0,0 +1,175 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Front-end Editor 1.6.1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2010-01-07 18:18+0100\n"
|
||||
"PO-Revision-Date: \n"
|
||||
"Last-Translator: Team Blogos <wordpress@blogos.dk>\n"
|
||||
"Language-Team: Team Blogos <wordpress@blogos.dk>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2;plural=n != 1;\n"
|
||||
"X-Poedit-Language: Danish\n"
|
||||
"X-Poedit-Country: DENMARK\n"
|
||||
"X-Poedit-SourceCharset: utf-8\n"
|
||||
"X-Poedit-KeywordsList: __;_c;_e;__ngettext:1,2;__ngettext_noop:1,2;_n:1,2;_nc:1,2;_n_noop:1,2\n"
|
||||
"X-Poedit-Basepath: d:\\wordpress\\plugins\\front-end-editor\n"
|
||||
"X-Poedit-SearchPath-0: d:\\wordpress\\plugins\\front-end-editor\n"
|
||||
|
||||
#: d:\wordpress\plugins\front-end-editor/admin.php:7
|
||||
msgid "Front-end Editor"
|
||||
msgstr "Front-end Editor"
|
||||
|
||||
#: d:\wordpress\plugins\front-end-editor/admin.php:10
|
||||
msgid "Fields"
|
||||
msgstr "Feltnavne"
|
||||
|
||||
#: d:\wordpress\plugins\front-end-editor/admin.php:11
|
||||
#: d:\wordpress\plugins\front-end-editor/scb/AdminPage.php:329
|
||||
msgid "Settings"
|
||||
msgstr "Indstillinger"
|
||||
|
||||
#: d:\wordpress\plugins\front-end-editor/admin.php:51
|
||||
#: d:\wordpress\plugins\front-end-editor/admin.php:104
|
||||
#: d:\wordpress\plugins\front-end-editor/scb/AdminPage.php:101
|
||||
msgid "Settings <strong>saved</strong>."
|
||||
msgstr "Indstillingerne <strong>gemt</strong>."
|
||||
|
||||
#: d:\wordpress\plugins\front-end-editor/admin.php:63
|
||||
msgid "Enable or disable editable fields"
|
||||
msgstr "Aktivér eller deaktivér redigerbare felter"
|
||||
|
||||
#: d:\wordpress\plugins\front-end-editor/admin.php:65
|
||||
msgid "Post fields"
|
||||
msgstr "Indlægsfelter"
|
||||
|
||||
#: d:\wordpress\plugins\front-end-editor/admin.php:66
|
||||
msgid "Other fields"
|
||||
msgstr "Andre felter"
|
||||
|
||||
#: d:\wordpress\plugins\front-end-editor/admin.php:110
|
||||
msgid "Rich text editor"
|
||||
msgstr "Rich text editor"
|
||||
|
||||
#: d:\wordpress\plugins\front-end-editor/admin.php:111
|
||||
msgid "Enable the WYSIWYG editor"
|
||||
msgstr "Aktivér WYSIWYG-editoren"
|
||||
|
||||
#: d:\wordpress\plugins\front-end-editor/admin.php:117
|
||||
msgid "Edit paragraphs"
|
||||
msgstr "Redigér afsnit"
|
||||
|
||||
#: d:\wordpress\plugins\front-end-editor/admin.php:118
|
||||
msgid "Edit one paragraph at a time, instead of an entire post"
|
||||
msgstr "Redigér et afsnit ad gangen, i stedet for et helt indlæg"
|
||||
|
||||
#: d:\wordpress\plugins\front-end-editor/admin.php:124
|
||||
msgid "Highlighting"
|
||||
msgstr "Fremhævelser"
|
||||
|
||||
#: d:\wordpress\plugins\front-end-editor/admin.php:125
|
||||
msgid "Highlight editable elements"
|
||||
msgstr "Fremhæv redigerbare elementer"
|
||||
|
||||
#: d:\wordpress\plugins\front-end-editor/core.php:58
|
||||
msgid "Save"
|
||||
msgstr "Gem"
|
||||
|
||||
#: d:\wordpress\plugins\front-end-editor/core.php:59
|
||||
msgid "Cancel"
|
||||
msgstr "Annullér"
|
||||
|
||||
#: d:\wordpress\plugins\front-end-editor/core.php:90
|
||||
msgid "Change Image"
|
||||
msgstr "Ændr billede"
|
||||
|
||||
#: d:\wordpress\plugins\front-end-editor/core.php:91
|
||||
msgid "Use default"
|
||||
msgstr "Brug standard"
|
||||
|
||||
#: d:\wordpress\plugins\front-end-editor/front-end-editor.php:68
|
||||
msgid "Post title"
|
||||
msgstr "Titel på indlæg"
|
||||
|
||||
#: d:\wordpress\plugins\front-end-editor/front-end-editor.php:74
|
||||
msgid "Post content"
|
||||
msgstr "Indhold af indlæg"
|
||||
|
||||
#: d:\wordpress\plugins\front-end-editor/front-end-editor.php:80
|
||||
msgid "Post excerpt"
|
||||
msgstr "Indlægsuddrag"
|
||||
|
||||
#: d:\wordpress\plugins\front-end-editor/front-end-editor.php:86
|
||||
msgid "Post category"
|
||||
msgstr "Indlægskategori"
|
||||
|
||||
#: d:\wordpress\plugins\front-end-editor/front-end-editor.php:93
|
||||
msgid "Post tags"
|
||||
msgstr "Indlægs-tags"
|
||||
|
||||
#: d:\wordpress\plugins\front-end-editor/front-end-editor.php:100
|
||||
msgid "Post terms"
|
||||
msgstr "Indlægs-terms"
|
||||
|
||||
#: d:\wordpress\plugins\front-end-editor/front-end-editor.php:107
|
||||
msgid "Post custom fields"
|
||||
msgstr "Brugerdefinerede indlægsfelter"
|
||||
|
||||
#: d:\wordpress\plugins\front-end-editor/front-end-editor.php:113
|
||||
msgid "Comment text"
|
||||
msgstr "Kommentartekst"
|
||||
|
||||
#: d:\wordpress\plugins\front-end-editor/front-end-editor.php:119
|
||||
msgid "Category title"
|
||||
msgstr "Titel på kategori"
|
||||
|
||||
#: d:\wordpress\plugins\front-end-editor/front-end-editor.php:124
|
||||
msgid "Tag title"
|
||||
msgstr "Titel på tag"
|
||||
|
||||
#: d:\wordpress\plugins\front-end-editor/front-end-editor.php:129
|
||||
msgid "Author description"
|
||||
msgstr "Forfatterbeskrivelse"
|
||||
|
||||
#: d:\wordpress\plugins\front-end-editor/front-end-editor.php:136
|
||||
msgid "Widget title"
|
||||
msgstr "Widgettitel"
|
||||
|
||||
#: d:\wordpress\plugins\front-end-editor/front-end-editor.php:141
|
||||
msgid "Text widget content"
|
||||
msgstr "Indhold af tekst-widgets"
|
||||
|
||||
#: d:\wordpress\plugins\front-end-editor/front-end-editor.php:147
|
||||
msgid "Site title and description"
|
||||
msgstr "Sitetitel og -beskrivelse"
|
||||
|
||||
#: d:\wordpress\plugins\front-end-editor/front-end-editor.php:153
|
||||
msgid "Theme images"
|
||||
msgstr "Tema-billeder"
|
||||
|
||||
#: d:\wordpress\plugins\front-end-editor/fields/base.php:79
|
||||
msgid "empty"
|
||||
msgstr "tom"
|
||||
|
||||
#: d:\wordpress\plugins\front-end-editor/scb/AdminPage.php:112
|
||||
#: d:\wordpress\plugins\front-end-editor/scb/AdminPage.php:123
|
||||
msgid "Save Changes"
|
||||
msgstr "Gem ændringer"
|
||||
|
||||
#~ msgid "Field name"
|
||||
#~ msgstr "Feltnavn"
|
||||
#~ msgid "[none]"
|
||||
#~ msgstr "[ingen]"
|
||||
#~ msgid "http://scribu.net/wordpress/front-end-editor"
|
||||
#~ msgstr "http://scribu.net/wordpress/front-end-editor"
|
||||
#~ msgid ""
|
||||
#~ "Allows you to edit your posts without going through the admin interface"
|
||||
#~ msgstr ""
|
||||
#~ "Lader dig redigere dine indlæg uden at skulle gøre gennem "
|
||||
#~ "administrationspanelet"
|
||||
#~ msgid "scribu"
|
||||
#~ msgstr "scribu"
|
||||
#~ msgid "http://scribu.net/"
|
||||
#~ msgstr "http://scribu.net/"
|
||||
|
||||
@@ -0,0 +1,170 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR scribu
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Front-end Editor 1.5a\n"
|
||||
"Report-Msgid-Bugs-To: http://wordpress.org/tag/front-end-editor\n"
|
||||
"POT-Creation-Date: 2009-11-28 16:53+0200\n"
|
||||
"PO-Revision-Date: 2009-11-29 17:36+0100\n"
|
||||
"Last-Translator: G F <gottfried@pips.at>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#. #-#-#-#-# front-end-editor.pot (Front-end Editor 1.5a) #-#-#-#-#
|
||||
#. Plugin Name of an extension
|
||||
#: admin.php:7
|
||||
msgid "Front-end Editor"
|
||||
msgstr "Front-end Editor"
|
||||
|
||||
#: admin.php:10
|
||||
msgid "Fields"
|
||||
msgstr "Felder"
|
||||
|
||||
#: admin.php:11
|
||||
#: scb/AdminPage.php:310
|
||||
msgid "Settings"
|
||||
msgstr "Einstellungen"
|
||||
|
||||
#: admin.php:51
|
||||
#: admin.php:105
|
||||
#: scb/AdminPage.php:101
|
||||
msgid "Settings <strong>saved</strong>."
|
||||
msgstr "Einstellungen <strong>gespeichert</strong>."
|
||||
|
||||
#: admin.php:63
|
||||
msgid "Enable or disable editable fields"
|
||||
msgstr "Editierbare Felder aktivieren"
|
||||
|
||||
#: admin.php:66
|
||||
msgid "Post fields"
|
||||
msgstr "Post Felder"
|
||||
|
||||
#: admin.php:67
|
||||
msgid "Other fields"
|
||||
msgstr "Andere Felder"
|
||||
|
||||
#: admin.php:111
|
||||
msgid "Rich text editor"
|
||||
msgstr "Rich Text Editor"
|
||||
|
||||
#: admin.php:112
|
||||
msgid "Enable the WYSIWYG editor"
|
||||
msgstr "WYSIWYG-Editor aktivieren"
|
||||
|
||||
#: admin.php:118
|
||||
msgid "Edit paragraphs"
|
||||
msgstr "Absätze editieren"
|
||||
|
||||
#: admin.php:119
|
||||
msgid "Edit one paragraph at a time, instead of an entire post"
|
||||
msgstr "Nur einen Absatz editieren statt den ganzen Text"
|
||||
|
||||
#: admin.php:125
|
||||
msgid "Highlighting"
|
||||
msgstr "Hervorheben"
|
||||
|
||||
#: admin.php:126
|
||||
msgid "Highlight editable elements"
|
||||
msgstr "Editierbare Elemente hervorheben"
|
||||
|
||||
#: core.php:96
|
||||
msgid "Save"
|
||||
msgstr "OK"
|
||||
|
||||
#: core.php:97
|
||||
msgid "Cancel"
|
||||
msgstr "abbrechen"
|
||||
|
||||
#: core.php:105
|
||||
msgid "Use default"
|
||||
msgstr "Standardeinsetllungen verwenden"
|
||||
|
||||
#: core.php:108
|
||||
msgid "Change Image"
|
||||
msgstr "Bild ändern"
|
||||
|
||||
#: core.php:273
|
||||
msgid "empty"
|
||||
msgstr "leer"
|
||||
|
||||
#: front-end-editor.php:69
|
||||
msgid "Post title"
|
||||
msgstr "Post Titel"
|
||||
|
||||
#: front-end-editor.php:75
|
||||
msgid "Post content"
|
||||
msgstr "Post Inhalt"
|
||||
|
||||
#: front-end-editor.php:81
|
||||
msgid "Post excerpt"
|
||||
msgstr "Post Exzerpt"
|
||||
|
||||
#: front-end-editor.php:87
|
||||
msgid "Post tags"
|
||||
msgstr "Post Tags"
|
||||
|
||||
#: front-end-editor.php:93
|
||||
msgid "Post terms"
|
||||
msgstr "Post Terms"
|
||||
|
||||
#: front-end-editor.php:99
|
||||
msgid "Post custom fields"
|
||||
msgstr "Post Custom Felder"
|
||||
|
||||
#: front-end-editor.php:105
|
||||
msgid "Comment text"
|
||||
msgstr "Kommentartext"
|
||||
|
||||
#: front-end-editor.php:111
|
||||
msgid "Category title"
|
||||
msgstr "Kategorie"
|
||||
|
||||
#: front-end-editor.php:116
|
||||
msgid "Tag title"
|
||||
msgstr "Tag"
|
||||
|
||||
#: front-end-editor.php:121
|
||||
msgid "Author description"
|
||||
msgstr "Autor"
|
||||
|
||||
#: front-end-editor.php:128
|
||||
msgid "Text widget content"
|
||||
msgstr "Text Widget Inhalt"
|
||||
|
||||
#: front-end-editor.php:134
|
||||
msgid "Text widget title"
|
||||
msgstr "Text Widget Titel"
|
||||
|
||||
#: front-end-editor.php:139
|
||||
msgid "Site title and description"
|
||||
msgstr "Titel und Beschreibung der Seite"
|
||||
|
||||
#: front-end-editor.php:145
|
||||
msgid "Theme images"
|
||||
msgstr "Themen Bilder"
|
||||
|
||||
#: scb/AdminPage.php:111
|
||||
msgid "Save Changes"
|
||||
msgstr "Änderungen speichern"
|
||||
|
||||
#. Plugin URI of an extension
|
||||
msgid "http://scribu.net/wordpress/front-end-editor"
|
||||
msgstr "http://scribu.net/wordpress/front-end-editor"
|
||||
|
||||
#. Description of an extension
|
||||
msgid "Allows you to edit your posts without going through the admin interface"
|
||||
msgstr "Erlaubt Posts und Seiten direkt zu ändern ohne Dashboard"
|
||||
|
||||
#. Author of an extension
|
||||
msgid "scribu"
|
||||
msgstr "scribu"
|
||||
|
||||
#. Author URI of an extension
|
||||
msgid "http://scribu.net/"
|
||||
msgstr "http://scribu.net/"
|
||||
|
||||
@@ -0,0 +1,70 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: http://wordpress.org/tag/front-end-editor\n"
|
||||
"POT-Creation-Date: 2009-04-07 17:11+0300\n"
|
||||
"PO-Revision-Date: 2009-04-08 17:40+0200\n"
|
||||
"Last-Translator: scribu <scribu@gmail.com>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: admin.php:35
|
||||
msgid "Settings saved"
|
||||
msgstr "Opciones guardadas"
|
||||
|
||||
#: admin.php:41
|
||||
msgid "Enable or disable editable fields"
|
||||
msgstr "Active o desactive los campos editables"
|
||||
|
||||
#: admin.php:47
|
||||
msgid "Field name"
|
||||
msgstr "Campos"
|
||||
|
||||
#: admin.php:64
|
||||
#: admin.php:77
|
||||
msgid "Save changes"
|
||||
msgstr "Guardar cambios"
|
||||
|
||||
#: admin.php:69
|
||||
msgid "Rich text editor"
|
||||
msgstr "Editor de texto visual"
|
||||
|
||||
#: admin.php:70
|
||||
msgid "Enable the WYSIWYG editor"
|
||||
msgstr "Activar editor WYSIWYG"
|
||||
|
||||
#: admin.php:76
|
||||
msgid "Settings"
|
||||
msgstr "Opciones"
|
||||
|
||||
#: front-end-editor.php:106
|
||||
msgid "Save"
|
||||
msgstr "Guardar"
|
||||
|
||||
#: front-end-editor.php:107
|
||||
msgid "Cancel"
|
||||
msgstr "Cancelar"
|
||||
|
||||
#. Plugin Name of an extension
|
||||
msgid "Front-end Editor"
|
||||
msgstr "Front-end Editor"
|
||||
|
||||
#. Plugin URI of an extension
|
||||
msgid "http://scribu.net/wordpress/front-end-editor"
|
||||
msgstr "http://scribu.net/wordpress/front-end-editor"
|
||||
|
||||
# Descripción de una extensión
|
||||
#. Description of an extension
|
||||
msgid "Allows you to edit your posts without going through the admin interface"
|
||||
msgstr "Permite editar sus entradas y páginas sin necesidad de entrar en la administración de Wordpress"
|
||||
|
||||
#. Author of an extension
|
||||
msgid "scribu"
|
||||
msgstr "scribu"
|
||||
|
||||
#. Author URI of an extension
|
||||
msgid "http://scribu.net/"
|
||||
msgstr "http://scribu.net/"
|
||||
|
||||
@@ -0,0 +1,70 @@
|
||||
"Project-Id-Version: Front-end Editor 0.8\n"
|
||||
"Report-Msgid-Bugs-To: http://wordpress.org/tag/front-end-editor\n"
|
||||
"POT-Creation-Date: 2009-04-07 17:11+0300\n"
|
||||
"PO-Revision-Date: 2009-04-08 11:23-0300\n"
|
||||
"Last-Translator: Esteban <etruel@gmail.com>\n"
|
||||
"Language-Team: ROMANIAN <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Poedit-Language: Spanish\n"
|
||||
"X-Poedit-Country: SPAIN\n"
|
||||
|
||||
#: admin.php:35
|
||||
msgid "Settings saved"
|
||||
msgstr "Opciones guardadas"
|
||||
|
||||
#: admin.php:41
|
||||
msgid "Enable or disable editable fields"
|
||||
msgstr "Active o desactive los campos editables"
|
||||
|
||||
#: admin.php:47
|
||||
msgid "Field name"
|
||||
msgstr "Campos"
|
||||
|
||||
#: admin.php:64
|
||||
#: admin.php:77
|
||||
msgid "Save changes"
|
||||
msgstr "Guardar cambios"
|
||||
|
||||
#: admin.php:69
|
||||
msgid "Rich text editor"
|
||||
msgstr "Editor de texto visual"
|
||||
|
||||
#: admin.php:70
|
||||
msgid "Enable the WYSIWYG editor"
|
||||
msgstr "Activar editor WYSIWYG"
|
||||
|
||||
#: admin.php:76
|
||||
msgid "Settings"
|
||||
msgstr "Opciones"
|
||||
|
||||
#: front-end-editor.php:106
|
||||
msgid "Save"
|
||||
msgstr "Guardar"
|
||||
|
||||
#: front-end-editor.php:107
|
||||
msgid "Cancel"
|
||||
msgstr "Cancelar"
|
||||
|
||||
#. Plugin Name of an extension
|
||||
msgid "Front-end Editor"
|
||||
msgstr "Front-end Editor"
|
||||
|
||||
#. Plugin URI of an extension
|
||||
msgid "http://scribu.net/wordpress/front-end-editor"
|
||||
msgstr "http://scribu.net/wordpress/front-end-editor"
|
||||
|
||||
# Descripción de una extensión
|
||||
#. Description of an extension
|
||||
msgid "Allows you to edit your posts without going through the admin interface"
|
||||
msgstr "Permite editar sus entradas y páginas sin necesidad de entrar en la administración de Wordpress"
|
||||
|
||||
#. Author of an extension
|
||||
msgid "scribu"
|
||||
msgstr "scribu"
|
||||
|
||||
#. Author URI of an extension
|
||||
msgid "http://scribu.net/"
|
||||
msgstr "http://scribu.net/"
|
||||
|
||||
@@ -0,0 +1,156 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR scribu
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Front-end Editor 1.4 / Estonian\n"
|
||||
"Report-Msgid-Bugs-To: http://wordpress.org/tag/front-end-editor\n"
|
||||
"POT-Creation-Date: 2009-11-06 16:58+0200\n"
|
||||
"PO-Revision-Date: 2009-11-11 21:31+0200\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Aivar Luht <aivarluht@planet.ee>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Poedit-Language: Estonian\n"
|
||||
"X-Poedit-Country: ESTONIA\n"
|
||||
|
||||
#. #-#-#-#-# front-end-editor.pot (Front-end Editor 1.4) #-#-#-#-#
|
||||
#. Plugin Name of an extension
|
||||
#: admin.php:9
|
||||
msgid "Front-end Editor"
|
||||
msgstr "Front-end Editor"
|
||||
|
||||
#: admin.php:12
|
||||
msgid "Fields"
|
||||
msgstr "Väljad"
|
||||
|
||||
#: admin.php:13
|
||||
#: scb/AdminPage.php:338
|
||||
msgid "Settings"
|
||||
msgstr "Seaded"
|
||||
|
||||
#: admin.php:44
|
||||
#: admin.php:88
|
||||
#: scb/AdminPage.php:105
|
||||
msgid "Settings <strong>saved</strong>."
|
||||
msgstr "Seaded <strong>salvestatud</strong>."
|
||||
|
||||
#: admin.php:50
|
||||
msgid "Enable or disable editable fields"
|
||||
msgstr "Luba või keela muudetavad väljad"
|
||||
|
||||
#: admin.php:56
|
||||
msgid "Field name"
|
||||
msgstr "Välja nimi"
|
||||
|
||||
#: admin.php:95
|
||||
msgid "Rich text editor"
|
||||
msgstr "Visuaalredaktor"
|
||||
|
||||
#: admin.php:96
|
||||
msgid "Enable the WYSIWYG editor"
|
||||
msgstr "Aktiveeri WYSIWYG redaktor"
|
||||
|
||||
#: admin.php:102
|
||||
msgid "Edit paragraphs"
|
||||
msgstr "Lõikude toimetamine"
|
||||
|
||||
#: admin.php:103
|
||||
msgid "Edit one paragraph at a time, instead of an entire post"
|
||||
msgstr "Toimeta üks lõik korraga, mitte kogu postitus"
|
||||
|
||||
#: admin.php:109
|
||||
msgid "Highlighting"
|
||||
msgstr "Esile tõstmine"
|
||||
|
||||
#: admin.php:110
|
||||
msgid "Highlight editable elements"
|
||||
msgstr "Tõsta muudetavad osad esile"
|
||||
|
||||
#: core.php:146
|
||||
msgid "Save"
|
||||
msgstr "Salvesta"
|
||||
|
||||
#: core.php:147
|
||||
msgid "Cancel"
|
||||
msgstr "Tühista"
|
||||
|
||||
#: core.php:272
|
||||
msgid "empty"
|
||||
msgstr "tühjenda"
|
||||
|
||||
#: fields.php:591
|
||||
msgid "Post title"
|
||||
msgstr "Postituse pealkiri"
|
||||
|
||||
#: fields.php:597
|
||||
msgid "Post content"
|
||||
msgstr "Postituse sisu"
|
||||
|
||||
#: fields.php:603
|
||||
msgid "Post excerpt"
|
||||
msgstr "Postituse väljavõte"
|
||||
|
||||
#: fields.php:609
|
||||
msgid "Post tags"
|
||||
msgstr "Postituse sildid"
|
||||
|
||||
#: fields.php:615
|
||||
msgid "Post terms"
|
||||
msgstr "Postituse tingimused"
|
||||
|
||||
#: fields.php:621
|
||||
msgid "Post custom fields"
|
||||
msgstr "Postituse lisaväljad"
|
||||
|
||||
#: fields.php:627
|
||||
msgid "Comment text"
|
||||
msgstr "Kommentaari tekst"
|
||||
|
||||
#: fields.php:633
|
||||
msgid "Category title"
|
||||
msgstr "Rubriigi pealkiri"
|
||||
|
||||
#: fields.php:638
|
||||
msgid "Tag title"
|
||||
msgstr "Sildi pealkiri"
|
||||
|
||||
#: fields.php:643
|
||||
msgid "Author description"
|
||||
msgstr "Autori kirjeldus"
|
||||
|
||||
#: fields.php:650
|
||||
msgid "Text widget content"
|
||||
msgstr "Tekstmooduli sisu"
|
||||
|
||||
#: fields.php:656
|
||||
msgid "Text widget title"
|
||||
msgstr "Tekstmooduli pealkiri"
|
||||
|
||||
#: fields.php:661
|
||||
msgid "Site title and description"
|
||||
msgstr "Veebilehe pealkiri ja kirjeldus"
|
||||
|
||||
#: scb/AdminPage.php:163
|
||||
msgid "Save Changes"
|
||||
msgstr "Salvesta Muudatused"
|
||||
|
||||
#. Plugin URI of an extension
|
||||
msgid "http://scribu.net/wordpress/front-end-editor"
|
||||
msgstr "http://scribu.net/wordpress/front-end-editor"
|
||||
|
||||
#. Description of an extension
|
||||
msgid "Allows you to edit your posts without going through the admin interface"
|
||||
msgstr "Lubab postituste toimetamist haldusliidesest läbi käimata"
|
||||
|
||||
#. Author of an extension
|
||||
msgid "scribu"
|
||||
msgstr "scribu"
|
||||
|
||||
#. Author URI of an extension
|
||||
msgid "http://scribu.net/"
|
||||
msgstr "http://scribu.net/"
|
||||
|
||||
@@ -0,0 +1,203 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Front-end Editor v0.8\n"
|
||||
"Report-Msgid-Bugs-To: http://wordpress.org/tag/front-end-editor\n"
|
||||
"POT-Creation-Date: 2009-04-16 17:41+0300\n"
|
||||
"PO-Revision-Date: 2009-04-16 17:42+0200\n"
|
||||
"Last-Translator: scribu <scribu@gmail.com>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Poedit-Language: French\n"
|
||||
"X-Poedit-Country: FRANCE\n"
|
||||
"X-Poedit-SourceCharset: utf-8\n"
|
||||
"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;\n"
|
||||
"X-Poedit-Basepath: ../\n"
|
||||
"X-Poedit-Bookmarks: \n"
|
||||
"X-Poedit-SearchPath-0: .\n"
|
||||
"X-Textdomain-Support: yes"
|
||||
|
||||
#: admin.php:64
|
||||
#@ front-end-editor
|
||||
msgid "Enable or disable editable fields"
|
||||
msgstr "Activer ou désactiver les champs éditables"
|
||||
|
||||
#: admin.php:111
|
||||
#@ front-end-editor
|
||||
msgid "Enable the WYSIWYG editor"
|
||||
msgstr "Activer l'éditeur WYSIWYG"
|
||||
|
||||
#: admin.php:12
|
||||
#: scb/AdminPage.php:329
|
||||
#@ front-end-editor
|
||||
msgid "Settings"
|
||||
msgstr "Réglages"
|
||||
|
||||
#: front-end-editor.php:91
|
||||
#@ front-end-editor
|
||||
msgid "Post tags"
|
||||
msgstr "Tags du billet"
|
||||
|
||||
#: front-end-editor.php:118
|
||||
#@ front-end-editor
|
||||
msgid "Comment text"
|
||||
msgstr "Commentaires"
|
||||
|
||||
#: front-end-editor.php:146
|
||||
#@ front-end-editor
|
||||
msgid "Text widget content"
|
||||
msgstr "Contenu des widgets texte"
|
||||
|
||||
#: core.php:59
|
||||
#@ front-end-editor
|
||||
msgid "Save"
|
||||
msgstr "Sauvegarder"
|
||||
|
||||
#: core.php:60
|
||||
#@ front-end-editor
|
||||
msgid "Cancel"
|
||||
msgstr "Annuler"
|
||||
|
||||
#: admin.php:11
|
||||
#@ front-end-editor
|
||||
msgid "Fields"
|
||||
msgstr "Champs"
|
||||
|
||||
#: scb/AdminPage.php:272
|
||||
#@ front-end-editor
|
||||
msgid "Settings <strong>saved</strong>."
|
||||
msgstr "Réglages <strong>sauvegardés</strong>."
|
||||
|
||||
#: admin.php:117
|
||||
#@ front-end-editor
|
||||
msgid "Edit one paragraph at a time, instead of an entire post"
|
||||
msgstr "Éditer paragraphe par paragraphe plutôt que le contenu entier du billet."
|
||||
|
||||
#: admin.php:8
|
||||
#@ front-end-editor
|
||||
msgid "Front-end Editor"
|
||||
msgstr ""
|
||||
|
||||
#: fields/base.php:82
|
||||
#@ front-end-editor
|
||||
msgid "empty"
|
||||
msgstr "vide "
|
||||
|
||||
#: front-end-editor.php:98
|
||||
#@ front-end-editor
|
||||
msgid "Post terms"
|
||||
msgstr "Termes du billet "
|
||||
|
||||
#: front-end-editor.php:134
|
||||
#@ front-end-editor
|
||||
msgid "Author description"
|
||||
msgstr "Description de l'auteur "
|
||||
|
||||
#: scb/AdminPage.php:158
|
||||
#: scb/AdminPage.php:169
|
||||
#@ front-end-editor
|
||||
msgid "Save Changes"
|
||||
msgstr "Sauvegarder les modifications"
|
||||
|
||||
#: admin.php:129
|
||||
#@ front-end-editor
|
||||
msgid "Highlight editable elements"
|
||||
msgstr "Surlignage des éléments éditables"
|
||||
|
||||
#: front-end-editor.php:152
|
||||
#@ front-end-editor
|
||||
msgid "Site title and description"
|
||||
msgstr "Titre du site et description"
|
||||
|
||||
#: front-end-editor.php:66
|
||||
#@ front-end-editor
|
||||
msgid "Post title"
|
||||
msgstr "Titre du billet"
|
||||
|
||||
#: front-end-editor.php:72
|
||||
#@ front-end-editor
|
||||
msgid "Post content"
|
||||
msgstr "Contenu du billet"
|
||||
|
||||
#: front-end-editor.php:78
|
||||
#@ front-end-editor
|
||||
msgid "Post excerpt"
|
||||
msgstr "Extrait du billet"
|
||||
|
||||
#: front-end-editor.php:105
|
||||
#@ front-end-editor
|
||||
msgid "Post custom fields"
|
||||
msgstr "Champs personnalisés du billet"
|
||||
|
||||
#: front-end-editor.php:124
|
||||
#@ front-end-editor
|
||||
msgid "Category title"
|
||||
msgstr "Titre de catégorie"
|
||||
|
||||
#: front-end-editor.php:129
|
||||
#@ front-end-editor
|
||||
msgid "Tag title"
|
||||
msgstr "Titre de tag"
|
||||
|
||||
#: admin.php:66
|
||||
#@ front-end-editor
|
||||
msgid "Post fields"
|
||||
msgstr "Champs des billets"
|
||||
|
||||
#: admin.php:67
|
||||
#@ front-end-editor
|
||||
msgid "Other fields"
|
||||
msgstr "Autres champs"
|
||||
|
||||
#: core.php:110
|
||||
#@ front-end-editor
|
||||
msgid "Change Image"
|
||||
msgstr "Changer d'image"
|
||||
|
||||
#: front-end-editor.php:164
|
||||
#@ front-end-editor
|
||||
msgid "Theme images"
|
||||
msgstr "Images du thème"
|
||||
|
||||
#: front-end-editor.php:141
|
||||
#@ front-end-editor
|
||||
msgid "Widget title"
|
||||
msgstr "Titre de widget"
|
||||
|
||||
#: admin.php:123
|
||||
#@ front-end-editor
|
||||
msgid "Reset the post date on each edit"
|
||||
msgstr "Réinitialiser la date de billet pour chaque édition "
|
||||
|
||||
#: core.php:111
|
||||
#@ front-end-editor
|
||||
msgid "Clear"
|
||||
msgstr "Nettoyer"
|
||||
|
||||
#: front-end-editor.php:84
|
||||
#@ front-end-editor
|
||||
msgid "Post categories"
|
||||
msgstr "Catégories de billet"
|
||||
|
||||
#: front-end-editor.php:111
|
||||
#@ front-end-editor
|
||||
msgid "Post thumbnail"
|
||||
msgstr "Miniature de billet "
|
||||
|
||||
#: front-end-editor.php:158
|
||||
#@ front-end-editor
|
||||
msgid "Site options"
|
||||
msgstr "Options du site"
|
||||
|
||||
#: admin.php:134
|
||||
#@ front-end-editor
|
||||
msgid "Display a tooltip above editable elements"
|
||||
msgstr "Afficher une info bulle au dessus des éléments éditables"
|
||||
|
||||
#: core.php:74
|
||||
#@ front-end-editor
|
||||
msgid "Double-click to edit"
|
||||
msgstr "Double cliquer pour éditer"
|
||||
|
||||
@@ -0,0 +1,175 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Front-end Editor Georgian\n"
|
||||
"Report-Msgid-Bugs-To: http://wordpress.org/tag/front-end-editor\n"
|
||||
"POT-Creation-Date: 2010-01-01 19:11+0200\n"
|
||||
"PO-Revision-Date: \n"
|
||||
"Last-Translator: Levani <levani9191@gmail.com>\n"
|
||||
"Language-Team: Georgianisation.site88.net <levani9191@gmail.com>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Poedit-Language: Georgian\n"
|
||||
"X-Poedit-Country: GEORGIA\n"
|
||||
|
||||
#. #-#-#-#-# front-end-editor.pot (Front-end Editor 1.6) #-#-#-#-#
|
||||
#. Plugin Name of an extension
|
||||
#: admin.php:7
|
||||
msgid "Front-end Editor"
|
||||
msgstr "Front-end Editor"
|
||||
|
||||
#: admin.php:10
|
||||
msgid "Fields"
|
||||
msgstr "ველები"
|
||||
|
||||
#: admin.php:11
|
||||
#: scb/AdminPage.php:314
|
||||
msgid "Settings"
|
||||
msgstr "პარამეტრები"
|
||||
|
||||
#: admin.php:51
|
||||
#: admin.php:104
|
||||
#: scb/AdminPage.php:101
|
||||
msgid "Settings <strong>saved</strong>."
|
||||
msgstr "პარამეტრები <strong>დამახსოვრებულია</strong>."
|
||||
|
||||
#: admin.php:63
|
||||
msgid "Enable or disable editable fields"
|
||||
msgstr "რედაქტირებადი ველების ჩართვა გამორთვა"
|
||||
|
||||
#: admin.php:65
|
||||
msgid "Post fields"
|
||||
msgstr "პოსტის ველები"
|
||||
|
||||
#: admin.php:66
|
||||
msgid "Other fields"
|
||||
msgstr "სხვა ველები"
|
||||
|
||||
#: admin.php:110
|
||||
msgid "Rich text editor"
|
||||
msgstr "ტექსტური რედაქტორი"
|
||||
|
||||
#: admin.php:111
|
||||
msgid "Enable the WYSIWYG editor"
|
||||
msgstr "WYSIWYG რედაქტორის ჩართვა"
|
||||
|
||||
#: admin.php:117
|
||||
msgid "Edit paragraphs"
|
||||
msgstr "პარაგრაფების რედაქტირება"
|
||||
|
||||
#: admin.php:118
|
||||
msgid "Edit one paragraph at a time, instead of an entire post"
|
||||
msgstr "ერთ ჯერზე შეცვალე მხოლოდ ერთი პარაგრაფი, მთელი პოსტის ნაცვლად."
|
||||
|
||||
#: admin.php:124
|
||||
msgid "Highlighting"
|
||||
msgstr "გამოყოფა"
|
||||
|
||||
#: admin.php:125
|
||||
msgid "Highlight editable elements"
|
||||
msgstr "გამოყავი რედაქტირებადი ველები"
|
||||
|
||||
#: core.php:58
|
||||
msgid "Save"
|
||||
msgstr "დამახსოვრება"
|
||||
|
||||
#: core.php:59
|
||||
msgid "Cancel"
|
||||
msgstr "გაუქმება"
|
||||
|
||||
#: core.php:90
|
||||
msgid "Change Image"
|
||||
msgstr "სურათის შეცვლა"
|
||||
|
||||
#: core.php:91
|
||||
msgid "Use default"
|
||||
msgstr "სტანდარტულის გამოყენება"
|
||||
|
||||
#: fields/base.php:79
|
||||
msgid "empty"
|
||||
msgstr "ცარიელი"
|
||||
|
||||
#: front-end-editor.php:68
|
||||
msgid "Post title"
|
||||
msgstr "პოსტის სათაური"
|
||||
|
||||
#: front-end-editor.php:74
|
||||
msgid "Post content"
|
||||
msgstr "პოსტის შენაარსი"
|
||||
|
||||
#: front-end-editor.php:80
|
||||
msgid "Post excerpt"
|
||||
msgstr "პოსტის ამონაწერი"
|
||||
|
||||
#: front-end-editor.php:86
|
||||
msgid "Post category"
|
||||
msgstr "პოსტის კატეგორია"
|
||||
|
||||
#: front-end-editor.php:93
|
||||
msgid "Post tags"
|
||||
msgstr "პოსტის ტეგები"
|
||||
|
||||
#: front-end-editor.php:100
|
||||
msgid "Post terms"
|
||||
msgstr "პოსტის term-ები."
|
||||
|
||||
#: front-end-editor.php:107
|
||||
msgid "Post custom fields"
|
||||
msgstr "პოსტის დამატებითი ველები"
|
||||
|
||||
#: front-end-editor.php:113
|
||||
msgid "Comment text"
|
||||
msgstr "კომენტარის ტექსტი"
|
||||
|
||||
#: front-end-editor.php:119
|
||||
msgid "Category title"
|
||||
msgstr "კატეგორიის სათაური"
|
||||
|
||||
#: front-end-editor.php:124
|
||||
msgid "Tag title"
|
||||
msgstr "ტეგის სათაური"
|
||||
|
||||
#: front-end-editor.php:129
|
||||
msgid "Author description"
|
||||
msgstr "ავტორის აღწერა"
|
||||
|
||||
#: front-end-editor.php:136
|
||||
msgid "Widget title"
|
||||
msgstr "ვიდგეტის სათაური"
|
||||
|
||||
#: front-end-editor.php:141
|
||||
msgid "Text widget content"
|
||||
msgstr "ტექსტური ვიდგეტის შინაარსი"
|
||||
|
||||
#: front-end-editor.php:147
|
||||
msgid "Site title and description"
|
||||
msgstr "საიტის სათაური და აღწერა"
|
||||
|
||||
#: front-end-editor.php:153
|
||||
msgid "Theme images"
|
||||
msgstr "დიზაინის სურათები"
|
||||
|
||||
#: scb/AdminPage.php:111
|
||||
msgid "Save Changes"
|
||||
msgstr "ცვლილებების დამახსოვრება"
|
||||
|
||||
#. Plugin URI of an extension
|
||||
msgid "http://scribu.net/wordpress/front-end-editor"
|
||||
msgstr "http://scribu.net/wordpress/front-end-editor"
|
||||
|
||||
#. Description of an extension
|
||||
msgid "Allows you to edit your posts without going through the admin interface"
|
||||
msgstr "საშუალებას გაძლევთ განახორციელოთ ცვლილებები ადმინ პანელში შეუსვლელად"
|
||||
|
||||
#. Author of an extension
|
||||
msgid "scribu"
|
||||
msgstr "scribu"
|
||||
|
||||
#. Author URI of an extension
|
||||
msgid "http://scribu.net/"
|
||||
msgstr "http://scribu.net/"
|
||||
|
||||
#~ msgid "Field name"
|
||||
#~ msgstr "ველის სახელი"
|
||||
|
||||
@@ -0,0 +1,195 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Front-end Editor in italiano\n"
|
||||
"Report-Msgid-Bugs-To: http://wordpress.org/tag/front-end-editor\n"
|
||||
"POT-Creation-Date: 2010-04-01 04:57+0300\n"
|
||||
"PO-Revision-Date: \n"
|
||||
"Last-Translator: Gianni Diurno (aka gidibao) <gidibao[at]gmail[dot]com>\n"
|
||||
"Language-Team: Gianni Diurno | gidibao.net <gidibao[at]gmail[dot]com>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Poedit-Language: Italian\n"
|
||||
"X-Poedit-Country: ITALY\n"
|
||||
|
||||
#. #-#-#-#-# front-end-editor.pot (Front-end Editor 1.8a5) #-#-#-#-#
|
||||
#. Plugin Name of an extension
|
||||
#: admin.php:8
|
||||
msgid "Front-end Editor"
|
||||
msgstr "Front-end Editor"
|
||||
|
||||
#: admin.php:11
|
||||
msgid "Fields"
|
||||
msgstr "Campi"
|
||||
|
||||
#: admin.php:12
|
||||
#: scb/AdminPage.php:329
|
||||
msgid "Settings"
|
||||
msgstr "Impostazioni"
|
||||
|
||||
#: admin.php:64
|
||||
msgid "Enable or disable editable fields"
|
||||
msgstr "Attiva o disattiva i campi modificabili"
|
||||
|
||||
#: admin.php:66
|
||||
msgid "Post fields"
|
||||
msgstr "Campi articolo"
|
||||
|
||||
#: admin.php:67
|
||||
msgid "Other fields"
|
||||
msgstr "Altri campi"
|
||||
|
||||
#: admin.php:111
|
||||
msgid "Enable the WYSIWYG editor"
|
||||
msgstr "Attiva l'editor WYSIWYG"
|
||||
|
||||
#: admin.php:117
|
||||
msgid "Edit one paragraph at a time, instead of an entire post"
|
||||
msgstr "Modifica un paragrafo alla volta invece di operare su tutto l'articolo"
|
||||
|
||||
#: admin.php:123
|
||||
msgid "Reset the post date on each edit"
|
||||
msgstr "Ripristina la data dell'articolo ad ogni modifica"
|
||||
|
||||
#: admin.php:129
|
||||
msgid "Highlight editable elements"
|
||||
msgstr "Evidenzia gli elementi modificabili"
|
||||
|
||||
#: admin.php:134
|
||||
msgid "Display a tooltip above editable elements"
|
||||
msgstr "Mostra un tooltip sopra gli elementi modificabili"
|
||||
|
||||
#: core.php:59
|
||||
msgid "Save"
|
||||
msgstr "Salva"
|
||||
|
||||
#: core.php:60
|
||||
msgid "Cancel"
|
||||
msgstr "Annulla"
|
||||
|
||||
#: core.php:74
|
||||
msgid "Double-click to edit"
|
||||
msgstr "Doppio click per modificare"
|
||||
|
||||
#: core.php:110
|
||||
msgid "Change Image"
|
||||
msgstr "Cambia immagine"
|
||||
|
||||
#: core.php:111
|
||||
msgid "Clear"
|
||||
msgstr "Svuota"
|
||||
|
||||
#: fields/base.php:82
|
||||
msgid "empty"
|
||||
msgstr "vuoto"
|
||||
|
||||
#: front-end-editor.php:66
|
||||
msgid "Post title"
|
||||
msgstr "Titolo articolo"
|
||||
|
||||
#: front-end-editor.php:72
|
||||
msgid "Post content"
|
||||
msgstr "Contenuto articolo"
|
||||
|
||||
#: front-end-editor.php:78
|
||||
msgid "Post excerpt"
|
||||
msgstr "Riassunto articolo"
|
||||
|
||||
#: front-end-editor.php:84
|
||||
msgid "Post categories"
|
||||
msgstr "Categorie articolo"
|
||||
|
||||
#: front-end-editor.php:91
|
||||
msgid "Post tags"
|
||||
msgstr "Tag articolo"
|
||||
|
||||
#: front-end-editor.php:98
|
||||
msgid "Post terms"
|
||||
msgstr "Termini articolo"
|
||||
|
||||
#: front-end-editor.php:105
|
||||
msgid "Post custom fields"
|
||||
msgstr "Campi personalizzati articolo"
|
||||
|
||||
#: front-end-editor.php:111
|
||||
msgid "Post thumbnail"
|
||||
msgstr "Miniatura articolo"
|
||||
|
||||
#: front-end-editor.php:118
|
||||
msgid "Comment text"
|
||||
msgstr "Testo commenti"
|
||||
|
||||
#: front-end-editor.php:124
|
||||
msgid "Category title"
|
||||
msgstr "Titolo categoria"
|
||||
|
||||
#: front-end-editor.php:129
|
||||
msgid "Tag title"
|
||||
msgstr "Titolo tag"
|
||||
|
||||
#: front-end-editor.php:134
|
||||
msgid "Author description"
|
||||
msgstr "Descrizione autore"
|
||||
|
||||
#: front-end-editor.php:141
|
||||
msgid "Widget title"
|
||||
msgstr "Titolo widget"
|
||||
|
||||
#: front-end-editor.php:146
|
||||
msgid "Text widget content"
|
||||
msgstr "Contenuto widget di testo"
|
||||
|
||||
#: front-end-editor.php:152
|
||||
msgid "Site title and description"
|
||||
msgstr "Nome e descrizione del sito"
|
||||
|
||||
#: front-end-editor.php:158
|
||||
msgid "Site options"
|
||||
msgstr "Opzioni sito"
|
||||
|
||||
#: front-end-editor.php:164
|
||||
msgid "Theme images"
|
||||
msgstr "Immagini tema"
|
||||
|
||||
#: scb/AdminPage.php:158
|
||||
#: scb/AdminPage.php:169
|
||||
msgid "Save Changes"
|
||||
msgstr "Salva le modifiche"
|
||||
|
||||
#: scb/AdminPage.php:272
|
||||
msgid "Settings <strong>saved</strong>."
|
||||
msgstr "Le impostazioni sono state <strong>salvate</strong>."
|
||||
|
||||
#. Plugin URI of an extension
|
||||
msgid "http://scribu.net/wordpress/front-end-editor"
|
||||
msgstr "http://scribu.net/wordpress/front-end-editor"
|
||||
|
||||
#. Description of an extension
|
||||
msgid "Allows you to edit your posts without going through the admin interface"
|
||||
msgstr "Ti permette la modifica dei tuoi articoli senza utilizzare l'interfaccia di amministrazione"
|
||||
|
||||
#. Author of an extension
|
||||
msgid "scribu"
|
||||
msgstr "scribu"
|
||||
|
||||
#. Author URI of an extension
|
||||
msgid "http://scribu.net/"
|
||||
msgstr "http://scribu.net/"
|
||||
|
||||
#~ msgid "Rich text editor"
|
||||
#~ msgstr "Editor avanzato"
|
||||
#~ msgid "Edit paragraphs"
|
||||
#~ msgstr "Modifica paragrafi"
|
||||
#~ msgid "Date reset"
|
||||
#~ msgstr "Ripristina la data"
|
||||
#~ msgid "Highlighting"
|
||||
#~ msgstr "Evidenziatore"
|
||||
#~ msgid "Use default"
|
||||
#~ msgstr "Utilizza predefinito"
|
||||
#~ msgid "Field name"
|
||||
#~ msgstr "Nome campo"
|
||||
#~ msgid "[none]"
|
||||
#~ msgstr "[nessuno]"
|
||||
#~ msgid "Install now"
|
||||
#~ msgstr "Installa subito"
|
||||
|
||||
@@ -0,0 +1,98 @@
|
||||
"Project-Id-Version: front end editor\n"
|
||||
"Report-Msgid-Bugs-To: http://wordpress.org/tag/front-end-editor\n"
|
||||
"POT-Creation-Date: 2009-04-12 13:43+0300\n"
|
||||
"PO-Revision-Date: \n"
|
||||
"Last-Translator: tapsu <tapsu@fiptips.com>\n"
|
||||
"Language-Team: kzh <kzh.v.soonic@gmail.com>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Poedit-Language: Japanese\n"
|
||||
"X-Poedit-Country: JAPAN\n"
|
||||
"X-Poedit-SourceCharset: utf-8\n"
|
||||
|
||||
#: admin.php:27
|
||||
msgid "Settings saved"
|
||||
msgstr "設定は保存されました"
|
||||
|
||||
#: admin.php:33
|
||||
msgid "Enable or disable editable fields"
|
||||
msgstr "編集できるフィールドを切り替えます"
|
||||
|
||||
#: admin.php:39
|
||||
msgid "Field name"
|
||||
msgstr "フィールド名"
|
||||
|
||||
#: admin.php:56
|
||||
#: admin.php:69
|
||||
msgid "Save changes"
|
||||
msgstr "設定を更新する"
|
||||
|
||||
#: admin.php:61
|
||||
msgid "Rich text editor"
|
||||
msgstr "リッチテキストエディタ"
|
||||
|
||||
#: admin.php:62
|
||||
msgid "Enable the WYSIWYG editor"
|
||||
msgstr "WYSIWYGエディタを有効にする"
|
||||
|
||||
#: admin.php:68
|
||||
msgid "Settings"
|
||||
msgstr "設定"
|
||||
|
||||
#: fields.php:211
|
||||
msgid "Post/page title"
|
||||
msgstr "投稿またはページのタイトル"
|
||||
|
||||
#: fields.php:216
|
||||
msgid "Post/page content"
|
||||
msgstr "投稿またはページの本文"
|
||||
|
||||
#: fields.php:221
|
||||
msgid "Post tags"
|
||||
msgstr "タグ"
|
||||
|
||||
#: fields.php:226
|
||||
msgid "Post/page custom fields"
|
||||
msgstr "カスタムフィールド"
|
||||
|
||||
#: fields.php:231
|
||||
msgid "Comment text"
|
||||
msgstr "コメント本文"
|
||||
|
||||
#: fields.php:236
|
||||
msgid "Text widget content"
|
||||
msgstr "テキストウィジェットの内容"
|
||||
|
||||
#: fields.php:240
|
||||
msgid "Text widget title"
|
||||
msgstr "テキストウィジェットタイトル"
|
||||
|
||||
#: front-end-editor.php:114
|
||||
msgid "Save"
|
||||
msgstr "保存"
|
||||
|
||||
#: front-end-editor.php:115
|
||||
msgid "Cancel"
|
||||
msgstr "キャンセル"
|
||||
|
||||
#. Plugin Name of an extension
|
||||
msgid "Front-end Editor"
|
||||
msgstr "Front-end Editor"
|
||||
|
||||
#. Plugin URI of an extension
|
||||
msgid "http://scribu.net/wordpress/front-end-editor"
|
||||
msgstr "http://scribu.net/wordpress/front-end-editor"
|
||||
|
||||
#. Description of an extension
|
||||
msgid "Allows you to edit your posts without going through the admin interface"
|
||||
msgstr "管理画面を使わずに、投稿を直接編集できます"
|
||||
|
||||
#. Author of an extension
|
||||
msgid "scribu"
|
||||
msgstr "scribu"
|
||||
|
||||
#. Author URI of an extension
|
||||
msgid "http://scribu.net/"
|
||||
msgstr "http://scribu.net/"
|
||||
|
||||
@@ -0,0 +1,77 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Front-end Editor v0.8.4\n"
|
||||
"PO-Revision-Date: 2009-04-10 23:37+0200\n"
|
||||
"Last-Translator: admin <ron@fr-fanatic.com>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Poedit-Language: Dutch\n"
|
||||
"X-Poedit-Country: NETHERLANDS\n"
|
||||
"X-Poedit-SourceCharset: utf-8\n"
|
||||
"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;__ngettext_noop:1,2;_c\n"
|
||||
"X-Poedit-Basepath: ../\n"
|
||||
"X-Poedit-SearchPath-0: ."
|
||||
|
||||
#: admin.php:27
|
||||
msgid "Settings saved"
|
||||
msgstr "Instellingen opgeslagen"
|
||||
|
||||
#: admin.php:33
|
||||
msgid "Enable or disable editable fields"
|
||||
msgstr "Inschakelen of uitschakelen bewerkbare velden"
|
||||
|
||||
#: admin.php:39
|
||||
msgid "Field name"
|
||||
msgstr "Veldnaam"
|
||||
|
||||
#: admin.php:56
|
||||
#: admin.php:69
|
||||
msgid "Save changes"
|
||||
msgstr "Sla de wijzigingen op"
|
||||
|
||||
#: admin.php:61
|
||||
msgid "Rich text editor"
|
||||
msgstr "Rich text editor"
|
||||
|
||||
#: admin.php:62
|
||||
msgid "Enable the WYSIWYG editor"
|
||||
msgstr "Schakel de WYSIWYG-editor in"
|
||||
|
||||
#: admin.php:68
|
||||
msgid "Settings"
|
||||
msgstr "Instellingen"
|
||||
|
||||
#: fields.php:176
|
||||
msgid "Post/page title"
|
||||
msgstr "Artikel/pagina titel"
|
||||
|
||||
#: fields.php:181
|
||||
msgid "Post/page content"
|
||||
msgstr "Artikel/pagina inhoud"
|
||||
|
||||
#: fields.php:186
|
||||
msgid "Post tags"
|
||||
msgstr "Artikel tags"
|
||||
|
||||
#: fields.php:191
|
||||
msgid "Comment text"
|
||||
msgstr "Commentaar tekst"
|
||||
|
||||
#: fields.php:196
|
||||
msgid "Text widget content"
|
||||
msgstr "Tekst widget inhoud"
|
||||
|
||||
#: fields.php:200
|
||||
msgid "Text widget title"
|
||||
msgstr "Tekst widget titel"
|
||||
|
||||
#: front-end-editor.php:111
|
||||
msgid "Save"
|
||||
msgstr "Bewaar"
|
||||
|
||||
#: front-end-editor.php:112
|
||||
msgid "Cancel"
|
||||
msgstr "Annuleren"
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Front-end Editor v0.8.2\n"
|
||||
"PO-Revision-Date: 2009-04-09 13:40-0500\n"
|
||||
"Last-Translator: admin <john.ivar.myrstad@gmail.com>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Poedit-Language: Norwegian-Nynorsk\n"
|
||||
"X-Poedit-Country: NORWAY\n"
|
||||
"X-Poedit-SourceCharset: utf-8\n"
|
||||
"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;__ngettext_noop:1,2;_c\n"
|
||||
"X-Poedit-Basepath: ../\n"
|
||||
"X-Poedit-SearchPath-0: ."
|
||||
|
||||
#: admin.php:27
|
||||
msgid "Settings saved"
|
||||
msgstr "Innstillinger lagret"
|
||||
|
||||
#: admin.php:33
|
||||
msgid "Enable or disable editable fields"
|
||||
msgstr "Aktivere eller deaktivere redigerbart felt"
|
||||
|
||||
#: admin.php:39
|
||||
msgid "Field name"
|
||||
msgstr "Feltnavn"
|
||||
|
||||
#: admin.php:56
|
||||
#: admin.php:69
|
||||
msgid "Save changes"
|
||||
msgstr "Lagre endringer"
|
||||
|
||||
#: admin.php:61
|
||||
msgid "Rich text editor"
|
||||
msgstr "Rik tekst-editor"
|
||||
|
||||
#: admin.php:62
|
||||
msgid "Enable the WYSIWYG editor"
|
||||
msgstr "Aktiver WYSIWYG-editor"
|
||||
|
||||
#: admin.php:68
|
||||
msgid "Settings"
|
||||
msgstr "Innstillinger"
|
||||
|
||||
#: front-end-editor.php:109
|
||||
msgid "Save"
|
||||
msgstr "Lagre"
|
||||
|
||||
#: front-end-editor.php:110
|
||||
msgid "Cancel"
|
||||
msgstr "Avbryt"
|
||||
|
||||
@@ -0,0 +1,131 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Front-end Editor\n"
|
||||
"Report-Msgid-Bugs-To: http://wordpress.org/tag/front-end-editor\n"
|
||||
"POT-Creation-Date: 2009-08-25 19:18+0300\n"
|
||||
"PO-Revision-Date: \n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: BoreS <BoreSer@gmail.com>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Poedit-Language: Russian\n"
|
||||
"X-Poedit-Country: RUSSIAN FEDERATION\n"
|
||||
|
||||
#. #-#-#-#-# front-end-editor.pot (Front-end Editor 1.2b) #-#-#-#-#
|
||||
#. Plugin Name of an extension
|
||||
#: admin.php:9
|
||||
msgid "Front-end Editor"
|
||||
msgstr "Edytor bezpośredni"
|
||||
|
||||
#: admin.php:12
|
||||
msgid "Fields"
|
||||
msgstr "Pola"
|
||||
|
||||
#: admin.php:13
|
||||
#: scb/AdminPage.php:338
|
||||
msgid "Settings"
|
||||
msgstr "Ustawienia"
|
||||
|
||||
#: admin.php:43
|
||||
#: admin.php:87
|
||||
#: scb/AdminPage.php:105
|
||||
msgid "Settings <strong>saved</strong>."
|
||||
msgstr "Ustawienia <strong>zapisane</strong>."
|
||||
|
||||
#: admin.php:49
|
||||
msgid "Enable or disable editable fields"
|
||||
msgstr "Włącz lub wyłącz edytowalne pola"
|
||||
|
||||
#: admin.php:55
|
||||
msgid "Field name"
|
||||
msgstr "Nazw apola"
|
||||
|
||||
#: admin.php:94
|
||||
msgid "Rich text editor"
|
||||
msgstr "Pełny edytor tekstowy"
|
||||
|
||||
#: admin.php:95
|
||||
msgid "Enable the WYSIWYG editor"
|
||||
msgstr "Włącz edytor WYSIWYG"
|
||||
|
||||
#: admin.php:101
|
||||
msgid "Edit paragraphs"
|
||||
msgstr "Edytuj paragrafy"
|
||||
|
||||
#: admin.php:102
|
||||
msgid "Edit one paragraph at a time, instead of an entire post"
|
||||
msgstr "Jednorazowo edytuj jeden paragraf zamiast całego wpisu"
|
||||
|
||||
#: core.php:109
|
||||
msgid "Save"
|
||||
msgstr "Zapisz"
|
||||
|
||||
#: core.php:110
|
||||
msgid "Cancel"
|
||||
msgstr "Anuluj"
|
||||
|
||||
#: core.php:235
|
||||
msgid "empty"
|
||||
msgstr "pusty"
|
||||
|
||||
#: fields.php:453
|
||||
msgid "Post/page title"
|
||||
msgstr "Tytuł strony/wpisu"
|
||||
|
||||
#: fields.php:459
|
||||
msgid "Post/page content"
|
||||
msgstr "Treść strony/wpisu"
|
||||
|
||||
#: fields.php:465
|
||||
msgid "Post/page excerpt"
|
||||
msgstr "Opis skrócony strony/wpisu"
|
||||
|
||||
#: fields.php:471
|
||||
msgid "Post tags"
|
||||
msgstr "Tagi wpisu"
|
||||
|
||||
#: fields.php:477
|
||||
msgid "Post terms"
|
||||
msgstr "Regulamin wpisu"
|
||||
|
||||
#: fields.php:483
|
||||
msgid "Post/page custom fields"
|
||||
msgstr "Dodatkowe pola wpisu/strony"
|
||||
|
||||
#: fields.php:489
|
||||
msgid "Comment text"
|
||||
msgstr "Treść komentarzy"
|
||||
|
||||
#: fields.php:495
|
||||
msgid "Author description"
|
||||
msgstr "Opis autora"
|
||||
|
||||
#: fields.php:502
|
||||
msgid "Text widget content"
|
||||
msgstr "Treść widgetów tekstowych"
|
||||
|
||||
#: fields.php:508
|
||||
msgid "Text widget title"
|
||||
msgstr "Tytuł widgetów tekstowych"
|
||||
|
||||
#: scb/AdminPage.php:163
|
||||
msgid "Save Changes"
|
||||
msgstr "Zapisz zmiany"
|
||||
|
||||
#. Plugin URI of an extension
|
||||
msgid "http://scribu.net/wordpress/front-end-editor"
|
||||
msgstr "http://www.expromo.pl"
|
||||
|
||||
#. Description of an extension
|
||||
msgid "Allows you to edit your posts without going through the admin interface"
|
||||
msgstr "Pozwala na edycję stron i wpisów bez przechodzenia do panelu administracji."
|
||||
|
||||
#. Author of an extension
|
||||
msgid "scribu"
|
||||
msgstr "expromo"
|
||||
|
||||
#. Author URI of an extension
|
||||
msgid "http://scribu.net/"
|
||||
msgstr "http://www.expromo.pl"
|
||||
|
||||
@@ -0,0 +1,125 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: http://wordpress.org/tag/front-end-editor\n"
|
||||
"POT-Creation-Date: 2009-08-15 15:41+0300\n"
|
||||
"PO-Revision-Date: \n"
|
||||
"Last-Translator: Fernanda Foertter <foertter@gmail.com>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: admin.php:10
|
||||
msgid "Fields"
|
||||
msgstr "Campos "
|
||||
|
||||
#: admin.php:11
|
||||
#: scb/AdminPage.php:275
|
||||
msgid "Settings"
|
||||
msgstr "Opçoes"
|
||||
|
||||
#: admin.php:41
|
||||
#: admin.php:85
|
||||
#: scb/AdminPage.php:107
|
||||
msgid "Settings <strong>saved</strong>."
|
||||
msgstr "Opcões <strong>guardadas</strong>."
|
||||
|
||||
#: admin.php:47
|
||||
msgid "Enable or disable editable fields"
|
||||
msgstr "Ativar ou desativar os campos editaveis"
|
||||
|
||||
#: admin.php:53
|
||||
msgid "Field name"
|
||||
msgstr "Campos"
|
||||
|
||||
#: admin.php:74
|
||||
#: admin.php:106
|
||||
msgid "Save changes"
|
||||
msgstr "Guardar mudanças"
|
||||
|
||||
#: admin.php:92
|
||||
msgid "Rich text editor"
|
||||
msgstr "Editor de texto visual"
|
||||
|
||||
#: admin.php:93
|
||||
msgid "Enable the WYSIWYG editor"
|
||||
msgstr "Ativar editor WYSIWYG"
|
||||
|
||||
#: admin.php:99
|
||||
msgid "Edit paragraphs"
|
||||
msgstr "Editar Paragrafos"
|
||||
|
||||
#: admin.php:100
|
||||
msgid "Edit one paragraph at a time, instead of an entire post"
|
||||
msgstr "Editar cada paragrafo de cada vez, nao somente o texto inteiro."
|
||||
|
||||
#: core.php:98
|
||||
msgid "Save"
|
||||
msgstr "Guardar"
|
||||
|
||||
#: core.php:99
|
||||
msgid "Cancel"
|
||||
msgstr "Cancelar"
|
||||
|
||||
#: fields.php:42
|
||||
msgid "empty"
|
||||
msgstr "vazio"
|
||||
|
||||
#: fields.php:442
|
||||
msgid "Post/page title"
|
||||
msgstr "Titulo do(a) post/pagina"
|
||||
|
||||
#: fields.php:448
|
||||
msgid "Post/page content"
|
||||
msgstr "Conteùdo do(a) post/pagina"
|
||||
|
||||
#: fields.php:454
|
||||
msgid "Post/page excerpt"
|
||||
msgstr "Trecho do(a) post/pagina"
|
||||
|
||||
#: fields.php:460
|
||||
msgid "Post tags"
|
||||
msgstr "Tags do Post"
|
||||
|
||||
#: fields.php:466
|
||||
msgid "Post terms"
|
||||
msgstr "Categorias do Post"
|
||||
|
||||
#: fields.php:472
|
||||
msgid "Post/page custom fields"
|
||||
msgstr "Campos costumizados do(a) post/pagina"
|
||||
|
||||
#: fields.php:478
|
||||
msgid "Comment text"
|
||||
msgstr "Texto de comentarios"
|
||||
|
||||
#: fields.php:484
|
||||
msgid "Text widget content"
|
||||
msgstr "Conteùdo do widget de texto"
|
||||
|
||||
#: fields.php:489
|
||||
msgid "Text widget title"
|
||||
msgstr "Titulo do widget de texto"
|
||||
|
||||
#. Plugin Name of an extension
|
||||
msgid "Front-end Editor"
|
||||
msgstr "Editor de Frente"
|
||||
|
||||
#. Plugin URI of an extension
|
||||
msgid "http://scribu.net/wordpress/front-end-editor"
|
||||
msgstr "http://scribu.net/wordpress/front-end-editor"
|
||||
|
||||
# Descripción de una extensión
|
||||
#. Description of an extension
|
||||
msgid "Allows you to edit your posts without going through the admin interface"
|
||||
msgstr "Permite editar o texto em suas paginas sem entrar no painel de administracão do Wordpress"
|
||||
|
||||
#. Author of an extension
|
||||
msgid "scribu"
|
||||
msgstr "scribu"
|
||||
|
||||
#. Author URI of an extension
|
||||
msgid "http://scribu.net/"
|
||||
msgstr "http://scribu.net/"
|
||||
|
||||
@@ -0,0 +1,198 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR scribu
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Front-end Editor 0.7.0.1\n"
|
||||
"Report-Msgid-Bugs-To: http://wordpress.org/tag/front-end-editor\n"
|
||||
"POT-Creation-Date: 2010-04-01 04:57+0300\n"
|
||||
"PO-Revision-Date: 2010-04-01 04:58+0200\n"
|
||||
"Last-Translator: scribu <scribu@gmail.com>\n"
|
||||
"Language-Team: ROMANIAN <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#. #-#-#-#-# front-end-editor.pot (Front-end Editor 1.8a5) #-#-#-#-#
|
||||
#. Plugin Name of an extension
|
||||
#: admin.php:8
|
||||
msgid "Front-end Editor"
|
||||
msgstr ""
|
||||
|
||||
#: admin.php:11
|
||||
msgid "Fields"
|
||||
msgstr "Câmpuri"
|
||||
|
||||
#: admin.php:12
|
||||
#: scb/AdminPage.php:329
|
||||
msgid "Settings"
|
||||
msgstr "Setări"
|
||||
|
||||
#: admin.php:64
|
||||
msgid "Enable or disable editable fields"
|
||||
msgstr "Activează sau dezactivează câmpurile editabile"
|
||||
|
||||
#: admin.php:66
|
||||
msgid "Post fields"
|
||||
msgstr "Câmpuri articol"
|
||||
|
||||
#: admin.php:67
|
||||
msgid "Other fields"
|
||||
msgstr "Alte câmpuri"
|
||||
|
||||
#: admin.php:111
|
||||
msgid "Enable the WYSIWYG editor"
|
||||
msgstr "Activează editorul WYSIWYG"
|
||||
|
||||
#: admin.php:117
|
||||
msgid "Edit one paragraph at a time, instead of an entire post"
|
||||
msgstr "Editează câte un singur paragraf, în loc de articolul întreg"
|
||||
|
||||
#: admin.php:123
|
||||
msgid "Reset the post date on each edit"
|
||||
msgstr "Resetează data postului la fiecare editare"
|
||||
|
||||
#: admin.php:129
|
||||
msgid "Highlight editable elements"
|
||||
msgstr "Scoate în evidență elementele editabile"
|
||||
|
||||
#: admin.php:134
|
||||
msgid "Display a tooltip above editable elements"
|
||||
msgstr "Afișează un tooltip deasupra elementelor editabile"
|
||||
|
||||
#: core.php:59
|
||||
msgid "Save"
|
||||
msgstr "Salvează"
|
||||
|
||||
#: core.php:60
|
||||
msgid "Cancel"
|
||||
msgstr "Anulează"
|
||||
|
||||
#: core.php:74
|
||||
msgid "Double-click to edit"
|
||||
msgstr "Fă dublu-click pentru a edita"
|
||||
|
||||
#: core.php:110
|
||||
msgid "Change Image"
|
||||
msgstr "Schimbă imaginea"
|
||||
|
||||
#: core.php:111
|
||||
msgid "Clear"
|
||||
msgstr "Golește"
|
||||
|
||||
#: fields/base.php:82
|
||||
msgid "empty"
|
||||
msgstr "gol"
|
||||
|
||||
#: front-end-editor.php:66
|
||||
msgid "Post title"
|
||||
msgstr "Titlu articol"
|
||||
|
||||
#: front-end-editor.php:72
|
||||
msgid "Post content"
|
||||
msgstr "Conținut articol"
|
||||
|
||||
#: front-end-editor.php:78
|
||||
msgid "Post excerpt"
|
||||
msgstr "Extras articol"
|
||||
|
||||
#: front-end-editor.php:84
|
||||
msgid "Post categories"
|
||||
msgstr "Categorii articol"
|
||||
|
||||
#: front-end-editor.php:91
|
||||
msgid "Post tags"
|
||||
msgstr "Etichete articol"
|
||||
|
||||
#: front-end-editor.php:98
|
||||
msgid "Post terms"
|
||||
msgstr "Termeni articol"
|
||||
|
||||
#: front-end-editor.php:105
|
||||
msgid "Post custom fields"
|
||||
msgstr "Câmpuri personalizate articol"
|
||||
|
||||
#: front-end-editor.php:111
|
||||
msgid "Post thumbnail"
|
||||
msgstr "Miniatură articol"
|
||||
|
||||
#: front-end-editor.php:118
|
||||
msgid "Comment text"
|
||||
msgstr "Text comentariu"
|
||||
|
||||
#: front-end-editor.php:124
|
||||
msgid "Category title"
|
||||
msgstr "Titlu categorie"
|
||||
|
||||
#: front-end-editor.php:129
|
||||
msgid "Tag title"
|
||||
msgstr "Titlu etichetă"
|
||||
|
||||
#: front-end-editor.php:134
|
||||
msgid "Author description"
|
||||
msgstr "Descriere autor"
|
||||
|
||||
#: front-end-editor.php:141
|
||||
msgid "Widget title"
|
||||
msgstr "Titlu widget"
|
||||
|
||||
#: front-end-editor.php:146
|
||||
msgid "Text widget content"
|
||||
msgstr "Conținut widget text"
|
||||
|
||||
#: front-end-editor.php:152
|
||||
msgid "Site title and description"
|
||||
msgstr "Titlu și descriere site"
|
||||
|
||||
#: front-end-editor.php:158
|
||||
msgid "Site options"
|
||||
msgstr "Setări site"
|
||||
|
||||
#: front-end-editor.php:164
|
||||
msgid "Theme images"
|
||||
msgstr "Imagini temă"
|
||||
|
||||
#: scb/AdminPage.php:158
|
||||
#: scb/AdminPage.php:169
|
||||
msgid "Save Changes"
|
||||
msgstr "Salvează schimbările"
|
||||
|
||||
#: scb/AdminPage.php:272
|
||||
msgid "Settings <strong>saved</strong>."
|
||||
msgstr "Setări <strong>salvate</strong>."
|
||||
|
||||
#. Plugin URI of an extension
|
||||
msgid "http://scribu.net/wordpress/front-end-editor"
|
||||
msgstr ""
|
||||
|
||||
#. Description of an extension
|
||||
msgid "Allows you to edit your posts without going through the admin interface"
|
||||
msgstr "Permite editarea articolelor fără a merge în interfața de administrare"
|
||||
|
||||
#. Author of an extension
|
||||
msgid "scribu"
|
||||
msgstr ""
|
||||
|
||||
#. Author URI of an extension
|
||||
msgid "http://scribu.net/"
|
||||
msgstr ""
|
||||
|
||||
#~ msgid "Rich text editor"
|
||||
#~ msgstr "Editor de text avansat"
|
||||
#~ msgid "Edit paragraphs"
|
||||
#~ msgstr "Editează paragrafe"
|
||||
#~ msgid "Date reset"
|
||||
#~ msgstr "Resetare dată"
|
||||
#~ msgid "Highlighting"
|
||||
#~ msgstr "Evidențiere"
|
||||
#~ msgid "Use default"
|
||||
#~ msgstr "Folosește imaginea implicită"
|
||||
#~ msgid "Field name"
|
||||
#~ msgstr "Nume câmp"
|
||||
#~ msgid "Save changes"
|
||||
#~ msgstr "Salvează schimbările"
|
||||
#~ msgid "[none]"
|
||||
#~ msgstr "[niciuna]"
|
||||
|
||||
@@ -0,0 +1,131 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Front-end Editor\n"
|
||||
"Report-Msgid-Bugs-To: http://wordpress.org/tag/front-end-editor\n"
|
||||
"POT-Creation-Date: 2009-08-25 19:18+0300\n"
|
||||
"PO-Revision-Date: \n"
|
||||
"Last-Translator: BoreS <BoreSer@gmail.com>\n"
|
||||
"Language-Team: BoreS <BoreSer@gmail.com>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Poedit-Language: Russian\n"
|
||||
"X-Poedit-Country: RUSSIAN FEDERATION\n"
|
||||
|
||||
#. #-#-#-#-# front-end-editor.pot (Front-end Editor 1.2b) #-#-#-#-#
|
||||
#. Plugin Name of an extension
|
||||
#: admin.php:9
|
||||
msgid "Front-end Editor"
|
||||
msgstr "Front-end Editor"
|
||||
|
||||
#: admin.php:12
|
||||
msgid "Fields"
|
||||
msgstr "Поля"
|
||||
|
||||
#: admin.php:13
|
||||
#: scb/AdminPage.php:338
|
||||
msgid "Settings"
|
||||
msgstr "Настройки"
|
||||
|
||||
#: admin.php:43
|
||||
#: admin.php:87
|
||||
#: scb/AdminPage.php:105
|
||||
msgid "Settings <strong>saved</strong>."
|
||||
msgstr "Настройки <strong>сохранены</strong>."
|
||||
|
||||
#: admin.php:49
|
||||
msgid "Enable or disable editable fields"
|
||||
msgstr "Включить или отключить редактируемые поля"
|
||||
|
||||
#: admin.php:55
|
||||
msgid "Field name"
|
||||
msgstr "Название поля"
|
||||
|
||||
#: admin.php:94
|
||||
msgid "Rich text editor"
|
||||
msgstr "Расширенный редактор текста"
|
||||
|
||||
#: admin.php:95
|
||||
msgid "Enable the WYSIWYG editor"
|
||||
msgstr "Включить визуальный редактор"
|
||||
|
||||
#: admin.php:101
|
||||
msgid "Edit paragraphs"
|
||||
msgstr "Редактирвать абзацы"
|
||||
|
||||
#: admin.php:102
|
||||
msgid "Edit one paragraph at a time, instead of an entire post"
|
||||
msgstr "Редактировать абзац вместо целого поста"
|
||||
|
||||
#: core.php:109
|
||||
msgid "Save"
|
||||
msgstr "Сохранить"
|
||||
|
||||
#: core.php:110
|
||||
msgid "Cancel"
|
||||
msgstr "Отменить"
|
||||
|
||||
#: core.php:235
|
||||
msgid "empty"
|
||||
msgstr "пусто"
|
||||
|
||||
#: fields.php:453
|
||||
msgid "Post/page title"
|
||||
msgstr "Заголовок сообщения/страницы"
|
||||
|
||||
#: fields.php:459
|
||||
msgid "Post/page content"
|
||||
msgstr "Содержимое сообщения/страницы"
|
||||
|
||||
#: fields.php:465
|
||||
msgid "Post/page excerpt"
|
||||
msgstr "Выдержка сообщения/страницы"
|
||||
|
||||
#: fields.php:471
|
||||
msgid "Post tags"
|
||||
msgstr "Метки сообщения"
|
||||
|
||||
#: fields.php:477
|
||||
msgid "Post terms"
|
||||
msgstr "Термины сообщения"
|
||||
|
||||
#: fields.php:483
|
||||
msgid "Post/page custom fields"
|
||||
msgstr "Настраиваемые поля сообщения/страницы"
|
||||
|
||||
#: fields.php:489
|
||||
msgid "Comment text"
|
||||
msgstr "Текст комментария"
|
||||
|
||||
#: fields.php:495
|
||||
msgid "Author description"
|
||||
msgstr "Описание автора"
|
||||
|
||||
#: fields.php:502
|
||||
msgid "Text widget content"
|
||||
msgstr "Содержимое текстового виджета"
|
||||
|
||||
#: fields.php:508
|
||||
msgid "Text widget title"
|
||||
msgstr "Заголовок текстового виджета"
|
||||
|
||||
#: scb/AdminPage.php:163
|
||||
msgid "Save Changes"
|
||||
msgstr "Сохранить изменения"
|
||||
|
||||
#. Plugin URI of an extension
|
||||
msgid "http://scribu.net/wordpress/front-end-editor"
|
||||
msgstr "http://scribu.net/wordpress/front-end-editor"
|
||||
|
||||
#. Description of an extension
|
||||
msgid "Allows you to edit your posts without going through the admin interface"
|
||||
msgstr "Позволяет редактировать сообщения без использования администраторской панели"
|
||||
|
||||
#. Author of an extension
|
||||
msgid "scribu"
|
||||
msgstr "scribu"
|
||||
|
||||
#. Author URI of an extension
|
||||
msgid "http://scribu.net/"
|
||||
msgstr "http://scribu.net/"
|
||||
|
||||
@@ -0,0 +1,119 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR scribu
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
"Project-Id-Version: Front-end Editor 1.0a\n"
|
||||
"Report-Msgid-Bugs-To: http://wordpress.org/tag/front-end-editor\n"
|
||||
"POT-Creation-Date: 2009-06-14 18:58+0300\n"
|
||||
"PO-Revision-Date: 2009-06-16 19:40+0100\n"
|
||||
"Last-Translator: Müfit Kiper <kontakt@kitkonsult.se>\n"
|
||||
"Language-Team: Swedish - Svenska <kontakt@kitkonsult.se>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Poedit-Language: Swedish\n"
|
||||
"X-Poedit-Country: SWEDEN\n"
|
||||
"X-Poedit-SourceCharset: utf-8\n"
|
||||
|
||||
#: admin.php:32
|
||||
msgid "Settings <strong>saved</strong>."
|
||||
msgstr "Inställningar <strong>sparade</strong>."
|
||||
|
||||
#: admin.php:38
|
||||
msgid "Enable or disable editable fields"
|
||||
msgstr "Aktivera eller inaktivera redigerbara fält"
|
||||
|
||||
#: admin.php:44
|
||||
msgid "Field name"
|
||||
msgstr "Fältnamn"
|
||||
|
||||
#: admin.php:65
|
||||
#: admin.php:85
|
||||
msgid "Save changes"
|
||||
msgstr "Spara ändringar"
|
||||
|
||||
#: admin.php:67
|
||||
msgid "Settings"
|
||||
msgstr "Inställningar"
|
||||
|
||||
#: admin.php:71
|
||||
msgid "Rich text editor"
|
||||
msgstr "Avancerad textredigerare"
|
||||
|
||||
#: admin.php:72
|
||||
msgid "Enable the WYSIWYG editor"
|
||||
msgstr "Aktivera WYSIWYG-redigeraren"
|
||||
|
||||
#: admin.php:78
|
||||
msgid "Edit paragraphs"
|
||||
msgstr "Redigera stycken (paragrafer)"
|
||||
|
||||
#: admin.php:79
|
||||
msgid "Edit one paragraph at a time, instead of an entire post"
|
||||
msgstr "Redigera ett stycke (paragraf) åt gången istället för hela inlägget"
|
||||
|
||||
#: core.php:98
|
||||
msgid "Save"
|
||||
msgstr "Spara"
|
||||
|
||||
#: core.php:99
|
||||
msgid "Cancel"
|
||||
msgstr "Avbryt"
|
||||
|
||||
#: fields.php:391
|
||||
msgid "Post/page title"
|
||||
msgstr "Sidans/Inläggets rubrik"
|
||||
|
||||
#: fields.php:397
|
||||
msgid "Post/page content"
|
||||
msgstr "Sidans/Inläggets brödtext"
|
||||
|
||||
#: fields.php:403
|
||||
msgid "Post/page excerpt"
|
||||
msgstr "Sidans/Inläggets ingress"
|
||||
|
||||
#: fields.php:409
|
||||
msgid "Post tags"
|
||||
msgstr "Sidans etiketter"
|
||||
|
||||
#: fields.php:415
|
||||
msgid "Post/page custom fields"
|
||||
msgstr "Sidans/Inläggets speciella fält"
|
||||
|
||||
#: fields.php:421
|
||||
msgid "Comment text"
|
||||
msgstr "Kommentartext"
|
||||
|
||||
#: fields.php:427
|
||||
msgid "Text widget content"
|
||||
msgstr "Text widgets innehåll"
|
||||
|
||||
#: fields.php:432
|
||||
msgid "Text widget title"
|
||||
msgstr "Text widgets rubrik"
|
||||
|
||||
#: inc/scb-check.php:45
|
||||
msgid "Install now"
|
||||
msgstr "Installera nu"
|
||||
|
||||
#. Plugin Name of an extension
|
||||
msgid "Front-end Editor"
|
||||
msgstr "Front-end Editor"
|
||||
|
||||
#. Plugin URI of an extension
|
||||
msgid "http://scribu.net/wordpress/front-end-editor"
|
||||
msgstr "http://scribu.net/wordpress/front-end-editor"
|
||||
|
||||
#. Description of an extension
|
||||
msgid "Allows you to edit your posts without going through the admin interface"
|
||||
msgstr "Gör det möjligt att redigera dina inlägg och sidor utan att behöva gå bakvägen via administrationsgränssnittet"
|
||||
|
||||
#. Author of an extension
|
||||
msgid "scribu"
|
||||
msgstr "scribu"
|
||||
|
||||
#. Author URI of an extension
|
||||
msgid "http://scribu.net/"
|
||||
msgstr "http://scribu.net/"
|
||||
|
||||
@@ -0,0 +1,121 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: http://wordpress.org/tag/front-end-editor\n"
|
||||
"POT-Creation-Date: 2009-07-04 19:18+0300\n"
|
||||
"PO-Revision-Date: \n"
|
||||
"Last-Translator: scribu <scribu@gmail.com>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: admin.php:10
|
||||
msgid "Fields"
|
||||
msgstr "Alanlar"
|
||||
|
||||
#: admin.php:11
|
||||
#: inc/scb/AdminPage.php:275
|
||||
msgid "Settings"
|
||||
msgstr "Ayarlar"
|
||||
|
||||
#: admin.php:41
|
||||
#: admin.php:85
|
||||
#: inc/scb/AdminPage.php:107
|
||||
msgid "Settings <strong>saved</strong>."
|
||||
msgstr "Ayarlar <strong>kaydedildi</strong>."
|
||||
|
||||
#: admin.php:47
|
||||
msgid "Enable or disable editable fields"
|
||||
msgstr "Düzenlenebilecek alanları etkinleştir veya pasifleştir"
|
||||
|
||||
#: admin.php:53
|
||||
msgid "Field name"
|
||||
msgstr "Alan adı"
|
||||
|
||||
#: admin.php:74
|
||||
#: admin.php:106
|
||||
msgid "Save changes"
|
||||
msgstr "Değişiklikleri kaydet"
|
||||
|
||||
#: admin.php:92
|
||||
msgid "Rich text editor"
|
||||
msgstr "Görsel metin düzenleyicisi "
|
||||
|
||||
#: admin.php:93
|
||||
msgid "Enable the WYSIWYG editor"
|
||||
msgstr "WYSIWYG'yi etkinleştir"
|
||||
|
||||
#: admin.php:99
|
||||
msgid "Edit paragraphs"
|
||||
msgstr "Paragraflari düzenle"
|
||||
|
||||
#: admin.php:100
|
||||
msgid "Edit one paragraph at a time, instead of an entire post"
|
||||
msgstr "Bütün bir yazıyı düzenlemek yerine, paragrafları birer birer düzenle"
|
||||
|
||||
#: core.php:98
|
||||
msgid "Save"
|
||||
msgstr "Kaydet"
|
||||
|
||||
#: core.php:99
|
||||
msgid "Cancel"
|
||||
msgstr "İptal"
|
||||
|
||||
#: fields.php:241
|
||||
msgid "[none]"
|
||||
msgstr "[hiçbiri]"
|
||||
|
||||
#: fields.php:397
|
||||
msgid "Post/page title"
|
||||
msgstr "Yazı/sayfa başlığı"
|
||||
|
||||
#: fields.php:403
|
||||
msgid "Post/page content"
|
||||
msgstr "Yazı/sayfa içeriği"
|
||||
|
||||
#: fields.php:409
|
||||
msgid "Post/page excerpt"
|
||||
msgstr "Yazı/sayfa özeti"
|
||||
|
||||
#: fields.php:415
|
||||
msgid "Post tags"
|
||||
msgstr "Yazı etiketleri"
|
||||
|
||||
#: fields.php:421
|
||||
msgid "Post/page custom fields"
|
||||
msgstr "Yazı/sayfa özel alanları"
|
||||
|
||||
#: fields.php:427
|
||||
msgid "Comment text"
|
||||
msgstr "Yorum metni"
|
||||
|
||||
#: fields.php:433
|
||||
msgid "Text widget content"
|
||||
msgstr "Metin widget içeriği"
|
||||
|
||||
#: fields.php:438
|
||||
msgid "Text widget title"
|
||||
msgstr "Metin widget başlığı"
|
||||
|
||||
#. Plugin Name of an extension
|
||||
msgid "Front-end Editor"
|
||||
msgstr "Front-end Editor"
|
||||
|
||||
#. Plugin URI of an extension
|
||||
msgid "http://scribu.net/wordpress/front-end-editor"
|
||||
msgstr "http://scribu.net/wordpress/front-end-editor"
|
||||
|
||||
# Descripción de una extensión
|
||||
#. Description of an extension
|
||||
msgid "Allows you to edit your posts without going through the admin interface"
|
||||
msgstr "Admin ekranına girmeden yazılarınızı değiştirmenizi sağlar. "
|
||||
|
||||
#. Author of an extension
|
||||
msgid "scribu"
|
||||
msgstr "scribu"
|
||||
|
||||
#. Author URI of an extension
|
||||
msgid "http://scribu.net/"
|
||||
msgstr "http://scribu.net/"
|
||||
|
||||
@@ -0,0 +1,179 @@
|
||||
# Translation of the WordPress plugin Front-end Editor 1.8a5 by scribu.
|
||||
# Copyright (C) 2010 scribu
|
||||
# This file is distributed under the same license as the Front-end Editor package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Front-end Editor 1.8a5\n"
|
||||
"Report-Msgid-Bugs-To: http://wordpress.org/tag/front-end-editor\n"
|
||||
"POT-Creation-Date: 2010-04-01 04:57+0300\n"
|
||||
"PO-Revision-Date: 2010-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#. #-#-#-#-# front-end-editor.pot (Front-end Editor 1.8a5) #-#-#-#-#
|
||||
#. Plugin Name of an extension
|
||||
#: admin.php:8
|
||||
msgid "Front-end Editor"
|
||||
msgstr ""
|
||||
|
||||
#: admin.php:11
|
||||
msgid "Fields"
|
||||
msgstr ""
|
||||
|
||||
#: admin.php:12 scb/AdminPage.php:329
|
||||
msgid "Settings"
|
||||
msgstr ""
|
||||
|
||||
#: admin.php:64
|
||||
msgid "Enable or disable editable fields"
|
||||
msgstr ""
|
||||
|
||||
#: admin.php:66
|
||||
msgid "Post fields"
|
||||
msgstr ""
|
||||
|
||||
#: admin.php:67
|
||||
msgid "Other fields"
|
||||
msgstr ""
|
||||
|
||||
#: admin.php:111
|
||||
msgid "Enable the WYSIWYG editor"
|
||||
msgstr ""
|
||||
|
||||
#: admin.php:117
|
||||
msgid "Edit one paragraph at a time, instead of an entire post"
|
||||
msgstr ""
|
||||
|
||||
#: admin.php:123
|
||||
msgid "Reset the post date on each edit"
|
||||
msgstr ""
|
||||
|
||||
#: admin.php:129
|
||||
msgid "Highlight editable elements"
|
||||
msgstr ""
|
||||
|
||||
#: admin.php:134
|
||||
msgid "Display a tooltip above editable elements"
|
||||
msgstr ""
|
||||
|
||||
#: core.php:59
|
||||
msgid "Save"
|
||||
msgstr ""
|
||||
|
||||
#: core.php:60
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
#: core.php:74
|
||||
msgid "Double-click to edit"
|
||||
msgstr ""
|
||||
|
||||
#: core.php:110
|
||||
msgid "Change Image"
|
||||
msgstr ""
|
||||
|
||||
#: core.php:111
|
||||
msgid "Clear"
|
||||
msgstr ""
|
||||
|
||||
#: fields/base.php:82
|
||||
msgid "empty"
|
||||
msgstr ""
|
||||
|
||||
#: front-end-editor.php:66
|
||||
msgid "Post title"
|
||||
msgstr ""
|
||||
|
||||
#: front-end-editor.php:72
|
||||
msgid "Post content"
|
||||
msgstr ""
|
||||
|
||||
#: front-end-editor.php:78
|
||||
msgid "Post excerpt"
|
||||
msgstr ""
|
||||
|
||||
#: front-end-editor.php:84
|
||||
msgid "Post categories"
|
||||
msgstr ""
|
||||
|
||||
#: front-end-editor.php:91
|
||||
msgid "Post tags"
|
||||
msgstr ""
|
||||
|
||||
#: front-end-editor.php:98
|
||||
msgid "Post terms"
|
||||
msgstr ""
|
||||
|
||||
#: front-end-editor.php:105
|
||||
msgid "Post custom fields"
|
||||
msgstr ""
|
||||
|
||||
#: front-end-editor.php:111
|
||||
msgid "Post thumbnail"
|
||||
msgstr ""
|
||||
|
||||
#: front-end-editor.php:118
|
||||
msgid "Comment text"
|
||||
msgstr ""
|
||||
|
||||
#: front-end-editor.php:124
|
||||
msgid "Category title"
|
||||
msgstr ""
|
||||
|
||||
#: front-end-editor.php:129
|
||||
msgid "Tag title"
|
||||
msgstr ""
|
||||
|
||||
#: front-end-editor.php:134
|
||||
msgid "Author description"
|
||||
msgstr ""
|
||||
|
||||
#: front-end-editor.php:141
|
||||
msgid "Widget title"
|
||||
msgstr ""
|
||||
|
||||
#: front-end-editor.php:146
|
||||
msgid "Text widget content"
|
||||
msgstr ""
|
||||
|
||||
#: front-end-editor.php:152
|
||||
msgid "Site title and description"
|
||||
msgstr ""
|
||||
|
||||
#: front-end-editor.php:158
|
||||
msgid "Site options"
|
||||
msgstr ""
|
||||
|
||||
#: front-end-editor.php:164
|
||||
msgid "Theme images"
|
||||
msgstr ""
|
||||
|
||||
#: scb/AdminPage.php:158 scb/AdminPage.php:169
|
||||
msgid "Save Changes"
|
||||
msgstr ""
|
||||
|
||||
#: scb/AdminPage.php:272
|
||||
msgid "Settings <strong>saved</strong>."
|
||||
msgstr ""
|
||||
|
||||
#. Plugin URI of an extension
|
||||
msgid "http://scribu.net/wordpress/front-end-editor"
|
||||
msgstr ""
|
||||
|
||||
#. Description of an extension
|
||||
msgid "Allows you to edit your posts without going through the admin interface"
|
||||
msgstr ""
|
||||
|
||||
#. Author of an extension
|
||||
msgid "scribu"
|
||||
msgstr ""
|
||||
|
||||
#. Author URI of an extension
|
||||
msgid "http://scribu.net/"
|
||||
msgstr ""
|
||||
@@ -0,0 +1,319 @@
|
||||
=== Front-end Editor ===
|
||||
Contributors: scribu
|
||||
Donate link: http://scribu.net/paypal
|
||||
Tags: inline, editor, edit-in-place, visual, wysiwyg
|
||||
Requires at least: 2.8
|
||||
Tested up to: 3.0
|
||||
Stable tag: trunk
|
||||
|
||||
Want to edit something? Just double-click it!
|
||||
|
||||
== Description ==
|
||||
|
||||
Front-end Editor is a plugin that lets you make changes to your content *directly* from your site. No need to load the admin backend just to correct a typo.
|
||||
|
||||
To edit something, just double-click it!
|
||||
|
||||
The main goals are to be as *fast* as possible and to be *compatible with any theme*.
|
||||
|
||||
**Editable fields:**
|
||||
|
||||
<ul>
|
||||
<li><strong>posts & pages</strong>
|
||||
<ul>
|
||||
<li>title</li>
|
||||
<li>content</li>
|
||||
<li>excerpt</li>
|
||||
<li>categories</li>
|
||||
<li>tags</li>
|
||||
<li>custom taxonomies</li>
|
||||
<li>custom fields</li>
|
||||
<li>thumbnail</li>
|
||||
</ul></li>
|
||||
<li><strong>comments</strong>
|
||||
<ul>
|
||||
<li>content</li>
|
||||
</ul></li>
|
||||
<li><strong>authors</strong>
|
||||
<ul>
|
||||
<li>description</li>
|
||||
</ul></li>
|
||||
<li><strong>widgets</strong>
|
||||
<ul>
|
||||
<li>title</li>
|
||||
<li>text widget content</li>
|
||||
</ul></li>
|
||||
<li><strong>titles</strong>
|
||||
<ul>
|
||||
<li>category</li>
|
||||
<li>tag</li>
|
||||
</ul></li>
|
||||
<li><strong>site info</strong>
|
||||
<ul>
|
||||
<li>title</li>
|
||||
<li>description</li>
|
||||
<li>options</li>
|
||||
</ul></li>
|
||||
<li><strong>theme images</strong>
|
||||
</ul>
|
||||
|
||||
There is a settings page where you can disable editable fields that you don't want.
|
||||
|
||||
**Translations:**
|
||||
|
||||
* Danish - [Georg](http://wordpress.blogos.dk/)
|
||||
* Dutch - [Ron Hartman](http://www.fr-fanatic.com/)
|
||||
* French - [Li-An](http://www.li-an.fr)
|
||||
* Italian - [Gianni Diurno](http://gidibao.net)
|
||||
* Georgian - Levani Melikishvili
|
||||
* German - Gottfried
|
||||
* Japaneze - kzh
|
||||
* Norwegian - John Myrstad
|
||||
* Polish - [Expromo](http://expromo.pl)
|
||||
* Portuguese - [Fernanda Foertter](http://www.hpcprogrammer.com)
|
||||
* Belarusian - [M. Comfi](http://www.comfi.com)
|
||||
* Russian - BoreS
|
||||
* Spanish - [Esteban](http://netmdp.com/)
|
||||
* Swedish - [Müfit Kiper](http://kitkonsult.se/)
|
||||
* Turkish - [Burak Gulbahce](http://www.saylangoz.com/wordpress/)
|
||||
|
||||
If you want to translate this plugin, please read [this](http://scribu.net/wordpress/translating-plugins.html).
|
||||
|
||||
|
||||
== Installation ==
|
||||
|
||||
You can either install it automatically from the WordPress admin, or do it manually:
|
||||
|
||||
1. Unzip "Front-end Editor" archive and put the folder into your plugins folder (/wp-content/plugins/).
|
||||
1. Activate the plugin from the Plugins menu.
|
||||
|
||||
== Frequently Asked Questions ==
|
||||
|
||||
= Error on activation: "Parse error: syntax error, unexpected T_CLASS..." =
|
||||
|
||||
Make sure your host is running PHP 5. Add this line to wp-config.php to check:
|
||||
|
||||
`var_dump(PHP_VERSION);`
|
||||
|
||||
= Why doesn't it work with my theme? =
|
||||
|
||||
See [Common Mistakes in Themes](http://scribu.net/wordpress/front-end-editor/common-mistakes-in-themes.html).
|
||||
|
||||
= Does it work with WP Super Cache? =
|
||||
|
||||
To avoid problems with WP Super Cache or W3 Total Cache, you have to disable caching for logged-in users.
|
||||
|
||||
= If I use this plugin, won't everybody be able to edit my content? =
|
||||
|
||||
No. To edit a field, a user must be logged in and have the right permissions. For example, to edit the post content from the front-end, a user must be able to edit the post content from the regular back-end editor.
|
||||
|
||||
= How can I change the hover color? =
|
||||
|
||||
You can add this line to *style.css* in your theme directory:
|
||||
|
||||
`.fee-field:hover, .fee-field:hover * {background-color: mycolor !important}`
|
||||
|
||||
where *mycolor* is one of these values: [CSS colors](http://www.w3schools.com/CSS/css_colors.asp).
|
||||
|
||||
= How can I edit custom fields? =
|
||||
|
||||
Since custom fields can be used in so many ways, you have to make some code replacements in your theme:
|
||||
|
||||
Replace something like this:
|
||||
|
||||
`<?php echo get_post_meta($post->ID, 'my_key', true); ?>`
|
||||
|
||||
with this:
|
||||
|
||||
`<?php editable_post_meta(get_the_ID(), 'my_key', 'textarea'); ?>`
|
||||
|
||||
The third parameter is optional and allows you to pick which type of field you want: *input*, *textarea* or *rich*.
|
||||
|
||||
If you have a custom field with multiple values, you can use `get_editable_post_meta()`. For example:
|
||||
|
||||
`
|
||||
<ul>
|
||||
<?php
|
||||
$values = get_editable_post_meta(get_the_ID(), 'my_key');
|
||||
foreach ( $values as $value )
|
||||
echo '<li>' . $value . '</li>';
|
||||
?>
|
||||
</ul>
|
||||
`
|
||||
|
||||
= How can I make theme images editable? =
|
||||
|
||||
Again, you have to modify your theme's code. Replace something like this:
|
||||
|
||||
`<img src="<?php bloginfo('template_url'); ?>/images/header_1.jpg" width="970" height="140" alt="<?php bloginfo('name'); ?> header image 1" title="<?php bloginfo('name'); ?> header image 1" />`
|
||||
|
||||
with this:
|
||||
|
||||
`<?php editable_image('header-1',
|
||||
get_bloginfo('template_url') . '/images/header_1.jpg',
|
||||
array('width' => 970, 'height' => 140, 'alt' => get_bloginfo('name')));
|
||||
?>`
|
||||
|
||||
The editable_image() template tag is located in fields/other.php.
|
||||
|
||||
= Can I make my own editable fields? =
|
||||
|
||||
Yes, but you have to know your way around WordPress' internals. Here is the [developer guide](http://scribu.net/wordpress/front-end-editor/developer-guide.html) to get you started.
|
||||
|
||||
== Screenshots ==
|
||||
|
||||
1. The tooltip
|
||||
2. Editing the post content
|
||||
3. Editing the post title
|
||||
4. Changing a theme image
|
||||
5. The settings page
|
||||
|
||||
== Changelog ==
|
||||
|
||||
= 1.8 =
|
||||
* added tooltip
|
||||
* restyled buttons
|
||||
* fixed widget editing
|
||||
* exposed JavaScript field types
|
||||
* [more info](http://scribu.net/wordpress/front-end-editor/fee-1-8.html)
|
||||
|
||||
= 1.7.2 =
|
||||
* fixed narrow textarea problem
|
||||
* fixed IE8 error
|
||||
* included nicEdit upload plugin
|
||||
|
||||
= 1.7.1 =
|
||||
* made date reset optional
|
||||
* better lightbox detection
|
||||
|
||||
= 1.7 =
|
||||
* new editable fields: post thumbnails & arbitrary options
|
||||
* added font-family and font-color buttons to nicEdit
|
||||
* made the nicEdit configuration filterable
|
||||
* dropped Growfield from textareas
|
||||
* load CSS only when needed
|
||||
* standardized CSS ids and classes
|
||||
* renamed hooks from 'front_ed_*' to 'front_end_editor_*'
|
||||
* fixed: when editing the post content, the post date isn't updated
|
||||
* fixed: when editing tags, the input bounces to a new line
|
||||
* fixed: after editing linked post title, the title is not linked anymore
|
||||
* fixed: editable_post_meta() doesn't work outside The Loop
|
||||
* fixed: warning when a NULL is passed to FEE_Field_Base::wrap()
|
||||
* [more info](http://scribu.net/wordpress/front-end-editor/fee-1-7.html)
|
||||
|
||||
= 1.6.1 =
|
||||
* fixed escaping issues
|
||||
|
||||
= 1.6 =
|
||||
* new editable field: post categories
|
||||
* added editing of custom fields with multiple values
|
||||
* added editing of any widget title
|
||||
* improved script loading
|
||||
* added placeholder to editable_post_meta
|
||||
* fixed issue with comment paragraphs
|
||||
* fixed issues with the $post global
|
||||
* [more info](http://scribu.net/wordpress/front-end-editor/fee-1-6.html)
|
||||
|
||||
= 1.5.1 =
|
||||
* fixed auto-upgrade error
|
||||
* added German translation
|
||||
|
||||
= 1.5 =
|
||||
* new editable field: theme images
|
||||
* switched to NicEdit
|
||||
* don't remove blockquotes when editing a single paragraph
|
||||
* better handling of text widgets
|
||||
* compress JS & CSS
|
||||
* compatibility with Ajaxed WordPress plugin
|
||||
* added ES translation
|
||||
* [more info](http://scribu.net/wordpress/front-end-editor/fee-1-5.html)
|
||||
|
||||
= 1.4 =
|
||||
* new editable fields: category title and tag title
|
||||
* added $echo parameter to editable_post_meta()
|
||||
* easier way to restrict editable content
|
||||
* don't load CSS & JS if the current user can't edit any of the fields
|
||||
* switched from Autogrow to Growfield (fixes IE compatibility)
|
||||
* added Georgian translation
|
||||
* [more info](http://scribu.net/wordpress/front-end-editor/fee-1-4.html)
|
||||
|
||||
= 1.3.3 =
|
||||
* fixed duplicate header error
|
||||
|
||||
= 1.3.2 =
|
||||
* site title bugfix
|
||||
|
||||
= 1.3.1 =
|
||||
* settings page bugfix
|
||||
* updated translations
|
||||
|
||||
= 1.3 =
|
||||
* new editable fields: site title & site description
|
||||
* the rich editor respects .alignleft etc.
|
||||
* ability to add extra css to the rich editor via front-end-editor.css
|
||||
* added Polish translation
|
||||
* use id="" instead of rel=""
|
||||
* postThumbs compatibility
|
||||
* [more info](http://scribu.net/wordpress/front-end-editor/fee-1-3.html)
|
||||
|
||||
= 1.2.1 =
|
||||
* widget bugfix
|
||||
|
||||
= 1.2 =
|
||||
* made author description editable
|
||||
* yellow background while hovering over editable field
|
||||
* experimental wysiwyg autogrow
|
||||
* hopefully valid xHTML
|
||||
* HTML code is cleaned up before saving
|
||||
* added Portuguese translation
|
||||
* [more info](http://scribu.net/wordpress/front-end-editor/fee-1-2.html)
|
||||
|
||||
= 1.1.4 =
|
||||
* fix white screen error for non-admins
|
||||
|
||||
= 1.1.3 =
|
||||
* css bugfix
|
||||
* added Belarusian translation
|
||||
* updated italian translation
|
||||
|
||||
= 1.1 =
|
||||
* new editable field: post terms
|
||||
* usability improvements
|
||||
* added Turkish translation
|
||||
* [more info](http://scribu.net/wordpress/front-end-editor/fee-1-1.html)
|
||||
|
||||
= 1.0.6 =
|
||||
* fixed links with target="_blank"
|
||||
* inputs and textareas are focused after double-clicking
|
||||
* added Russian translation
|
||||
|
||||
= 1.0.5 =
|
||||
* added align buttons, fixed autogrow issue
|
||||
* the_title and the_tags improvements
|
||||
* added Swedish translation
|
||||
|
||||
= 1.0 =
|
||||
* single paragraph editing
|
||||
* [more info](http://scribu.net/wordpress/front-end-editor/fee-1-0.html)
|
||||
|
||||
= 0.9 =
|
||||
* new editable field: post custom fields
|
||||
* [more info](http://scribu.net/wordpress/front-end-editor/fee-0-9.html)
|
||||
|
||||
= 0.8 =
|
||||
* rich text editor (jWYSIWYG)
|
||||
* l10n
|
||||
* [more info](http://scribu.net/wordpress/front-end-editor/fee-0-8.html)
|
||||
|
||||
= 0.7 =
|
||||
* settings page
|
||||
* [more info](http://scribu.net/wordpress/front-end-editor/fee-0-7.html)
|
||||
|
||||
= 0.6 =
|
||||
* new editable field: post tags
|
||||
* [more info](http://scribu.net/wordpress/front-end-editor/fee-0-6.html)
|
||||
|
||||
= 0.5 =
|
||||
* initial release
|
||||
* [more info](http://scribu.net/wordpress/front-end-editor/fee-0-5.html)
|
||||
|
||||
@@ -0,0 +1,418 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
Creates an admin page
|
||||
|
||||
You must set $this->args and define the page_content() method
|
||||
*/
|
||||
|
||||
abstract class scbAdminPage {
|
||||
/** Page args
|
||||
* $toplevel string If not empty, will create a new top level menu
|
||||
* $icon string Path to an icon for the top level menu
|
||||
* $parent string (default: options-general.php)
|
||||
* $capability string (default: 'manage_options')
|
||||
* $page_title string (mandatory)
|
||||
* $menu_title string (default: $page_title)
|
||||
* $page_slug string (default: sanitized $page_title)
|
||||
* $nonce string (default: $page_slug)
|
||||
* $action_link string|bool Text of the action link on the Plugins page (default: 'Settings')
|
||||
*/
|
||||
protected $args;
|
||||
|
||||
// URL to the current plugin directory.
|
||||
// Useful for adding css and js files
|
||||
protected $plugin_url;
|
||||
|
||||
// Created at page init
|
||||
protected $pagehook;
|
||||
|
||||
// scbOptions object holder
|
||||
// Normally, it's used for storing formdata
|
||||
protected $options;
|
||||
|
||||
// l10n
|
||||
protected $textdomain;
|
||||
|
||||
// Formdata used for filling the form elements
|
||||
protected $formdata = array();
|
||||
|
||||
// Registration component
|
||||
private static $registered = array();
|
||||
|
||||
static function register($class, $file, $options = null) {
|
||||
if ( isset(self::$registered[$class]) )
|
||||
return false;
|
||||
|
||||
self::$registered[$class] = array($file, $options);
|
||||
|
||||
add_action('_admin_menu', array(__CLASS__, '_pages_init'));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static function replace($old_class, $new_class) {
|
||||
if ( ! isset(self::$registered[$old_class]) )
|
||||
return false;
|
||||
|
||||
self::$registered[$new_class] = self::$registered[$old_class];
|
||||
unset(self::$registered[$old_class]);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static function remove($class) {
|
||||
if ( ! isset(self::$registered[$class]) )
|
||||
return false;
|
||||
|
||||
unset(self::$registered[$class]);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static function _pages_init() {
|
||||
foreach ( self::$registered as $class => $args )
|
||||
new $class($args[0], $args[1]);
|
||||
}
|
||||
|
||||
// ____________MAIN METHODS____________
|
||||
|
||||
|
||||
// Constructor
|
||||
function __construct($file, $options = NULL) {
|
||||
if ( $options !== NULL ) {
|
||||
$this->options = $options;
|
||||
$this->formdata = $this->options->get();
|
||||
}
|
||||
|
||||
$this->file = $file;
|
||||
$this->plugin_url = plugin_dir_url($file);
|
||||
|
||||
$this->setup();
|
||||
$this->check_args();
|
||||
|
||||
add_action('admin_menu', array($this, 'page_init'));
|
||||
add_filter('contextual_help', array($this, '_contextual_help'), 10, 2);
|
||||
|
||||
if ( $this->args['action_link'] )
|
||||
add_filter('plugin_action_links_' . plugin_basename($file), array($this, '_action_link'));
|
||||
}
|
||||
|
||||
// This is where all the page args can be set
|
||||
function setup(){}
|
||||
|
||||
// This is where the css and js go
|
||||
// Both wp_enqueue_*() and inline code can be added
|
||||
function page_head(){}
|
||||
|
||||
// This is where the contextual help goes
|
||||
// @return string
|
||||
function page_help(){}
|
||||
|
||||
// A generic page header
|
||||
function page_header() {
|
||||
echo "<div class='wrap'>\n";
|
||||
screen_icon();
|
||||
echo "<h2>" . $this->args['page_title'] . "</h2>\n";
|
||||
}
|
||||
|
||||
// This is where the page content goes
|
||||
abstract function page_content();
|
||||
|
||||
// A generic page footer
|
||||
function page_footer() {
|
||||
echo "</div>\n";
|
||||
}
|
||||
|
||||
// This is where the form data should be validated
|
||||
function validate($new_data, $old_data) {
|
||||
return $new_data;
|
||||
}
|
||||
|
||||
// A generic form handler
|
||||
function form_handler() {
|
||||
if ( empty($_POST['action']) )
|
||||
return false;
|
||||
|
||||
check_admin_referer($this->nonce);
|
||||
|
||||
foreach ( $this->formdata as $name => $value )
|
||||
$new_data[$name] = @$_POST[$name];
|
||||
|
||||
$this->formdata = $this->validate($new_data, $this->formdata);
|
||||
|
||||
if ( isset($this->options) )
|
||||
$this->options->update($this->formdata);
|
||||
|
||||
$this->admin_msg();
|
||||
}
|
||||
|
||||
|
||||
// ____________UTILITIES____________
|
||||
|
||||
|
||||
// Generates a form submit button
|
||||
function submit_button($value = '', $action = 'action', $class = "button") {
|
||||
if ( is_array($value) ) {
|
||||
extract(wp_parse_args($value, array(
|
||||
'value' => __('Save Changes', $this->textdomain),
|
||||
'action' => 'action',
|
||||
'class' => 'button',
|
||||
'ajax' => true
|
||||
)));
|
||||
|
||||
if ( ! $ajax )
|
||||
$class .= ' no-ajax';
|
||||
}
|
||||
else {
|
||||
if ( empty($value) )
|
||||
$value = __('Save Changes', $this->textdomain);
|
||||
}
|
||||
|
||||
$input_args = array(
|
||||
'type' => 'submit',
|
||||
'names' => $action,
|
||||
'values' => $value,
|
||||
'extra' => '',
|
||||
'desc' => false
|
||||
);
|
||||
|
||||
if ( ! empty($class) )
|
||||
$input_args['extra'] = "class='{$class}'";
|
||||
|
||||
$output = "<p class='submit'>\n" . scbForms::input($input_args) . "</p>\n";
|
||||
|
||||
return $output;
|
||||
}
|
||||
|
||||
/*
|
||||
Mimics scbForms::form_wrap()
|
||||
|
||||
$this->form_wrap($content); // generates a form with a default submit button
|
||||
|
||||
$this->form_wrap($content, false); // generates a form with no submit button
|
||||
|
||||
// the second argument is sent to submit_button()
|
||||
$this->form_wrap($content, array(
|
||||
'text' => 'Save changes',
|
||||
'name' => 'action',
|
||||
'ajax' => true,
|
||||
));
|
||||
*/
|
||||
function form_wrap($content, $submit_button = true) {
|
||||
if ( is_array($submit_button) ) {
|
||||
$content .= call_user_func(array($this, 'submit_button'), $submit_button);
|
||||
} elseif ( true === $submit_button ) {
|
||||
$content .= $this->submit_button();
|
||||
} elseif ( false !== strpos($submit_button, '<input') ) {
|
||||
$content .= $submit_button;
|
||||
} elseif ( false !== $submit_button ) {
|
||||
$button_args = array_slice(func_get_args(), 1);
|
||||
$content .= call_user_func_array(array($this, 'submit_button'), $button_args);
|
||||
}
|
||||
|
||||
return scbForms::form_wrap($content, $this->nonce);
|
||||
}
|
||||
|
||||
// See scbForms::input()
|
||||
function input($args, $options = NULL) {
|
||||
if ( $options === NULL )
|
||||
$options = $this->formdata;
|
||||
|
||||
return scbForms::input($args, $options);
|
||||
}
|
||||
|
||||
// See scbForms::form()
|
||||
function form($rows, $options = NULL) {
|
||||
if ( $options === NULL )
|
||||
$options = $this->formdata;
|
||||
|
||||
return scbForms::form($rows, $options, $this->nonce);
|
||||
}
|
||||
|
||||
// See scbForms::table()
|
||||
function table($rows, $options = NULL) {
|
||||
if ( $options === NULL )
|
||||
$options = $this->formdata;
|
||||
|
||||
return scbForms::table($rows, $options);
|
||||
}
|
||||
|
||||
// See scbForms::table_row()
|
||||
function table_row($row, $options = NULL) {
|
||||
if ( $options === NULL )
|
||||
$options = $this->formdata;
|
||||
|
||||
return scbForms::table_row($row, $options);
|
||||
}
|
||||
|
||||
// Mimics scbForms::form_table()
|
||||
function form_table($rows, $options = NULL) {
|
||||
$output = $this->table($rows, $options);
|
||||
|
||||
$args = array_slice(func_get_args(), 2);
|
||||
array_unshift($args, $output);
|
||||
|
||||
return call_user_func_array(array($this, 'form_wrap'), $args);
|
||||
}
|
||||
|
||||
// Mimics scbForms::form_table_wrap()
|
||||
function form_table_wrap($content) {
|
||||
$output = self::table_wrap($content);
|
||||
|
||||
$args = array_slice(func_get_args(), 1);
|
||||
array_unshift($args, $output);
|
||||
|
||||
return call_user_func_array(array($this, 'form_wrap'), $args);
|
||||
}
|
||||
|
||||
// Generates a standard admin notice
|
||||
function admin_msg($msg = '', $class = "updated") {
|
||||
if ( empty($msg) )
|
||||
$msg = __('Settings <strong>saved</strong>.', $this->textdomain);
|
||||
|
||||
echo "<div class='$class fade'><p>$msg</p></div>\n";
|
||||
}
|
||||
|
||||
// Wraps a string in a <script> tag
|
||||
function js_wrap($string) {
|
||||
return "\n<script type='text/javascript'>\n" . $string . "\n</script>\n";
|
||||
}
|
||||
|
||||
// Wraps a string in a <style> tag
|
||||
function css_wrap($string) {
|
||||
return "\n<style type='text/css'>\n" . $string . "\n</style>\n";
|
||||
}
|
||||
|
||||
|
||||
// ____________INTERNAL METHODS____________
|
||||
|
||||
function __call($method, $args) {
|
||||
return call_user_func_array(array('scbForms', $method), $args);
|
||||
}
|
||||
|
||||
|
||||
// Registers a page
|
||||
function page_init() {
|
||||
extract($this->args);
|
||||
|
||||
if ( ! $toplevel ) {
|
||||
$this->pagehook = add_submenu_page($parent, $page_title, $menu_title, $capability, $page_slug, array($this, '_page_content_hook'));
|
||||
} else {
|
||||
$func = 'add_' . $toplevel . '_page';
|
||||
$this->pagehook = $func($page_title, $menu_title, $capability, $page_slug, array($this, '_page_content_hook'), $icon_url);
|
||||
}
|
||||
|
||||
if ( ! $this->pagehook )
|
||||
return;
|
||||
|
||||
if ( $ajax_submit ) {
|
||||
$this->ajax_response();
|
||||
add_action('admin_footer', array($this, 'ajax_submit'), 20);
|
||||
}
|
||||
|
||||
add_action('admin_print_styles-' . $this->pagehook, array($this, 'page_head'));
|
||||
}
|
||||
|
||||
private function check_args() {
|
||||
if ( empty($this->args['page_title']) )
|
||||
trigger_error('Page title cannot be empty', E_USER_WARNING);
|
||||
|
||||
$this->args = wp_parse_args($this->args, array(
|
||||
'toplevel' => '',
|
||||
'icon' => '',
|
||||
'parent' => 'options-general.php',
|
||||
'capability' => 'manage_options',
|
||||
'menu_title' => $this->args['page_title'],
|
||||
'page_slug' => '',
|
||||
'nonce' => '',
|
||||
'action_link' => __('Settings', $this->textdomain),
|
||||
'ajax_submit' => false,
|
||||
));
|
||||
|
||||
if ( empty($this->args['page_slug']) )
|
||||
$this->args['page_slug'] = sanitize_title_with_dashes($this->args['menu_title']);
|
||||
|
||||
if ( empty($this->args['nonce']) )
|
||||
$this->nonce = $this->args['page_slug'];
|
||||
}
|
||||
|
||||
function _contextual_help($help, $screen) {
|
||||
if ( is_object($screen) )
|
||||
$screen = $screen->id;
|
||||
|
||||
if ( $screen == $this->pagehook && $actual_help = $this->page_help() )
|
||||
return $actual_help;
|
||||
|
||||
return $help;
|
||||
}
|
||||
|
||||
function ajax_response() {
|
||||
if ( ! isset($_POST['_ajax_submit']) || $_POST['_ajax_submit'] != $this->pagehook )
|
||||
return;
|
||||
|
||||
$this->form_handler();
|
||||
die;
|
||||
}
|
||||
|
||||
function ajax_submit() {
|
||||
global $page_hook;
|
||||
|
||||
if ( $page_hook != $this->pagehook )
|
||||
return;
|
||||
?>
|
||||
<script type="text/javascript">
|
||||
jQuery(document).ready(function($){
|
||||
var $spinner = $(new Image()).attr('src', '<?php echo admin_url("images/wpspin_light.gif"); ?>');
|
||||
|
||||
$(':submit').click(function(ev){
|
||||
var $submit = $(this);
|
||||
var $form = $submit.parents('form');
|
||||
|
||||
if ( $submit.hasClass('no-ajax') || $form.attr('method').toLowerCase() != 'post' )
|
||||
return true;
|
||||
|
||||
var $this_spinner = $spinner.clone();
|
||||
|
||||
$submit.before($this_spinner).hide();
|
||||
|
||||
var data = $form.serializeArray();
|
||||
data.push({name: $submit.attr('name'), value: $submit.val()});
|
||||
data.push({name: '_ajax_submit', value: '<?php echo $this->pagehook; ?>'});
|
||||
|
||||
$.post(location.href, data, function(response){
|
||||
var $prev = $('.wrap > .updated, .wrap > .error');
|
||||
var $msg = $(response).hide().insertAfter($('.wrap h2'));
|
||||
if ( $prev.length > 0 )
|
||||
$prev.fadeOut('slow', function(){ $msg.fadeIn('slow'); });
|
||||
else
|
||||
$msg.fadeIn('slow');
|
||||
|
||||
$this_spinner.hide();
|
||||
$submit.show();
|
||||
});
|
||||
|
||||
ev.stopPropagation();
|
||||
ev.preventDefault();
|
||||
});
|
||||
});
|
||||
</script>
|
||||
<?php
|
||||
}
|
||||
|
||||
function _page_content_hook() {
|
||||
$this->form_handler();
|
||||
|
||||
$this->page_header();
|
||||
$this->page_content();
|
||||
$this->page_footer();
|
||||
}
|
||||
|
||||
function _action_link($links) {
|
||||
$url = add_query_arg('page', $this->args['page_slug'], admin_url($this->args['parent']));
|
||||
$links[] = "<a href='$url'>" . $this->args['action_link'] . "</a>";
|
||||
|
||||
return $links;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,226 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
Creates an admin page with widgets, similar to the dashboard
|
||||
|
||||
For example, if you defined the boxes like this:
|
||||
|
||||
$this->boxes = array(
|
||||
array('settings', 'Settings box', 'normal')
|
||||
...
|
||||
);
|
||||
|
||||
You must also define two methods in your class for each box:
|
||||
|
||||
function settings_box() - this is where the box content is echoed
|
||||
function settings_handler() - this is where the box settings are saved
|
||||
...
|
||||
*/
|
||||
abstract class scbBoxesPage extends scbAdminPage {
|
||||
/*
|
||||
A box definition looks like this:
|
||||
array($slug, $title, $column);
|
||||
|
||||
Available columns: normal, side, column3, column4
|
||||
*/
|
||||
protected $boxes = array();
|
||||
|
||||
function __construct($file, $options = null) {
|
||||
parent::__construct($file, $options);
|
||||
|
||||
// too late
|
||||
scbUtil::add_uninstall_hook($this->file, array($this, 'uninstall'));
|
||||
}
|
||||
|
||||
function page_init() {
|
||||
if ( !isset($this->args['columns']) )
|
||||
$this->args['columns'] = 2;
|
||||
|
||||
parent::page_init();
|
||||
|
||||
add_action('load-' . $this->pagehook, array($this, 'boxes_init'));
|
||||
add_filter('screen_layout_columns', array($this, 'columns'));
|
||||
}
|
||||
|
||||
function default_css() {
|
||||
?>
|
||||
<style type="text/css">
|
||||
.meta-box-sortables {margin: 0 5px !important}
|
||||
.inside {clear:both; overflow:hidden; padding: 10px 10px 0 10px !important}
|
||||
.inside table {margin: 0 !important; padding: 0 !important}
|
||||
.inside table td {vertical-align: middle !important}
|
||||
.inside table .regular-text {width: 100% !important}
|
||||
.inside .form-table th {width: 30%; max-width: 200px; padding: 10px 0 !important}
|
||||
.inside .widefat .check-column {padding-bottom: 7px !important}
|
||||
.inside p, .inside table {margin: 0 0 10px 0 !important}
|
||||
.inside p.submit {float:left !important; padding: 0 !important}
|
||||
</style>
|
||||
<?php
|
||||
}
|
||||
|
||||
function page_content() {
|
||||
$this->default_css();
|
||||
|
||||
global $screen_layout_columns;
|
||||
|
||||
if ( isset($screen_layout_columns) ) {
|
||||
$hide2 = $hide3 = $hide4 = '';
|
||||
switch ( $screen_layout_columns ) {
|
||||
case 4:
|
||||
$width = 'width:24.5%;';
|
||||
break;
|
||||
case 3:
|
||||
$width = 'width:32.67%;';
|
||||
$hide4 = 'display:none;';
|
||||
break;
|
||||
case 2:
|
||||
$width = 'width:49%;';
|
||||
$hide3 = $hide4 = 'display:none;';
|
||||
break;
|
||||
default:
|
||||
$width = 'width:98%;';
|
||||
$hide2 = $hide3 = $hide4 = 'display:none;';
|
||||
}
|
||||
}
|
||||
?>
|
||||
<div id='<?php echo $this->pagehook ?>-widgets' class='metabox-holder'>
|
||||
<?php
|
||||
echo "\t<div class='postbox-container' style='$width'>\n";
|
||||
do_meta_boxes( $this->pagehook, 'normal', '' );
|
||||
|
||||
echo "\t</div><div class='postbox-container' style='{$hide2}$width'>\n";
|
||||
do_meta_boxes( $this->pagehook, 'side', '' );
|
||||
|
||||
echo "\t</div><div class='postbox-container' style='{$hide3}$width'>\n";
|
||||
do_meta_boxes( $this->pagehook, 'column3', '' );
|
||||
|
||||
echo "\t</div><div class='postbox-container' style='{$hide4}$width'>\n";
|
||||
do_meta_boxes( $this->pagehook, 'column4', '' );
|
||||
?>
|
||||
</div></div>
|
||||
<?php
|
||||
}
|
||||
|
||||
function page_footer() {
|
||||
$this->_boxes_js_init();
|
||||
parent::page_footer();
|
||||
}
|
||||
|
||||
function form_handler() {
|
||||
if ( empty($_POST) )
|
||||
return;
|
||||
|
||||
check_admin_referer($this->nonce);
|
||||
|
||||
// Box handler
|
||||
foreach ( $this->boxes as $box ) {
|
||||
$args = isset($box[4]) ? $box[4] : array();
|
||||
|
||||
$handler = $box[0] . '_handler';
|
||||
|
||||
if ( method_exists($this, $handler) )
|
||||
call_user_func_array(array($this, $handler), $args);
|
||||
}
|
||||
|
||||
if ( $this->options )
|
||||
$this->formdata = $this->options->get();
|
||||
}
|
||||
|
||||
function columns($columns) {
|
||||
$columns[$this->pagehook] = $this->args['columns'];
|
||||
|
||||
return $columns;
|
||||
}
|
||||
|
||||
function uninstall() {
|
||||
global $wpdb;
|
||||
|
||||
$hook = str_replace('-', '', $this->pagehook);
|
||||
|
||||
foreach ( array('metaboxhidden', 'closedpostboxes', 'wp_metaboxorder', 'screen_layout') as $option )
|
||||
$keys[] = "'{$option}_{$hook}'";
|
||||
|
||||
$keys = '(' . implode(', ', $keys) . ')';
|
||||
|
||||
$wpdb->query("
|
||||
DELETE FROM {$wpdb->usermeta}
|
||||
WHERE meta_key IN {$keys}
|
||||
");
|
||||
}
|
||||
|
||||
function boxes_init() {
|
||||
wp_enqueue_script('common');
|
||||
wp_enqueue_script('wp-lists');
|
||||
wp_enqueue_script('postbox');
|
||||
|
||||
$registered = array();
|
||||
foreach($this->boxes as $box_args) {
|
||||
@list($name, $title, $context, $priority, $args) = $box_args;
|
||||
|
||||
if ( empty($title) )
|
||||
$title = ucfirst($name);
|
||||
if ( empty($context) )
|
||||
$context = 'normal';
|
||||
if ( empty($priority) )
|
||||
$priority = 'default';
|
||||
if ( empty($args) )
|
||||
$args = array();
|
||||
|
||||
if ( isset($registered[$name]) ) {
|
||||
if ( empty($args) )
|
||||
trigger_error("Duplicate box name: $name", E_USER_NOTICE);
|
||||
|
||||
$name = $this->_increment($name);
|
||||
} else {
|
||||
$registered[$name] = true;
|
||||
}
|
||||
|
||||
add_meta_box($name, $title, array($this, '_intermediate_callback'), $this->pagehook, $context, $priority, $args);
|
||||
}
|
||||
}
|
||||
|
||||
// Make it so that $args is actually what's passed to the callback
|
||||
function _intermediate_callback($_, $box) {
|
||||
list($name) = explode('-', $box['id']);
|
||||
|
||||
call_user_func_array(array($this, $name . '_box'), $box['args']);
|
||||
}
|
||||
|
||||
private function _increment($name) {
|
||||
$parts = explode('-', $name);
|
||||
if ( isset($parts[1]) )
|
||||
$parts[1]++;
|
||||
else
|
||||
$parts[1] = 2;
|
||||
|
||||
return implode('-', $parts);
|
||||
}
|
||||
|
||||
// Adds necesary code for JS to work
|
||||
function _boxes_js_init() {
|
||||
echo $this->js_wrap(
|
||||
<<<EOT
|
||||
//<![CDATA[
|
||||
jQuery(document).ready( function($){
|
||||
// close postboxes that should be closed
|
||||
$('.if-js-closed').removeClass('if-js-closed').addClass('closed');
|
||||
// postboxes setup
|
||||
postboxes.add_postbox_toggles('$this->pagehook');
|
||||
});
|
||||
//]]>
|
||||
EOT
|
||||
);
|
||||
?>
|
||||
|
||||
<form style='display: none' method='get' action=''>
|
||||
<p>
|
||||
<?php
|
||||
wp_nonce_field( 'closedpostboxes', 'closedpostboxesnonce', false );
|
||||
wp_nonce_field( 'meta-box-order', 'meta-box-order-nonce', false );
|
||||
?>
|
||||
</p>
|
||||
</form>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,464 @@
|
||||
<?php
|
||||
|
||||
class scbForms {
|
||||
const token = '%input%';
|
||||
|
||||
/* Generates one or more form elements of the same type,
|
||||
including <select>s and <textarea>s.
|
||||
|
||||
$args = array (
|
||||
'type' => string (mandatory)
|
||||
'name' => string | array (mandatory)
|
||||
'value' => string | array
|
||||
'desc' => string | array | false
|
||||
'desc_pos' => 'before' | 'after' | 'foo %input% bar' (default: after)
|
||||
'extra' => string (default: class="regular-text")
|
||||
);
|
||||
|
||||
$formdata = associative array with the formdata with which to fill the elements
|
||||
*/
|
||||
|
||||
protected static $args;
|
||||
protected static $formdata = array();
|
||||
|
||||
static function input($args, $formdata = array()) {
|
||||
$args = self::validate_data($args);
|
||||
|
||||
$error = false;
|
||||
foreach ( array('name', 'value') as $key ) {
|
||||
$old = $key . 's';
|
||||
|
||||
if ( isset($args[$old]) ) {
|
||||
$args[$key] = $args[$old];
|
||||
unset($args[$old]);
|
||||
}
|
||||
}
|
||||
|
||||
if ( !isset($args['name']) || empty($args['name']) )
|
||||
return trigger_error("Empty name", E_USER_WARNING);
|
||||
|
||||
self::$args = $args;
|
||||
self::$formdata = self::validate_data($formdata);
|
||||
|
||||
switch ( $args['type'] ) {
|
||||
case 'select': return self::_select();
|
||||
case 'textarea': return self::_textarea();
|
||||
default: return self::_input();
|
||||
}
|
||||
}
|
||||
|
||||
// Deprecated
|
||||
static function select($args, $options = array()) {
|
||||
if ( !empty($options) )
|
||||
$args['value'] = $options;
|
||||
|
||||
self::$args = $args;
|
||||
|
||||
return self::_select();
|
||||
}
|
||||
|
||||
// Deprecated
|
||||
static function textarea($args, $content = '') {
|
||||
if ( !empty($content) )
|
||||
$args['value'] = $content;
|
||||
|
||||
self::$args = $args;
|
||||
|
||||
return self::_textarea();
|
||||
}
|
||||
|
||||
|
||||
// ____________UTILITIES____________
|
||||
|
||||
|
||||
// Generates a table wrapped in a form
|
||||
static function form_table($rows, $formdata = NULL) {
|
||||
$output = '';
|
||||
foreach ( $rows as $row )
|
||||
$output .= self::table_row($row, $formdata);
|
||||
|
||||
$output = self::form_table_wrap($output);
|
||||
|
||||
return $output;
|
||||
}
|
||||
|
||||
// Generates a form
|
||||
static function form($inputs, $formdata = NULL, $nonce) {
|
||||
$output = '';
|
||||
foreach ( $inputs as $input )
|
||||
$output .= self::input($input, $formdata);
|
||||
|
||||
$output = self::form_wrap($output, $nonce);
|
||||
|
||||
return $output;
|
||||
}
|
||||
|
||||
// Generates a table
|
||||
static function table($rows, $formdata = NULL) {
|
||||
$output = '';
|
||||
foreach ( $rows as $row )
|
||||
$output .= self::table_row($row, $formdata);
|
||||
|
||||
$output = self::table_wrap($output);
|
||||
|
||||
return $output;
|
||||
}
|
||||
|
||||
// Generates a table row
|
||||
static function table_row($args, $formdata = NULL) {
|
||||
return self::row_wrap($args['title'], self::input($args, $formdata));
|
||||
}
|
||||
|
||||
|
||||
// ____________WRAPPERS____________
|
||||
|
||||
|
||||
// Wraps the given content in a <form><table>
|
||||
static function form_table_wrap($content, $nonce = 'update_options') {
|
||||
$output = self::table_wrap($content);
|
||||
$output = self::form_wrap($output, $nonce);
|
||||
|
||||
return $output;
|
||||
}
|
||||
|
||||
// Wraps the given content in a <form>
|
||||
static function form_wrap($content, $nonce = 'update_options') {
|
||||
$output = "\n<form method='post' action=''>\n";
|
||||
$output .= $content;
|
||||
$output .= wp_nonce_field($action = $nonce, $name = "_wpnonce", $referer = true , $echo = false);
|
||||
$output .= "\n</form>\n";
|
||||
|
||||
return $output;
|
||||
}
|
||||
|
||||
// Wraps the given content in a <table>
|
||||
static function table_wrap($content) {
|
||||
$output = "\n<table class='form-table'>\n" . $content . "\n</table>\n";
|
||||
|
||||
return $output;
|
||||
}
|
||||
|
||||
// Wraps the given content in a <tr><td>
|
||||
static function row_wrap($title, $content) {
|
||||
return "\n<tr>\n\t<th scope='row'>" . $title . "</th>\n\t<td>\n\t\t" . $content . "\t</td>\n\n</tr>";
|
||||
}
|
||||
|
||||
|
||||
// ____________PRIVATE METHODS____________
|
||||
|
||||
|
||||
// Recursivly transform empty arrays to ''
|
||||
private static function validate_data($data) {
|
||||
if ( ! is_array($data) )
|
||||
return $data;
|
||||
|
||||
if ( empty($data) )
|
||||
return '';
|
||||
|
||||
foreach ( $data as $key => &$value )
|
||||
$value = self::validate_data($value);
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
// From multiple inputs to single inputs
|
||||
private static function _input() {
|
||||
extract(wp_parse_args(self::$args, array(
|
||||
'name' => NULL,
|
||||
'value' => NULL,
|
||||
'desc' => NULL,
|
||||
'checked' => NULL,
|
||||
)));
|
||||
|
||||
$m_name = is_array($name);
|
||||
$m_value = is_array($value);
|
||||
$m_desc = is_array($desc);
|
||||
|
||||
// Correct name
|
||||
if ( !$m_name && $m_value
|
||||
&& 'checkbox' == $type
|
||||
&& false === strpos($name, '[')
|
||||
)
|
||||
$args['name'] = $name = $name . '[]';
|
||||
|
||||
// Expand names or values
|
||||
if ( !$m_name && !$m_value ) {
|
||||
$a = array($name => $value);
|
||||
}
|
||||
elseif ( $m_name && !$m_value ) {
|
||||
$a = array_fill_keys($name, $value);
|
||||
}
|
||||
elseif ( !$m_name && $m_value ) {
|
||||
$a = array_fill_keys($value, $name);
|
||||
}
|
||||
else {
|
||||
$a = array_combine($name, $value);
|
||||
}
|
||||
|
||||
// Correct descriptions
|
||||
$_after = '';
|
||||
if ( isset($desc) && !$m_desc && false === strpos($desc, self::token) ) {
|
||||
if ( $m_value ) {
|
||||
$_after = $desc;
|
||||
$args['desc'] = $desc = $value;
|
||||
}
|
||||
elseif ( $m_name ) {
|
||||
$_after = $desc;
|
||||
$args['desc'] = $desc = $name;
|
||||
}
|
||||
}
|
||||
|
||||
// Determine what goes where
|
||||
if ( !$m_name && $m_value ) {
|
||||
$i1 = 'val';
|
||||
$i2 = 'name';
|
||||
} else {
|
||||
$i1 = 'name';
|
||||
$i2 = 'val';
|
||||
}
|
||||
|
||||
$func = in_array($type, array('checkbox', 'radio')) ? '_checkbox_single' : '_input_single';
|
||||
|
||||
// Set constant args
|
||||
$const_args = self::array_extract(self::$args, array('type', 'desc_pos', 'checked'));
|
||||
if ( isset($extra) )
|
||||
$const_args['extra'] = explode(' ', $extra);
|
||||
|
||||
$i = 0;
|
||||
foreach ( $a as $name => $val ) {
|
||||
$cur_args = $const_args;
|
||||
|
||||
if ( $$i1 !== NULL )
|
||||
$cur_args['name'] = $$i1;
|
||||
|
||||
if ( $$i2 !== NULL )
|
||||
$cur_args['value'] = $$i2;
|
||||
|
||||
// Set desc
|
||||
if ( is_array($desc) )
|
||||
$cur_args['desc'] = $desc[$i];
|
||||
elseif ( isset($desc) )
|
||||
$cur_args['desc'] = $desc;
|
||||
|
||||
// Find relevant formdata
|
||||
$match = NULL;
|
||||
if ( $checked === NULL ) {
|
||||
$match = @self::$formdata[str_replace('[]', '', $$i1)];
|
||||
if ( is_array($match) ) {
|
||||
$match = $match[$i];
|
||||
}
|
||||
} else if ( is_array($checked) ) {
|
||||
$cur_args['checked'] = isset($checked[$i]) && $checked[$i];
|
||||
}
|
||||
|
||||
$output[] = self::$func($cur_args, $match);
|
||||
|
||||
$i++;
|
||||
}
|
||||
|
||||
return implode("\n", $output) . $_after;
|
||||
}
|
||||
|
||||
// Handle args for checkboxes and radio inputs
|
||||
private static function _checkbox_single($args, $data) {
|
||||
$args = wp_parse_args($args, array(
|
||||
'name' => NULL,
|
||||
'value' => true,
|
||||
'desc_pos' => 'after',
|
||||
'desc' => NULL,
|
||||
'checked' => NULL,
|
||||
'extra' => array(),
|
||||
));
|
||||
|
||||
foreach ( $args as $key => &$val )
|
||||
$$key = &$val;
|
||||
unset($val);
|
||||
|
||||
if ( $checked === NULL && $value == $data )
|
||||
$checked = true;
|
||||
|
||||
if ( $checked )
|
||||
$extra[] = 'checked="checked"';
|
||||
|
||||
if ( $desc === NULL && !is_bool($value) )
|
||||
$desc = str_replace('[]', '', $value);
|
||||
|
||||
return self::_input_gen($args);
|
||||
}
|
||||
|
||||
// Handle args for text inputs
|
||||
private static function _input_single($args, $data) {
|
||||
$args = wp_parse_args($args, array(
|
||||
'value' => stripslashes($data),
|
||||
'desc_pos' => 'after',
|
||||
'extra' => array('class="regular-text"'),
|
||||
));
|
||||
|
||||
foreach ( $args as $key => &$val )
|
||||
$$key = &$val;
|
||||
unset($val);
|
||||
|
||||
if ( FALSE === strpos($name, '[') )
|
||||
$extra[] = "id='{$name}'";
|
||||
|
||||
return self::_input_gen($args);
|
||||
}
|
||||
|
||||
// Generate html with the final args
|
||||
private static function _input_gen($args) {
|
||||
extract(wp_parse_args($args, array(
|
||||
'name' => NULL,
|
||||
'value' => NULL,
|
||||
'desc' => NULL,
|
||||
'extra' => array()
|
||||
)));
|
||||
|
||||
$extra = self::validate_extra($extra, $name);
|
||||
|
||||
$value = esc_attr($value);
|
||||
|
||||
$input = "<input name='{$name}' value='{$value}' type='{$type}'{$extra} /> ";
|
||||
|
||||
return self::add_label($input, $desc, $desc_pos);
|
||||
}
|
||||
|
||||
private static function _select() {
|
||||
extract(wp_parse_args(self::$args, array(
|
||||
'name' => '',
|
||||
'value' => array(),
|
||||
'text' => '',
|
||||
'selected' => array('foo'), // hack to make default blank
|
||||
'extra' => '',
|
||||
'numeric' => false, // use numeric array instead of associative
|
||||
'desc' => '',
|
||||
'desc_pos' => '',
|
||||
)), EXTR_SKIP);
|
||||
|
||||
if ( empty($value) )
|
||||
$value = array('' => '');
|
||||
|
||||
if ( !is_array($value) )
|
||||
return trigger_error("'value' argument is expected to be an array", E_USER_WARNING);
|
||||
|
||||
if ( !self::is_associative($value) && !$numeric )
|
||||
$value = array_combine($value, $value);
|
||||
|
||||
if ( isset(self::$formdata[$name]) )
|
||||
$cur_val = self::$formdata[$name];
|
||||
else
|
||||
$cur_val = $selected;
|
||||
|
||||
if ( false === $text ) {
|
||||
$opts = '';
|
||||
} else {
|
||||
$opts = "\t<option value=''";
|
||||
if ( $cur_val === array('foo') )
|
||||
$opts .= " selected='selected'";
|
||||
$opts .= ">{$text}</option>\n";
|
||||
}
|
||||
|
||||
foreach ( $value as $key => $value ) {
|
||||
if ( empty($key) || empty($value) )
|
||||
continue;
|
||||
|
||||
$cur_extra = array();
|
||||
if ( (string) $key == (string) $cur_val )
|
||||
$cur_extra[] = "selected='selected'";
|
||||
|
||||
$cur_extra = self::validate_extra($cur_extra, $key);
|
||||
|
||||
$opts .= "\t<option value='{$key}'{$cur_extra}>{$value}</option>\n";
|
||||
}
|
||||
|
||||
$extra = self::validate_extra($extra, $name);
|
||||
|
||||
$input = "<select name='{$name}'$extra>\n{$opts}</select>";
|
||||
|
||||
return self::add_label($input, $desc, $desc_pos);
|
||||
}
|
||||
|
||||
private static function _textarea() {
|
||||
extract(wp_parse_args(self::$args, array(
|
||||
'name' => '',
|
||||
'extra' => 'class="widefat"',
|
||||
'value' => '',
|
||||
'escaped' => false,
|
||||
)), EXTR_SKIP);
|
||||
|
||||
if ( !$escaped )
|
||||
$value = wp_htmledit_pre(stripslashes($value));
|
||||
|
||||
$extra = self::validate_extra($extra, $name);
|
||||
|
||||
return "<textarea name='{$name}'{$extra}>\n{$value}\n</textarea>\n";
|
||||
}
|
||||
|
||||
private static function add_label($input, $desc, $desc_pos) {
|
||||
if ( empty($desc_pos) )
|
||||
$desc_pos = 'after';
|
||||
|
||||
$label = '';
|
||||
if ( false === strpos($desc, self::token) ) {
|
||||
switch ($desc_pos) {
|
||||
case 'before': $label = $desc . ' ' . self::token; break;
|
||||
case 'after': $label = self::token . ' ' . $desc;
|
||||
}
|
||||
} else {
|
||||
$label = $desc;
|
||||
}
|
||||
|
||||
$label = trim(str_replace(self::token, $input, $label));
|
||||
|
||||
if ( empty($desc) )
|
||||
$output = $input . "\n";
|
||||
else
|
||||
$output = "<label>{$label}</label>\n";
|
||||
|
||||
return $output;
|
||||
}
|
||||
|
||||
private static function validate_extra($extra, $name, $implode = true) {
|
||||
if ( !is_array($extra) )
|
||||
$extra = explode(' ', $extra);
|
||||
|
||||
if ( empty($extra) )
|
||||
return '';
|
||||
|
||||
return ' ' . ltrim(implode(' ', $extra));
|
||||
}
|
||||
|
||||
// Utilities
|
||||
|
||||
private static function is_associative($array) {
|
||||
if ( !is_array($array) || empty($array) )
|
||||
return false;
|
||||
|
||||
$keys = array_keys($array);
|
||||
|
||||
return array_keys($keys) !== $keys;
|
||||
}
|
||||
|
||||
private static function array_extract($array, $keys) {
|
||||
$r = array();
|
||||
foreach ( $keys as $key )
|
||||
if ( isset($array[$key]) )
|
||||
$r[$key] = $array[$key];
|
||||
|
||||
return $r;
|
||||
}
|
||||
}
|
||||
|
||||
// PHP < 5.2
|
||||
if ( !function_exists('array_fill_keys') ) :
|
||||
function array_fill_keys($keys, $value) {
|
||||
if ( !is_array($keys) )
|
||||
trigger_error('First argument is expected to be an array.' . gettype($keys) . 'given', E_USER_WARNING);
|
||||
|
||||
$r = array();
|
||||
foreach ( $keys as $key )
|
||||
$r[$key] = $value;
|
||||
|
||||
return $r;
|
||||
}
|
||||
endif;
|
||||
|
||||
@@ -0,0 +1,160 @@
|
||||
<?php
|
||||
|
||||
// Usage: http://scribu.net/wordpress/scb-framework/scb-options.html
|
||||
|
||||
class scbOptions {
|
||||
protected $defaults; // the default value(s)
|
||||
|
||||
protected $key; // the option name
|
||||
protected $data; // the option value
|
||||
|
||||
public $wp_filter_id; // used by WP hooks
|
||||
|
||||
/**
|
||||
* Create a new set of options
|
||||
*
|
||||
* @param key Option name
|
||||
* @param string Reference to main plugin file
|
||||
* @param array An associative array of default values
|
||||
*/
|
||||
function __construct($key, $file, $defaults = '') {
|
||||
$this->key = $key;
|
||||
$this->defaults = $defaults;
|
||||
$this->data = get_option($this->key);
|
||||
|
||||
if ( is_array($this->defaults) ) {
|
||||
$this->data = (array) $this->data;
|
||||
|
||||
register_activation_hook($file, array($this, '_update_reset'));
|
||||
}
|
||||
|
||||
scbUtil::add_uninstall_hook($file, array($this, '_delete'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all data fields, certain fields or a single field
|
||||
*
|
||||
* @param string|array $field The field(s) to get
|
||||
* @return mixed Whatever is in those fields
|
||||
*/
|
||||
function get($field = '') {
|
||||
return $this->_get($field, $this->data);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all default fields, certain fields or a single field
|
||||
*
|
||||
* @param string|array $field The field(s) to get
|
||||
* @return mixed Whatever is in those fields
|
||||
*/
|
||||
function get_defaults($field = '') {
|
||||
return $this->_get($field, $this->defaults);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set all data fields, certain fields or a single field
|
||||
*
|
||||
* @param string|array $field The field to update or an associative array
|
||||
* @param mixed $value The new value (ignored if $field is array)
|
||||
* @return null
|
||||
*/
|
||||
function set($field, $value = '') {
|
||||
if ( is_array($field) )
|
||||
$newdata = $field;
|
||||
else
|
||||
$newdata = array($field => $value);
|
||||
|
||||
$this->update(array_merge($this->data, $newdata));
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove any keys that are not in the defaults array
|
||||
*/
|
||||
function cleanup() {
|
||||
$r = array();
|
||||
|
||||
if ( ! is_array($this->defaults) )
|
||||
return false;
|
||||
|
||||
foreach ( array_keys($this->defaults) as $key )
|
||||
$r[$key] = $this->data[$key];
|
||||
|
||||
$this->update($r);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Update raw data
|
||||
*
|
||||
* @param mixed $newdata
|
||||
* @return null
|
||||
*/
|
||||
function update($newdata) {
|
||||
if ( $this->data === $newdata )
|
||||
return;
|
||||
|
||||
$this->data = $newdata;
|
||||
|
||||
update_option($this->key, $this->data);
|
||||
}
|
||||
|
||||
/**
|
||||
* Reset option to defaults
|
||||
*
|
||||
* @return null
|
||||
*/
|
||||
function reset() {
|
||||
$this->update($this->defaults);
|
||||
}
|
||||
|
||||
|
||||
//_____INTERNAL METHODS_____
|
||||
|
||||
|
||||
// Get one, more or all fields from an array
|
||||
private function _get($field, $data) {
|
||||
if ( empty($field) )
|
||||
return $data;
|
||||
|
||||
if ( is_string($field) )
|
||||
return $data[$field];
|
||||
|
||||
foreach ( $field as $key )
|
||||
if ( isset($data[$key]) )
|
||||
$result[] = $data[$key];
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
// Magic method: $options->field
|
||||
function __get($field) {
|
||||
return $this->data[$field];
|
||||
}
|
||||
|
||||
// Magic method: $options->field = $value
|
||||
function __set($field, $value) {
|
||||
$this->set($field, $value);
|
||||
}
|
||||
|
||||
// Magic method: isset($options->field)
|
||||
function __isset($field) {
|
||||
return isset($this->data[$field]);
|
||||
}
|
||||
|
||||
// Add new fields with their default values
|
||||
function _update_reset() {
|
||||
$this->update(array_merge($this->defaults, $this->data));
|
||||
}
|
||||
|
||||
// Delete option
|
||||
function _delete() {
|
||||
delete_option($this->key);
|
||||
}
|
||||
|
||||
// DEPRECATED
|
||||
function update_part($data) {
|
||||
$this->set($data);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,168 @@
|
||||
<?php
|
||||
|
||||
class scbUtil {
|
||||
// Force script enqueue
|
||||
static function do_scripts($handles) {
|
||||
global $wp_scripts;
|
||||
|
||||
if ( ! is_a($wp_scripts, 'WP_Scripts') )
|
||||
$wp_scripts = new WP_Scripts();
|
||||
|
||||
$wp_scripts->do_items((array) $handles);
|
||||
}
|
||||
|
||||
// Force style enqueue
|
||||
static function do_styles($handles) {
|
||||
self::do_scripts('jquery');
|
||||
|
||||
global $wp_styles;
|
||||
|
||||
if ( ! is_a($wp_styles, 'WP_Styles') )
|
||||
$wp_styles = new WP_Styles();
|
||||
|
||||
ob_start();
|
||||
$wp_styles->do_items((array) $handles);
|
||||
$content = str_replace(array('"', "\n"), array("'", ''), ob_get_clean());
|
||||
|
||||
echo "<script type='text/javascript'>\n";
|
||||
echo "jQuery(document).ready(function($) {\n";
|
||||
echo "$('head').prepend(\"$content\");\n";
|
||||
echo "});\n";
|
||||
echo "</script>";
|
||||
}
|
||||
|
||||
// Extract $keys from $array
|
||||
static function array_extract($array, $keys) {
|
||||
$r = array();
|
||||
foreach ( $keys as $key )
|
||||
if ( array_key_exists($key, $array) )
|
||||
$r[$key] = $array[$key];
|
||||
|
||||
return $r;
|
||||
}
|
||||
|
||||
// Prepare an array for an IN statement
|
||||
static function array_to_sql($values) {
|
||||
foreach ( $values as &$val )
|
||||
$val = "'" . esc_sql(trim($val)) . "'";
|
||||
|
||||
return implode(',', $values);
|
||||
}
|
||||
|
||||
// Have more than one uninstall hooks; also prevents an UPDATE query on each page load
|
||||
static function add_uninstall_hook($plugin, $callback) {
|
||||
register_uninstall_hook($plugin, '__return_false'); // dummy
|
||||
|
||||
add_action('uninstall_' . plugin_basename($plugin), $callback);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// _____Simple debug utility_____
|
||||
|
||||
if ( ! class_exists('scbDebug') ):
|
||||
class scbDebug {
|
||||
private $args;
|
||||
|
||||
function __construct($args) {
|
||||
$this->args = $args;
|
||||
|
||||
register_shutdown_function(array($this, '_delayed'));
|
||||
}
|
||||
|
||||
function _delayed() {
|
||||
if ( !current_user_can('administrator') )
|
||||
return;
|
||||
|
||||
$this->raw($this->args);
|
||||
}
|
||||
|
||||
static function raw($args) {
|
||||
echo "<pre>";
|
||||
foreach ( $args as $arg )
|
||||
if ( is_array($arg) || is_object($arg) )
|
||||
print_r($arg);
|
||||
else
|
||||
var_dump($arg);
|
||||
echo "</pre>";
|
||||
}
|
||||
}
|
||||
endif;
|
||||
|
||||
if ( ! function_exists('debug') ):
|
||||
function debug() {
|
||||
$args = func_get_args();
|
||||
|
||||
// integrate with FirePHP
|
||||
if ( class_exists('FirePHP') ) {
|
||||
$firephp = FirePHP::getInstance(true);
|
||||
$firephp->group('debug');
|
||||
foreach ( $args as $arg )
|
||||
$firephp->log($arg);
|
||||
$firephp->groupEnd();
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
new scbDebug($args);
|
||||
}
|
||||
endif;
|
||||
|
||||
if ( ! function_exists('debug_raw') ):
|
||||
function debug_raw() {
|
||||
$args = func_get_args();
|
||||
|
||||
scbDebug::raw($args);
|
||||
}
|
||||
endif;
|
||||
|
||||
|
||||
// _____Minimalist HTML framework_____
|
||||
|
||||
if ( ! function_exists('html') ):
|
||||
function html($tag, $content = '') {
|
||||
list($closing) = explode(' ', $tag, 2);
|
||||
|
||||
return "<{$tag}>{$content}</{$closing}>";
|
||||
}
|
||||
endif;
|
||||
|
||||
// Generate an <a> tag
|
||||
if ( ! function_exists('html_link') ):
|
||||
function html_link($url, $title = '') {
|
||||
if ( empty($title) )
|
||||
$title = $url;
|
||||
|
||||
return sprintf("<a href='%s'>%s</a>", $url, $title);
|
||||
}
|
||||
endif;
|
||||
|
||||
|
||||
// _____Compatibility layer_____
|
||||
|
||||
// WP < 3.0
|
||||
if ( ! function_exists('__return_false') ) :
|
||||
function __return_false() {
|
||||
return false;
|
||||
}
|
||||
endif;
|
||||
|
||||
// WP < ?
|
||||
if ( ! function_exists('__return_true') ) :
|
||||
function __return_true() {
|
||||
return true;
|
||||
}
|
||||
endif;
|
||||
|
||||
// WP < ?
|
||||
if ( ! function_exists('set_post_field') ) :
|
||||
function set_post_field($field, $value, $post_id) {
|
||||
global $wpdb;
|
||||
|
||||
$post_id = absint($post_id);
|
||||
$value = sanitize_post_field($field, $value, $post_id, 'db');
|
||||
|
||||
return $wpdb->update($wpdb->posts, array($field => $value), array('ID' => $post_id));
|
||||
}
|
||||
endif;
|
||||
|
||||
@@ -0,0 +1,70 @@
|
||||
<?php
|
||||
/*
|
||||
To load scbFramework, you just need to add this line at the beginning of your plugin:
|
||||
|
||||
require_once dirname(__FILE__) . '/scb/load.php';
|
||||
*/
|
||||
|
||||
if ( !class_exists('scbLoad3') ) :
|
||||
class scbLoad3 {
|
||||
|
||||
private static $candidates;
|
||||
|
||||
static function init($rev, $file, $classes) {
|
||||
$dir = dirname($file);
|
||||
|
||||
self::$candidates[$rev] = $dir;
|
||||
|
||||
self::load($dir . '/', $classes);
|
||||
|
||||
add_action('activated_plugin', array(__CLASS__, 'reorder'));
|
||||
}
|
||||
|
||||
static function reorder() {
|
||||
krsort(self::$candidates);
|
||||
|
||||
$dir = dirname(plugin_basename(reset(self::$candidates)));
|
||||
|
||||
$current = get_option('active_plugins', array());
|
||||
|
||||
$found = false;
|
||||
foreach ( $current as $i => $plugin ) {
|
||||
$plugin_dir = dirname($plugin);
|
||||
|
||||
if ( $plugin_dir == $dir ) {
|
||||
$found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if ( !$found || 0 == $i )
|
||||
return;
|
||||
|
||||
unset($current[$i]);
|
||||
array_unshift($current, $plugin);
|
||||
|
||||
update_option('active_plugins', $current);
|
||||
}
|
||||
|
||||
private static function load($path, $classes) {
|
||||
foreach ( $classes as $class_name ) {
|
||||
if ( class_exists($class_name) )
|
||||
continue;
|
||||
|
||||
$fpath = $path . substr($class_name, 3) . '.php';
|
||||
|
||||
@include $fpath;
|
||||
}
|
||||
}
|
||||
|
||||
static function get_candidates() {
|
||||
return self::$candidates;
|
||||
}
|
||||
}
|
||||
endif;
|
||||
|
||||
scbLoad3::init(1, __FILE__, array(
|
||||
'scbOptions', 'scbForms', 'scbAdminPage', 'scbBoxesPage',
|
||||
'scbWidget', 'scbCron', 'scbTable', 'scbUtil', 'scbRewrite',
|
||||
));
|
||||
|
||||
|
After Width: | Height: | Size: 54 KiB |
|
After Width: | Height: | Size: 57 KiB |
|
After Width: | Height: | Size: 7.3 KiB |
|
After Width: | Height: | Size: 132 KiB |
|
After Width: | Height: | Size: 44 KiB |