anpera.net
http://anpera.homeip.net/phpbb3/

Editieren und Löschen des letzten Posts
http://anpera.homeip.net/phpbb3/viewtopic.php?f=34&t=4024
Seite 1 von 3

Autor:  Naria [ Mi 26 Sep, 2007 20:26 ]
Betreff des Beitrags:  Editieren und Löschen des letzten Posts

UPDATE (13.02.2008):
- chatdelete.php verbessert (kompatibel mit emote Feld in Eliwoods Bundle)
UPDATE (31.01.2008):
- chatdelete.php in den Anhang gepackt
UPDATE (28.09.2007):
- Ist nun mit den RP Orten von Kamui kompatibel

Einbauanfang:
Da nun einige danach gefragt haben in letzter Zeit, meine Editier und Löschfunktion:

Die Links werden nicht beim OOC angezeigt

Für Server mit dem commentary Bundle von Eliwood:
[php]
//Suche in der commentary.php

// Wieder nach vorne
if ($com>0){
$req = $req1."&comscroll=".($com-1);
$req = str_replace("?&","?",$req);
if (!strpos($req,"?")) $req = str_replace("&","?",$req);
rawoutput(' <a href="'.HTMLSpecialchars($req).'">Nächste &gt;&gt;</a>');
addnav("",$req);
}

//Füge DANACH ein

//Delete/Edit Funktion Anfang
$sektion = $this->section;
if($sektion!='ooc')
{
output('<br><br> <a href="chatdelete.php?op=delete&section='.$sektion.'&restore='.$REQUEST_URI.'" onClick="return confirm(\'Willst du diesen Eintrag wirklich löschen?\');">`$&lt;&lt;Löschen&gt;&gt;`0</a>',true);
addnav("","chatdelete.php?op=delete&section=".$sektion."&restore=$REQUEST_URI");
output("<a href=\"chatdelete.php?op=edit&section=".$sektion."&restore=$REQUEST_URI\">`\$&lt;&lt;Editieren&gt;&gt;`0</a>",true);
addnav("","chatdelete.php?op=edit&section=".$sektion."&restore=$REQUEST_URI");

//Delete/Edit Funktion Ende
}[/php]


Für Server mit dem Standardpostsystem:

[php]
//Suche in der common.php

if ($com>0){
$req = preg_replace("'[&]?c(omscroll)?=([[:digit:]]|-)*'","",$REQUEST_URI)."&comscroll=".($com-1);
//$req = substr($REQUEST_URI,0,strpos($REQUEST_URI,"c="))."&c=$HTTP_GET_VARS[c]"."&comscroll=".($com-1);
$req = str_replace("?&","?",$req);
if (!strpos($req,"?")) $req = str_replace("&","?",$req);
output(" <a href=\"$req\">Nächste &gt;&gt;</a>",true);
addnav("",$req);
}

//Füge DANACH ein

//Delete/Edit Funktion Anfang
if($section!='ooc')
{
output('<br><br> <a href="chatdelete.php?op=delete&section='.$section.'&restore='.$REQUEST_URI.'" onClick="return confirm(\'Willst du diesen Eintrag wirklich löschen?\');">`$&lt;&lt;Löschen&gt;&gt;`0</a>',true);
addnav("","chatdelete.php?op=delete&section=".$section."&restore=$REQUEST_URI");
output("<a href=\"chatdelete.php?op=edit&section=".$section."&restore=$REQUEST_URI\">`\$&lt;&lt;Editieren&gt;&gt;`0</a>",true);
addnav("","chatdelete.php?op=edit&section=".$section."&restore=$REQUEST_URI");

//Delete/Edit Funktion Ende
}[/php]

Dann nur noch die Datei aus dem Anhang in das root Verzeichnis packen, danach sollte es gehen ;)

Anmerkung: Ich habe bei mir die RP Chars über das Feld rpchar in der accounts Tabelle gekennzeichnet. Evtl. muss das Feld entsprechend angepasst werden, ebenso evtl. die Vergabe der Punkte für RP Chars.
Und zuvor müssen die entsprechenden Zeilen entkommentiert werden.
Das array $nichterlaubt enthält die Orte, für die keine Punkte vergeben und dementsprechend auch keine abgezogen werden sollen.

Verbesserungen am Code und Hinweise immer erwünscht ^^

Autor:  Heximus [ Fr 28 Sep, 2007 11:53 ]
Betreff des Beitrags: 

Hmm also habs ma eingebaut und seieht Super aus.. Aber kann man den Chat edit nicht so machen das unter der normalen Post noch eine Leiste ist wo dann die letzte Nachricht angezeigt wird... Also ma so nen Beispiel xD

________________________________________
Hier ist die normale Texteingabe
________________________________________


Und weiter drunter

________________________________________
Hier steht der Text von der Letzten nachricht
________________________________________

und neben der Alten Nachricht steht dann noch ein Button mit Löschen und mit Editiren.. Man muss da also nur den Text rauslöschen bzw verändern..Ich hoffe du weist wie ich das jetzt meine...

Mfg,
Heximus

Autor:  Naria [ Fr 28 Sep, 2007 13:27 ]
Betreff des Beitrags: 

Hm, ich glaube ich habe dich verstanden ^^
Also zwei Eingabefelder: Eins für das normale Posten (einen Post hinzufügen) und einen für das Bearbeiten des Letzten.

Ich bin nicht so von dieser Idee begeistert aus folgendem Grund:

Es müssten zwei Links/Buttons gesetzt werden: Einmal für den normalen Post und einmal für das Bearbeiten. Wenn man es weiß und sich merkt nicht weiter schlimm, aber User merken sich dies nicht und dann regnet es Anfragen, warum das nicht funktioniert ^^ Habe sowas schon im Zusammenhang mit einer ähnlichen Sache erlebt.

Autor:  Heximus [ Fr 28 Sep, 2007 16:11 ]
Betreff des Beitrags: 

Naja also ich hatte das mal auf nem anderen Serveer gesehen und fand das da eig so gut... Naja wenn du lust und vlt Zeit hast kannste du mir das dann vlt mal per PN schicken wenn du es nicht so öffntlich erstellst??

Wäre echt nett von dir ;)


Mfg,
Heximus

Autor:  vernisage [ Do 31 Jan, 2008 20:29 ]
Betreff des Beitrags:  Re: Editieren und Löschen des letzten Posts

Entschuldigt, dass ich das hier hervor krame...

Ich hätte da noch eine entscheidene Frage...

Naria schrieb in ihren Anfangspost,
Zitat:
Nötige Änderungen für das Update (nur von der vorherigen Version):

Für das Standard Kommentarsystem:
(common.php)
[php]
//Suche

if($section!='ooc' && preg_match('/^Ort_/', $section)!=1)

//Ersetze mit

if($section!='ooc')
[/php]


Wo in common füge ich überhaupt section!'=ooc' ein? Ich habe den Vorgänger nicht..
Möchte aber auch nur diese Edit-Funktion drin haben, nicht den letzten Post löschen (das hab ich nämlich schon)
Wer kann da Auskunft erteilen, der diesen Code benutzt?

Danke, Gruß verni :wink:


EDIT -> ich muss gestehen, dass ich das alte anpera-Forum mit den PHP-Code Angaben übersichtlicher fand. Auch die "Suche" - muss ich nur was umstellen oder so?

Autor:  Naria [ Do 31 Jan, 2008 20:46 ]
Betreff des Beitrags:  Re: Editieren und Löschen des letzten Posts

Ja, sry x) war wohl ein wenig dumm formatiert zu Beginn, habe da mal ein wenig rumgebaut. Ist nun hoffentlich ein wenig übersichtlicher.

Wie gesagt: die Änderung musst du nicht machen, gab da nur mal eine erste Version, wo das noch nicht m it den RP Orten von Kamui ging, aber die sind nun auch kompatibel.

Wenn du nur die Edit Funktion haben willst, kannst du einfach den Link zum löschen weg lassen ;)
Für Eliwoods Bundle wären es die beiden Zeilen, die einfach weg müssten:

[php]
output('<br><br> <a href="chatdelete.php?op=delete&section='.$sektion.'&restore='.$REQUEST_URI.'" onClick="return confirm(\'Willst du diesen Eintrag wirklich löschen?\');">`$&lt;&lt;Löschen&gt;&gt;`0</a>',true);
addnav("","chatdelete.php?op=delete&section=".$sektion."&restore=$REQUEST_URI");
[/php]

Für das Standardkommentarsystem:

[php]
output('<br><br> <a href="chatdelete.php?op=delete&section='.$section.'&restore='.$REQUEST_URI.'" onClick="return confirm(\'Willst du diesen Eintrag wirklich löschen?\');">`$&lt;&lt;Löschen&gt;&gt;`0</a>',true);
addnav("","chatdelete.php?op=delete&section=".$section."&restore=$REQUEST_URI");
[/php]

Autor:  vernisage [ Do 31 Jan, 2008 20:57 ]
Betreff des Beitrags:  Re: Editieren und Löschen des letzten Posts

Ist es ok für dich, wenn ich die Datei post_edit.php nenne? (natürlich mit entsprechenden Umänderungen in deinem Code) ... Habs jetzt noch nicht bei mir hochgeladen - ist derzeit schlecht, weil ein Fest am laufen ist *g*...


Edit: Noch was.... in dieser datei, die du chatdelete genannt hast, habe ich den ganzen delete case auskommentiert - dennoch stolpere ich auf: "$_GET['section']" << Sachen...
das hat echt nichts mit deinem update zu tun?

Autor:  Naria [ Do 31 Jan, 2008 21:02 ]
Betreff des Beitrags:  Re: Editieren und Löschen des letzten Posts

Nö, kannst die Datei benennen wie du lustig bist von mir aus ^^

Und die $_GET['section'] sind dazu da, dass man auch den Post editiert, an dessen ORt man sich gerade befindet. Ansonsten würde einfach nur der zuletzt geschriebene Post editiert werden, das soll ja nicht ^^ Also eigentlich sollte es so laufen, habe es mit ein zwei Abwandlungen auch bei mir so laufen.

Autor:  vernisage [ Fr 01 Feb, 2008 09:02 ]
Betreff des Beitrags:  Re: Editieren und Löschen des letzten Posts

EDITIERTER Beitrag:

Ich hatte hier gepostet, dass ich eine Fehlermeldung hatte, die ich selbst gekittet hab.
Es war wirklich ein "ANFÄNGER"fehler, den hier zu beschreiben wäre immens peinlich *lacht*

Danke für dieses Script und diese Funktion.
Nach ein paar kleinen Änderungen noch (Größe des Editierfensters und so) läuft es bei mir!

Autor:  Drazaar [ Mo 11 Feb, 2008 22:31 ]
Betreff des Beitrags:  Re: Editieren und Löschen des letzten Posts

So wie ich das sehe, ist es dafür gedacht, dass es auch unter Eliwoods Commentary Bundle funktioniert.

Die Editfunktion wird allerdings wohl (in manchen, sehr seltenen Fällen) Probleme machen, da Eliwoods System das zusätzliche Feld "emote" in der "commentary" Tabelle benutzt. Wenn der User also seinen Emote (sagen wir von : zu /X) ändert, wird diese Änderung nicht übernommen...

Mit einer zusätzlichen Abfrage, ob der Emote geändert wurde, kann m an da allerdings Abhilfe schaffen. Wenn ich mal wieder mehr Zeit habe, gucke ich danach.

MfG Draz

Autor:  vernisage [ Di 12 Feb, 2008 08:49 ]
Betreff des Beitrags:  Re: Editieren und Löschen des letzten Posts

Ja, genau.
Ich habe nicht das Eliwoodche Bundle, aber ich habs schon erlebt, dass dann, bei Editier-Versuch, eine Fehlermeldung kommt. Hab mich aber damit nicht befasst, weil es - wie gesagt - in meiner commentary-func problemlos funktioniert *räusper*

Autor:  Naria [ Di 12 Feb, 2008 11:57 ]
Betreff des Beitrags:  Re: Editieren und Löschen des letzten Posts

Drazaar hat geschrieben:
So wie ich das sehe, ist es dafür gedacht, dass es auch unter Eliwoods Commentary Bundle funktioniert.

Die Editfunktion wird allerdings wohl (in manchen, sehr seltenen Fällen) Probleme machen, da Eliwoods System das zusätzliche Feld "emote" in der "commentary" Tabelle benutzt. Wenn der User also seinen Emote (sagen wir von : zu /X) ändert, wird diese Änderung nicht übernommen...

Mit einer zusätzlichen Abfrage, ob der Emote geändert wurde, kann m an da allerdings Abhilfe schaffen. Wenn ich mal wieder mehr Zeit habe, gucke ich danach.

MfG Draz



Ich habe das bei der Version, die auf meinem Server läuft schon eingebaut, nur noch nicht online gestellt :pein: Ein wenig zu viel Stress momentan. Ich werde mal schaun, dass ich das die Tage online stelle.

Autor:  vernisage [ Mi 13 Feb, 2008 12:02 ]
Betreff des Beitrags:  Re: Editieren und Löschen des letzten Posts

Jetzt hab ich zum ersten Mal einen Fehler mit diesem Script.
Und zwar auf meinem Dorfplatz, wenn ich dort editieren will.
Beim Versenden bekomme ich anschließend die Fehlermeldung, dass das Objekt nicht gefunden werden konnte (Der angeforderte URL konnte auf dem Server nicht gefunden werden. ... ect pp) ....

URL im Browser bezieht sich auf section und village (http://www.nanhan.de/logd/village.php&section=village).

Selbst fixen usw bringt erstmal nix, man kommt nach badnav wieder dorthin. Erst nach Browser schließen und neu einloggen. Der editierte Post allerdings ist vorhanden.


Woran liegt das?


Edit -> Mittenmal gehts wieder? Blick das grad nicht... vllt nurn "Stau" im Netz, k.A.

Autor:  Naria [ Mi 13 Feb, 2008 17:25 ]
Betreff des Beitrags:  Re: Editieren und Löschen des letzten Posts

Ach... *hüstel* Das war ein Faulheitsfehler, den ich zwar kannte, aber zu faul war auszubauen (auch wenn ich auch nicht weiß, warum er mal erscheint und dann wieder nicht).

Habe mal eine neue Version hochgeladen, wo der Fehler eigentlich ausgemerzt sein sollte und das emote Feld auch mit einbezogen wird. Allerdings konnte ich das nun nicht auf einem Standardsystem testen, sollte allerdings auch da funktionieren. Falls nicht, bitte Bescheid geben, dann schaue ich da nochmals drüber.

Autor:  vernisage [ Mi 13 Feb, 2008 17:42 ]
Betreff des Beitrags:  Re: Editieren und Löschen des letzten Posts

Bezieht sich das auch auf meine Fehlermeldung oder nur auf den Commentary Bundle-Fehler vorher?

Autor:  Naria [ Mi 13 Feb, 2008 18:52 ]
Betreff des Beitrags:  Re: Editieren und Löschen des letzten Posts

Auf deinen ^^ Der war mir schon bekannt und sollte nun eben auch gefixed sein (hoffe ich).
Naja und das mit dem bundle war nicht direkt ein Fehler nur eben 'unschön'. ^^

Autor:  vernisage [ Mi 13 Feb, 2008 19:07 ]
Betreff des Beitrags:  Re: Editieren und Löschen des letzten Posts

Dann teste ich das gern bei mir aus, ob's fehlerfrei läuft.
Danke Naria

-->Edit: Nö... er will nun ein weiteres Feld in der db `emote`
Muss ich das???? Ich wills nicht *g*

Autor:  Naria [ Mi 13 Feb, 2008 19:44 ]
Betreff des Beitrags:  Re: Editieren und Löschen des letzten Posts

Nö, sollte er nicht wollen, habe es eigentlich versucht so zu machen, dass es ohne Probleme auch einfach mit der Datei für beide Systeme funktioniert. Ich schau nochmals eben.

€dit: Ok, weiß woran es liegt. Muss mich da aber noch mals genauer mit befassen wie ich es beheben kann x) kann ein wenig dauern. Ansonsten eben den Abschnitt auskommentieren, dann sollte es auch laufen:

$this->bbcode_second_pass_code('', ' if (in_array('emote', $field_array)){

if(beginsWith($message,'/me') ){
$message = substr($message,3);
db_query("UPDATE `commentary` SET `comment`='".$message."', `emote`=1 WHERE `commentid`=".$row['commentid']." AND `author`=".$session['user']['acctid']);
}
elseif(beginsWith($message,'::')){
$message = substr($message,2);
db_query("UPDATE `commentary` SET `comment`='".$message."' ,`emote`=1 WHERE `commentid`=".$row['commentid']." AND `author`=".$session['user']['acctid']);
}
elseif(beginsWith($message,':')){
$message = substr($message,1);
db_query("UPDATE `commentary` SET `comment`='".$message."', `emote`=1 WHERE `commentid`=".$row['commentid']." AND `author`=".$session['user']['acctid']);
}
elseif(beginsWith($message,'/em')){
$message = substr($message,3);
db_query("UPDATE `commentary` SET `comment`='".$message."', `emote`=2 WHERE `commentid`=".$row['commentid']." AND `author`=".$session['user']['acctid']);
}
elseif(beginsWith($message,'/x')){
$message = substr($message,2);
db_query("UPDATE `commentary` SET `comment`='".$message."', `emote`=2 WHERE `commentid`=".$row['commentid']." AND `author`=".$session['user']['acctid']);
}
elseif(beginsWith($message,'/ms')){
$message = substr($message,3);
db_query("UPDATE `commentary` SET `comment`='".$message."', `emote`=3 WHERE `commentid`=".$row['commentid']." AND `author`=".$session['user']['acctid']);
}
else db_query("UPDATE `commentary` SET `comment`='".$message."', `emote`=0 WHERE `commentid`=".$row['commentid']." AND `author`=".$session['user']['acctid']);
}')

Autor:  Nightborn [ Mi 13 Feb, 2008 20:59 ]
Betreff des Beitrags:  Re: Editieren und Löschen des letzten Posts

Schöner Code.

Da kann man bildlich Verbesserungen aufzeigen...

elseif raus... switch rein

und mal guggen ob man die substrs nicht irgendwo intelligent setzen kann, bündeln...
die queries schauen auch ziemlich ähnlich aus...da müsste ein db_query am ende eigentlich langen, rest einfach per textersetzen....

Autor:  Maces [ Fr 28 Mär, 2008 15:20 ]
Betreff des Beitrags:  Re: Editieren und Löschen des letzten Posts

hi,ich weiß Thread is schon alt aber ich benutz jetzt dein Editieren und Löschen,bloß gibts da n Problem,und zwar wenn ich auf das löschen bzw. auf das editieren drück ist nix,hab aber alles richtig eingefügt,also das was du am Anfang gesagt hast das soll man in die Common.php einfügen,dann noch dein chatdelete.php in den logd ordner,geht auch soweit nur wie gesagt,es passiert nix,beim löschen werd ich zwar abgefragt ob ichs wirklich löschen will aber wenn ich ja drück dann passiert nix,post is immernoch da

Seite 1 von 3 Alle Zeiten sind UTC + 1 Stunde
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/