Baustelle Diskussion:Intranet mit Windows Benutzernamen

Aus Joomla! Dokumentation
Wechseln zu: Navigation, Suche

Hallo und willkommen im Wiki :) Erst einmal vielen Dank, dass Du das Tutorial hier zur Verfügung stellst. Auch mit der Wikisyntax scheinst Du Dich schon gut auszukennen - welcome.

So, nun aber auch gleich die erste Rüge: Du solltest Core häcks wirklich nur in extremsten Ausnahmesituationen verwenden und wenn sie denn wirklich nicht zu vermeiden sind (Beispiel fällt mir im Moment zum Glück keins ein ;) )

Ich glaube, die ganze Geschichte lässt sich im Template regeln - das spart viel Kopfschmerzen, grade bei der 1.6 die nur eine sehr kurze Lebenserwartung hat ;)

Vorschlag: Mir fällt kein Grund ein, warum Du die Funktion in die behavior.php der libraries schreibst ? Gibt es einen ??

Vielleicht am besten gleich in die index.php des Templates:

Folder blue.png templates\TEMPLATE\ File php.png index.php

<head>
...
<?php if('msie' == JBrowser::getInstance()->getBrowser()
  && JFactory::getUser()->guest) : ?>
    <!-- Diesen Code nur im MS IE (R) bei einem nicht eigeloggten Benutzer ausführen -->
    <script type="text/javascript">window.addEvent('domready', 
        function(){ 
            var WshNetwork = new ActiveXObject('WScript.Network');
            document.id('modlgn-username').value = WshNetwork.UserName;
            document.id('modlgn-username-show').value = WshNetwork.UserName;
         });
    </script>
<?php endif; ?>
...
</head>

Als nächstes kommen dann die sog. Template Overrides

Die Datei Folder blue.png modules\mod_login\tmpl\ File php.png default.php

wird kopiert nach:

Folder blue.png templates\TEMPLATE\html\mod_login\ File php.png default.php

und folgendermassen geändert:

    <p id="form-login-username">
        <label for="modlgn-username"><?php echo JText::_('MOD_LOGIN_VALUE_USERNAME') ?></label>
        <?php if('msie' == JBrowser::getInstance()->getBrowser()) :?>
            <input id="modlgn-username-show" type="text" class="inputbox" size="18" disabled="disabled" />
            <input id="modlgn-username" type="hidden" name="username" />
        <?php else : ?>
            <input id="modlgn-username" type="text" name="username" class="inputbox"  size="18" />
        <?php endif; ?>
    </p>

Und anstelle den Controller von com_users zu häcken kann man auch hier ein Override einsetzen.

Die Datei Folder blue.png components\com_users\views\login\tmpl\ File php.png default_login.php

wird kopiert nach:

Folder blue.png templates\TEMPLATE\html\com_users\login\ File php.png default_login.php

und folgendermassen geändert:

<?php foreach ($this->form->getFieldset('credentials') as $field): ?>
    <?php if('username' == $field->name
    && 'msie' == JBrowser::getInstance()->getBrowser()) : ?>
        <div class="login-fields"><?php echo $field->label; ?>
            <input id="modlgn-username-show" type="text" name="usershow" class="inputbox"  size="18" disabled="disabled" />
            <input id="modlgn-username" type="hidden" name="username" class="inputbox"  size="18" />
        </div>
        <?php continue; ?>
    <?php endif; ?>

Ich hab also mal eine Windows 7 VM angeschmissen und ein wenig damit rumgespielt.. Vielleicht solltest Du auch noch dazuschreiben wie und wo man denn die erforderlichen Einstellungen / Freigaben im IE findet - das war ganz schön schwierig ;)




So ich habe mal die EInstellung im IE beschrieben, ein Problem habe ich aber noch mit deinem neuen Code

Folder blue.png templates\TEMPLATE\html\com_users\login\ File php.png default_login.php

<?php foreach ($this->form->getFieldset('credentials') as $field): ?>
    <?php if('username' == $field->name
    && 'msie' == JBrowser::getInstance()->getBrowser()) : ?>
        <div class="login-fields"><?php echo $field->label; ?>
            <input id="modlgn-username-show" type="text" name="usershow" class="inputbox"  size="18" disabled="disabled" />
            <input id="modlgn-username" type="hidden" name="username" class="inputbox"  size="18" />
        </div>
        <?php continue; ?>
    <?php endif; ?>

Ich habe dabei das Problem, das bei einem falschen Login ein Fehler entsteht: unexpected $end

Weiterhin habe ich jetzt beim IE ein gelbes Warndreieck mit einem Fehler auf der Seite, das

Meldung: Das Objekt unterstützt diese Eigenschaft oder Methode nicht. Zeile: 4 Zeichen: 1

Zu den Overrides bzw. CoreHacks.

Ich war erstmal froh, das ich es überhaupt geschafft hatte ^^ Weiterhin bin ich von den Overrides nicht wirklich überzeugt, beim einbau von etwas neuem sind sie quasi als Sicherheitskopie zu verstehen. Korrigier mich bitte, wenn ich da falsch liege, aber die Overrides bleiben bestehen, wenn die Corefiles geupdatet werden. Das heißt, es kommt ein Update für Joomla raus, die Coredatei wird überschrieben aber ich hab ja noch meinen Override. Das heißt ja, das ich durch den Override noch die alte Version des Cores benutze und nicht den neuen "verbesserten" Code. Also muss ich den Override an den neuen Code anpassen. also ändere ich entweder die Corefiles oder die Overrides, die arbeit ist aber die selbe :)

Meine Werkzeuge
Namensräume
Varianten
Aktionen
Navigation
Sonstiges
Team Navigation
Werkzeuge