2015-12-08 14 views
6

Sto migrando a Lucee un'applicazione molto vecchia (attualmente in esecuzione in CF8). Ma mi imbatto in un problema con quello che sembra essere un tag personalizzato di qualche tipo.Come individuare un'istanza di tag personalizzata in un'applicazione coldFusion

Ho provato a verificare che tutte le directory virtuali siano le stesse in IIS sia per la vecchia che per le nuove installazioni. E assicurati che la mappatura e i percorsi dei tag personalizzati sia in CFIDE che in Lucee Admin siano gli stessi.

Ma sto ricevendo questo errore. E non riesco a capire come questo cflink viene istanziato.

enter image description here

enter image description here

ho trovato la posizione del codice erroring on line 300 file utils.cfc enter image description here

Non ho usato tag personalizzati in un tempo lungo, ma il pensiero venivano generalmente chiamati con un carattere di sottolineatura e il codice dovrebbe essere più simile a <cf_link pageid="#LinkPageID#" Init="start"> se veniva chiamato come tag personalizzato.

Se vado al server CF corrente che esegue questa applicazione è possibile trovare che un file è stato creato cfclass enter image description here Da un file chiamato cflink.cfm in una directory chiamata "tag", anche se sembra che ci sia nessuna mappatura per la directory "tags" né è elencata in "percorsi tag personalizzati" nell'amministratore.

Questa applicazione è stata avviata nel 2003 e come potete immaginare è cresciuta in un errore di codice spaghetti e nessuno dall'inizio è in giro per chiedere come questo tag viene istanziato.

Qualcuno con esperienza nel codice legacy ha altre idee in cui dovrei cercare di farlo funzionare? Al momento ha solo un ambiente di produzione e se riuscirò a farlo funzionare su Lucee non sarà solo un ambiente di sviluppo che non è esistito qui tra 10 anni, ma sarà un ottimo modo per me per poter continuare a mostrare Lucee come un grande motore CFML

aggiunta di informazioni Oltre

Leigh aveva chiesto se l'init potrebbe essere un punto di riferimento vaso, ma nel file cflink.cfm vedo questo codice:

<cfif Attributes.Init IS "start"> 
     <cfset Request.PageID = Attributes.PageID> 
     <cfset Request.Page_Width = Variables.qParentInfo.Page_Width> 
     <cfset Request.Page_Height = Variables.qParentInfo.Page_Height> 
     <cfset Request.Page_TypeID = Variables.qParentInfo.Page_TypeID> 
     <cfset Request.AddPath = ""> 
     <cfif IsDefined("Attributes.Anchor")> 
      <cfset Request.Anchor = Attributes.Anchor> 
     <cfelse> 
      <cfset Request.Anchor = ""> 
     </cfif> 
     <cfset Request.IsInternalLink = false> 
     <cfexit method="EXITTAG"> 
    </cfif> 

ci sono anche riferimenti a cflink nel codice all'interno dei tag \ cflink.cfm

<cfif Len(Variables.qParentInfo.ParentID) GT 0> 
    <!--- Add the page title to the end of the path ---> 
    <cfset Request.AddPath = ReplaceNoCase(Variables.qParentInfo.Nav_Title," ","_","ALL") & "/" & Request.AddPath> 
    <cflink init="working" pageid="#Variables.qParentInfo.ParentID#" popcode="#Attributes.popcode#"> 
<cfelse> ......</cfif> 

Anche se questo può essere ricorsione dato che è stato scritto nel 2004 ho tipo di dubbio che

Aggiunta di schermate di ricerche

enter image description here enter image description here

+1

colpo al buio, ma ha fatto verificare la presenza di eventuali chiamate 'cfimport'? Puoi fare alcune cose creative con le librerie di tag. – Leigh

+2

Prova a fare una ricerca sul tuo server su 'link.cfm'. Deve essere da qualche parte –

+0

Sembrava che facessero così: "* ... Da un file chiamato cflink.cfm in una directory chiamata" tags "... *? – Leigh

risposta

3

Se qualcun altro si imbatte in questo . In CF8 e presumendo versioni precedenti, è possibile inserire un file cfm nella directory ColdFusion8\wwwroot\WEB-INF\cftags e in questo caso in questo caso ColdFusion8\wwwroot\WEB-INF\cftags\link.cfm Quindi funziona come qualsiasi altro cftag.

Sono stato in grado di trovare la persona che originariamente ha creato questa app nel 2004 e mi ha detto che l'hanno fatto in questo modo per evitare di digitare il carattere di sottolineatura che avrebbero digitato se lo avessero fatto come tag personalizzato.

Mi piace ottenerlo poiché questo tag è utilizzato ovunque nell'app, letteralmente centinaia di volte. Un po 'ragazzo con una troia da trovare.

Ora tutto quello che devo fare è capire come spostarlo nel mondo di Lucee in modo simile. Così instanzerà allo stesso modo.

Grazie a @Leigh per tutto il tuo aiuto, sei sempre fantastico!

aggiungere più informazioni

se ci sono file nella WEB-INF\lucee\library\tag directory Lucee corrispondente è WEB-INF\lucee\library\tag. Questi file vengono letti al caricamento e quindi possono essere utilizzati come qualsiasi altro tag cf.

Ad esempio se si dispone del file WEB-INF\lucee\library\tag\link.cfm può essere chiamato da `cflink '.

sembra una fresca ideama un po 'di una cagna di qualcuno per trovare 10 anni dopo il fatto

+1

Wow ... non hai mai saputo che avresti potuto Fai quello! Ottimo lavoro per risolvere il mistero. Sai se anche Lucee lo permette? Mi sembra di ricordare che potresti creare tag "cf" senza il trattino basso di Railo, anche se non nello stesso modo. * poiché questo tag è utilizzato ovunque nell'app .. * Hehe, non ti piacciono le app legacy? ;-) – Leigh

+1

Questo è ciò a cui sto lavorando ora. Lo posterò nella mia risposta quando capisco. Grazie ancora per il tuo aiuto – Lance

+1

Sei il benvenuto. Non vedo l'ora di farlo. (Indovina, le app legacy potrebbero non essere sempre divertenti, ma non sono mai noiose). – Leigh