2009-08-14 13 views
5

Sto utilizzando il binario ASP.NET per il mio FCKeditor e devo inserire due editor nella stessa pagina. Le immagini caricate/la navigazione devono andare a due diverse directory, come faccio a farlo da code-behind?Come modificare il percorso di caricamento dell'immagine * dinamicamente * in FCKeditor

So che il percorso per i file caricati sono impostati nella config.ascx -file con l'impostazione UserFilesPath, ma non riesco a trovare un modo per ignorare questo valore dal mio file aspx.cs.

Inoltre, ho trovato (in conflitto) la documentazione che afferma che Session["FCKeditor:UserFilesPath"] potrebbe essere impostato, ma non mi piace inserire le informazioni specifiche di usercontrol in una variabile di sessione globale.

risposta

1

prima è necessario assegnare informazioni sull'identità dell'utente in Session [ "UserInfo"]

poi andare a [cartella principale fckeditor] /filemanager/connector/aspx/config.ascx

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

0

Oddio, dopo molte lotte unica cosa che sono in grado di ottenere è:

fckEditor1.Config

proprietà. Provare a impostare per l'editor che si desidera configurare:

fckEditor1.Config [ "UserFilesPath"] = "il vostro percorso"

+0

Grazie per aver cercato di aiutarmi, ma questo non funziona. La proprietà config è solo per l'editor effettivo, non per il browser di file dell'editor. – Espo

0

Questo probabilmente funziona. Almeno ha funzionato per me.

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

dispiace, penso che la cosa migliore è di smettere di usare il controllo, e utilizzare l'API JavaScript, invece.

0

Full Subject: editor FCK 2.x: caricamento di file/immagini/video in diverse cartelle per diverse applicazioni utilizzando un singolo FCKeditor, rendendo $ Config ['UserFilesPath'] completamente dinamico in modo sicuro

Può essere fatto in molti modi. Sto spiegando un processo, che ho applicato secondo la struttura del codice delle mie applicazioni php. La stessa struttura di codice/framework che ho seguito per diverse applicazioni, con ogni applicazione come sottocartella nel mio server. Quindi, c'è una necessità logica di utilizzare un singolo FCKeditor e configurarlo in qualche modo, in modo che funzioni correttamente per tutte le applicazioni. La parte di contenuto di FCKeditor è ok. Può essere facilmente riutilizzato da diverse applicazioni o progetti da un singolo componente FCKeditor. Ma il problema sorge con il caricamento di file, come immagini, video o qualsiasi altro documento. Per renderlo applicabile a progetti diversi, i file devono essere caricati in cartelle separe per diversi progetti. E per quel $ Config ['UserFilesPath'] deve essere configurato con il percorso della cartella dinamica, significa diverso percorso della cartella per ogni progetto, ma chiamando lo stesso componente FCKeditor nella stessa posizione. Sto spiegando alcuni processi diversi insieme in modo graduale. Quelli hanno funzionato bene con FCKeditor versione 2.5.1 e VersionBuild 17566 e spero che funzionino anche per gli altri. Se non funziona per altri sviluppatori, potrebbe essere necessario apportare alcune modifiche a tali processi in base alla struttura del codice del progetto e all'autorizzazione alla scrittura della cartella, nonché in base alla versione di FCKeditor.

1) In fckeditor \ editor \ filemanager \ connectors \ phpconfig.file php

a) Vai dopo Global $ Config; e $ Config ['Enabled'] = false; i) lì, se vuole una sessione dipendente metodo sicuro: solo per l'impostazione singolo sito: vale a dire un FCKeditor per ciascun dominio un progetto o sottodominio, non uno FCKeditor per il progetto più quindi inserire questo codice:

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: Qui, $ _SESSION ['SESSION_SERVER_RELATIVEPATH']: percorso della cartella relativa del progetto corrispondente alla webroot; dovrebbe essere come "/ project/folder/path /" e impostare questa variabile di sessione in un file comune nel progetto in cui è iniziata la sessione. E ci dovrebbe essere una configurazione/configuration.php come file di configurazione nel tuo progetto. Se il nome o il percorso è diverso, devi posizionare il percorso corrispondente qui invece di configurazioni/configuration.php

ii) Se si desidera utilizzare un singolo componente FCKeditor per diversi progetti rappresentati come diverse sottocartelle e con una sessione dipendente modo sicuro (presupponendo session_name diversi per progetti diversi, per differenziare le loro sessioni in un singolo server). Ma non funzionerà se i progetti vengono rappresentati come sottodomini o domini diversi, quindi devono utilizzare la modalità indipendente dalla sessione (iii) fornita sotto (anche se non è sicura). Inserire questo codice:

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"); 
} 

Si prega di leggere N.B. alla fine del punto precedente, ovvero il punto (i)

iii) Se si desidera utilizzare un singolo componente FCKeditor per diversi progetti, è possibile rappresentare diverse sottocartelle nonché sottodomini o domini (sebbene non sia completamente sicuro). Inserire questo codice:

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"); 
} 

Si prega di leggere N.B. alla fine del punto (i)

b) Ora, dopo che, per ogni caso è stata selezionata, si prega di trovare questo codice:

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

e sostituire il seguente codice:

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; 

Qui $ SERVER_RELATIVEPATH è il percorso relativo e deve essere impostato nel file di configurazione del progetto incluso in precedenza.

Qui è possibile impostare $ Config ['UserFilesPath'] con qualsiasi altro percorso di cartella dinamico utilizzando $ variabile file_upload_relative_path.Nel mio server bluehost linux, poiché era un conflitto di autorizzazioni utente cartella tra la cartella radice del progetto (autorizzazione 0755) e la cartella userfiles sotto di essa e sottocartelle sotto userfiles (dovrebbe essere 0777 come per la codifica di FCKeditor), quindi non consente il caricamento di file in quelle cartelle. Così, ho creato un userfiles cartella nella webroot del server (al di là della cartella radice del progetto), e impostare l'autorizzazione per 0777 ad esso, utilizzare il codice per l'impostazione di configurazione $ come:

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

Ma, se avete nessun problema con i permessi di scrittura in sottocartelle del progetto nel tuo caso, è possibile utilizzare la linea precedente (commentata nel segmento di codice precedente):

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

Mente, si montante commentandole, le $ config [' UserFilesPath '] ='/userfiles/'; in questo file sostituendo o semplicemente commentando se esiste in un altro punto del file.

2) Se si sceglie il metodo 1) (a) (ii) o (iii), quindi aprire
(a) fckeditor \ editor \ filemanager \ browser \ default \ browser.html file.

Cerca per questa riga: var sConnUrl = GetUrlParam ('Connector');

mettere questi comandi dopo quella linea:

var param_project_to_fck = GetUrlParam('param_project_to_fck') ; 

Ora, cercare questa linea: Surl + = '& CurrentFolder =' + encodeURIComponent (this.CurrentFolder);

mettere questo comando dopo che la linea:

sUrl += '&param_project_to_fck=' + param_project_to_fck ; 

(b) Ora, aperto editore \ filemanager \ file browser \ frmupload.html \ default ckeditor \.

Cerca per questa linea (che dovrebbe essere nella funzione SetCurrentFolder()):

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

mettere questo comando dopo che la linea:

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

3) Ora in cui si desidera visualizzare il FCKeditor nel tuo progetto, devi mettere quelle righe prima nella corrispondente pagina/file php:

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) Ora, se si sceglie il metodo 1) (a) (ii) o (iii), posizionare il seguente segmento di codice prima di tale riga: $ 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) se si sceglie 1) (a) (ii) il metodo, poi nel segmento di codice codice di cui sopra, basta sostituire tutti i testi: base64_encode ($ SERVER_RELATIVEPATH) con questa: base64_encode (session_name())

E hai finito.

Problemi correlati