Patch title: Release 90 bulk changes
Abstract:
File: /appli/pad/display.pli
Key:
    Removed line
    Added line
   
module "/pliant/protocol/http/server.pli"
module "/pliant/protocol/http/style/default.style"
module "/pliant/util/encoding/http.pli"
module "database.pli"
module "/pliant/admin/file.pli"



module "/pliant/protocol/http/server.pli"
module "/pliant/protocol/http/style/default.style"
module "/pliant/util/encoding/http.pli"
module "database.pli"
module "/pliant/admin/file.pli"



method page pad_list pad list
  arg_rw HtmlPage page ; arg_rw Data:PadPage pad ; arg Array
method page pad_list pad list rw
  arg_rw HtmlPage page ; arg_rw Data:PadPage pad ; arg Array:FileInfo list ; arg CBool rw
  implicit page
  implicit page
    table columns 3
    table columns (shunt rw 4 3)
      cell header [File]
      cell header [Date]
      cell header [Size]
      cell header [File]
      cell header [Date]
      cell header [Size]
      if rw
        cell header
          void
      var Intn total := 0
      for (var Int i) 0 list:size-1
        total += list:i:size
        cell
          link list:i:name keyof:pad+"/file/"+list:i:name no
        cell
          text (string list:i:datetime)
        cell
          text (smart_size list:i:size)
      var Intn total := 0
      for (var Int i) 0 list:size-1
        total += list:i:size
        cell
          link list:i:name keyof:pad+"/file/"+list:i:name no
        cell
          text (string list:i:datetime)
        cell
          text (smart_size list:i:size)
        if rw
          cell
            var Str filename := list:i:name
            note "delete"
              title "delete '"+filename+"'"
              [Are you sure that you want to delete] ; fixed (text " "+filename+" ") ; [file ? ]
              button "yes" noeol
                var Str path := pad path
                if path<>"" and (filename search "/" -1)=(-1)
                  file_delete path+filename
                goto_backward
              button "no"
                goto_backward
      if list:size>1
        cell header
          text (string list:size)+" files"
        cell header void
        cell header
          text smart_size:total
      if list:size>1
        cell header
          text (string list:size)+" files"
        cell header void
        cell header
          text smart_size:total
        if rw
          cell header
            void

method page pad_display pad
  arg_rw HtmlPage page ; arg_rw Data:PadPage pad
  implicit page
    title pad:title
    each c pad:content
      var Str t := c type
      if t="link"
        link (c:options option "title" Str c:content) c:cont
        if (c:options option "comment")
          fixed [  ] ; text (c:options option "comment" Str)
        eol
      eif t="inline"
        html "<iframe name=[dq]f"+keyof:c+"[dq] onload=[dq]t
        link c:content c:content no_extension
        html "[lf]</iframe>[lf]"
      eif t="header"
        eol
        bold (text c:content) ; eol
      eif t="para"
        para
          var Str all := c content
          if (all 0 2)=". " or (all search "[lf]. " -1)<>(-1
            var CBool li := false
            while all<>""
              if not (all eparse any:(var Str first) "[lf]" 
                first := all ; remain := ""
              if (first 0 2)=". "
                if not li
                  html "[lf]<ul>[lf]" ; li := true
                html "<li>"
                text (first 2 first:len)
                html "</li>[lf]"
              else
                if li
                  html "</ul>[lf]" ; li := false
                text first
              if remain<>"" and not li and (remain 0 2)<>". 
                eol
              all := remain
            if li
              html "</ul>[lf]"
          else
            text all
      eif t="fixed"
        para
          fixed
            text c:content
      eif t="table"
        html "[lf]<p>[lf]<table border=[dq]1[dq] cellpadding
        var Str all := c content
        while all<>""
          if not (all eparse any:(var Str line) "[lf]" any:(
            line := all ; remain := ""
          html "<tr>[lf]"
          while line<>""
            if not (line eparse any:(var Str ce) "|" any:(va
              ce := line ; re := ""

method page pad_display pad
  arg_rw HtmlPage page ; arg_rw Data:PadPage pad
  implicit page
    title pad:title
    each c pad:content
      var Str t := c type
      if t="link"
        link (c:options option "title" Str c:content) c:cont
        if (c:options option "comment")
          fixed [  ] ; text (c:options option "comment" Str)
        eol
      eif t="inline"
        html "<iframe name=[dq]f"+keyof:c+"[dq] onload=[dq]t
        link c:content c:content no_extension
        html "[lf]</iframe>[lf]"
      eif t="header"
        eol
        bold (text c:content) ; eol
      eif t="para"
        para
          var Str all := c content
          if (all 0 2)=". " or (all search "[lf]. " -1)<>(-1
            var CBool li := false
            while all<>""
              if not (all eparse any:(var Str first) "[lf]" 
                first := all ; remain := ""
              if (first 0 2)=". "
                if not li
                  html "[lf]<ul>[lf]" ; li := true
                html "<li>"
                text (first 2 first:len)
                html "</li>[lf]"
              else
                if li
                  html "</ul>[lf]" ; li := false
                text first
              if remain<>"" and not li and (remain 0 2)<>". 
                eol
              all := remain
            if li
              html "</ul>[lf]"
          else
            text all
      eif t="fixed"
        para
          fixed
            text c:content
      eif t="table"
        html "[lf]<p>[lf]<table border=[dq]1[dq] cellpadding
        var Str all := c content
        while all<>""
          if not (all eparse any:(var Str line) "[lf]" any:(
            line := all ; remain := ""
          html "<tr>[lf]"
          while line<>""
            if not (line eparse any:(var Str ce) "|" any:(va
              ce := line ; re := ""
            html "<td>" ; text ce ; html "</td>[lf]"
            html "<td>"
            if (ce parse any:(var Str label) "->" any:(var Str url))
              link label url no_extension
            else
              text ce
            html "</td>[lf]"
            line := re
          html "</tr>[lf]"
          all := remain
        html "</table>[lf]</p>[lf]"
      eif t="html"
        para
          html c:content
    if pad:planning:size>0
      para
        table columns 3
          cell header [Who]
          cell header [When]
          cell header [Duration]
          each pl pad:planning
            cell
              text pl:who
            cell
              text (string pl:when)
            cell
              text pl:duration
    var Array:FileInfo list := file_list pad:path standard+r
    if list:size>0
      para
            line := re
          html "</tr>[lf]"
          all := remain
        html "</table>[lf]</p>[lf]"
      eif t="html"
        para
          html c:content
    if pad:planning:size>0
      para
        table columns 3
          cell header [Who]
          cell header [When]
          cell header [Duration]
          each pl pad:planning
            cell
              text pl:who
            cell
              text (string pl:when)
            cell
              text pl:duration
    var Array:FileInfo list := file_list pad:path standard+r
    if list:size>0
      para
        pad_list pad list
        pad_list pad list false


method page pad_edit pad
  arg_rw HtmlPage page ; arg_rw Data:PadPage pad
  implicit page
    para
      box color (color hsl 60 50 75) round 5 header "Abstrac
        table columns 2 border 0
          cell [Title:]
          cell (input "" pad:title length 80)
          cell [Author:]
          cell (text pad:user)
          cell [Read requires right:]
          cell (input "" pad:read)
          cell [Write requires right:]
          cell (input "" pad:write)
    para
      box color (color hsl 240 20 75) round 5 header "Conten
        table columns 4
          cell header [Line ID]
          cell header [Type]
          cell header [Content]
          cell header [Options]
          each c pad:content
            cell
              text keyof:c
            cell
              select "" c:type
                option "" ""
                option "link" "link"
                option "inline" "inline"
                option "header" "header"
                option "para" "para"
                option "fixed" "fixed"
                option "table" "table"
                option "html" "html"
            cell
              if c:type="para" or c:type="fixed" or c:type="
                small
                  text (replace (c:content 0 40) "[lf]" " ")
                fixed [ ]
                button "edit"
                  text_input "" c:content columns 80 rows 25
                  button "record"
                    goto_backward
              else
                input "" c:content length 40
            cell
              input "" c:options length 40
        input "Line ID: " (var Str cid) noeol
        button "create" noeol
          pad:content create cid
          reload_page
        button "delete" noeol
          pad:content delete cid
          reload_page
    pad_express pad
    para
      box color (color hsl 120 20 75) round 5 header "Planni
        table columns 4
          cell header [Line ID]
          cell header [Who]
          cell header [When]
          cell header [Duration]
          each pl pad:planning
            cell
              text keyof:pl
            cell
              input "" pl:who length 20
            cell
              input "" pl:when length 20
            cell
              input "" pl:duration length 5
        input "Line ID: " (var Str pid) noeol
        button "create" noeol
          pad:planning create pid
          reload_page
        button "delete" noeol
          pad:planning delete pid
          reload_page
    para
      box color (color hsl 0 0 75) round 5 header "Storage"
        var Array:FileInfo list := file_list pad:path standa


method page pad_edit pad
  arg_rw HtmlPage page ; arg_rw Data:PadPage pad
  implicit page
    para
      box color (color hsl 60 50 75) round 5 header "Abstrac
        table columns 2 border 0
          cell [Title:]
          cell (input "" pad:title length 80)
          cell [Author:]
          cell (text pad:user)
          cell [Read requires right:]
          cell (input "" pad:read)
          cell [Write requires right:]
          cell (input "" pad:write)
    para
      box color (color hsl 240 20 75) round 5 header "Conten
        table columns 4
          cell header [Line ID]
          cell header [Type]
          cell header [Content]
          cell header [Options]
          each c pad:content
            cell
              text keyof:c
            cell
              select "" c:type
                option "" ""
                option "link" "link"
                option "inline" "inline"
                option "header" "header"
                option "para" "para"
                option "fixed" "fixed"
                option "table" "table"
                option "html" "html"
            cell
              if c:type="para" or c:type="fixed" or c:type="
                small
                  text (replace (c:content 0 40) "[lf]" " ")
                fixed [ ]
                button "edit"
                  text_input "" c:content columns 80 rows 25
                  button "record"
                    goto_backward
              else
                input "" c:content length 40
            cell
              input "" c:options length 40
        input "Line ID: " (var Str cid) noeol
        button "create" noeol
          pad:content create cid
          reload_page
        button "delete" noeol
          pad:content delete cid
          reload_page
    pad_express pad
    para
      box color (color hsl 120 20 75) round 5 header "Planni
        table columns 4
          cell header [Line ID]
          cell header [Who]
          cell header [When]
          cell header [Duration]
          each pl pad:planning
            cell
              text keyof:pl
            cell
              input "" pl:who length 20
            cell
              input "" pl:when length 20
            cell
              input "" pl:duration length 5
        input "Line ID: " (var Str pid) noeol
        button "create" noeol
          pad:planning create pid
          reload_page
        button "delete" noeol
          pad:planning delete pid
          reload_page
    para
      box color (color hsl 0 0 75) round 5 header "Storage"
        var Array:FileInfo list := file_list pad:path standa
        pad_list pad list
        pad_list pad list true
        file_upload "File: " (var Str upload) noeol
        button "upload"
        file_upload "File: " (var Str upload) noeol
        button "upload"
          var Str path := pad path
          var Str name  := upload option "remote_name" Str
          var Str name  := upload option "remote_name" Str
          file_move upload pad:path+name
          if path<>""
            file_move upload path+name
          reload_page
    para
      button "update"
        goto_backward



          reload_page
    para
      button "update"
        goto_backward