home *** CD-ROM | disk | FTP | other *** search
/ PC World 1998 October / PCWorld_1998-10_cd.bin / software / prehled / komix / DATA.Z / editroleri.tcl < prev    next >
Text File  |  1997-09-16  |  4KB  |  146 lines

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cayenne Software Inc.    1997
  4. #
  5. #      File:           @(#)editroleri.tcl    /main/titanic/5
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)editroleri.tcl    /main/titanic/5   16 Sep 1997 Copyright 1997 Cayenne Software Inc.
  10.  
  11. # Start user added include file section
  12. # End user added include file section
  13.  
  14. require_module_file "rolerights.tcl" security
  15.  
  16. Class EditRoleRightsDlg : {RoleRightsDlg} {
  17.     constructor
  18.     method destructor
  19.     method ok
  20.     method popUp
  21.     method init
  22. }
  23.  
  24. constructor EditRoleRightsDlg {class this name} {
  25.     set this [RoleRightsDlg::constructor $class $this $name]
  26.     # Start constructor user section
  27.     # End constructor user section
  28.     return $this
  29. }
  30.  
  31. method EditRoleRightsDlg::destructor {this} {
  32.     # Start destructor user section
  33.  
  34.     [$this selectedSet] foreach obj {
  35.         $obj Controlled::quit
  36.     }
  37.  
  38.     # End destructor user section
  39.     $this RoleRightsDlg::destructor
  40. }
  41.  
  42. method EditRoleRightsDlg::ok {this} {
  43.     set script ""
  44.     foreach type [$this.top.row.leftCol.ruleType.row.type entrySet] {
  45.     global $this$type
  46.     if {! [info exists $this$type]} continue
  47.  
  48.     set role ""
  49.     set index ""
  50.     set ${this}${type}(last,,) 0
  51.     foreach triple [lsort [array names $this$type]] {
  52.         set first [string first "," $triple]
  53.         set last [string last "," $triple]
  54.         set newIndex [string range $triple 0 [expr $first -1]]
  55.         set newRole [string range $triple [expr $first +1] [expr $last -1]]
  56.         set action [string range $triple [expr $last +1] end]
  57.         set access [set ${this}${type}($triple)]
  58.         unset ${this}${type}($triple)
  59.  
  60.         if {"$index" != "$newIndex" || "$role" != "$newRole"} {
  61.         if {"$index" != ""} {
  62.             set obj [[$this selectedSet] index $index]
  63.             if {"$script" != ""} {
  64.             append script " ;"
  65.             }
  66.             case "$type" in {
  67.             childRight {
  68.                 append script " $obj modifyNewChildRights \
  69.                 $role $allowedMap $prohibitedMap $undefinedMap"
  70.             }
  71.             default {
  72.                 append script " $obj modifyPermission \
  73.                 $role $allowedMap $prohibitedMap $undefinedMap"
  74.             }
  75.             }
  76.         }
  77.         set allowedMap 0
  78.         set prohibitedMap 0
  79.         set undefinedMap 0
  80.         }
  81.  
  82.         if {"$newIndex" == "last"} break
  83.  
  84.         set index $newIndex
  85.         set role $newRole
  86.         set actionMap [BrowserProcs::string2Action $action]
  87.         case "$access" in {
  88.         Allowed {
  89.             set allowedMap [expr $allowedMap | $actionMap]
  90.         }
  91.         Prohibited {
  92.             set prohibitedMap [expr $prohibitedMap | $actionMap]
  93.         }
  94.         Undefined {
  95.             set undefinedMap [expr $undefinedMap | $actionMap]
  96.         }
  97.         }
  98.     }
  99.     }
  100.  
  101.     if {"$script" != ""} {
  102.     $wmttoolObj startCommand tcl "$script" "wmtkmessage {}" \
  103.         "Saving role rights" {0 0} 1
  104.     }
  105.  
  106.     $this AccessControlDlg::ok
  107. }
  108.  
  109. method EditRoleRightsDlg::popUp {this} {
  110.     if {! [[$this selectedSet] empty]} {
  111.     $this createObjectsIf
  112.     $this createRolesIf
  113.     $this createActionsIf
  114.     $this createRoleRightTypeIf
  115.     $this createApplyIf
  116.     $this selectedObjectSetChanged
  117.     $this TemplateDialog::popUp
  118.     }
  119.     if {"[$this errorStack]" != ""} {
  120.     wmtkinfo [$this errorStack]
  121.     $this errorStack ""
  122.     }
  123. }
  124.  
  125. method EditRoleRightsDlg::init {this} {
  126.     set errorStack ""
  127.     set nonEditableList ""
  128.     $this editable 1
  129.     [$this selectedSet] foreach obj {
  130.     if [catch {$obj Controlled::edit} msg] {
  131.         lappend nonEditableList $obj
  132.         if {"$errorStack" != ""} {
  133.         append errorStack "\n"
  134.         }
  135.         append errorStack $msg
  136.     }
  137.     }
  138.     $this errorStack $errorStack
  139.     foreach nonEditable $nonEditableList {
  140.     $this removeSelected $nonEditable
  141.     }
  142. }
  143.  
  144. # Do not delete this line -- regeneration end marker
  145.  
  146.