Adding categories on the fly is happiness. Fixes #1563 thanks to mdawaffe
git-svn-id: https://develop.svn.wordpress.org/trunk@2767 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
parent
5db43a74d8
commit
67ebbbe5a3
@ -76,6 +76,7 @@ addLoadEvent(blurry);
|
||||
//]]>
|
||||
</script>
|
||||
<script type="text/javascript" src="fat.js"></script>
|
||||
<?php if ( isset( $editing ) ) : ?>
|
||||
<?php if ( get_option('rich_editing') ) :?>
|
||||
<script type="text/javascript" src="tinymce/tiny_mce_src.js"></script>
|
||||
<script type="text/javascript">
|
||||
@ -97,9 +98,105 @@ tinyMCE.init({
|
||||
});
|
||||
</script>
|
||||
<?php endif; ?>
|
||||
<?php if ( isset( $editing ) ) : ?>
|
||||
<script type="text/javascript" src="dbx.js"></script>
|
||||
<script type="text/javascript" src="dbx-key.js"></script>
|
||||
<script type="text/javascript" src="tw-sack.js"></script>
|
||||
<script type="text/javascript">
|
||||
var ajaxCat = new sack();
|
||||
|
||||
function getResponseElement() {
|
||||
var p = document.getElementById('ajaxcatresponse');
|
||||
if (!p) {
|
||||
p = document.createElement('p');
|
||||
document.getElementById('categorydiv').appendChild(p);
|
||||
p.id = 'ajaxcatresponse';
|
||||
}
|
||||
return p;
|
||||
}
|
||||
|
||||
function newCatLoading() {
|
||||
var p = getResponseElement();
|
||||
p.innerHTML = 'Sending Data...';
|
||||
}
|
||||
|
||||
function newCatLoaded() {
|
||||
var p = getResponseElement();
|
||||
p.innerHTML = 'Data Sent...';
|
||||
}
|
||||
|
||||
function newCatInteractive() {
|
||||
var p = getResponseElement();
|
||||
p.innerHTML = 'Processing Data...';
|
||||
}
|
||||
|
||||
function newCatCompletion() {
|
||||
var p = getResponseElement();
|
||||
var id = ajaxCat.response;
|
||||
if ( id == '-1' ) {
|
||||
p.innerHTML = "You don't have permission to do that.";
|
||||
return;
|
||||
}
|
||||
if ( id == '0' ) {
|
||||
p.innerHTML = "That category name is invalid. Try something else.";
|
||||
return;
|
||||
}
|
||||
p.parentNode.removeChild(p);
|
||||
var exists = document.getElementById('category-' + id);
|
||||
if (exists) {
|
||||
exists.checked = 'checked';
|
||||
exists.parentNode.setAttribute('id', 'new-category-' + id);
|
||||
var nowClass = exists.parentNode.getAttribute('class');
|
||||
exists.parentNode.setAttribute('class', nowClass + ' fade');
|
||||
Fat.fade_all();
|
||||
exists.parentNode.setAttribute('class', nowClass);
|
||||
} else {
|
||||
var catDiv = document.getElementById('categorychecklist');
|
||||
var newLabel = document.createElement('label');
|
||||
catDiv.insertBefore(newLabel, catDiv.firstChild);
|
||||
newLabel.setAttribute('for', 'category-' + id);
|
||||
newLabel.setAttribute('id', 'new-category-' + id);
|
||||
newLabel.setAttribute('class', 'selectit fade');
|
||||
|
||||
var newCheck = document.createElement('input');
|
||||
newLabel.appendChild(newCheck);
|
||||
newCheck.value = id;
|
||||
newCheck.type = 'checkbox';
|
||||
newCheck.checked = 'checked';
|
||||
newCheck.name = 'post_category[]';
|
||||
newCheck.id = 'category-' + id;
|
||||
|
||||
var newLabelText = document.createTextNode(' ' + document.getElementById('newcat').value);
|
||||
newLabel.appendChild(newLabelText);
|
||||
Fat.fade_all();
|
||||
newLabel.setAttribute('class', 'selectit');
|
||||
}
|
||||
}
|
||||
|
||||
function ajaxNewCatKeyUp(e) {
|
||||
if (!e) {
|
||||
if (window.event) {
|
||||
e = window.event;
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (e.keyCode == 13) {
|
||||
ajaxNewCat();
|
||||
}
|
||||
}
|
||||
|
||||
function ajaxNewCat() {
|
||||
var newcat = document.getElementById('newcat');
|
||||
var catString = 'ajaxnewcat=' + newcat.value;
|
||||
ajaxCat.requestFile = 'edit-form-ajax-cat.php';
|
||||
ajaxCat.method = 'GET';
|
||||
ajaxCat.onLoading = newCatLoading;
|
||||
ajaxCat.onLoaded = newCatLoaded;
|
||||
ajaxCat.onInteractive = newCatInteractive;
|
||||
ajaxCat.onCompletion = newCatCompletion;
|
||||
ajaxCat.runAJAX(catString);
|
||||
}
|
||||
</script>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php do_action('admin_head'); ?>
|
||||
|
@ -83,10 +83,10 @@ addLoadEvent(focusit);
|
||||
|
||||
<fieldset id="categorydiv" class="dbx-box">
|
||||
<h3 class="dbx-handle"><?php _e('Categories') ?></h3>
|
||||
<div class="dbx-content"><div><?php dropdown_categories(get_settings('default_category')); ?></div>
|
||||
<div class="dbx-content"><div id="categorychecklist"><?php dropdown_categories(get_settings('default_category')); ?></div>
|
||||
<p id="ajaxcat">
|
||||
<input type="text" name="newcat" id="newcat" size="16" />
|
||||
<input type="button" name="Button" value="+">
|
||||
<input type="text" name="newcat" id="newcat" size="16" onkeyup="ajaxNewCatKeyUp(event);" />
|
||||
<input type="button" name="Button" value="+" onclick="ajaxNewCat();" />
|
||||
</p>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
29
wp-admin/edit-form-ajax-cat.php
Normal file
29
wp-admin/edit-form-ajax-cat.php
Normal file
@ -0,0 +1,29 @@
|
||||
<?php
|
||||
require_once('../wp-config.php');
|
||||
require_once('admin-functions.php');
|
||||
|
||||
get_currentuserinfo();
|
||||
|
||||
if ( !current_user_can('manage_categories') )
|
||||
die('-1');
|
||||
|
||||
function grab_id() {
|
||||
global $new_cat_id;
|
||||
$new_cat_id = func_get_arg(0);
|
||||
}
|
||||
|
||||
add_action('edit_category', 'grab_id');
|
||||
add_action('create_category', 'grab_id');
|
||||
|
||||
$cat_name = stripslashes($_GET['ajaxnewcat']);
|
||||
|
||||
if ( !$category_nicename = sanitize_title($cat_name) )
|
||||
die('0');
|
||||
if ( $already = $wpdb->get_var("SELECT cat_ID FROM $wpdb->categories WHERE category_nicename = '$category_nicename'") )
|
||||
die($already);
|
||||
|
||||
$cat_name = $wpdb->escape($cat_name);
|
||||
$cat_array = compact('cat_name', 'category_nicename');
|
||||
wp_insert_category($cat_array);
|
||||
echo $new_cat_id;
|
||||
?>
|
133
wp-admin/tw-sack.js
Normal file
133
wp-admin/tw-sack.js
Normal file
@ -0,0 +1,133 @@
|
||||
/* Simple AJAX Code-Kit (SACK) */
|
||||
/* ©2005 Gregory Wild-Smith */
|
||||
/* www.twilightuniverse.com */
|
||||
/* Software licenced under a modified X11 licence, see documentation or authors website for more details */
|
||||
|
||||
function sack(file){
|
||||
this.AjaxFailedAlert = "Your browser does not support the enhanced functionality of this website, and therefore you will have an experience that differs from the intended one.\n";
|
||||
this.requestFile = file;
|
||||
this.method = "POST";
|
||||
this.URLString = "";
|
||||
this.encodeURIString = true;
|
||||
this.execute = false;
|
||||
|
||||
this.onLoading = function() { };
|
||||
this.onLoaded = function() { };
|
||||
this.onInteractive = function() { };
|
||||
this.onCompletion = function() { };
|
||||
|
||||
this.createAJAX = function() {
|
||||
try {
|
||||
this.xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
|
||||
} catch (e) {
|
||||
try {
|
||||
this.xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
|
||||
} catch (err) {
|
||||
this.xmlhttp = null;
|
||||
}
|
||||
}
|
||||
if(!this.xmlhttp && typeof XMLHttpRequest != "undefined")
|
||||
this.xmlhttp = new XMLHttpRequest();
|
||||
if (!this.xmlhttp){
|
||||
this.failed = true;
|
||||
}
|
||||
};
|
||||
|
||||
this.setVar = function(name, value){
|
||||
if (this.URLString.length < 3){
|
||||
this.URLString = name + "=" + value;
|
||||
} else {
|
||||
this.URLString += "&" + name + "=" + value;
|
||||
}
|
||||
}
|
||||
|
||||
this.encVar = function(name, value){
|
||||
var varString = encodeURIComponent(name) + "=" + encodeURIComponent(value);
|
||||
return varString;
|
||||
}
|
||||
|
||||
this.encodeURLString = function(string){
|
||||
varArray = string.split('&');
|
||||
for (i = 0; i < varArray.length; i++){
|
||||
urlVars = varArray[i].split('=');
|
||||
if (urlVars[0].indexOf('amp;') != -1){
|
||||
urlVars[0] = urlVars[0].substring(4);
|
||||
}
|
||||
varArray[i] = this.encVar(urlVars[0],urlVars[1]);
|
||||
}
|
||||
return varArray.join('&');
|
||||
}
|
||||
|
||||
this.runResponse = function(){
|
||||
eval(this.response);
|
||||
}
|
||||
|
||||
this.runAJAX = function(urlstring){
|
||||
this.responseStatus = new Array(2);
|
||||
if(this.failed && this.AjaxFailedAlert){
|
||||
alert(this.AjaxFailedAlert);
|
||||
} else {
|
||||
if (urlstring){
|
||||
if (this.URLString.length){
|
||||
this.URLString = this.URLString + "&" + urlstring;
|
||||
} else {
|
||||
this.URLString = urlstring;
|
||||
}
|
||||
}
|
||||
if (this.encodeURIString){
|
||||
var timeval = new Date().getTime();
|
||||
this.URLString = this.encodeURLString(this.URLString);
|
||||
this.setVar("rndval", timeval);
|
||||
}
|
||||
if (this.element) { this.elementObj = document.getElementById(this.element); }
|
||||
if (this.xmlhttp) {
|
||||
var self = this;
|
||||
if (this.method == "GET") {
|
||||
var totalurlstring = this.requestFile + "?" + this.URLString;
|
||||
this.xmlhttp.open(this.method, totalurlstring, true);
|
||||
} else {
|
||||
this.xmlhttp.open(this.method, this.requestFile, true);
|
||||
}
|
||||
if (this.method == "POST"){
|
||||
try {
|
||||
this.xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded')
|
||||
} catch (e) {}
|
||||
}
|
||||
|
||||
this.xmlhttp.send(this.URLString);
|
||||
this.xmlhttp.onreadystatechange = function() {
|
||||
switch (self.xmlhttp.readyState){
|
||||
case 1:
|
||||
self.onLoading();
|
||||
break;
|
||||
case 2:
|
||||
self.onLoaded();
|
||||
break;
|
||||
case 3:
|
||||
self.onInteractive();
|
||||
break;
|
||||
case 4:
|
||||
self.response = self.xmlhttp.responseText;
|
||||
self.responseXML = self.xmlhttp.responseXML;
|
||||
self.responseStatus[0] = self.xmlhttp.status;
|
||||
self.responseStatus[1] = self.xmlhttp.statusText;
|
||||
self.onCompletion();
|
||||
if(self.execute){ self.runResponse(); }
|
||||
if (self.elementObj) {
|
||||
var elemNodeName = self.elementObj.nodeName;
|
||||
elemNodeName.toLowerCase();
|
||||
if (elemNodeName == "input" || elemNodeName == "select" || elemNodeName == "option" || elemNodeName == "textarea"){
|
||||
self.elementObj.value = self.response;
|
||||
} else {
|
||||
self.elementObj.innerHTML = self.response;
|
||||
}
|
||||
}
|
||||
self.URLString = "";
|
||||
break;
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
};
|
||||
this.createAJAX();
|
||||
}
|
Loading…
Reference in New Issue
Block a user