Reihenfolge der Mandanten

Gesperrt
mhl
Beiträge: 67
Registriert: Mi 18. Aug 2004, 21:59
Wohnort: Salzburg
Kontaktdaten:

Reihenfolge der Mandanten

Beitrag von mhl » So 26. Mär 2006, 17:17

Hallo.

Ich habe in meinem C445 mehrere Mandanten, wobei einer ganz klar der Topmandant ist den ich am öftesten brauche. Leider aber ist er nicht der oberste der Mandanten, somit muss ich im Scrollfeld immer zuerst den Mandanten auswählen, OK klicken, und erst dann kann ich auf dessen Content etc. zugreifen.

Ich würd mir natürlich gerne diese zwei Klicks sparen, und diesen Mandanten als "Startmandanten" festlegen, der automatisch aktiv ist, sobald ich mich im Backend einlogge. Geht das überhaupt? Und wie gehe ich da am besten vor?

Besten Dank für die Hilfe!

Gruß

MHL

Beleuchtfix
Beiträge: 1082
Registriert: Di 22. Jul 2003, 10:14
Wohnort: Hessen
Kontaktdaten:

Beitrag von Beleuchtfix » So 26. Mär 2006, 20:13

Das ist so nicht vorgesehen.

Wenn du im Contenido Code rumschreiben möchtest, dann sollte es gehen, und zwar im Template für die Seite nach dem Login. Da musst du etwas länger suchen!
Viel Erfolg
Florian

mhl
Beiträge: 67
Registriert: Mi 18. Aug 2004, 21:59
Wohnort: Salzburg
Kontaktdaten:

main.login.php

Beitrag von mhl » So 26. Mär 2006, 22:34

Hallo.

Danke, ich habe inzwischen so ziemlich alle Dateien durch und bin auf folgende Textstelle in der contenido/includes/main.login.php gestossen:

Code: Alles auswählen

 $clients = $classclient->getAccessibleClients();
        if(count($clients) > 1)
        {
        
            $clientform = '<form style="margin: 0px" name="clientselect" method="post" target="_top" action="'.$sess->url("index.php").'">';
            $clientselect = '<select class="text_medium" name="changeclient">';

            foreach ($clients as $key => $v_client)
            {
                if ($perm->have_perm_client_lang($key, $lang))
                {

                    $selected = "";
                    if ($key == $client)
                    {
                        $selected = "selected";
                    }
                    $clientselect .= '<option value="'.$key.'" '.$selected.'>'.$v_client['name']." (". $key . ')</option>';
                }
            }

            $clientselect .= "</select>";
            $tpl->set('s', 'CLIENTFORM', $clientform);
            $tpl->set('s', 'PULL_DOWN_MANDANTEN', $clientselect);
            $tpl->set('s', 'OKBUTTON', '<input type="image" src="images/but_ok.gif" alt="'.i18n("Change client").'" title="'.i18n("Change client").'" border="0">');
         } else {
            $tpl->set('s', 'OKBUTTON', '');
            $tpl->set('s', 'CLIENTFORM', '');
            
            foreach ($clients as $key => $v_client)
            {
                $name = $v_client['name']." (". $key . ')';
            }
            $tpl->set('s', 'PULL_DOWN_MANDANTEN', $name);
         }
Nur ist mir nicht klar, wie ich die Reihenfolge der Mandanten beeinflussen kann, bzw. wie ich festlegen kann, welcher Mandant als erster gereiht wird, und somit automatisch aktiv ist, sobald ich mich einlogge. Muss ich da was in der DB ändern? Habe mir die Tabellen alle angesehen, bin aber dort ebenfalls auf nix gestossen. Sonderbar...
Irgendwelche Vorschläge oder Hinweise?

Gruß

MHL

HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB » So 26. Mär 2006, 22:54

Da musst Du nochmal in den Code gucken und den Code hinter getAccessibleClients() ermitteln. Das dürfte mit ziemlicher Sicherheit ein SQL-Statement oder etwas ähnliches sein.

Wenn Du dort nicht weiterkommst, kannst Du ja mal mit print_r den Inhalt des Arrays $clients ausgeben. Und das Array dann mit array_sort oder etwas ähnlichem (natürlich unter Erhaltung der Schlüssel-Wert-Zurodnung) sortieren.

Ansonsten kannst Du natürlich auch einfach dem Mandanten ein kleines Sonderzeichen voranstellen, z.B. _Mandant dürfte recht weit oben stehen...

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net

Beleuchtfix
Beiträge: 1082
Registriert: Di 22. Jul 2003, 10:14
Wohnort: Hessen
Kontaktdaten:

Beitrag von Beleuchtfix » Mo 27. Mär 2006, 09:25

Ich glaube, dass die Reihenfolge von idclient bestimmt wird, also nichts mit dem Namen zu tun hat.
Ich vermute, dass das passende Template templates/standard/template.welcome.html ist. Allerdings habe ich noch nicht gefunden, in welcher inlcude-Datei die eigentliche Ausgabe ist. Zur zeit suche in in der Gegend von include.mycontenido_xx
Viel Erfolg
Florian

mhl
Beiträge: 67
Registriert: Mi 18. Aug 2004, 21:59
Wohnort: Salzburg
Kontaktdaten:

Reihenfolge

Beitrag von mhl » Mo 27. Mär 2006, 09:32

Hallo.

Die Reihenfolge der Mandanten hat sogar ganz bestimmt nix mit dem Namen des Mandanten zu tun, und auch nicht mit der Nummer(!). Ich habe - testweise - einen Mandanten komplett umgereiht. Vorher war er Mandant Nummer 18 mit der Sprache Nummer 14, nun ist er Mandant 4 mit der Sprache 4. Somit ist er natürlich vor Mandant 5! Denkste.

Folgendes habe ich getan: Ich habe in der DB alle Einträge dahin gehend geändert, und natürlich auch die config.php. Sicher, man kann darüber streiten, ob das klug ist, aber egal. Das einzige was Contenido beibehalten hat, ist die Reihenfolge im Backend. Sowohl im Punkt "Administration/Mandanten" als auch auf der Startseite.

Somit ist für mich klar, dass die Reihung mit dem Entstehungsdatum zusammenhängt. Doch dieses ist in der DB nicht eingetragen. Wo dann?

Gruß

MHL

Beleuchtfix
Beiträge: 1082
Registriert: Di 22. Jul 2003, 10:14
Wohnort: Hessen
Kontaktdaten:

Beitrag von Beleuchtfix » Mo 27. Mär 2006, 10:02

Vielleicht ist das überhaupt nicht organisiert, also wird es ausgegeben, wie gefunden, und das ist normalerweise nach Eingabe
Florian

mhl
Beiträge: 67
Registriert: Mi 18. Aug 2004, 21:59
Wohnort: Salzburg
Kontaktdaten:

Ordnung

Beitrag von mhl » Mo 27. Mär 2006, 10:09

@beleuchtfix

Die Idee dass es nicht organisiert ist, gefällt mir. Irgendwie anarchistisch. Ich glaube aber nicht, dass dies völlig ordnungsfrei abläuft, und wenn die Mandanten nach Entstehungsdatum gereiht werden, dann müsste man entweder die Sortierreihenfolge ändern (zB nach Nummer oder alphabetisch), oder man ändert "künstlich" das Entstehungsdatum, wie ich das auch mal bei dem einen oder anderen Artikel gemacht habe, um ihn "aktuell" erscheinen zu lassen. Da komme ich aber wieder auf die Frage zurück: wo ist das Entstehungsdatum der Mandanten eingetragen? IMHO kann es eigentlich nur irgendwo in der DB stehen... :?:

Gruß MHL

Beleuchtfix
Beiträge: 1082
Registriert: Di 22. Jul 2003, 10:14
Wohnort: Hessen
Kontaktdaten:

Beitrag von Beleuchtfix » Mo 27. Mär 2006, 10:20

Ich glaube doch Anarchie :lol:, in der con_client wird nämlich der Wert createt nicht gesetzt.

Nach meiner Meinung liegt der Schlüssel in der Zeile:

Code: Alles auswählen

 $clients = $classclient->getAccessibleClients();
Entweder in der Funktion getAccessibleClients(), oder du machst noch ein array_sort. Bitte frag mich jetzt nicht, wie das geht, da muss ich nämlich auch die Handbücher durchsuchen. :-) gefunden, so einfach geht das: sort()

Viel Erfolg
Florian
Zuletzt geändert von Beleuchtfix am Mo 27. Mär 2006, 10:34, insgesamt 1-mal geändert.

Beleuchtfix
Beiträge: 1082
Registriert: Di 22. Jul 2003, 10:14
Wohnort: Hessen
Kontaktdaten:

Beitrag von Beleuchtfix » Mo 27. Mär 2006, 10:26

Code: Alles auswählen

    /**
     * getAvailableClients()
     * Returns all clients available in the system
     * @return array   Array with id and name entries
     */
    function getAvailableClients() {
        global $cfg;

        $db = new DB_Contenido;

        $sql = "SELECT
                    idclient,
                    name
                FROM
                ". $cfg["tab"]["clients"];
        $db->query($sql);

        $clients = array();
        
        while ($db->next_record())
        {
            
            $newentry["name"] = $db->f("name");

            $clients[$db->f("idclient")] = $newentry;

        }

        return ($clients);
    } // end function
Also Anarchie! :twisted:

oben ein ORDER BY "name" (oder idclient) sollte reichen.
Da Ganze findest du in classes/class.client.php

HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB » Di 28. Mär 2006, 18:43

Ich weiss nicht, ob da jetzt noch eine Antwort erforderlich ist, aber das würde nach Name sortieren:

Code: Alles auswählen

    /** 
     * getAvailableClients() 
     * Returns all clients available in the system 
     * @return array   Array with id and name entries 
     */ 
    function getAvailableClients() { 
        global $cfg; 

        $db = new DB_Contenido; 

        $sql = "SELECT 
                    idclient, 
                    name 
                FROM 
                ". $cfg["tab"]["clients"]."
                ORDER BY name"; 
        $db->query($sql); 

        $clients = array(); 
        
        while ($db->next_record()) 
        { 
            $newentry["name"] = $db->f("name"); 

            $clients[$db->f("idclient")] = $newentry; 
        } 

        return ($clients); 
    } // end function
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net

mhl
Beiträge: 67
Registriert: Mi 18. Aug 2004, 21:59
Wohnort: Salzburg
Kontaktdaten:

Beitrag von mhl » Mi 5. Apr 2006, 23:10

Ist fast ganz richtig, ich habe es hier nach CLient ID gereiht. Der Eintrag muss weiter unten noch einmal getätigt werden.
Nur mit dem Permanent Client hab ich es noch nicht ganz heraus, wie man den einstellen kann. Für's erste passt es aber so ganz gut.

Code: Alles auswählen

<?php

/**
 * Class Client
 * Class for client information and management
 * @author Timo A. Hummel <Timo.Hummel@4fb.de>
 * @version 1.0
 * @copyright four for business 2003
 */
class Client {

    /**
     * Constructor Function
     * @param
     */
    function Client() {
        // empty
    } // end function

    /** 
     * getAvailableClients() 
     * Returns all clients available in the system 
     * @return array   Array with id and name entries 
     */ 
    function getAvailableClients() { 
        global $cfg; 

        $db = new DB_Contenido; 

        $sql = "SELECT 
                    idclient, 
                    name 
                FROM 
                ". $cfg["tab"]["clients"]."
                ORDER BY idclient"; 
        $db->query($sql); 

        $clients = array(); 
        
        while ($db->next_record()) 
        { 
            $newentry["name"] = $db->f("name"); 

            $clients[$db->f("idclient")] = $newentry; 
        } 

        return ($clients); 
    } // end function


    /**
     * getAvailableClients()
     * Returns all clients available in the system
     * @return array   Array with id and name entries
     */
    function getAccessibleClients() {
        global $cfg, $perm;

        $db = new DB_Contenido;

        $sql = "SELECT
                    idclient,
                    name
                FROM
                ". $cfg["tab"]["clients"]."
                ORDER BY idclient"; 
        $db->query($sql);

        $clients = array();
        
        while ($db->next_record())
        {
            if ($perm->have_perm_client("client[".$db->f("idclient")."]") ||
                $perm->have_perm_client("admin[".$db->f("idclient")."]") ||
                $perm->have_perm_client())
            {
            
                $newentry["name"] = $db->f("name");

                $clients[$db->f("idclient")] = $newentry;
            }

        }

        return ($clients);
    } // end function
    
    /**
     * getClientname()
     * Returns the clientname of the given clientid
     * @return string  Clientname if found, or emptry string if not.
     */
    function getClientname ($clientid)
    {
        global $cfg;

        $db = new DB_Contenido;

        $sql = "SELECT
                    name
                FROM
                ". $cfg["tab"]["clients"]."
                ORDER BY idclient
                WHERE
                    idclient = \"".$clientid."\"";

        $db->query($sql);
        if ($db->next_record())
        {
            return ($db->f("name"));
        } else {
            return i18n("No client");
        }

    } // end function

    /**
     * hasLanguageAssigned()
     * Returns if the given client has a language
     * @return bool  true if the client has a language
     */
    function hasLanguageAssigned ($clientid)
    {
        global $cfg;

        $db = new DB_Contenido;

        $sql = "SELECT
                    idlang
                FROM
                ". $cfg["tab"]["clients_lang"]."
                ORDER BY idclient
                WHERE
                    idclient = \"".$clientid."\"";

        $db->query($sql);
        if ($db->next_record())
        {
            return (true);
        } else {
            return (false);
        }

    } // end function
    
} // end class

?>

Beleuchtfix
Beiträge: 1082
Registriert: Di 22. Jul 2003, 10:14
Wohnort: Hessen
Kontaktdaten:

Beitrag von Beleuchtfix » Do 6. Apr 2006, 11:08

Ich würde so sortieren, dass der gewünschte Klient an der ersten Stelle ist, wenn es nicht die höchste oder niedrigste ID ist, dann sortiere eben nach Name und wähle die Namen entsprechen.
von der Anwenderseite her ist es auch unübersichtlich mitten in einer Liste zu sein.
Viel Erfolg
Florian

Gesperrt