2009-08-14 5 views
5

Estoy usando el binario ASP.NET para mi FCKeditor, y necesito insertar dos editores en la misma página. Las imágenes/navegación cargadas deben ir a dos directorios diferentes, ¿cómo hago esto desde código subyacente?Cómo cambio la ruta de carga de imágenes * dinámicamente * en FCKeditor

que conoce la ruta para los archivos subidos están situados en el config.ascx -file con el ajuste UserFilesPath, pero no puedo encontrar una manera de reemplazar este valor de mi archivo aspx.cs.

Además, he encontrado la documentación (en conflicto) que indica que Session["FCKeditor:UserFilesPath"] podría fijarse, pero no me gusta poner la información-usercontrol específico en una variable de sesión global.

Respuesta

1

primer lugar es necesario asignar información de identidad del usuario en la sesión [ "UserInfo"]

luego ir a [carpeta raíz fckeditor] /filemanager/connector/aspx/config.ascx

string Userfolder = Session["UserInfo"].ToString(); // URL path to user files. UserFilesPath = "~/Upload/" + Userfolder;

0

Oh querido, después de mucha lucha único que soy capaz de conseguir es:

fckEditor1.Config

propiedad. Inténtelo para el editor que desea configurar:

fckEditor1.Config [ "UserFilesPath"] = "tu camino"

+0

Gracias por intentar ayudarme, pero esto no funciona. La propiedad config es solo para el editor actual, no para el editor de archivos. – Espo

0

Esto probablemente funciona. Al menos funcionó para mí.

Session["FCKeditor:UserFilesPath"] = "~/images/"; 
0

Lo siento, creo que su mejor opción es dejar de usar el control, y usar la API de JavaScript en su lugar.

0

Tema completo: FCK editor 2.x: carga de archivo/imagen/video en diferentes carpetas para diferentes aplicaciones usando un solo FCKeditor, haciendo $ Config ['UserFilesPath'] completamente dinámico de una manera segura

Se puede hacer de muchas maneras. Estoy explicando un proceso, que apliqué de acuerdo con la estructura de código de mi aplicación php. La misma estructura/marco de código que seguí para diferentes aplicaciones, con cada aplicación como una subcarpeta en mi servidor. Por lo tanto, existe la necesidad lógica de utilizar un solo FCKeditor y configurarlo de alguna manera, para que funcione correctamente para todas las aplicaciones. La parte de contenido de FCKeditor está bien. Se puede reutilizar fácilmente por diferentes aplicaciones o proyectos desde un único componente FCKeditor. Pero el problema surge con la carga de archivos, como imágenes, videos o cualquier otro documento. Para que sea aplicable a un proyecto diferente, los archivos deben cargarse en carpetas separadas para diferentes proyectos. Y para esa $ Config ['UserFilesPath'] debe configurarse con una ruta de carpeta dinámica, significa una ruta de carpeta diferente para cada proyecto, pero llamando al mismo componente FCKeditor en la misma ubicación. Estoy explicando algunos procesos diferentes juntos paso a paso. Los que funcionaron bien para mí con FCKeditor versión 2.5.1 y VersionBuild 17566 y espero que también funcionen para otros. Si no funciona para otros desarrolladores, entonces es posible que necesiten realizar algunos ajustes en esos procesos según la estructura del código del proyecto y el permiso de escritura de la carpeta, así como según la versión de FCKeditor.

1) En fckeditor \ editor \ filemanager \ connectors \ phpconfig.archivo php

a) Vaya después de global $ Config; y $ Config ['Enabled'] = false; i) No, si quiere un método seguro depende de sesión: sólo para ajuste de un solo sitio: es decir, una FCKeditor para cada dominio o subdominio un proyecto, no una FCKeditor para múltiples proyectos a continuación, colocar este código:

if(!isset($_SESSION)){ 
session_start(); 
} 

if(isset($_SESSION['SESSION_SERVER_RELATIVEPATH']) && $_SESSION['SESSION_SERVER_RELATIVEPATH']!="") { 
$relative_path=$_SESSION['SESSION_SERVER_RELATIVEPATH']; 
include_once($_SERVER['DOCUMENT_ROOT'].$relative_path."configurations/configuration.php"); 
} 

NB: Aquí, $ _SESSION ['SESSION_SERVER_RELATIVEPATH']: ruta de carpeta relativa del proyecto correspondiente a webroot; debería ser como "/ project/folder/path /" y establecer esta variable de sesión en un archivo común en su proyecto donde comenzó la sesión. Y debe haber una configuración/configuration.php como el archivo de configuración en su proyecto. Si su nombre o ruta es diferente, debe colocar aquí la ruta correspondiente en lugar de las configuraciones/configuration.php

ii) Si desea usar un solo componente FCKeditor para diferentes proyectos representados como diferentes subcarpetas y con una sesión dependiente forma segura (asumiendo diferentes session_name para diferentes proyectos, para diferenciar sus sesiones en un solo servidor). Pero no funcionará si los proyectos representados como subdominios o dominios diferentes, luego tienen que usar la sesión de forma independiente (iii) proporcionada a continuación (aunque es inseguro). Coloque este código:

if(!isset($_SESSION)){ 
session_name($_REQUEST['param_project_to_fck']); 
session_start(); 
} 

if(isset($_SESSION['SESSION_SERVER_RELATIVEPATH']) && $_SESSION['SESSION_SERVER_RELATIVEPATH']!="") { 
$relative_path=$_SESSION['SESSION_SERVER_RELATIVEPATH']; 
include_once($_SERVER['DOCUMENT_ROOT'].$relative_path."configurations/configuration.php"); 
} 

Lea N.B. al final del punto anterior, es decir, el punto (i)

iii) Si desea utilizar un único componente FCKeditor para diferentes proyectos representados tanto subcarpetas como subdominios o dominios (aunque no es totalmente seguro)) Coloque este código:

if(isset($_REQUEST['param_project_to_fck']) && $_REQUEST['param_project_to_fck']!=""){ //base64 encoded relative folder path of the project corresponding to the webroot; should be like "/project/folder/path/" before encoding 
$relative_path=base64_decode($_REQUEST['param_project_to_fck']); 
include_once($_SERVER['DOCUMENT_ROOT'].$relative_path."configurations/configuration.php"); 
} 

Lea N.B. al final del punto (i)

b) Ahora, después de que para cualquier caso que ha seleccionado, por favor, encontrar este código:

// Path to user files relative to the document root. 
$Config['UserFilesPath'] = '/userfiles/' ; 

y vuelva a colocar el siguiente código:

if(isset($SERVER_RELATIVEPATH) && $SERVER_RELATIVEPATH==$relative_path) { //to make it relatively secure so that hackers can not create any upload folder automatcally in the server, using a direct link and can not upload files there 
$Config['Enabled'] = true ; 
$file_upload_relative_path=$SERVER_RELATIVEPATH; 
}else{ 
$Config['Enabled'] = false ; 
exit(); 
} 
// Path to user files relative to the document root. 
//$Config['UserFilesPath'] = '/userfiles/' ; 
//$Config['UserFilesPath'] = $file_upload_relative_path.'userfiles/' ; 
$Config['UserFilesPath'] = '/userfiles'.$file_upload_relative_path; 

Aquí $ SERVER_RELATIVEPATH es la ruta relativa y debe establecerse en el archivo de configuración de su proyecto incluido previamente.

Aquí puede configurar $ Config ['UserFilesPath'] con cualquier otra ruta de carpeta dinámica utilizando $ file_upload_relative_path variable.In mi servidor bluehost linux, ya que era un conflicto de permisos de usuario de carpeta entre la carpeta raíz del proyecto (permiso 0755) y la carpeta userfiles debajo de ella y las subcarpetas debajo de los archivos de usuario (deben ser 0777 según la codificación FCKeditor), por lo que no permite cargar archivos en esas carpetas. Por lo tanto, he creado un UserFiles carpeta en la web raíz del servidor (más allá de la carpeta raíz del proyecto), y establecer el permiso de 0777 a la misma, utilice el código de la configuración config $ como:

$Config['UserFilesPath'] = '/userfiles'.$file_upload_relative_path; 

Pero, si usted tiene no hay problema con el permiso de escritura en subcarpetas del proyecto, en su caso, a continuación, puede utilizar la línea anterior (comentado en el segmento de código anterior):

$Config['UserFilesPath'] = $file_upload_relative_path.'userfiles/' ; 

mente, usted mástil comente la existente $ config [' UserFilesPath '] ='/userfiles/'; en este archivo reemplazando o simplemente comentando si existe en otro lugar del archivo.

2) Si elige 1) (a) (ii) o (iii) el método a continuación, abra
(a) fckeditor archivo \ editor \ administrador de archivos \ explorador \ default \ browser.html.

Busque esta línea: var sConnUrl = GetUrlParam ('Connector');

poner estos comandos después de esa línea:

var param_project_to_fck = GetUrlParam('param_project_to_fck') ; 

Ahora, la búsqueda de esta línea: sURL + = '& CurrentFolder =' + encodeURIComponent (this.CurrentFolder);

poner este comando después de esa línea:

sUrl += '&param_project_to_fck=' + param_project_to_fck ; 

(b) Ahora, editor \ administrador de archivos \ explorador de archivos abiertos CKEditor \ \ default \ frmupload.html.

Buscar esta línea (que debe estar en la función SetCurrentFolder()):

sUrl += '&CurrentFolder=' + encodeURIComponent(folderPath) ; 

poner este comando después de esa línea:

sUrl += '&param_project_to_fck='+window.parent.param_project_to_fck; 

3) Ahora en la que desea mostrar la FCKeditor en su proyecto, usted tiene que poner esas líneas primero en el archivo/página php correspondiente:

include_once(Absolute/Folder/path/for/FCKeditor/."fckeditor/fckeditor.php") ; 
$oFCKeditor = new FCKeditor(Field_name_for_editor_content_area) ; 
$oFCKeditor->BasePath = http_full_path_for_FCKeditor_location.'fckeditor/' ; 
$oFCKeditor->Height = 400; 
$oFCKeditor->Width = 600; 
$oFCKeditor->Value =Your_desired_content_to_show_in_editor; 
$oFCKeditor->Create() ; 

a) Ahora, si elige el método 1) (a) (ii) o (iii), coloque el siguiente segmento de código antes de esa línea: $ oFCKeditor-> Create();

$oFCKeditor->Config["LinkBrowserURL"] = ($oFCKeditor->BasePath)."editor/filemanager/browser/default/browser.html?Connector=../../connectors/php/connector.php&param_project_to_fck=".base64_encode($SERVER_RELATIVEPATH); 
$oFCKeditor->Config["ImageBrowserURL"] = ($oFCKeditor->BasePath)."editor/filemanager/browser/default/browser.html?Type=Image&Connector=../../connectors/php/connector.php&param_project_to_fck=".base64_encode($SERVER_RELATIVEPATH); 
$oFCKeditor->Config["FlashBrowserURL"] = ($oFCKeditor->BasePath)."editor/filemanager/browser/default/browser.html?Type=Flash&Connector=../../connectors/php/connector.php&param_project_to_fck=".base64_encode($SERVER_RELATIVEPATH); 

b) si elige 1) (a) (ii) método, a continuación, en el segmento de código de código anterior, basta con sustituir todos los textos: base64_encode ($ SERVER_RELATIVEPATH) con éste: base64_encode (session_name())

Y listo.

Cuestiones relacionadas