home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 4 / AACD04.ISO / AACD / Online / AWebScripts / AddHL.awebrx next >
Text File  |  1999-11-25  |  4KB  |  260 lines

  1. /*    $VER: AddHL.awebrx 1.2 (17.11.1999) by Jorma Oksanen <tenu@sci.fi>
  2.  
  3.     Adds URL to hotlist, first checking for duplicate entries
  4.  
  5.  
  6.     Usage:
  7.         Add        Adds an unassigned entry
  8.         Add to Group    Adds entry to a specified group
  9.         Edit name    Allows editing the entry name
  10.         Update        Updates old entry with the new name
  11.         Delete        Deletes old entries
  12.         Cancel        Cancels hotlist operation
  13.  
  14.         'Add to group' can create a new group, just enter
  15.         the name of the new group into the text field.
  16.         Example:
  17.         foo/bar/baz will add foo/bar/baz/entry, creating all
  18.         necessary groups.
  19.  
  20.         'Update' can't be performed on multiple entries, because
  21.         AWeb deletes identical entries.
  22.  
  23.         'Edit name' and 'Delete' loop back to the requester.
  24.  
  25.     Setup:
  26.         GUI/Popup/Link
  27.  
  28.         AddHL    RUN AWeb3:Plugins/AddHL.awebrx %u
  29.  
  30.  
  31.         GUI/Keys
  32.  
  33.         [key]    RUN AWeb3:Plugins/AddHL.awebrx
  34.  
  35.  
  36.         If you want to replace the navigation button:
  37.  
  38.         GUI/Navigation/Add to hotlist
  39.  
  40.         RUN AWeb3:Plugins/AddHL.awebrx
  41. */
  42.  
  43. options results
  44.  
  45. parse arg '"' u '"'
  46. if u~='' then t=u
  47. else do
  48.  'get title var t'
  49.  'get url var u'
  50. end
  51.  
  52. if right(u,1)='/' then u2=left(u,length(u)-1)
  53. else u2=u'/'
  54.  
  55. 'get hotlist stem hl'
  56.  
  57. /* duplicate check and group scan */
  58.  
  59. d=0; g=0
  60. do i=1 to hl.0
  61.  if (hl.i.url=u)|(hl.i.url=u2) then do
  62.   d=d+1
  63.   dup.d=i
  64.  end
  65.  if hl.i.group then do
  66.   g=g+1
  67.   grp.g=i
  68.  end
  69. end
  70. g.0=g
  71.  
  72.  
  73. loop:
  74.  
  75. if d=0 then body2=''
  76. else do
  77.  body2="URL already in hotlist as*N *N"
  78.  do i=1 to d
  79.  
  80.   j=dup.i
  81.   k=hl.j.owner
  82.   n=hl.j.title'*N'
  83.  
  84.   if k=0 then n='unassigned/'n
  85.   else do
  86.    do until k=0
  87.     n=hl.k.title'/'n
  88.     k=hl.k.owner
  89.    end
  90.   end
  91.  
  92.   body2=body2||n
  93.  end
  94. end
  95.  
  96. upd=99
  97. del=99
  98.  
  99. ggs='_Add|Add to _Group|_Edit name'
  100. select
  101.  when d=1 then do
  102.   ggs=ggs'|_Update|_Delete'
  103.   upd=4
  104.   del=5
  105.   end
  106.  
  107.  when d>1 then do
  108.   ggs=ggs'|_Delete'
  109.   del=4
  110.  end
  111.  
  112.  otherwise nop
  113. end
  114. ggs=ggs'|_Cancel'
  115.  
  116.  
  117. do forever
  118.  
  119.  body1='Name: 't'*NURL:  'u'*N *N'
  120.  
  121.  'request "AddHotlist" "'body1||body2'" "'ggs'"'
  122.  
  123.  if rc=5 then exit 0            /* Cancel */
  124.  
  125.  select
  126.   when result=1 then do            /* Add */
  127.  
  128.    'addhotlist "'u'" "'t'"'
  129.  
  130.    exit 0
  131.   end
  132.  
  133.   when result=2 then do            /* Add to Group */
  134.  
  135.    body='A) unassigned*N'
  136.    do i=1 to min(g,25)
  137.     j=grp.i
  138.     k=hl.j.owner
  139.     n=hl.j.title'*N'
  140.     do while k>0
  141.      n=hl.k.title'/'n
  142.      k=hl.k.owner
  143.     end
  144.     body=body||d2c(i+65)')' n
  145.    end
  146.  
  147.    'requeststring "Select group" "'body'" "Ok|Cancel"'
  148.    if (rc=5)|(result='') then exit 0
  149.  
  150.    grpname=result
  151.    i=upper(result)
  152.  
  153.    if i='A' then do
  154.     'addhotlist "'u'" "'t'"'
  155.     exit 0
  156.    end
  157.  
  158.    if length(i)=1 then do
  159.     i=c2d(i)-65; if i>min(g,25) then exit 0
  160.     i=grp.i
  161.    end
  162.  
  163.    else i=creategrp(grpname)
  164.  
  165.    j=hl.0+1
  166.    hl.j.group=0
  167.    hl.j.title=t
  168.    hl.j.url=u
  169.    hl.j.owner=i
  170.  
  171.    hl.0=j
  172.    'hotlist set hl'
  173.  
  174.    exit 0
  175.   end
  176.  
  177.   when result=3 then do            /* Edit name */
  178.  
  179.    'requeststring "AddHotList" "Enter new name for URL" "Ok|Cancel" "'t'"'
  180.    if rc=5 then exit
  181.    t=result
  182.  
  183.   end
  184.  
  185.   when result=upd then do        /* Update */
  186.  
  187.    i=dup.1
  188.    hl.i.title=t
  189.    'hotlist set hl'
  190.  
  191.    exit 0
  192.   end
  193.  
  194.   when result=del then do        /* Delete */
  195.  
  196.    k=hl.0
  197.    do i=d to 1 by -1
  198.     j=dup.i
  199.  
  200.     if i~=k then do
  201.      hl.j.group=hl.k.group
  202.      hl.j.title=hl.k.title
  203.      hl.j.url=hl.k.url
  204.      hl.j.owner=hl.k.owner
  205.     end
  206.  
  207.     k=k-1
  208.    end
  209.  
  210.    hl.0=k
  211.    'hotlist set hl'
  212.    d=0
  213.    signal loop
  214.   end
  215.  
  216.  end
  217. end
  218.  
  219. exit 0
  220.  
  221. creategrp: procedure expose hl. grp.
  222.  
  223. parse arg grpname
  224. p=0; g=grp.0
  225.  
  226. do until grpname=''
  227.  
  228.  parse var grpname t '/' grpname
  229.  
  230.  i=searchgrp(t,p)
  231.  if i=0 then do
  232.  
  233.   i=hl.0+1
  234.   hl.i.group=1
  235.   hl.i.title=t
  236.   hl.i.url=''
  237.   hl.i.owner=p
  238.   hl.0=i
  239.  
  240.   g=g+1
  241.   grp.g=i
  242.  end
  243.  
  244.  p=i
  245. end
  246.  
  247. grp.0=g
  248.  
  249. return i
  250.  
  251.  
  252. searchgrp: procedure expose hl. grp.
  253.  
  254. if grp.0=0 then return 0
  255. do i=1 to grp.0
  256.  j=grp.i
  257.  if hl.j.title=arg(1) then if hl.j.owner=arg(2) then return j
  258. end
  259. return 0
  260.