Blöcke werden nicht generiert... Warum nicht?

English! place to talk about development, programming and coding
Post Reply
ElPato
Znuny newbie
Posts: 20
Joined: 09 Jan 2008, 12:21

Blöcke werden nicht generiert... Warum nicht?

Post by ElPato »

Hallo, liebe Gemeinde!!

Ich habe es jetzt zusammen gebracht, dass die TicketFreeTextFields auch im Modul AgentTicketZoom erreichbar sind.
Das Problem das ich zurzeit habe ist, dass ich zwar

Code: Select all

                $Self->{LayoutObject}->Block(
                    Name => 'TicketFreeText',
                    Data => {
                        TicketFreeKeyField => $Param{TFreeText}->{'TicketFreeKeyField'.$_},
                        TicketFreeTextField => $Param{TFreeText}->{'TicketFreeTextField'.$_},
                        Count => $_,
                        %Param,
                    },
                );
ausführe, aber wenn das Template abgearbeitet wird, werden die Blöcke dennoch NICHT generiert...
Im Template befindet sich

Code: Select all

<!-- dtl:block:TicketFreeText -->
<tr>
	<td>$Data{"TicketFreeKeyField"}:</td>
	<td>$Data{"TicketFreeTextField"}</td>
</tr>
<!-- dtl:block:TicketFreeText -->
Könnt Ihr mir dabei vielleicht ein wenig weiter helfen?

Danke schon mal im Voraus...
jojo
Znuny guru
Posts: 15019
Joined: 26 Jan 2007, 14:50
Znuny Version: Git Master
Contact:

Blöcke werden nicht generiert... Warum nicht?

Post by jojo »

Willst Du im Zoom Freie Felder ändern?

Wenn ja musst Du auch das zugehörige Modul ändern, damit es in der Lage ist die entsprechenden Felder zu erzeugen, zu ändern und zu speichern
"Production": OTRS™ 8, OTRS™ 7, STORM powered by OTRS
"Testing": ((OTRS Community Edition)) and git Master

Never change Defaults.pm! :: Blog
Professional Services:: http://www.otrs.com :: enjoy@otrs.com
ElPato
Znuny newbie
Posts: 20
Joined: 09 Jan 2008, 12:21

Blöcke werden nicht generiert... Warum nicht?

Post by ElPato »

Genau das hab ich vor.

Werde dafür im Nachhinein auch ein eigenes Modul schreiben (vom Konzept her wie AgentTicketMove, nur dass das Ticket nicht verschoben wird, sondern einfach nur die FreeTextFelder aktualisiert werden.
Nur scheitere ich im Moment schon bei den Basics, indem die Blöcke einfach nicht generiert wird, wenn das Template durchlaufen wird... (und ich halte mich im eigentlichen an die Doku) :(
jojo
Znuny guru
Posts: 15019
Joined: 26 Jan 2007, 14:50
Znuny Version: Git Master
Contact:

Blöcke werden nicht generiert... Warum nicht?

Post by jojo »

es gibt doch schon eine Funktionalität für das nachträgliche Ändern von Freien Feldern...
"Production": OTRS™ 8, OTRS™ 7, STORM powered by OTRS
"Testing": ((OTRS Community Edition)) and git Master

Never change Defaults.pm! :: Blog
Professional Services:: http://www.otrs.com :: enjoy@otrs.com
ElPato
Znuny newbie
Posts: 20
Joined: 09 Jan 2008, 12:21

Blöcke werden nicht generiert... Warum nicht?

Post by ElPato »

Aber nicht direkt auf der TicketZoom-View *smile*
jojo
Znuny guru
Posts: 15019
Joined: 26 Jan 2007, 14:50
Znuny Version: Git Master
Contact:

Blöcke werden nicht generiert... Warum nicht?

Post by jojo »

richtig, daher musst Du, neben dem Template auch das TicketZoom Modul ändern, damit es versteht was Du im Template von ihm willst...
"Production": OTRS™ 8, OTRS™ 7, STORM powered by OTRS
"Testing": ((OTRS Community Edition)) and git Master

Never change Defaults.pm! :: Blog
Professional Services:: http://www.otrs.com :: enjoy@otrs.com
ElPato
Znuny newbie
Posts: 20
Joined: 09 Jan 2008, 12:21

Blöcke werden nicht generiert... Warum nicht?

Post by ElPato »

Ich hab aber das TicketZoom-Modul schon bearbeitet (AgentTicketZoom.pm)...
Ich habe das Layout-Modul einmal soweitgehend verändert, dass ich abfangen kann, ob die Methode "_BlockTemplatesReplace" den entsprechenden Block überhaupt findet (die If-Bedingung), und auf der anderen Seite ob die entsprechenden Daten auch vorhanden sind (mit $Block->{Data}), das ganze wird dann an das LogObject getunnelt...

Code: Select all

            if ($BlockTemplates{$Block->{Name}}) {
                push (@BR, {
                    Layer => $BlockLayer{$Block->{Name}},
                    Name => $Block->{Name},
                    Data => $Self->Output(
                        Template => "<!--start $Block->{Name}-->".$BlockTemplates{$Block->{Name}}."<!--stop $Block->{Name} -->",
                        Data => $Block->{Data},
                        NoBlockReplace => 1,
                    ),
                });
                if ($Block->{Name} eq 'TicketFreeText')
                {
                    $Self->{LogObject}->Log(
                        Priority => 'notice',
                        Message => Data::Dumper->Dump([$Block->{Data}])
                    );
                }
            }
Mir kommt das im Log-File nur etwas komisch vor, da hier wiederum ein Hash vorliegt ->

Code: Select all

[Mon Jan 21 14:53:01 2008][Notice][Kernel::Output::HTML::Layout::_BlockTemplatesReplace] $VAR1 = {
  'TicketFreeTextField' => '<select name="TicketFreeText2"   >
  <option value="">-</option>
  <option selected value="devTrack_Severity_1">1 (critical)</option>
  <option value="devTrack_Severity_2">2 (urgent)</option>
  <option value="devTrack_Severity_3">3 (mid term)</option>
</select>
<font color="red" size="-2">$Text{"$Data{"TicketFreeTextField2 invalid"}"}</font>',
  'TicketFreeKeyField' => 'Severity<input type="hidden" name="TicketFreeKey2" value="devTrack_Severity">'
};
Und was genau bedeutet der Eintrag "<font color="red" size="-2">$Text{"$Data{"TicketFreeTextField2 invalid"}"}</font>" im Value des ersten Keys?
ElPato
Znuny newbie
Posts: 20
Joined: 09 Jan 2008, 12:21

Blöcke werden nicht generiert... Warum nicht?

Post by ElPato »

Okay... Ich hab mittlerweile herausgefunden, dass der Block im Template irgendwann durch "<!-- dtl:place_block:TicketFreeText -->" ersetzt wird (obwohl die einzelnen Blöcke sich im Speicher befinden), und dieser Eintrag wird dann in der Output-Methode unter dem Kommentar "# remove empty blocks and block preferences" gelöscht...

Wieso? Wie kann ich das Markieren als "<!-- dtl:place_block:TicketFreeText -->" verhindern, und die Prozedur dazu zwingen die Felder anzuzeigen? (beziehungsweise die Strings richtig zu parsen)
Post Reply