Links in Profilfelder umwandeln in funktionierende Hyperlinks. LÖSUNG / BUGFIX, das funktioniert!!

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Links in Profilfelder umwandeln in funktionierende Hyperlinks. LÖSUNG / BUGFIX, das funktioniert!!

      Hallo,

      ich habe einen Bug in den Profilfeldern gefunden, d.h. wenn ein Benutzer eine URL angibt, kann man ab sofort draufklicken und man wird weitergeleitet, was vorher nicht der Fall war. Ihr könnt dann in jedem Profilfeld per Häkchen in der Checkbox festlegen ob die eingebene Adresse als Link behandelt werden soll, die dann auch richtig auf das Ziel weiterlinkt.

      1. Schritt -Datenbankänderungen-:
      Schreibt Euch eine php-Datei und führt es aus!

      <?
      set_time_limit(9999999);

      require_once( 'inc/header.inc.php' );
      require_once( BX_DIRECTORY_PATH_INC . 'design.inc.php' );

      db_res("alter table sys_profile_fields add column `Link` tinyint(1) NOT NULL default '0'");

      db_res("INSERT INTO `LocalizationKeys` SET `IDCategory`=100, `Key`='_FieldCaption_Website_View'",0);
      db_res("INSERT INTO `LocalizationStrings` SET `IDKey`=LAST_INSERT_ID( ), `IDLanguage`='1', `String`='Website'",0);

      echo "Update fertig";
      ?>

      2. Schritt -Scriptänderungen-:
      Bitte folgende Dateien wie folgt editieren:

      inc/classes/BxDolPFM.php

      überall wo das auftaucht:
      'Values,UseLKey',

      abändern in:
      'Values,UseLKey,Link',

      und nach dem Eintrag:
      `MatchField`,

      bitte das einsetzen
      `Link`,

      dann bitte folgenden Eintrag suchen:

      else {
      ?>
      <select name="Type" class="select_type" onchange="changeFieldType( this.value );">
      <?= $this -> getTypeOptions( $aField['Type'] ) ?>
      </select>
      ?
      }
      ?>
      </td>
      <td class="info">&nbsp;</td>
      </tr>

      und einfach unter dem Eintrag dies einsetzen:

      <tr>
      <td class="label">Link:</td>
      <td class="value">
      <input type="checkbox" name="Link" value="" class="input_checkbox"
      <?= $aField['Link'] ? 'checked="checked"' : '' ?> />
      </td>
      <td class="info">
      <?= $this -> getInfoIcon( 'Check this option if this field points to another url.'); ?>
      </td>
      </tr>

      und vor!!!
      if( $aItem['Type'] != 'system' and $aItem['Type'] != 'block' ) {

      Bitte das:
      $aUpdate['Link'] = ( isset( $aData['Link'] ) ) ? 1 : 0;


      templates/base/scripts/BxBaseProfileView.php

      ersetze alle:
      $this->oPF->getViewableValue($aItem, $sValue1),

      durch
      ($aItem['Link'] ? '<a target="_blank" href="http://'.$sValue1.'">' . $sValue1 . '</a>' : $this->oPF->getViewableValue($aItem, $sValue1)),

      und des Weiteren:

      ersetze alle:
      $this->oPF->getViewableValue($aItem, $sValue2),

      durch
      ($aItem['Link'] ? '<a target="_blank" href="http://'.$sValue2.'">' . $sValue2 . '</a>' : $this->oPF->getViewableValue($aItem, $sValue2)),

      3. Schritt -Regex-:
      Im Profilbaukasten bei Profilbearbeitung einfach ein Element auswählen.

      Element -> Erweitert -> Im Eingabefeld "Prüfe" folgenden RegEx einfügen:

      return (bool) preg_match
      ('/^([]*)([a-zäüö0-9\/\*\_\-\.]*)([a-z]*)$/i', $arg0);

      Dieser prüft die exakte Syntax der Eingabe, funktioniert auch mit Umlautdomains, Subdomains usw. und gibt eine fehlermeldung aus, wenn der Benutzer seine Eingabe mit beginnt.

      **** Viel Spass damit ****
      Thomas Poppe
      Sanatoriumsplatz 2
      81545 München

      eMail: poppe.thomas@yahoo.de
      GSM: 0177 / 9 61 08 06
      http://www.linkedin.com/profile/view?id=74057345&trk=tab_pro
      https://www.facebook.com/thomas.poppe2?ref=tn_tnmn

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von thomasp ()