2015-12-08 12 views
6

Ich migriere eine sehr alte App (derzeit in CF8 ausgeführt) nach Lucee. Aber ich stoße auf ein Problem mit einem benutzerdefinierten Tag.Wie finde ich eine benutzerdefinierte Tag-Instanziierung in einer coldFusion App

Ich habe versucht, sicherzustellen, dass alle virtuellen Verzeichnisse in IIS für die alte und die neue Installation identisch sind. Stellen Sie sicher, dass die Mapping- und benutzerdefinierten Tag-Pfade in CFIDE und in Lucee Admin identisch sind.

Aber ich bekomme diesen Fehler. Und kann nicht herausfinden, wie diese cflink instanziiert wird.

enter image description here

enter image description here

Ich habe die Lage des erroring code on line 300 die utils.cfc Datei enter image description here

ich verwendet habe keine benutzerdefinierten Tags gefunden in eine lange Zeit, aber Gedanken Sie wurden im Allgemeinen mit einem Unterstrich aufgerufen und der Code sollte eher wie <cf_link pageid="#LinkPageID#" Init="start"> aussehen, wenn dies als benutzerdefiniertes Tag aufgerufen wurde.

Wenn ich gehe, um den den aktuellen CF-Server, der diese App läuft ich finden kann, dass eine cfclass Datei HAT enter image description here Von einer Datei namens cflink.cfm in einem Verzeichnis „Tags“, obwohl es scheint zu sein, genannt geschaffen Keine Zuordnung für das "Tags" -Verzeichnis, noch ist es unter "Benutzerdefinierte Tags Pfade" im Administrator aufgeführt.

Diese App wurde im Jahr 2003 gestartet und wie Sie sich vorstellen können, hat sich in eine Fehlabstimmung von Spaghetti-Code gewachsen und niemand von Anfang an ist gefragt, wie dieses Tag instanziiert wird.

Hat jemand mit Erfahrung in Legacy-Code andere Ideen, wo ich versuchen sollte, um dies zu arbeiten? Das Unternehmen hat derzeit nur eine Produktionsumgebung und wenn ich es auf die Arbeit mit Lucee bringen kann, wird es nicht nur eine Entwicklungsumgebung sein, die es hier in 10 Jahren noch nicht gegeben hat, sondern eine großartige Möglichkeit für mich, Lucee weiterhin zu präsentieren ein großer CFML Motor

Hinzufügen Zusatz Info

Leigh gefragt hatte, ob die init ein Glas Referenz sein könnte, aber in der cflink.cfm Datei sehe ich diesen Code:

<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> 

Es gibt auch Verweise auf cflink im Code in Tags \ 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> 

Obwohl dies Rekursion gegeben werden es im Jahr 2004 geschrieben wurde, ich bezweifle Art es

Screenshots Suche Hinzufügen

enter image description here enter image description here

+1

Schuss im Dunkeln, aber für alle 'cfimport' Anrufe haben überprüfen? Sie können einige kreative Dinge mit Tag-Bibliotheken tun. – Leigh

+2

Versuchen Sie eine Suche auf Ihrem Server auf 'link.cfm'. Es muss irgendwo sein –

+0

Gesungen, wie sie das taten: "* ... Aus einer Datei namens cflink.cfm in einem Verzeichnis namens" Tags "... *? – Leigh

Antwort

3

Wenn jemand anderes in diese läuft . In CF8, und unter der Annahme früherer Versionen, könnten Sie eine cfm-Datei in das Verzeichnis ColdFusion8\wwwroot\WEB-INF\cftags und diese Datei in diesem Fall ColdFusion8\wwwroot\WEB-INF\cftags\link.cfm Dann fungiert als jedes andere cftag.

Ich konnte die Person finden, die diese App im Jahr 2004 ursprünglich gebaut hat und er sagte mir, dass sie es so gemacht haben, um den Unterstrich zu vermeiden, den sie eingegeben hätten, wenn sie es als benutzerdefiniertes Tag getan hätten.

Ich bekomme es irgendwie, da dieses Tag überall in der App verwendet wird, buchstäblich Hunderte von Malen. Bit Boy mit einer Hündin zu finden.

Jetzt muss ich nur noch herausfinden, wie man es auf ähnliche Weise in die Lucee-Welt bringt. So macht es den gleichen Weg.

Dank @Leigh für alle Ihre Hilfe, Sie sind immer erstaunlich!

Weitere Informationen Hinzufügen von

wenn Dateien im WEB-INF\lucee\library\tag das entsprechende Verzeichnis Lucee WEB-INF\lucee\library\tag ist. Diese Dateien werden beim Laden gelesen und können dann wie jedes andere cf-Tag verwendet werden.

Wenn Sie beispielsweise die Datei WEB-INF\lucee\library\tag\link.cfm haben, kann sie mit `cflink 'aufgerufen werden.

Scheint wie ein kühlen Idee, aber ein bisschen eine Hündin für jemanden 10 Jahre nach der Tat zu finden

+1

Wow ... wusste nie, Sie könnten TU das! Gute Arbeit bei der Lösung des Mysteriums. Weißt du, ob Lucee es auch erlaubt? Ich erinnere mich, dass Sie "cf" -Tags ohne den Unterstrich in Railo erstellen konnten, wenn auch nicht auf die gleiche Weise. * Da dieses Tag überall in der App verwendet wird. * Hehe, liebst du nicht einfach Legacy-Apps? ;-) – Leigh

+1

Daran arbeite ich gerade. Ich werde es in meiner Antwort veröffentlichen, wenn ich es herausgefunden habe. Nochmals vielen Dank für Ihre Hilfe – Lance

+1

Sie sind herzlich willkommen. Ich freue mich darauf. (Ratet mal, Legacy-Apps mögen nicht immer Spaß machen, aber sie sind niemals langweilig). – Leigh