ilch Forum » Ilch Clan 1.1 » Allgemein » Popup erscheinen lassen bei neuen Rang?

Geschlossen
  1. #1
    User Pic
    htdocs Mitglied
    Registriert seit
    29.04.2010
    Beiträge
    492
    Beitragswertungen
    17 Beitragspunkte
    Hallo zusammen,

    hat jemand eine Idee wie es möglich wäre ein Popup einzubauen der die Funktion hat wenn man ein neuen Rang erreicht hat das man per Popup Benachrichtigt wird?

    Sollte eigentlich über eine einfache /include/boxes/boxes.php möglich sein?. Und halt dann per {_boxes_rang_popup} in das Template einzubauen.

    Wichtig ist aber das der Popup nur einmal erscheint wenn man ein neuen Rang hat. Sprich das man nicht ständig bei jeden Login darauf hingewiesen wird, es sollte nur einmal kommen und weg bleiben biss der weitere Rang dran wäre.

    Hätte da jemand was passendes oder würde ein klein Code dazu schreiben, wäre echt klasse und eine Große Hilfe.

    Bedanke mich für eure Antworten..


    verwendete ilch Version: 1.1 P
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    Outi77 Mitglied
    Registriert seit
    31.03.2013
    Beiträge
    1.337
    Beitragswertungen
    143 Beitragspunkte
    Also sprichst Du vom Forenrang? Und hast Du an der Berechnung des selben irgendetwas verändert? Wenn nicht, ist ja ausschließlich die Anzahl der Foren-Posts entscheidend (wenn ich mich nicht irre?).
    Mit dem Wissen könnte man es ja so coden, dass beim Absenden des für einen nächst höheren Rang entscheidenden Posts das Popup erscheint. Dann bräuchte man auch nix extra in der Datenbank speichern.
    Die richtige Formulierung eines Problems ist nicht selten bereits die halbe Lösung.
    »Albert Einstein«
    1 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    htdocs Mitglied
    Registriert seit
    29.04.2010
    Beiträge
    492
    Beitragswertungen
    17 Beitragspunkte
    Ja genau der einfache Forenrang wie es normal in ilch ist ohne jegliche veränderung.
    0 Mitglieder finden den Beitrag gut.
  4. #4
    User Pic
    Outi77 Mitglied
    Registriert seit
    31.03.2013
    Beiträge
    1.337
    Beitragswertungen
    143 Beitragspunkte
    OK, also ich hab's mal ganz simple mit nem Alert gemacht, aber vielleicht postet noch jemand eine Variante, mit der man eventuell im Popup auch das neue Rang-Abzeichen darstellen kann.

    Folgende Zeilen hab ich in die include/contents/forum/new_post.php eingefügt, und zwar unter die Zeile, wo die Post-Anzahl des Users um 1 erhöht wird (Zeile 1):
    db_query("UPDATE `prefix_user` set posts = posts+1 WHERE id = ".$uid);
            
            # Abfrage, wie viele Posts der User hat
            $anz_posts = db_result(db_query("SELECT posts FROM prefix_user WHERE id = " . $uid), 0);
            
            # Abfrage der Forenränge
            $rangs_arr = array();
            $abf_rangs = db_query("SELECT bez, min FROM prefix_ranks");
            while ($row = db_fetch_object($abf_rangs)) {
                $rangs_arr[$row->min] = $row->bez;
            }
            if (array_key_exists($anz_posts, $rangs_arr)) {
                $nrank = $rangs_arr[$anz_posts];
                $alert_text = "Glückwunsch, Du hast den nächsthöheren Foren-Rang erreicht. Du bist jetzt ".$nrank.".";
                
                echo '<script type="text/javascript">alert("' . $alert_text . '")</script>';
            }

    Diese Erweiterung müßte nun auch in die Datei include/contents/forum/new_topic.php, dort ebenfalls unter die beschriebene Zeile, wo die Posts des Users um 1 erhöht werden.
    --------------------------------------------------------
    OK das hat mich jetzt selber nicht in Ruhe gelassen.
    Hier eine Variante, wo das Ganze im Weiterleitungs-Fenster ausgegeben wird.
    Zunächst wieder unter die Zeile, in der die Posts des Users um 1 erhöht werden:
    db_query("UPDATE `prefix_user` set posts = posts+1 WHERE id = ".$uid);
            
            # Abfrage, wie viele Posts der User hat
            $anz_posts = db_result(db_query("SELECT posts FROM prefix_user WHERE id = " . $uid), 0);
            
            # Abfrage der Forenränge
            $rangs_arr = array();
            $abf_rangs = db_query("SELECT bez, min FROM prefix_ranks");
            while ($row = db_fetch_object($abf_rangs)) {
                $rangs_arr[$row->min] = $row->bez;
            }
            $wd_text = $lang['createpostsuccessful'];
            $wd_time = 3;
            if (array_key_exists($anz_posts, $rangs_arr)) {
                $nrank = '<img title="'.$rangs_arr[$anz_posts].'" src="include/images/forenranks/'.$rangs_arr[$anz_posts].'.png">';
                $wd_text = $lang['createpostsuccessful']."\nGlückwunsch, Du hast den nächsthöheren Foren-Rang erreicht. Du bist jetzt \n".$nrank.".";
                $wd_time = 10;
            }

    Jetzt noch fast ganz unten das wd etwas abändern:
    wd ( array (
            $lang['backtotopic'] => 'index.php?forum-showposts-'.$tid.'-p'.$page.'#'.$pid,
            $lang['backtotopicoverview'] => 'index.php?forum-showtopics-'.$fid
        ) , $wd_text , $wd_time );

    Bitte noch in Zeile 15 den Pfad zu den Foren-Rängen anpassen.
    Würde dann etwa so aussehen:
    gesperrtes Bild


    Zuletzt modifiziert von Outi77 am 09.11.2016 - 22:35:29
    Die richtige Formulierung eines Problems ist nicht selten bereits die halbe Lösung.
    »Albert Einstein«
    3 Mitglieder finden den Beitrag gut.
  5. #5
    User Pic
    htdocs Mitglied
    Registriert seit
    29.04.2010
    Beiträge
    492
    Beitragswertungen
    17 Beitragspunkte
    Hi, klasse danke dir..

    Werde es mal so umsetzen wie du es beschrieben hast und mal testen, das mit den bild des Ranges bekomme ich schon hin.

    Melde mich dann zurück ob alles so klappt wie es sein soll. lächeln
    0 Mitglieder finden den Beitrag gut.
  6. #6
    User Pic
    htdocs Mitglied
    Registriert seit
    29.04.2010
    Beiträge
    492
    Beitragswertungen
    17 Beitragspunkte
    Klappt alles mit deinem Code lächeln

    Habe eben mal was anderes noch Probiert mit der includes/boxes/

    Habe mal eine test.php gebastelt und die unter boxes gelegt dann im Design Template verbunden.

    So wie man den Rang erreicht kommt auch diese Meldung damit, ist mehr ein copy paste code da ich jetzt nicht genau weiß wie ich damit vorgehen soll.

    Einzige Problem was mir sofort aufgefallen war ist so lange er den Rang Post 2000 hat kommt die Meldung Ständig bis man den Post 2001 erreicht.

    Hättest du da eine Lösung für?

    Die Zeile (db_query UPDATE) habe ich Auskommentiert.

    Das mit dein Code ist Vollkommen in Ordnung, da ich den Code aber noch für andere Sachen nutzen möchte "bsp ein Punkte system" wäre solch eine Box besser für mich.

    Bsp. Ich lass jeden User nach x Stunden 5 Punkte Gutschreiben sollte er bsp 1000 Punkte erreicht haben sollte eine "einmalige" Meldung kommen.

    Wäre das möglich den Code so umzubasteln in einer Boxes.

    <?php 
    
    defined ('main') or die ( 'no direct access' );
    
      if (loggedin()) {
        $uid = $_SESSION['authid'];
    		$erst = escape($_SESSION['authname'],'string');
                # db_query("UPDATE `prefix_user` set posts = posts+1 WHERE id = ".$uid);
    
             
            # Abfrage, wie viele Posts der User hat
            $anz_posts = db_result(db_query("SELECT posts FROM prefix_user WHERE id = " . $uid), 0);
             
            # Abfrage der Forenränge
            $rangs_arr = array();
            $abf_rangs = db_query("SELECT bez, min FROM prefix_ranks");
            while ($row = db_fetch_object($abf_rangs)) {
                $rangs_arr[$row->min] = $row->bez;
            }
            if (array_key_exists($anz_posts, $rangs_arr)) {
                $nrank = $rangs_arr[$anz_posts];
                $alert_text = "Glückwunsch, Du hast den nächsthöheren Foren-Rang erreicht. Du bist jetzt ".$nrank.".";
                 
                echo '<script type="text/javascript">alert("' . $alert_text . '")</script>';
            }
      } else  {
      if (empty($_POST['login_name'])) { $_POST['login_name'] = 'Nickname'; }
    	if (empty($_POST['login_pw'])) { $_POST['login_pw'] = '????????'; }
    	$regist = '';
    	$pw = '<a href="index.php?user-remind">Passwort?</a>'; 
    	if ( $allgAr['forum_regist'] == 1 ) {
    	  $regist = ' <a href="index.php?user-regist">Registrieren</a>';
    	  }
    	$tpl->set_ar_out ( array ( 'regist' => $regist,  'pw' => $pw, 'wdlink' => '?'.$allgAr['smodul'], 'PASS' => $_POST['login_pw'], 'NAME' => $_POST['login_name'] ) , 1 );
    }
    unset($tpl);
    
    ?>



    Zuletzt modifiziert von htdocs am 10.11.2016 - 14:05:03
    0 Mitglieder finden den Beitrag gut.
  7. #7
    User Pic
    Outi77 Mitglied
    Registriert seit
    31.03.2013
    Beiträge
    1.337
    Beitragswertungen
    143 Beitragspunkte
    ZitatZitat geschrieben von htdocs
    Einzige Problem was mir sofort aufgefallen war ist so lange er den Rang Post 2000 hat kommt die Meldung Ständig bis man den Post 2001 erreicht.

    Hättest du da eine Lösung für?

    Deshalb hatte ich es so eingebaut, dass es nur bei new_post oder new_topic erscheint. Für Deinen Weg fällt mir im Moment nur eine Lösung ein, nämlich das Zeigen des Popups in einer Variable in die Datenbank zu speichern.

    ZitatZitat geschrieben von htdocs

    Das mit dein Code ist Vollkommen in Ordnung, da ich den Code aber noch für andere Sachen nutzen möchte "bsp ein Punkte system" wäre solch eine Box besser für mich.

    Du könntest meinen Schnipsel auch in eine function schreiben und dann jedes Mal, wenn Du sie benötigst, nur die function aufrufen.
    Die richtige Formulierung eines Problems ist nicht selten bereits die halbe Lösung.
    »Albert Einstein«
    1 Mitglieder finden den Beitrag gut.
  8. #8
    User Pic
    htdocs Mitglied
    Registriert seit
    29.04.2010
    Beiträge
    492
    Beitragswertungen
    17 Beitragspunkte
    oki oki lächeln

    Na mal schaun was sich machen lest..
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu Allgemein

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten