Verbesserungsvorschläge

  • Seite 2 von 2
23.07.2008 15:54
avatar  Merk
#16 RE: Verbesserungsvorschläge
Me
Mitglied

Das ist so, weil ich daran gar nicht gedacht habe, danke für den Hinweis. ;-)
Einfach in "Private Mails - Home" vor {{send.startlist}} folgendes einfügen:

{{ids.start}}{{ids.end}}
{{komma.start}}{{komma.end}}
{{send.startlist}}
{{ids.start}}{{ids}}{{komma}}{{send:id}}{{ids.end}}
{{komma.start}},{{komma.end}}
{{send.end}}
außerdem wieder den Link verändern
<a href="{{send:link}}&ids={{ids}}">{{send:title}}</a>


 Antworten

 Beitrag melden
23.07.2008 16:12
avatar  69magic
#17 RE: Verbesserungsvorschläge
avatar
Mitglied

Danke. Jetzt funktioniert es.


 Antworten

 Beitrag melden
26.07.2008 11:25
avatar  doku
#18 RE: Verbesserungsvorschläge
do
Mitglied

Hi Merk. Danke für die tollen Scripts.

***

Allerdings gibt es ein Problem, insbesondere mit dem IE (Seitenladefehler weil der http-String im Adressfeld limitiert ist) und dem Opera (Buttons und Grafiken werden nicht mehr korrekt dargestellt) bei der Funktion "vorherige PN - nächste PN", wenn extrem viele Messages in der Mailbox sind und die IDs bei dem IE irgendwann abgeschnitten werden.

Eventuell sollte man die IDs beschränken? Hast Du eine Idee?

Thanks.


 Antworten

 Beitrag melden
26.07.2008 15:13
avatar  Merk
#19 RE: Verbesserungsvorschläge
Me
Mitglied

Das müssen dann aber schon sehr viele Mails sein. Könntest du rausfinden, wie viele IDs der IE anzeigen kann ohne das sie abgehackt werden?
Um die Anzahl der IDs zu begrenzen einfach diesen Code

{{ids.start}}{{ids.end}}
{{komma.start}}{{komma.end}}
{{pm.startlist}}
{{ids.start}}{{ids}}{{komma}}{{pm:id}}{{ids.end}}
{{komma.start}},{{komma.end}}
{{pm.end}}
mit diesem ersetzen
{{ids.start}}{{ids.end}}
{{komma.start}}{{komma.end}}
{{i.start}}0{{i.end}}
{{max.start}}30{{max.end}}
{{pm.startlist}}
{{i<=max.start}}
{{ids.start}}{{ids}}{{komma}}{{pm:id}}{{ids.end}}
{{komma.start}},{{komma.end}}
{{i<=max.end}}
{{i.startint}}{{i}}+1{{i.end}}
{{pm.end}}

Das gleiche noch für gesendete Mails, ersetze
{{ids.start}}{{ids.end}}
{{komma.start}}{{komma.end}}
{{send.startlist}}
{{ids.start}}{{ids}}{{komma}}{{send:id}}{{ids.end}}
{{komma.start}},{{komma.end}}
{{send.end}}
mit
{{ids.start}}{{ids.end}}
{{komma.start}}{{komma.end}}
{{i.start}}0{{i.end}}
{{max.start}}30{{max.end}}
{{send.startlist}}
{{i<=max.start}}
{{ids.start}}{{ids}}{{komma}}{{send:id}}{{ids.end}}
{{komma.start}},{{komma.end}}
{{i<=max.end}}
{{i.startint}}{{i}}+1{{i.end}}
{{send.end}}

30 ist in beiden Fällen die Anzahl der maximalen IDs

Man kann dann aber immer nur die ersten X PMs der Seite durchklicken, auch wenn die zu erst angeklickte PM weiter hinten liegt. Daher sollte dann dieses Script verwendet werden, da es sonst zu Fehlern kommen kann, wenn die ID der "aktuellen" PN nicht im Array der X IDs enthalten ist:
 <script language="javascript" type="text/javascript">
var ids = window.location.href;
if (ids.indexOf('&ids=') != -1) {
var href = ids.substring(0, ids.indexOf('?id=') + 4);
var id = ids.substring(ids.indexOf('?id=') + 4, ids.indexOf('&ids='));
ids = ids.substring(ids.indexOf('&ids=') + 5, ids.length);
links = ids;
ids = ids.split(',');
for (n = 0; n < ids.length; n++) {
var preid = ids[ids.length-1];
var nextid = ids[0];

if (ids[n] == id) {
if (n == 0) {
var preid = ids[ids.length-1];
var nextid = ids[n+1];
}
else {
var preid = ids[n-1];
if (n == ids.length-1) {
var nextid = ids[0];
}
else {
var nextid = ids[n+1];
}
}
}
}
document.write('<tr><td width="100%" class="ntit">');
document.write('<table width="100%" cellspacing="0" cellpadding="0"><tr><td class="ntit">');
document.write('<a href="' + href + preid + '&ids=' + links + '"> &laquo; vorherige PN</a>');
document.write('</td><td width="%20%" nowrap align="right" class="ntit">');
document.write('<a href="' + href + nextid + '&ids=' + links + '">nächste PN &raquo; </a>');
document.write('</td></tr></table></td></tr>');
}
</script>


Vielleicht finde ich noch eine Lösung, bei der z.B. immer die 15 vorherigen und 15 folgenden PNs in das Array kommen, diese wird dann aber wahrscheinlich komplizierter.


 Antworten

 Beitrag melden
26.07.2008 15:28
avatar  doku
#20 RE: Verbesserungsvorschläge
do
Mitglied

Zitat von Merk
Das müssen dann aber schon sehr viele Mails sein.


Sind fast 1000 Mails in "gesendete Nachrichten". Bei den empfangenen Nachrichten (Posteingang) taucht das Problem nur dann auf, wenn "weitere xxx Mails anzeigen" selektiert wird!

In Antwort auf:
Könntest du rausfinden, wie viele IDs der IE anzeigen kann ohne das sie abgehackt werden?


Das ist schwer zu sagen, da es auf die länge der ID-Nummern ankommt. Ich habe mittlerweile schon fünftstellige Nummern. Ich schätze mal, dass zurzeit so 50-70 Nummern ins Array mit dem IE passen.


In Antwort auf:
Vielleicht finde ich noch eine Lösung, bei der z.B. immer die 15 vorherigen und 15 folgenden PNs in das Array kommen, diese wird dann aber wahrscheinlich komplizierter.


Wäre nicht schlecht.

***

Mit dem FF läuft es noch am besten, wobei es ab und zu mal vorkommt, dass Grafiken nicht mehr angezeigt werden. Mit dem Opera gibts diese Probleme dann ständig.


 Antworten

 Beitrag melden
26.07.2008 16:32
avatar  doku
#21 RE: Verbesserungsvorschläge
do
Mitglied

Hi Merk,

nochmal ein Dankeschön für Deine Mühe!

Hab mal die modifizierten Scripts mit dem Counter eingebaut, die aber auch nicht funktionieren. Zeigt meist nur leere PNs.

***

Wie auch immer, die Idee ist nicht schlecht. Was mir persönlich nicht so zusagt, ist, dass bei stark frequentierten PN-Mailboxen dann bei jedem PN-Aufruf zig IDs ins Array geladen werden. Das ist für kleine Foren mit normalem PN-Verkehr kein Problem, kann aber bei großen Mailboxen mit den Browsern zu Fehlern kommen (Seitenladefehler beim IE und Grafikdarstellungsprobleme beim Opera u. FF).

Vermutlich werden die meisten diese Fehler gar nicht bemerken, da bei kleinen Mailboxen nur relativ wenige IDs ins Array geladen werden...

Ich hab das bei mir vorübergehend wieder ausgebaut...


 Antworten

 Beitrag melden
30.07.2008 19:42
avatar  Carsten
#22 RE: Verbesserungsvorschläge
Ca
Mitglied

Das mit den Beiträge nummerieren funktioniert soweit, aber ich wollte gerne es so das da steht welcher Beitrag das ist vom ganzen Forum.


 Antworten

 Beitrag melden
31.07.2008 00:54 (zuletzt bearbeitet: 31.07.2008 00:58)
avatar  Merk
#23 RE: Verbesserungsvorschläge
Me
Mitglied
Zitat von Carsten
Das mit den Beiträge nummerieren funktioniert soweit, aber ich wollte gerne es so das da steht welcher Beitrag das ist vom ganzen Forum.
In diesem Fall sollte "{{message:id}}" funktionieren.

Zitat von doku
Hab mal die modifizierten Scripts mit dem Counter eingebaut, die aber auch nicht funktionieren. Zeigt meist nur leere PNs.
Hab gerade gemerkt, dass da ein ganz dummer Fehler im Script ist, der das Array mit den IDs mehr oder weniger außer Kraft setzt.
So ist es richtig:
 <script language="javascript" type="text/javascript">
var ids = window.location.href;
if (ids.indexOf('&ids=') != -1) {
var href = ids.substring(0, ids.indexOf('?id=') + 4);
var id = ids.substring(ids.indexOf('?id=') + 4, ids.indexOf('&ids='));
ids = ids.substring(ids.indexOf('&ids=') + 5, ids.length);
links = ids;
ids = ids.split(',');
var preid = ids[ids.length-1];
var nextid = ids[0];

for (n = 0; n < ids.length; n++) {
if (ids[n] == id) {
if (n == 0) {
var preid = ids[ids.length-1];
var nextid = ids[n+1];
}
else {
var preid = ids[n-1];
if (n == ids.length-1) {
var nextid = ids[0];
}
else {
var nextid = ids[n+1];
}
}
}
}
document.write('<tr><td width="100%" class="ntit">');
document.write('<table width="100%" cellspacing="0" cellpadding="0"><tr><td class="ntit">');
document.write('<a href="' + href + preid + '&ids=' + links + '"> &laquo; vorherige PN</a>');
document.write('</td><td width="%20%" nowrap align="right" class="ntit">');
document.write('<a href="' + href + nextid + '&ids=' + links + '">nächste PN &raquo; </a>');
document.write('</td></tr></table></td></tr>');
}
</script>

Zitat von Merk
Vielleicht finde ich noch eine Lösung, bei der z.B. immer die 15 vorherigen und 15 folgenden PNs in das Array kommen, diese wird dann aber wahrscheinlich komplizierter.
Und hier ist sie:
In "Private Mails - Home" wieder die ursprünglichen Codes benutzen, außer bei den Links, diese wie folgt ändern
<a href="{{pm:link}}" id="{{pm:id}}">{{pm:title}}</a>
<script language="javascript" type="text/javascript">
var idarray = '{{ids}}';
idarray = idarray.split(',');
var ids = '';
var komma = '';
for (i = {{n}}-5; i <={{n}}+5; i++) {
if (i >= 0) {
ids = ids + komma + idarray[i];
komma = ',';
}
}
document.getElementById('{{pm:id}}').href= '{{pm:link}}&ids=' + ids;
</script>
{{n.startint}}{{n}}+1{{n.end}}

für die gesendeten Nachrichten "{{pm:id}}", "{{pm:link}}" und "{{pm:title}}" mit "{{send:id}}", "{{send:link}}" und "{{send:title}}" ersetzen.
Als letztes vor das normale "{{pm.startlist}}" bzw. "{{send.startlist}}" noch "{{n.startint}}0{{n.end}}" einfügen

 Antworten

 Beitrag melden
31.07.2008 10:32
avatar  doku
#24 RE: Verbesserungsvorschläge
do
Mitglied

Hallo Merk, Du bist ein Genie!

Hab Deine modifizierten Codes nun eingebaut und es funktioniert ausgezeichnet. Je nach Countereinstellung werden immer die ersten x-messages und die nächsten x-messages ins Array geladen und können somit bearbeitet werden. Das funktioniert nun in allen Browsern ausgezeichnet. Ist jeweils das Ende der "ersten x-messages bzw. der "nächsten x-messages" erreicht, geht die Schleife wieder von vorne los. Es wird also nicht automatisch ein neuer Satz messages ins Array geladen. Das wäre zwar noch eleganter, ist aber auch so schon eine ausgezeichnete Verbesserung.
Ein kleiner Schönheitsfehler gibt es noch, wenn man in der Mailbox die letzte Message anklickt. Dann werden die "nächsten x-messages", da keine vorhanden sind, mit "undefined" angezeigt. Wie gesagt, das ist nicht problematisch, wollte ich aber nur zu Protokoll geben. ;-)

Alles in Allem, ein schönes Feature, welches nun gut funktioniert.

Vielen Dank nochmal für Deine Scripts und die Mühe, die Du Dir machst.

doku


 Antworten

 Beitrag melden
05.08.2008 19:43
avatar  Carsten
#25 RE: Verbesserungsvorschläge
Ca
Mitglied

Das mit {{message:id}} funktioniert nicht, dort zeigt er eine viel höhere Zahl an. Kann man das noch anders realisieren?


 Antworten

 Beitrag melden
Bereits Mitglied?
Jetzt anmelden!
Mitglied werden?
Jetzt registrieren!