Changeset 7212
- Timestamp:
- Oct 19, 2016, 2:16:14 PM (6 years ago)
- Location:
- trunk
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/clients/web/net/sf/basedb/clients/web/PermissionUtil.java
r7052 r7212 79 79 if (item.hasPermission(Permission.READ) && itemPermissions.contains(Permission.READ)) sb.append("Read"); 80 80 if (item.hasPermission(Permission.USE) && itemPermissions.contains(Permission.USE)) sb.append(sb.length()==0 ? "Use" : ", Use"); 81 if (item.hasPermission(Permission.RESTRICTED_WRITE) && itemPermissions.contains(Permission.RESTRICTED_WRITE)) sb.append(sb.length()==0 ? "Annotate" : ", Annotate"); 81 82 if (item.hasPermission(Permission.WRITE) && itemPermissions.contains(Permission.WRITE)) sb.append(sb.length()==0 ? "Write" : ", Write"); 82 83 if (item.hasPermission(Permission.DELETE) && itemPermissions.contains(Permission.DELETE)) sb.append(sb.length()==0 ? "Delete" : ", Delete"); … … 88 89 if(item.hasPermission(Permission.READ)) sb.append("Read"); 89 90 if (item.hasPermission(Permission.USE)) sb.append(sb.length()==0 ? "Use" : ", Use"); 91 if (item.hasPermission(Permission.RESTRICTED_WRITE)) sb.append(sb.length()==0 ? "Annotate" : ", Annotate"); 90 92 if (item.hasPermission(Permission.WRITE)) sb.append(sb.length()==0 ? "Write" : ", Write"); 91 93 if (item.hasPermission(Permission.DELETE)) sb.append(sb.length()==0 ? "Delete" : ", Delete"); … … 225 227 } 226 228 227 public static String translatePermissionsToString(Set<Permission> permissions )229 public static String translatePermissionsToString(Set<Permission> permissions, String restrictedWrite) 228 230 { 229 231 StringBuilder permissionString = new StringBuilder(); 230 232 permissionString.append(permissions.contains(Permission.READ) ? "R" : "-"); 231 233 permissionString.append(permissions.contains(Permission.USE) ? "U" : "-"); 234 if (restrictedWrite != null) 235 { 236 permissionString.append(permissions.contains(Permission.RESTRICTED_WRITE) ? restrictedWrite : "-"); 237 } 232 238 permissionString.append(permissions.contains(Permission.WRITE) ? "W" : "-"); 233 239 permissionString.append(permissions.contains(Permission.DELETE) ? "D" : "-"); -
trunk/src/core/net/sf/basedb/core/Item.java
r6990 r7212 182 182 The item is a {@link Protocol}. 183 183 */ 184 PROTOCOL(101, "Protocol", "prl", Protocol.class, ProtocolData.class, DefinedPermissions.shareable ,184 PROTOCOL(101, "Protocol", "prl", Protocol.class, ProtocolData.class, DefinedPermissions.shareable_annotatable, 185 185 740), 186 186 /* … … 194 194 The item is a {@link Hardware}. 195 195 */ 196 HARDWARE(121, "Hardware", "hw", Hardware.class, HardwareData.class, DefinedPermissions.shareable ,196 HARDWARE(121, "Hardware", "hw", Hardware.class, HardwareData.class, DefinedPermissions.shareable_annotatable, 197 197 700), 198 198 /** 199 199 The item is a {@link Software}. 200 200 */ 201 SOFTWARE(123, "Software", "sw", Software.class, SoftwareData.class, DefinedPermissions.shareable ,201 SOFTWARE(123, "Software", "sw", Software.class, SoftwareData.class, DefinedPermissions.shareable_annotatable, 202 202 720), 203 203 … … 206 206 @since 3.7 207 207 */ 208 KIT(125, "Kit", "kt", Kit.class, KitData.class, DefinedPermissions.shareable ,208 KIT(125, "Kit", "kt", Kit.class, KitData.class, DefinedPermissions.shareable_annotatable, 209 209 730), 210 210 … … 231 231 The item is an {@link ItemList} 232 232 */ 233 ITEMLIST(209, "Item list", "ils", ItemList.class, ItemListData.class, DefinedPermissions.shareable ,233 ITEMLIST(209, "Item list", "ils", ItemList.class, ItemListData.class, DefinedPermissions.shareable_annotatable, 234 234 11), 235 235 /** … … 330 330 The item is a {@link BioSource}. 331 331 */ 332 BIOSOURCE(201, "Biosource", "bs", BioSource.class, BioSourceData.class, DefinedPermissions.shareable ,332 BIOSOURCE(201, "Biosource", "bs", BioSource.class, BioSourceData.class, DefinedPermissions.shareable_annotatable, 333 333 430), 334 334 /** 335 335 The item is a {@link Sample}. 336 336 */ 337 SAMPLE(202, "Sample", "smp", Sample.class, SampleData.class, DefinedPermissions.shareable ,337 SAMPLE(202, "Sample", "smp", Sample.class, SampleData.class, DefinedPermissions.shareable_annotatable, 338 338 420), 339 339 /** 340 340 The item is an {@link Extract}. 341 341 */ 342 EXTRACT(203, "Extract", "xtr", Extract.class, ExtractData.class, DefinedPermissions.shareable ,342 EXTRACT(203, "Extract", "xtr", Extract.class, ExtractData.class, DefinedPermissions.shareable_annotatable, 343 343 410), 344 344 … … 355 355 The item is a {@link Tag}. 356 356 */ 357 TAG(206, "Tag", "tag", Tag.class, TagData.class, DefinedPermissions.shareable ,357 TAG(206, "Tag", "tag", Tag.class, TagData.class, DefinedPermissions.shareable_annotatable, 358 358 440), 359 359 … … 361 361 The item is a {@link BioPlate} 362 362 */ 363 BIOPLATE(207, "Bioplate", "bpl", BioPlate.class, BioPlateData.class, DefinedPermissions.shareable ,363 BIOPLATE(207, "Bioplate", "bpl", BioPlate.class, BioPlateData.class, DefinedPermissions.shareable_annotatable, 364 364 460), 365 365 … … 407 407 The item is a {@link Plate}. 408 408 */ 409 PLATE(222, "Plate", "pla", Plate.class, PlateData.class, DefinedPermissions.shareable ,409 PLATE(222, "Plate", "pla", Plate.class, PlateData.class, DefinedPermissions.shareable_annotatable, 410 410 600), 411 411 /** … … 439 439 The item is an {@link ArrayDesign}. 440 440 */ 441 ARRAYDESIGN(241, "Array design", "ard", ArrayDesign.class, ArrayDesignData.class, DefinedPermissions.shareable ,441 ARRAYDESIGN(241, "Array design", "ard", ArrayDesign.class, ArrayDesignData.class, DefinedPermissions.shareable_annotatable, 442 442 520), 443 443 /** 444 444 The item is an {@link ArrayBatch}. 445 445 */ 446 ARRAYBATCH(242, "Array batch", "arb", ArrayBatch.class, ArrayBatchData.class, DefinedPermissions.shareable ,446 ARRAYBATCH(242, "Array batch", "arb", ArrayBatch.class, ArrayBatchData.class, DefinedPermissions.shareable_annotatable, 447 447 510), 448 448 /** 449 449 The item is an {@link ArraySlide}. 450 450 */ 451 ARRAYSLIDE(243, "Array slide", "ars", ArraySlide.class, ArraySlideData.class, DefinedPermissions.shareable ,451 ARRAYSLIDE(243, "Array slide", "ars", ArraySlide.class, ArraySlideData.class, DefinedPermissions.shareable_annotatable, 452 452 500), 453 453 /** … … 476 476 The item is a {@link PhysicalBioAssay}. 477 477 */ 478 PHYSICALBIOASSAY(267, "Physical bioassay", "pba", PhysicalBioAssay.class, PhysicalBioAssayData.class, DefinedPermissions.shareable ,478 PHYSICALBIOASSAY(267, "Physical bioassay", "pba", PhysicalBioAssay.class, PhysicalBioAssayData.class, DefinedPermissions.shareable_annotatable, 479 479 350), 480 480 … … 482 482 The item is a {@link DerivedBioAssay}. 483 483 */ 484 DERIVEDBIOASSAY(268, "Derived bioassay", "dba", DerivedBioAssay.class, DerivedBioAssayData.class, DefinedPermissions.shareable ,484 DERIVEDBIOASSAY(268, "Derived bioassay", "dba", DerivedBioAssay.class, DerivedBioAssayData.class, DefinedPermissions.shareable_annotatable, 485 485 330), 486 486 … … 488 488 The item is a {@link RawBioAssay}. 489 489 */ 490 RAWBIOASSAY(264, "Raw bioassay", "rba", RawBioAssay.class, RawBioAssayData.class, DefinedPermissions.shareable ,490 RAWBIOASSAY(264, "Raw bioassay", "rba", RawBioAssay.class, RawBioAssayData.class, DefinedPermissions.shareable_annotatable, 491 491 300), 492 492 … … 517 517 The item is a {@link PluginDefinition} 518 518 */ 519 PLUGINDEFINITION(282, "Plugin definition", "pld", PluginDefinition.class, PluginDefinitionData.class, DefinedPermissions.shareable ,519 PLUGINDEFINITION(282, "Plugin definition", "pld", PluginDefinition.class, PluginDefinitionData.class, DefinedPermissions.shareable_annotatable, 520 520 1050), 521 521 /** 522 522 The item is a {@link PluginConfiguration} 523 523 */ 524 PLUGINCONFIGURATION(283, "Plugin configuration", "plc", PluginConfiguration.class, PluginConfigurationData.class, DefinedPermissions.shareable ,524 PLUGINCONFIGURATION(283, "Plugin configuration", "plc", PluginConfiguration.class, PluginConfigurationData.class, DefinedPermissions.shareable_annotatable, 525 525 1040), 526 526 /** … … 1025 1025 private static final Set<Permission> ownable = Collections.unmodifiableSet(EnumSet.of(Permission.CREATE, Permission.READ, Permission.USE, Permission.WRITE, Permission.DELETE, Permission.SET_OWNER)); 1026 1026 private static final Set<Permission> shareable = Collections.unmodifiableSet(EnumSet.of(Permission.CREATE, Permission.READ, Permission.USE, Permission.WRITE, Permission.DELETE, Permission.SET_OWNER, Permission.SET_PERMISSION)); 1027 private static final Set<Permission> shareable_annotatable = Collections.unmodifiableSet(EnumSet.of(Permission.CREATE, Permission.READ, Permission.USE, Permission.RESTRICTED_WRITE, Permission.WRITE, Permission.DELETE, Permission.SET_OWNER, Permission.SET_PERMISSION)); 1027 1028 } 1028 1029 -
trunk/src/core/net/sf/basedb/core/MultiPermissions.java
r7189 r7212 96 96 private final Map<ItemKey, GroupPermissions> groupPermissions; 97 97 private final Map<ProjectKey, ProjectPermissions> projectPermissions; 98 private final boolean hasAnnotatableItem; 98 99 99 100 /** … … 112 113 this.groupPermissions = new HashMap<ItemKey, GroupPermissions>(); 113 114 this.projectPermissions = new HashMap<ProjectKey, ProjectPermissions>(); 115 boolean foundAnAnnotatableItem = false; 114 116 for (SharedItem item : itemsToShare) 115 117 { 118 if (item instanceof Annotatable) foundAnAnnotatableItem = true; 116 119 if (items.add(item)) 117 120 { … … 129 132 } 130 133 } 131 } 132 134 this.hasAnnotatableItem = foundAnAnnotatableItem; 135 } 136 137 /** 138 Is any of the items to share an annotatable item? 139 @since 3.10 140 */ 141 public boolean hasAnnotatableItem() 142 { 143 return hasAnnotatableItem; 144 } 145 133 146 /** 134 147 Grant permissions to a user. Use an empty <code>Set</code> or null -
trunk/www/common/share/list_share.jsp
r5946 r7212 31 31 import="net.sf.basedb.core.Permission" 32 32 import="net.sf.basedb.core.SharedItem" 33 import="net.sf.basedb.core.Annotatable" 33 34 import="net.sf.basedb.core.User" 34 35 import="net.sf.basedb.core.Group" … … 57 58 { 58 59 SharedItem item = (SharedItem)itemType.getById(dc, itemId); 60 String useRestrictedWrite = item instanceof Annotatable ? "A" : null; 59 61 MultiPermissions mp = new MultiPermissions(Collections.singleton(item)); 60 62 List<User> users = mp.getUsers().list(dc); … … 119 121 /><%=Base.getLinkedName(ID, project, false, true)%></tbl:cell> 120 122 <tbl:cell column="permissions"> 121 <%=PermissionUtil.translatePermissionsToString(permissions )%>123 <%=PermissionUtil.translatePermissionsToString(permissions, useRestrictedWrite)%> 122 124 </tbl:cell> 123 125 </tbl:row> … … 136 138 /><%=Base.getLinkedName(ID, group, false, true)%></tbl:cell> 137 139 <tbl:cell column="permissions"> 138 <%=PermissionUtil.translatePermissionsToString(permissions )%>140 <%=PermissionUtil.translatePermissionsToString(permissions, useRestrictedWrite)%> 139 141 </tbl:cell> 140 142 </tbl:row> … … 153 155 /><%=Base.getLinkedName(ID, user, false, true)%></tbl:cell> 154 156 <tbl:cell column="permissions"> 155 <%=PermissionUtil.translatePermissionsToString(permissions )%>157 <%=PermissionUtil.translatePermissionsToString(permissions, useRestrictedWrite)%> 156 158 </tbl:cell> 157 159 </tbl:row> -
trunk/www/common/share/share.js
r7030 r7212 27 27 var EVERYONE_ID; 28 28 var SHARE_TO_EVERYONE; 29 var USE_RESTRICTED_WRITE; 29 30 var Permission = {}; 30 31 … … 35 36 Permission.READ = Data.int('page-data', 'read'); 36 37 Permission.USE = Data.int('page-data', 'use'); 38 Permission.RESTRICTED_WRITE = Data.int('page-data', 'restricted-write'); 37 39 Permission.WRITE = Data.int('page-data', 'write'); 38 40 Permission.DELETE = Data.int('page-data', 'delete'); … … 57 59 Events.addEventHandler('read', 'click', share.permissionsOnClick); 58 60 Events.addEventHandler('use', 'click', share.permissionsOnClick); 61 Events.addEventHandler('restricted_write', 'click', share.permissionsOnClick); 59 62 Events.addEventHandler('write', 'click', share.permissionsOnClick); 60 63 Events.addEventHandler('delete', 'click', share.permissionsOnClick); … … 65 68 EVERYONE_ID = Data.int('page-data', 'everyone-id'); 66 69 SHARE_TO_EVERYONE = Data.int('page-data', 'share-to-everyone'); 70 USE_RESTRICTED_WRITE = Data.int('page-data', 'use-restricted-write'); 67 71 } 68 72 … … 256 260 s += permissionCode & Permission.READ ? "R" : "-"; 257 261 s += permissionCode & Permission.USE ? "U" : "-"; 262 if (USE_RESTRICTED_WRITE) 263 { 264 s += permissionCode & Permission.RESTRICTED_WRITE ? "A" : "-"; 265 } 258 266 s += permissionCode & Permission.WRITE ? "W" : "-"; 259 267 s += permissionCode & Permission.DELETE ? "D" : "-"; … … 277 285 if (frm['read'].checked) c += Permission.READ; 278 286 if (frm['use'].checked) c += Permission.USE; 287 if (frm['restricted_write'].checked) c += Permission.RESTRICTED_WRITE; 279 288 if (frm['write'].checked) c += Permission.WRITE; 280 289 if (frm['delete'].checked) c += Permission.DELETE; … … 294 303 { 295 304 frm['write'].checked = frm['write'].checked || frm['delete'].checked || frm['set_owner'].checked || frm['set_permission'].checked; 305 frm['restricted_write'].checked = frm['restricted_write'].checked || frm['write'].checked; 296 306 frm['use'].checked = frm['use'].checked || frm['write'].checked; 297 frm['read'].checked = frm['read'].checked || frm['use'].checked ;307 frm['read'].checked = frm['read'].checked || frm['use'].checked || frm['restricted_write'].checked; 298 308 } 299 309 else 300 310 { 301 311 frm['use'].checked = frm['use'].checked && frm['read'].checked; 302 frm['write'].checked = frm['write'].checked && frm['use'].checked; 312 frm['restricted_write'].checked = frm['restricted_write'].checked && frm['read'].checked; 313 frm['write'].checked = frm['write'].checked && frm['use'].checked && frm['restricted_write'].checked; 303 314 frm['delete'].checked = frm['delete'].checked && frm['write'].checked; 304 315 frm['set_owner'].checked = frm['set_owner'].checked && frm['write'].checked; … … 317 328 frm['read'].checked = permissionCode & Permission.READ; 318 329 frm['use'].checked = permissionCode & Permission.USE; 330 frm['restricted_write'].checked = permissionCode & Permission.RESTRICTED_WRITE; 319 331 frm['write'].checked = permissionCode & Permission.WRITE; 320 332 frm['delete'].checked = permissionCode & Permission.DELETE; … … 325 337 frm['read'].disabled = disabled; 326 338 frm['use'].disabled = disabled; 339 frm['restricted_write'].disabled = disabled || !USE_RESTRICTED_WRITE; 327 340 frm['write'].disabled = disabled; 328 341 frm['delete'].disabled = disabled; -
trunk/www/common/share/share.jsp
r6608 r7212 68 68 private static final int READ_CODE = PermissionUtil.getPermissionCode(EnumSet.of(Permission.READ)); 69 69 private static final int USE_CODE = PermissionUtil.getPermissionCode(EnumSet.of(Permission.USE)); 70 private static final int RESTRICTED_WRITE_CODE = PermissionUtil.getPermissionCode(EnumSet.of(Permission.RESTRICTED_WRITE)); 70 71 private static final int WRITE_CODE = PermissionUtil.getPermissionCode(EnumSet.of(Permission.WRITE)); 71 72 private static final int DELETE_CODE = PermissionUtil.getPermissionCode(EnumSet.of(Permission.DELETE)); … … 91 92 } 92 93 94 final boolean hasAnnotatableItem = mp.hasAnnotatableItem(); 93 95 JSONArray jsonShare = new JSONArray(); 94 96 … … 113 115 Set<Permission> first = p.values().iterator().next(); 114 116 permissionCode = PermissionUtil.getPermissionCode(first); 115 permissionString = PermissionUtil.translatePermissionsToString(first );117 permissionString = PermissionUtil.translatePermissionsToString(first, hasAnnotatableItem ? "A" : null); 116 118 } 117 119 json.put("name", user.getName() + " [" + permissionString + "]"); … … 142 144 Set<Permission> first = p.values().iterator().next(); 143 145 permissionCode = PermissionUtil.getPermissionCode(first); 144 permissionString = PermissionUtil.translatePermissionsToString(first );146 permissionString = PermissionUtil.translatePermissionsToString(first, hasAnnotatableItem ? "A" : null); 145 147 } 146 148 json.put("name", group.getName() + " [" + permissionString + "]"); … … 170 172 Set<Permission> first = p.values().iterator().next(); 171 173 permissionCode = PermissionUtil.getPermissionCode(first); 172 permissionString = PermissionUtil.translatePermissionsToString(first );174 permissionString = PermissionUtil.translatePermissionsToString(first, hasAnnotatableItem ? "A" : null); 173 175 } 174 176 json.put("name", project.getName() + " [" + permissionString + "]"); … … 218 220 data-read="<%=READ_CODE%>" 219 221 data-use="<%=USE_CODE%>" 222 data-restricted-write="<%=RESTRICTED_WRITE_CODE%>" 220 223 data-write="<%=WRITE_CODE%>" 221 224 data-delete="<%=DELETE_CODE%>" … … 224 227 data-everyone-id="<%=SystemItems.getId(Group.EVERYONE)%>" 225 228 data-share-to-everyone="<%=sc.hasSystemPermission(Permission.SHARE_TO_EVERYONE) ? 1 : 0%>" 229 data-use-restricted-write="<%=hasAnnotatableItem ? 1 : 0 %>" 226 230 ></div> 227 231 … … 252 256 <input type="checkbox" id="read" checked name="read"><label for="read">Read</label><br> 253 257 <input type="checkbox" id="use" checked name="use"><label for="use">Use</label><br> 258 <span style="<%=hasAnnotatableItem ? "" : "display: none;"%>"> 259 <input type="checkbox" id="restricted_write" name="restricted_write"><label for="restricted_write">Annotate</label><br> 260 </span> 254 261 <input type="checkbox" id="write" name="write"><label for="write">Write</label><br> 255 262 <input type="checkbox" id="delete" name="delete"><label for="delete">Delete</label><br>
Note: See TracChangeset
for help on using the changeset viewer.