The forum of the forums

Would you like to react to this message? Create an account in a few clicks or log in to continue.
The forum of the forums

    Custom Thread Prefix Button with a dropdown selection

    avatar
    Guest
    Guest


    Custom Thread Prefix Button with a dropdown selection Empty Custom Thread Prefix Button with a dropdown selection

    Post by Guest 29/1/2017, 03:14

    Technical Details


    Forum version : #PunBB
    Position : Founder
    Concerned browser(s) : Google Chrome
    Who the problem concerns : Yourself
    Forum link : http://halvmane.forumotion.com/

    Description of problem

    I'm trying to turn this code here:

    Code:
    $(function(){
      var prefix = [
        'NEWS',
        'ANNOUNCEMENT',
        'UPDATE',
        'GUIDE',
        'TUTORIAL',
        'BOUNTY',
        'HELP WANTED',
        'RECRUITING',
        'LOOKING FOR',
      ],
      a = document.getElementsByTagName('A'), i = 0, j = a.length, l = prefix.length;
      for (; i<j; i++) for (var k = 0; k<l; k++) RegExp('^\\['+prefix[k]+'\\]').test(a[i].innerHTML) && (a[i].innerHTML = a[i].innerHTML.replace(RegExp('^\\['+prefix[k]+'\\]'), '<span class="topic-prefix prefix-'+prefix[k].toLowerCase()+'">'+prefix[k]+'</span>'));
    });

    But I want to add the drop-down feature from this code:

    Code:
    var prefixes = ["PENDING", "ACCEPTED", "DENIED", "PENDING ADMIN", "PENDING INV", "APPROVED"];
    var _pm = false;
     
    var chk = false;
    function toMenu(a) {
      var htmlpre = '<select style="margin-right:5px" id="prefix" size="1"><option value="">(None)</option>';
      for (i in a)
      htmlpre += '<option value="' + a[i] + '">' + a[i] + '</option>';
      htmlpre += '</select>';
      return htmlpre;
    }
     
    function checkpre(ar, input) {
      for (i in ar) {
          var p = new RegExp("" + ar[i], "g");
          var title = input.substr(0, input.indexOf(']'));
          if (p.test(title)) return ar[i];
      }
      return "";
    }
    $(function () {
      if (_pm) chk = /\privmsg/.test(location.href);
      if (/\/post/.test(location.href) || chk) {
          $(toMenu(prefixes)).insertBefore("input[name='subject'][type='text']");
          var mw = $("#prefix").width() + 5;
          $("input[name='subject']").css("width", $("input[name='subject']").width() - mw);
          var t = $("[name='subject']").val();
          var cur = checkpre(prefixes, t);
          if (cur != "") {
            $("[value=" + cur + "]").attr("selected", "selected");
            $("input[name='subject']").val(t.replace('[' + cur + ']', '').trim())
          }
          $("input[name='post']").click(function () {
            var sub = $("input[name='subject']").val().trim();
            if (sub != "" && $("#prefix").val() != "") $("input[name='subject']").val("[" + $("#prefix").val() + "] " + sub)
          })
      }
    });

    Any help would be appreciated! Also is there a way to make all of these or a few group/role specific?
    avatar
    Guest
    Guest


    Custom Thread Prefix Button with a dropdown selection Empty Re: Custom Thread Prefix Button with a dropdown selection

    Post by Guest 3/2/2017, 21:07

    Lunaus wrote:

    Technical Details


    Forum version : #PunBB
    Position : Founder
    Concerned browser(s) : Google Chrome
    Who the problem concerns : Yourself
    Forum link : http://halvmane.forumotion.com/

    Description of problem

    I'm trying to turn this code here:

    Code:
    $(function(){
      var prefix = [
        'NEWS',
        'ANNOUNCEMENT',
        'UPDATE',
        'GUIDE',
        'TUTORIAL',
        'BOUNTY',
        'HELP WANTED',
        'RECRUITING',
        'LOOKING FOR',
      ],
      a = document.getElementsByTagName('A'), i = 0, j = a.length, l = prefix.length;
      for (; i<j; i++) for (var k = 0; k<l; k++) RegExp('^\\['+prefix[k]+'\\]').test(a[i].innerHTML) && (a[i].innerHTML = a[i].innerHTML.replace(RegExp('^\\['+prefix[k]+'\\]'), '<span class="topic-prefix prefix-'+prefix[k].toLowerCase()+'">'+prefix[k]+'</span>'));
    });

    But I want to add the drop-down feature from this code:

    Code:
    var prefixes = ["PENDING", "ACCEPTED", "DENIED", "PENDING ADMIN", "PENDING INV", "APPROVED"];
    var _pm = false;
     
    var chk = false;
    function toMenu(a) {
      var htmlpre = '<select style="margin-right:5px" id="prefix" size="1"><option value="">(None)</option>';
      for (i in a)
      htmlpre += '<option value="' + a[i] + '">' + a[i] + '</option>';
      htmlpre += '</select>';
      return htmlpre;
    }
     
    function checkpre(ar, input) {
      for (i in ar) {
          var p = new RegExp("" + ar[i], "g");
          var title = input.substr(0, input.indexOf(']'));
          if (p.test(title)) return ar[i];
      }
      return "";
    }
    $(function () {
      if (_pm) chk = /\privmsg/.test(location.href);
      if (/\/post/.test(location.href) || chk) {
          $(toMenu(prefixes)).insertBefore("input[name='subject'][type='text']");
          var mw = $("#prefix").width() + 5;
          $("input[name='subject']").css("width", $("input[name='subject']").width() - mw);
          var t = $("[name='subject']").val();
          var cur = checkpre(prefixes, t);
          if (cur != "") {
            $("[value=" + cur + "]").attr("selected", "selected");
            $("input[name='subject']").val(t.replace('[' + cur + ']', '').trim())
          }
          $("input[name='post']").click(function () {
            var sub = $("input[name='subject']").val().trim();
            if (sub != "" && $("#prefix").val() != "") $("input[name='subject']").val("[" + $("#prefix").val() + "] " + sub)
          })
      }
    });

    Any help would be appreciated! Also is there a way to make all of these or a few group/role specific?

    Hello have you tried changing the bottom code to this?

    Code:
    var prefixes = ["NEWS", "ANNOUNCEMENT", "UPDATE", "GUIDE", "TUTORIAL", "BOUNTY", "HELP WANTED", "RECRUITING", "LOOKING FOR"];
    var _pm = false;
     
    var chk = false;
    function toMenu(a) {
      var htmlpre = '<select style="margin-right:5px" id="prefix" size="1"><option value="">(None)</option>';
      for (i in a)
      htmlpre += '<option value="' + a[i] + '">' + a[i] + '</option>';
      htmlpre += '</select>';
      return htmlpre;
    }
     
    function checkpre(ar, input) {
      for (i in ar) {
          var p = new RegExp("" + ar[i], "g");
          var title = input.substr(0, input.indexOf(']'));
          if (p.test(title)) return ar[i];
      }
      return "";
    }
    $(function () {
      if (_pm) chk = /\privmsg/.test(location.href);
      if (/\/post/.test(location.href) || chk) {
          $(toMenu(prefixes)).insertBefore("input[name='subject'][type='text']");
          var mw = $("#prefix").width() + 5;
          $("input[name='subject']").css("width", $("input[name='subject']").width() - mw);
          var t = $("[name='subject']").val();
          var cur = checkpre(prefixes, t);
          if (cur != "") {
            $("[value=" + cur + "]").attr("selected", "selected");
            $("input[name='subject']").val(t.replace('[' + cur + ']', '').trim())
          }
          $("input[name='post']").click(function () {
            var sub = $("input[name='subject']").val().trim();
            if (sub != "" && $("#prefix").val() != "") $("input[name='subject']").val("[" + $("#prefix").val() + "] " + sub)
          })
      }
    });

    I simply added the names of the prefixes that you wanted to have into the bottom code since you wanted something around that style.
    avatar
    Guest
    Guest


    Custom Thread Prefix Button with a dropdown selection Empty Re: Custom Thread Prefix Button with a dropdown selection

    Post by Guest 7/2/2017, 00:00

    Thanks for the reply! I'll check it out now, haven't had the time to check up on this thread. Smile

    EDIT: So, it works! But there's one issue, the drop down shows but it doesn't display differently when viewing the forums, as in there's no custom box around the text like in the first bit of code I provided.

      Current date/time is 23/9/2024, 11:19