• Willkommen im Forum von XenFiles!
    Wenn Du ein registriertes Mitglied bist, logge Dich bitte ein oder klicke auf Registrieren, wenn Du kein Mitglied bist.
    Nur als registriertes Mitglied kannst Du alle Funktionen des Forums nutzen.
    Die Registration ist völlig kostenlos!
    Registrieren Anmelden

Gibt es eine Moeglichkeit, die Installierte Version von XenForo 2, sowie installierten AddOns herausfinden

HwlHwl

Aktiver Benutzer
Plus Mitglied
Hallo zusammen,

ich habe mich gefragt, ob es moeglich ist, bei einer installierten Seite mit XenForo, die installierte Version herauszufinden, sowie welche AddOns und Styles installiert sind.

Anhand der Copyright Version, der installierten bzw. benutzten Version von jQuery . Man koennte auch noch die xenforo.min.js der verschiedenen Versionen vergleichen.

Hier mal einige Unterschiede:
1.1: Has log out button.
1.2: jQuery bumped to 1.9. (iirc?)
1.3: jQuery bumped to 1.10.

Habt ihr noch ein paar Ideen, Tipps ?

Danke
 
T S
HwlHwl

HwlHwl

Aktiver Benutzer
Plus Mitglied
Naja das ist mir schon klar das man im Backend schauen kann, ich koennte ja auch im Filesystem nachschauen. Aber es ist eine Seite die nicht von mir ist.

Ich wollte wissen was sie dort fuer AddOns nutzen, welche Styles und welche Version von Xenforo eingesetzt wird.
 
T S
HwlHwl

HwlHwl

Aktiver Benutzer
Plus Mitglied
Ja klar das koennte ich machen, die Version habe ich jetzt schon mal herausgefunden, werde auch dann hier noch ein paar Informationen veroeffentlichen.
 
T S
HwlHwl

HwlHwl

Aktiver Benutzer
Plus Mitglied
Hier der Versuch einer Liste mit einigen Unterschieden zu erzeugen (XenForo2):

  • core-compiled.js
    • Nach folgendem Code suchen
      JavaScript:
      d.fn.toggleClassTransitioned=function(a,b,e,m){"boolean"!==typeof b&&"undefined"===typeof e&&(e=b,b=null);for(var g="boolean"===typeof b,f=this.length,l=0;l<f;l++){var h=d(this[l]);var k=g?b:h.hasClass(a)?!1:!0;c(h,k,a,e,m)}return this}}(),d.extend(XF,{config:{userId:null,enablePush:!1,skipServiceWorkerRegistration:!1,skipPushNotificationCta:!1,pushAppServerKey:null,csrf
      • der darauf folgende Code sieht in dieser Version wie folgt aus
        JavaScript:
        d("html").data("csrf")
        vorher
        JavaScript:
        null
    • Nach folgendem Code suchen
      JavaScript:
      unparseBbCode:function(a){var b=d(h.createElement("div"));b.html(a);b.find(".js-noSelectToQuote").each(function(){d(this).remove()});d.each(["B","I","U"
      • der darauf folgende Code sieht in dieser Version wie folgt aus
        JavaScript:
        ,"S"],function(a,e)
        vorher gab es "S" nicht
    • Nach folgendem Code suchen
      JavaScript:
      a.replace(/<img[^>]+>/ig,function(a){if(a.match(/class="([^"]* )?smilie( |")/)){var b;if(b=a.match(/alt="([^"]+)"/))return b[1]}return a});a=a.replace(/([\w\W]|^)<a\s[^>]*data-user-id="\d+"\s+data-username="([^"]+)"[^>]*>([\w\W]+?)<\/a>/gi,
      • Hier werden nun die Variablen "d" und "f"
        JavaScript:
        function(a,c,d,f)
        verwendet, vorher waren es "e" und "d"
        JavaScript:
        function(a,c,e,d)
    • Nach folgendem Code suchen
      JavaScript:
      this.$target.toggleClass("is-sticky",a)
      • Diesen Code gibt es nicht mehr in dieser Version.

  • core-compiled.js
    • In der Funktion in der ersten Zeile wird die Variable "k"
      JavaScript:
      function(d,k,h)
      verwendet vorher war es "l"
      JavaScript:
      function(d,l,h)
    • Nach folgendem Code suchen
      JavaScript:
      ,XF.LocalStorage.setJson("visitorCounts",{time:c||Math.floor((new Date).getTime()/
      suchen
      • diesen gibt es erst ab dieser Version
    • Nach folgendem Code suchen
      JavaScript:
      XF.Element.register("password-hide-show","XF.PasswordHideShow")
      suchen
      • diesen gibt es erst ab dieser Version

  • core-compiled.js
    • Seit dieser Version keine Header mehr in der Datei
    • Nach folgendem Code suchen
      JavaScript:
      $jscomp.checkStringArgs=function(d,l,h){if(null==d)throw new TypeError
      • diesen gibt es erst ab dieser Version

  • inline_mod.js
    • loadBar:function(onLoad) sieht ab dieser Version wie folgt aus:
      JavaScript:
              loadBar: function(onLoad)
              {
                  var self = this;
      
                  // put this in a timeout to handle JS setting multiple toggles
                  // in a single action, and firing click actions for each one
      
                  if (this.loadTimeout)
                  {
                      clearTimeout(this.loadTimeout);
                  }
      
                  this.loadTimeout = setTimeout(function()
                  {
                      if (self.xhr)
                      {
                          self.xhr.abort();
                      }
                      self.xhr = XF.ajax(
                          'GET', self.options.href,
                          { type: self.options.type },
                          function(result) { self._showBar(result, onLoad); }
                      );
                  }, 10);
              },
      vorher
      JavaScript:
              loadBar: function(onLoad)
              {
                  var self = this;
      
                  if (this.xhr)
                  {
                      this.xhr.abort();
                  }
                  this.xhr = XF.ajax(
                      'GET', this.options.href,
                      { type: this.options.type },
                      function(result) { self._showBar(result, onLoad); }
                  );
              },

  • preamble-compiled.js
    • Diese Datei gibt es nicht mehr ab dieser Version.

  • vendor-compiled.js
    • Seit dieser Version kam die Sektion " * jQuery Mobile Events" hinzu
 
T S
HwlHwl

HwlHwl

Aktiver Benutzer
Plus Mitglied
  • core-compiled.js
    • Hier nach dem folgenden
      JavaScript:
      if(void 0===v)for(v={},y=0;y
      suchen
      • der darauf folgende Code sieht in dieser Version wie folgt aus
        JavaScript:
        u.length
        man beachte hier die Variable "u", in den Versionen davor lautete die Variable "t"
    • Des Weiteren gibt es in der gleichen Datei den Aufruf
      JavaScript:
      NoticeWatcher.initialize()
      welcher vorher nicht vorhanden war
    • Nach der Sektion "XenForo form.min.js" suchen
      • Hier sieht die Funktion wie folgt aus
        JavaScript:
        function(c,f,h)
        Man beachte die Variable "f" in den Version davor lautete die Variable "e"
    • Nach dem folgenden
      JavaScript:
       if(this.supportsSticky){var e=!1,k=parseInt(a.css("top"),10),g=XF.isIOS(),h,l=function(c){var d=
      suchen
      • in dieser Version ist d=Math.floor(a[0][/CODE], davor war es
        JavaScript:
        d=a[0]

  • special_characters.min.js
    • Seit diesem Release ist hier die Version froala_editor v2.9.1 eingebunden, vorher froala_editor v2.8.4

Hier gabe es nur ein Sicherheitsupdate:
  • src/XF/Str/Formatter.php
    • The issue is a XSS vulnerability. XSS (Cross Site Scripting) issues allow scripts and malicious HTML to be injected into the page, potentially allowing data theft or unauthenticated access.
      PHP:
          public function autoLinkStructuredText($string)
          {
              $string = $this->moveHtmlToPlaceholders($string, $restorePlaceholders);
      
              $string = preg_replace_callback(
                  '#(?<=[^[email protected]]|^)(https?://|www\.)[^\s"<>{}`]+#i',
                  function (array $match)
                  {
                      $url = $this->removeHtmlPlaceholders($match[0]);
                      $url = htmlspecialchars_decode($url, ENT_QUOTES);
                      $link = $this->prepareAutoLinkedUrl($url);
      
                      if (!$link['url'])
                      {
                          return htmlspecialchars($url, ENT_QUOTES, 'utf-8');
                      }
      
                      $linkInfo = $this->getLinkClassTarget($link['url']);
                      $classAttr = $linkInfo['class'] ? " class=\"$linkInfo[class]\"" : '';
                      $targetAttr = $linkInfo['target'] ? " target=\"$linkInfo[target]\"" : '';
                      $noFollowAttr = $linkInfo['trusted'] ? '' : ' rel="nofollow"';
      
                      return '<a href="' . htmlspecialchars($link['url'], ENT_QUOTES, 'utf-8')
                          . "\"{$classAttr}{$noFollowAttr}{$targetAttr}>"
                          . htmlspecialchars($link['linkText'], ENT_QUOTES, 'utf-8') . '</a>'
                          . htmlspecialchars($link['suffixText'], ENT_QUOTES, 'utf-8');
                  },
                  $string
              );
      
              $string = $restorePlaceholders($string);
      
              return $string;
          }
      Entscheidend war die Zeile
      PHP:
      return htmlspecialchars($url, ENT_QUOTES, 'utf-8');
      vorher wurde hier nur $url returned.

  • core-compiled.js
    • Nach dem folgenden Code suchen
      JavaScript:
       (console.warn("$.onPassive does not support namespaced events %s.on%s",this.get(0),a),!1):Modernizr.passiveeventlisteners?(this.get(0).addEventListener(a,b
      • Seit dieser Version wird addEventListener mit drei Parametern aufgerufen, der folgenden Parameter kam hinzu:
        JavaScript:
         ,{passive:!0})
    • Nach dem folgenden Code suchen
      JavaScript:
       var f=g?"addClass":"removeClass",h=g?"removeClass":"addClass";g=b(c,l,g?!0:!1);var
      • Seit dieser Version wird hier die Varibale "r" definiert
        JavaScript:
         var r=c[0]
        vorher war es die Variable "q"
    • Nach dem folgenden Code suchen
      JavaScript:
      XF.debug.disableAjaxSubmit))
      , dieser ist erst seit dieser Version vorhanden.

  • vendor.js
    • Nach dem folgenden Code suchen
      JavaScript:
      30,31][b]},A=function(a){m(a)&&a.setHours(0,0,0,0)},F=function(a,b){
      • Seit dieser Version wird hier die Variable "a" und "b" definiert
        JavaScript:
         a=new Date(a.getTime());b=new
        davor war es "d" und "c"
        JavaScript:
        var d=new Date(a.getTime()),c=new
    • Suche die Sektion Autosize, ab diesem Release ist hier die Version 4.0.2 eingebunden

  • special_characters.min.js
    • Seit diesem Release ist hier die Version froala_editor v2.8.4 eingebunden, vorher froala_editor v2.8.1

Hier gabe es nur ein Sicherheitsupdate:
  • src/XF/Template/Templater.php
    • XenForo 2.0.9 fixes a flaw that could potentially be exploited to create a cross-site scripting vulnerability. We recommend that all customers running XenForo 2.0 upgrade to 2.0.9 or use the attached patch file as soon as possible. Note that if you are applying the patch rather than doing a full upgrade to 2.0.9, you will need to apply the 2.0.8 patch too.

      XenForo extends thanks to Thomas Schneider for identifying the issue.

      The issue is a XSS vulnerability. XSS (Cross Site Scripting) issues allow scripts and malicious HTML to be injected into the page, potentially allowing data theft or unauthenticated access.
      PHP:
          public function filterJson($templater, $value, &$escape, $prettyPrint = false)
          {
              if ($prettyPrint)
              {
                  $output = \XF\Util\Json::jsonEncodePretty($value, false);
      
                  // do limited slash escaping to improve readability
                  $output = str_replace('</', '<\\/', $output);
              }
              else
              {
                  $output = json_encode($value);
              }
      
              $output = str_replace('<!', '\u003C!', $output);
      
              return $output;
          }
      Hier wurde "preg_replace" mit "str_replace" ersetzt.

Hier gabe es nur ein Sicherheitsupdate:
  • src/XF/Str/Formatter.php
    • Today, we are releasing XenForo 2.0.8 to address a potential security vulnerability. We recommend that all customers running XenForo 2.0 upgrade to 2.0.8 or use the attached patch file as soon as possible.

      The issue is a XSS vulnerability. XSS (Cross Site Scripting) issues allow scripts and malicious HTML to be injected into the page, potentially allowing data theft or unauthenticated access.

      Specifically, the issue relates to specially crafted text entered into messages and output using the structured text system (used in profile posts and comments).
      PHP:
          public function autoLinkStructuredText($string)
          {
              $string = $this->moveHtmlToPlaceholders($string, $restorePlaceholders);
      
              $string = preg_replace_callback(
                  '#(?<=[^[email protected]]|^)(https?://|www\.)[^\s"<>{}`]+#i',
                  function (array $match)
                  {
                      $url = $this->removeHtmlPlaceholders($match[0]);
                      $url = htmlspecialchars_decode($url, ENT_QUOTES);
                      $link = $this->prepareAutoLinkedUrl($url);
      
                      $linkInfo = $this->getLinkClassTarget($link['url']);
                      $classAttr = $linkInfo['class'] ? " class=\"$linkInfo[class]\"" : '';
                      $targetAttr = $linkInfo['target'] ? " target=\"$linkInfo[target]\"" : '';
                      $noFollowAttr = $linkInfo['trusted'] ? '' : ' rel="nofollow"';
      
                      return '<a href="' . htmlspecialchars($link['url'], ENT_QUOTES, 'utf-8')
                          . "\"{$classAttr}{$noFollowAttr}{$targetAttr}>"
                          . htmlspecialchars($link['linkText'], ENT_QUOTES, 'utf-8') . '</a>'
                          . htmlspecialchars($link['suffixText'], ENT_QUOTES, 'utf-8');
                  },
                  $string
              );
      
              $string = $restorePlaceholders($string);
      
              return $string;
          }
      htmlspecialchars_decode und htmlspecialchars Funktionen eingebunden.
 
T S
HwlHwl

HwlHwl

Aktiver Benutzer
Plus Mitglied
  • notice.js (leider noch nicht herausgefunden, auf welcher Seite diese JavaScript Datei eingebunden wird)
    • hier wurde start: function() geaendert, der Code sieht nun wie folgt aus
      JavaScript:
              start: function()
              {
                  var self = this,
                      $notices = this.$notices,
                      noticeType = this.options.type;
      
                  if (noticeType == 'floating')
                  {
                      $notices.each(function()
                      {
                          var $notice = $(this),
                              displayDuration = $notice.data('display-duration'),
                              delayDuration = $notice.data('delay-duration'),
                              autoDismiss = $notice.data('auto-dismiss');
      
                          if (delayDuration)
                          {
                              setTimeout(function()
                              {
                                  self.displayFloating($notice, XF.config.speed.normal, displayDuration, autoDismiss);
                              }, delayDuration);
                          }
                          else
                          {
                              self.displayFloating($notice, XF.config.speed.fast, displayDuration, autoDismiss);
                          }
                      });
                  }
                  else if (noticeType == 'scrolling' && this.$notices.length > 1)
                  {
                      if ($.fn.lightSlider)
                      {
                          if (!Modernizr.flexbox)
                          {
                              var height = 0;
                              this.$notices.each(function()
                              {
                                  height = Math.max($(this).outerHeight(), height);
                              });
                              this.$notices.css('height', height);
                          }
      
                          this.slider = this.$target.lightSlider({
                              item: 1,
                              addClass: 'noticeScrollContainer',
                              slideMargin: 0,
                              galleryMargin: 0,
                              controls: false,
                              auto: true,
                              pause: this.options.scrollInterval * 1000,
                              speed: Modernizr.flexbox ? 400 : 0, // older IE has some animation issues
                              pauseOnHover: true,
                              loop: true,
                              rtl: XF.isRtl(),
                              enableDrag: false
                          });
      
                          $(window).on('resize', XF.proxy(this, 'refreshSlider'));
                      }
                      else
                      {
                          console.error('Lightslider must be loaded first.');
                      }
                  }
                  else
                  {
                      var $cookieNotice = $notices.closest('.js-notice[data-notice-id="-1"]');
      
                      if ($cookieNotice.length)
                      {
                          var height = $cookieNotice.height();
                          $(document).find('footer').css('margin-bottom', height);
                      }
                  }
              },
      Der
      JavaScript:
                  else
                  {
                      var $cookieNotice = $notices.closest('.js-notice[data-notice-id="-1"]');
      
                      if ($cookieNotice.length)
                      {
                          var height = $cookieNotice.height();
                          $(document).find('footer').css('margin-bottom', height);
                      }
                  }
      kam hinzu.
    • hier wurde start: function() geaendert, der Code sieht nun wie folgt aus
      JavaScript:
              removeNotice: function($notice)
              {
                  var self = this;
      
                  if (this.slider)
                  {
                      var total = this.$notices.length,
                          current = this.slider.getCurrentSlideCount(),
                          removeSlide = function()
                          {
                              $notice.remove();
                              self.updateNoticeList();
                              if (self.handleNoticeListChange())
                              {
                                  self.refreshSlider();
                                  self.slider.goToSlide(current);
                              }
                          };
      
                      if (total > 1)
                      {
                          if (current >= self.slider.getTotalSlideCount())
                          {
                              current = 1;
                          }
                          this.slider.goToNextSlide();
                          setTimeout(removeSlide, 500);
                      }
                      else
                      {
                          removeSlide();
                      }
                  }
                  else
                  {
                      $notice.xfFadeUp(XF.config.speed.fast, function()
                      {
                          if ($notice.data('notice-id') == '-1')
                          {
                              $(document).find('footer').css('margin-bottom', '');
                          }
                          $notice.remove();
                          self.updateNoticeList();
                          self.handleNoticeListChange();
                      });
                  }
              },
      Der
      JavaScript:
                          if ($notice.data('notice-id') == '-1')
                          {
                              $(document).find('footer').css('margin-bottom', '');
                          }
      kam hinzu.

    A summary of the changes in this release are as follows:

    Ensure the server side validates the privacy policy/terms and rules acceptance form (XF1 and XF2)
    Ensure certain fields output in the data portability exports are escaped (XF1 and XF2)
    Some small phrase adjustments (XF1 and XF2)
    Attempt to ensure the new cookie notice does not hide the footer links (XF1 and XF2)
    Ensure data portability features are only available to admins with the "Manage users" permission (XF1 and XF2)
    If the geoLocationUrl option is empty, no longer attempt to link a user's location (XF1 and XF2)
    If a user's location is linked, ensure that noreferrer and nofollow values are set (XF1 and XF2)
    Implement the ability to add an unsubscribe link to admin sent emails (XF1)
    Fix issues with selecting the new bottom fixer notice type (XF1)
    Fix for invalid CSS (XF1)
    Fix broken register_twitter template (XF1)
    Not GDPR related, but fix issue with toggling Q&A CAPTCHA questions (XF2)
    Use consistent variables for displaying privacy policy and terms and rules URLs on help pages (XF2)
    Ensure default privacy policy and terms and rules help pages are redirected appropriately when custom URLs are set (XF2)
    Do not display protected change log entries (like policy acceptance dates) for potential spammers in the user approval queue (XF2)

  • Es kam Privacy_policy in den Hilfeseiten hinzu
    • PolicyAcceptance kam hinzu

    A summary of the changes in this release for both XF1 and XF2:

    New notice position "Fixed" which fixes notices to the bottom of the page.
    GDPR: New default privacy policy help page
    GDPR: Ability to mark change log entries as "protected" so they will never be pruned
    GDPR: New fields to log the date and time that the privacy policy / terms and rules were last accepted (logged as protected in the user change log)
    GDPR: Now possible to force all members to accept privacy policy / terms and rules before continuing using the site
    GDPR: More detailed cookie notice which has to be explicitly acknowledged. It will appear in the new "Fixed" notice position.
    GDPR: Updated default Cookie help page text.
    GDPR: When deleting a user, give an option to change their name in order to anonymize content they have created.
    GDPR: Functionality to allow very basic personal details to be exported in XML format on one forum and imported into another to comply with data portability.
    GDPR: Require explict consent when registering and only log acceptance if consent was given.
    GDPR: New option to show "Require site email" option to be filled in during registration (with consent date being logged if appropriate).
    GPDR: Add a new option to anonymise IP addresses for Google Analytics.
 
T S
HwlHwl

HwlHwl

Aktiver Benutzer
Plus Mitglied
  • core-compiled.js
    • Nach dem folgenden Code suchen
      JavaScript:
       var f=g?"addClass":"removeClass",h=g?"removeClass":"addClass";g=b(c,l,g?!0:!1);var
      • Seit dieser Version wird hier die Varibale "q" definiert
        JavaScript:
         var q=c[0]
        vorher war es die Variable "k"
    • Nach dem folgenden Code suchen
      JavaScript:
      null,a.onerror=null,l.appendChild(a),c()}var f=h.scripts[0],g="async"in f;f=f.readyState;var l=h.head,p=0,m=[],
      • Seit dieser Version wird im nachfolgenden Code die Variable "r" verwendet
        JavaScript:
        r;for(r in a)if(a.hasOwnProperty(r))
        , vorher war es die Variable "t"
    • Nach dem folgenden Code suchen
      JavaScript:
      0);d(h).trigger("xf:reinit",[a])},getDefaultFormData:function(a,b,c,e){var f;b&&b.length&&b.attr("name")&&(f=b.attr("name"));c&&"multipart/form-data"===a.attr("enctype")&&console.error("JSON serialized forms do not support the file upload-style enctype.");if(k.FormData&&!c)
      • Seit dieser Version wird im nachfolgenden Code die Variable "g" verwendet
        JavaScript:
        {var g=new FormData
        in den vorherigen Versionen "e"
    • Nach dem folgenden Code suchen
      JavaScript:
      +(b.secure?"; secure":"")+";
      • Diesen Code gibt es erst ab dieser Version
    • Nach dem folgenden Code suchen
      JavaScript:
      this.options.optional||console.error("Could not find the disabler control container");var a=this.$target,b=a.closest("form");if(b.length)b.on("reset",XF.proxy(this,"formReset"));if(a.is(":radio")){var f=b,d=a.attr("name");b.length||(f=c(e.body));f.on("click",'input:radio[name="'+d+'"]',XF.proxy(this,"click"))}else a.click(XF.proxy(this,"click"));a.on("control:enabled control:disabled",XF.proxy(this,"recalculateAfter"));
      • Seit dieser Version wird der folgenden Code verwendet
        JavaScript:
        this.$container.one("editor:init",XF.proxy(this,"recalculateAfter"));
        , vorher war es
        JavaScript:
        this.recalculate(!0)},click:function(a,b){this.recalculateAfter(!1,b&&b.triggered)

  • special_characters.min.js
    • Seit diesem Release ist hier die Version froala_editor v2.8.1 eingebunden, vorher froala_editor v2.7.6

  • Seit dieser Version wird die Groesse vm Avatar nicht mehr auf Hoehe und Breite geprueft, vorher erhielt man ggf. die folgende Meldung:
    • Please provide an image whose longer side is no more than twice the length of its shorter side.

  • core-compiled.js
    • Nach dem folgenden Code suchen
      JavaScript:
      isIE:function(){var a=navigator.userAgent;return 0<a.indexOf("MSIE ")||0<a.indexOf("Trident/")},
      • Diesen Code gibt es erst ab dieser Version
    • Nach dem folgenden Code suchen
      JavaScript:
      {switch(a.which){case 27:XF.MenuWatcher.closeAll();
      • Seit dieser Version wird der folgenden Code verwendet
        JavaScript:
        XF.hideTooltips();
        vorher
        JavaScript:
        XF.hideOverlays();XF.hideTooltips();
    • Nach dem folgenden Code suchen
      JavaScript:
      if(!this.processing){this.processing=!0;a=this.$target.attr("href");var b=this;XF.ajax("POST",a,{},
      • Seit dieser Version wird der folgenden Code verwendet
        JavaScript:
        XF.proxy
        vorher
        JavaScript:
        c.proxy
    • Nach der Sektion * XenForo form.min.js suchen
      • Hier werden nun die Variablen "c" und "e"
        JavaScript:
        function(c,h,e)
        verwendet, vorher waren es "b" und "f"
        JavaScript:
        function(b,h,f)
    • Nach der Sektion * XenForo structure.min.js suchen
      • Hier werden nun die Variablen "f" und "l"
        JavaScript:
        function(d,f,l)
        verwendet, vorher waren es "g" und "k"
        JavaScript:
        function(d,g,k)
    • Nach der Sektion * XenForo tooltip.min.js suchen
      • Hier wird nun die Variablen "d"
        JavaScript:
        function(d,l,e)
        verwendet, vorher war es "c"
        JavaScript:
        function(c,l,e)

  • inline_mod.js
    • Nach dem folgenden Code suchen
      JavaScript:
      this.$target.on('click', this.options.toggle,
      • Seit dieser Version wird der folgenden Code verwendet
        JavaScript:
        XF.proxy(this, 'onToggle'));
        vorher
        JavaScript:
        $.proxy(this, 'onToggle'));

  • core-compiled.js
    • Nach der Sektion * XenForo form.min.js suchen
      • Copyright ist seit dieser Version 2018 vorher 2017
      • Hier werden nun die Variablen "k" und "h"
        JavaScript:
        function(d,k,h)
        verwendet, vorher waren es "l" und "k"
        JavaScript:
        function(d,l,k)
    • Nach der Sektion * XenForo action.min.js suchen
      • Copyright ist seit dieser Version 2018 vorher 2017
    • Nach dem folgenden Code suchen
      JavaScript:
      d("body");if("relative"==a.css("position")){var b=(-1*parseInt(a.css("top"),10)||0)+g.scrollY;a.css({position:"",top:"","margin-bottom":""});d("html").css("overflow","");g.scrollTo(0,b)}this.pauseRepositioning=!1;this.isOpen()&&this.reposition()}},keyboardEvent:function(a)
      • Seit dieser Version wird der folgenden Code verwendet
        JavaScript:
        {if(("ArrowUp"==a.key||"ArrowDown"==a.key)&&XF.Keyboard.isShortcutAllowed(k.activeElement)&&d(k.activeElement).closest(".menu")
        vorher
        JavaScript:
        {if((38==a.which||40==a.which)&&"A"==k.activeElement.tagName)

  • inline_mod.js
    • Nach der Sektion * XenForo inline_mod.js suchen
      • Copyright ist seit dieser Version 2018 vorher 2017

  • preamble.min.js
    • Nach der Sektion * XenForo preamble.min.js suchen
      • Copyright ist seit dieser Version 2018 vorher 2017

  • core-compiled.js
    • Nach dem folgenden Code suchen
      JavaScript:
      e.clientWidth,h:e.offsetHeight-e.clientHeight};c.remove();a||(XF._measureScrollBar=e);return e[b]}return XF._measureScrollBar[b]},windowHeight:function(){return XF.browser.ios||XF.browser.android?l.innerHeight:d(l).height()},pageLoadScrollFix:function(){if(l.location.hash){var a=!1
      • Hier wird seit dieser Version der folgende Code verwendet
        JavaScript:
        b=function(){if(!a){
        vorher
        JavaScript:
        ;setTimeout(function(){d(l).one("scroll",function(b){
    • Nach dem folgenden Code suchen
      JavaScript:
      "xf:action-start":c,ajaxStop:e,"xf:action-stop":e})},show:c,hide:e}}(),XF.DynamicDate=function(){var a,b,c,e,f,g,h,n=!1,m,t=function(){m=setInterval(function(){u(k)},2E4)},
      • Hier wird seit dieser Version der folgende Code verwendet
        JavaScript:
        u=function(k)
        vorher
        JavaScript:
        u=function(l)
    • Nach der Sektion " * XenForo structure.min.js" suchen
      • Nach dem folgenden Code suchen
        JavaScript:
        var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.findInternal=
        • Hier wird nun die Variablen "g"
          JavaScript:
          function(d,g,k)
          verwendet, vorher war es "f"
          JavaScript:
          function(d,f,k)
 

Terror

Foren Guru
Elite Mitglied
um herauszufinden welche addons im einsatz sind, sieh dir einfach die namen der templates im frontend an, geht sogar als gast. anhand derer bzw den prefixes der coder erkennt man für gewöhnlich sofort um was es sich handelt, vorausgesetzt man hat einen überblick, was so alles auf dem markt ist. wenn dabei nichts klingelt, ist es meist etwas selbstgestricktes oder exklusives.
 
Top