[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: nicEdit - что должен вернуть скрипту сервер?
Страницы: 1, 2
trane294
redreem
А что именно у тебя делает outContent($res, 'default'); //header + echo просто у меня такой функции нету просто как echo не делает и как header не работает
redreem
function outContent($content) {

header('Content-type: text/html; charset=utf-8');
echo $content;

}
bkm
Здравствуйте, столкнулся с той же проблемой, что и вы. Картинки загружаю на свой хост без проблем, но как передать картинку в сам редактор - не понимаю.

Правленный nicEdit по ссылке недоступен.

Если вас не затруднит, подскажите с решением.
Заранее спасибо.
redreem
outContent() описан в ветке топика, прямо перед вашим сообщением. nicEdit можно забрать например тут: http://javoronkiclub.ru/js/foreign/nicEdit.js
картинки в область редактирования попадают автоматом после аплоада, это редактор сам делает без проблем. если не делает, значит что-то не то. в отладчике браузера можно глянуть - попал img в облать редактирования или нет.
bkm
Добавил в загрузчик строку

$a['alttext'] = $_POST['AltImage'];


В файл nicEdit поле для alt-текста (предварительно высоту окна надо увеличить)

...
A.write('<br>Alt Text: <input name="AltImage" type="text" style="margin-top: 20px;" />');
...


Далее

...
var A=parseInt(this.ne.selectedInstance.elm.getStyle("width"));
var AltText=parseInt(this.ne.selectedInstance.elm.getStyle("alttext"));

if(this.im){this.im.setAttributes({src:C.url,alt:AltText,width:(A&&C.width)?Math.min(A,C.width):""})}
this.removePane()
...


атрибут alt вставляется без проблем, единственно его содержимое alt="NaN"

туго я соображаю в javascript. Подскажите, как поправить?
redreem
может вместо

var AltText=parseInt(this.ne.selectedInstance.elm.getStyle("alttext"));


что-то типа

var AltText=this.ne.selectedInstance.elm.value;


я с промежуточных полей в никедите не пытался ничего забрать, поэтому лишь предполагаю. возможно если elm - не чистый DOM-объект, то может быть есть метод типа getValue вместо value. надо код покопать.
Егор
Можно мне на почту ответ как сделать загрузку на свой сервер?
redreem
Егор

на деревню, бабушке Егора?
ArtgrammeR
В пункте nicURI надо указывать путь к папке загрузке или все же некий обработчик?
redreem
nicURI - это вызов обработчика загрузки. указывать на клиентской стороне серверные папки вообще большого смысла так-то не имеет. обработчик сам уже решит - куда ему сунуть картинку.
iru
Цитата (redreem @ 28.03.2012 - 10:55)
если неполучится - могу сделать микросборку всего функционала со своей версией правки nicEdit.js, ну правда за какое-то вознаграждение, - пару часов придется посидеть.

и да, сам nicedit с правками можно взять тут: http://javoronkiclub.ru/js/foreign/nicEdit.js

Вообщем я разобрался с upload.php

nicEdit.js, те та часть которая отвечает за upload:

var nicUploadButton = nicEditorAdvancedButton.extend({
nicURI : 'http://dcserver.ru/ajax/upload_image',
errorText : 'Failed to upload image',

addPane : function() {
if(typeof window.FormData === "undefined") {
return this.onError("Image uploads are not supported in this browser, use Chrome, Firefox, or Safari instead.");
}
this.im = this.ne.selectedInstance.selElm().parentTag('IMG');

var container = new bkElement('div')
.
setStyle({ padding: '10px' })
.
appendTo(this.pane.pane);

new bkElement('div')
.
setStyle({ fontSize: '14px', fontWeight : 'bold', paddingBottom: '5px' })
.
setContent('Insert an Image')
.
appendTo(container);

this.fileInput = new bkElement('input')
.
setAttributes({ 'type' : 'file' })
.
appendTo(container);

this.progress = new bkElement('progress')
.
setStyle({ width : '100%', display: 'none' })
.
setAttributes('max', 100)
.
appendTo(container);

this.fileInput.onchange = this.uploadFile.closure(this);
},

onError : function(msg) {
this.removePane();
alert(msg || "Failed to upload image");
},

uploadFile : function() {
var file = this.fileInput.files[0];
if (!file || !file.type.match(/image.*/)) {
this.onError("Only image files can be uploaded");
return;
}
this.fileInput.setStyle({ display: 'none' });
this.setProgress(0);

var fd = new FormData(); // https://hacks.mozilla.org/2011/01/how-to-de...image-uploader/
fd.append("nicImage", file);
var xhr = new XMLHttpRequest();
xhr.open("POST", this.ne.options.uploadURI || this.nicURI);

xhr.onload = function() {
try {
var res = JSON.parse(xhr.responseText);
} catch(e) {
alert(xhr.responseText);
return this.onError();
}
this.onUploaded(res.upload);


}.closure(this);
xhr.onerror = this.onError.closure(this);
xhr.upload.onprogress = function(e) {
//this.setProgress(e.loaded / e.total);

}.closure(this);
xhr.send(fd);

},

setProgress : function(percent) {
this.progress.setStyle({ display: 'block' });
if(percent < .98) {
this.progress.value = percent;
} else {
this.progress.removeAttribute('value');
}
}
,

onUploaded : function(options) {
this.removePane();
var src = options.links.original;
if(!this.im) {
this.ne.selectedInstance.restoreRng();
var tmp = 'javascript:nicImTemp();';
this.ne.nicCommand("insertImage", src);
this.im = this.findElm('IMG','src', src);
}
var w = parseInt(this.ne.selectedInstance.elm.getStyle('width'));
if(this.im) {
this.im.setAttributes({
src : src,
width : (w && options.image.width) ? Math.min(w, options.image.width) : ''
});
}
}
}
);

nicEditors.registerPlugin(nicPlugin,nicUploadOptions);


Собственно сам upload.php



$uploaddir = './upload/';
$uploaddir2 = '/upload/';
$hash = md5(date('dmYHisu'));
$dot = explode('.', $_FILES['nicImage']['name']);
$dotn = count($dot);

$name = $uploaddir . $hash . '.' . $dot[$dotn - 1];
$name_ajax = $uploaddir2 . $hash . '.' . $dot[$dotn - 1];
move_uploaded_file($_FILES['nicImage']['tmp_name'], $name);

$infoimg = getimagesize($name);

//base_url($name_ajax);

$massiv = array("upload" => array(
'image'=>array(
'name'=>null,
'title'=>null,
'caption'=>null,
'hash'=>null,
'deletehash'=>null,
'datetime'=>null,
'type'=>null,
'animated'=>"false",
'width'=>$infoimg['0'],
'height'=>$infoimg['1'],
'size'=>$_FILES['nicImage']['size'],
'views'=>"1",
'bandwidth'=>"0"


),
'links'=>array(
'original'=>base_url($name_ajax),
'imgur_page'=>base_url($name_ajax),
'delete_page'=>null,
'small_square'=>null,
'large_thumbnail'=>base_url($name_ajax)
)
)
);


echo json_encode($massiv);





original - главное что он должен отдать в JSON массиве

Изображение корректно грузиться на сервер и отображается в Редакторе.
Если есть желающие помочь с изменением размера картинки "по живому" после отображения ее в редакторе, милости прошу.

Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.