All pastes #996255 Raw Edit

Access Dialog

public text v1 · immutable
#996255 ·published 2008-04-24 20:37 UTC
rendered paste body
menu Channel {
  Check Access: CheckAccess
}

alias CheckAccess {
  CheckAccess.GetData
}

#CheckAccess off
on ^*:NOTICE:*:*:{
  if ($nick == ChanServ) {
    haltdef
    if ($1- == Access denied.) {
      echo 4 -a Your access level for this channel is not high enough.
      .timer 1 5 .disable #CheckAccess
    }
    elseif ((*access list* !iswm $1-) && (*Num* !iswm $1-) && (*Lev* !iswm $1-)) {
      write AccessChecker_temp.txt $regsubex($1-,/ *\d+ +(-?\d+ +.+)/,\1)
    }
    elseif (*End of access list* iswm $1-) {
      CheckAccess.HandleEnd
    }
    elseif ($regex($1-,/Access list for (.+):/i)) {
      set %CheckAccess.channel $regml(1)
      echo 3 -a Access list for $regml(1) is being processed...
    }

  }
}
#CheckAccess end

alias -l CheckAccess.HandleEnd {
  CheckAccess.Sortfile
  if ($dialog(CheckAccess.dialog) == $null) {
    CheckAccess.OpenDialog
  }
  else {
    loadbuf $lines(AccessChecker_temp2.txt) -or CheckAccess.dialog 1 AccessChecker_temp_sorted.txt
    did -ra CheckAccess.dialog 8 Entries: $lines(AccessChecker_temp2.txt)
  }
  .disable #CheckAccess
}

alias -l CheckAccess.GetData {
  .enable #CheckAccess
  .remove AccessChecker_temp.txt
  .remove AccessChecker_temp_sorted.txt
  .msg chanserv access $iif(%CheckAccess.channel,$v1,#) list
}

alias -l CheckAccess.Sortfile {
  .remove AccessChecker_temp_sorted.txt
  filter -ffa AccessChecker_temp.txt AccessChecker_temp_sorted.txt $iif($1 == Name,CheckAccess.Sortfile.ByName,CheckAccess.Sortfile.ByAccess)
}

alias -l CheckAccess.Sortfile.ByAccess {
  var %line1 = $regsubex($1,/(-?\d+) .*/,\1)
  var %line2 = $regsubex($2,/(-?\d+) .*/,\1)
  if (%line1 < %line2) {
    return 1
  }
  elseif (%line1 == %line2) {
    var %line1text = $regsubex($1,/-?\d+ (.*)/,\1)
    var %line2text = $regsubex($2,/-?\d+ (.*)/,\1)
    if (%line1text < %line2text) {
      return -1
    }
    else {
      return 1
    }
  }
  else {
    return -1
  }
}

alias -l CheckAccess.Sortfile.ByName {
  var %line1text = $regsubex($1,/-?\d+ (.*)/,\1)
  var %line2text = $regsubex($2,/-?\d+ (.*)/,\1)
  if (%line1text < %line2text) {
    return -1
  }
  else {
    return 1
  }
}


alias -l CheckAccess.OpenDialog {
  dialog -md CheckAccess.dialog CheckAccess.dialog
}

dialog -l CheckAccess.dialog {
  title Check Access - %CheckAccess.channel
  size -1 -1 205 210
  option dbu
  list 1, 5 10 110 190
  button "Update", 2, 130 10 70 20
  button "Sort by Name", 3, 130 35 70 20
  button "Sort by Access", 4, 130 60 70 20
  button "Add", 5, 130 85 70 20
  button "Edit", 6, 130 110 70 20
  button "Remove", 7, 130 135 70 20
  text "Entries:", 8, 5 200 40 10
}

on *:DIALOG:CheckAccess.dialog:init:0:{
  loadbuf $lines(AccessChecker_temp2.txt) -or $dname 1 AccessChecker_temp_sorted.txt
  did -ra CheckAccess.dialog 8 Entries: $lines(AccessChecker_temp_sorted.txt)
}

on *:DIALOG:CheckAccess.dialog:sclick:2:{
  CheckAccess.GetData
}

on *:DIALOG:CheckAccess.dialog:sclick:3:{
  CheckAccess.Sortfile Name
  loadbuf $lines(AccessChecker_temp_sorted.txt) -or $dname 1 AccessChecker_temp_sorted.txt
}

on *:DIALOG:CheckAccess.dialog:sclick:4:{
  CheckAccess.Sortfile
  loadbuf $lines(AccessChecker_temp_sorted.txt) -or $dname 1 AccessChecker_temp_sorted.txt
}

on *:DIALOG:CheckAccess.dialog:sclick:5:{
  cs access %CheckAccess.channel add $$?="Nick?" $$?="Access?"
  CheckAccess.GetData
  dialog -v $dname
}

on *:DIALOG:CheckAccess.dialog:sclick:6:{
  if ($did(1).seltext) {
    cs access %CheckAccess.channel add $regsubex($v1,/-?\d+ (.*)/,\1) $$?="New Access Level?"
    CheckAccess.GetData
  }
  else {
    noop $input(You did not select any name.,ow,Selection Empty)
  }
  dialog -v $dname
}

on *:DIALOG:CheckAccess.dialog:sclick:7:{
  if ($did(1).seltext && $input(Are you sure you want to delete $did(1).seltext $+ ?,w,Confirm)) {
    cs access %CheckAccess.channel del $regsubex($did(1).seltext,/-?\d+ (.*)/,\1)
    CheckAccess.GetData
  }
  else {
    noop $input(You did not select any name.,ow,Selection Empty)
  }
  dialog -v $dname
}

on *:DIALOG:CheckAccess.dialog:close:*:{
  .remove AccessChecker_temp.txt
  .remove AccessChecker_temp_sorted.txt
  unset %CheckAccess.channel
}