• All submissions to this site are governed by Second Life Project Contribution Agreement. By submitting patches and other information using this site, you acknowledge that you have read, understood, and agreed to those terms.
Issue Details (XML | Word | Printable)

Key: VWR-5082
Type: New Feature New Feature
Status: Resolved Resolved
Resolution: Fixed
Priority: Normal Normal
Assignee: Coco Linden
Reporter: Yina Yao
Votes: 57
Watchers: 20
Operations

If you were logged in you would be able to see more operations.
1. Second Life Viewer - VWR

'Set permissions on selected task inventory' feature, similar to 'recompile all scripts in object', in Tools tab.

Created: 29/Aug/07 09:17 AM   Updated: 15/Jun/09 04:52 PM
Return to search
Component/s: Permissions, User Interface
Affects Version/s: None
Fix Version/s: 1.23 Release Candidate, 1.23

File Attachments: 1. Text File bulksetpermsv1_2.patch (30 kB)
2. File VWR-5082_set_bulk_inv_permissions.diff (33 kB)

Image Attachments:

1. Bulk_Permissions_Alt_Mockup.png
(17 kB)

2. Bulk_Permissions_Mockup.png
(16 kB)

3. Bulk_Permissions_Wide_Mockup.png
(19 kB)

4. BulkPermChange.png
(257 kB)

5. bulkPermissionEdits.jpg
(608 kB)

6. exampleWIP.jpg
(257 kB)
Issue Links:
Duplicate
 
Relates
 

Last Triaged: 06/Nov/08 01:08 PM
Source Version: 1.20.12
Linden Lab Issue ID: DEV-17710
Patch attached: Patch attached
Linden Lab Internal Branch: featurettes/featurettes-7


 Description  « Hide
Hiya,

as a pretty busy builder and scripter, I here and then have to go through
dozens of scrips in an object, just to change all the script permissions
one by one, if for instance the object originally was no-copy, no-mod, trans-ok,
and I want it to be copy, mod, trans-ok before giving it to a friend or releasing
it as a freebie. This means going through all prims of the object, and
setting the permissions of each single script, seperately.

I'd VERY much appreciate an automated function for that.

Where to place it:
TOOLS -> in the same category as RESET ALL SCRIPTS IN OBJECT.

What's it supposed to do:
Display a permissions-dialog to select copy/mod/trans permissions.
Thereafter, for all prims of the object, examine the contents, and for all
scripts found, IF YOU ARE the script creator OR the script already IS
all-perms, set the permissions of those scripts to the permissions
you selected at the start of this feature.

That would greatly speed up and simplify maintenance of complexely
scripted objects for us scripters/builders, especially if we release the
same product several times with additional features and different
permissions. AKA a cheap 'personal edition' with no.copy no-mod trans-ok'
vs. a 'sim owner edition' with 'copy-ok, mod-ok, no-trans'. Also it would
allow transfer of your own created works to your friends EASILY and
without setting all script permissions by hand, if you want them to have
a full perms copy. In any case, it's a feature I sorely miss.

Regards,
-Yina Yao



 All   Comments   Change History      Sort Order: Ascending order - Click to sort in descending order
Lex Neva added a comment - 30/Aug/07 08:16 AM
I'd like to see this extended to set permisisons on all contents in the selection. It would be even nicer if I could click checkboxes to determine which kinds of contents items to set the permissions on... all scripts and notecards, for example.

Bill Friis added a comment - 30/Jan/08 02:24 PM - edited
Yes! And, as Lex says, not just for scripts. A really complex build, with textures and scripts and sound inside objects inside notecards inside objects inside other objects can be a nightmare to re-permission. It should be possible to select the thing and simply set everything in it to one permission status. Or, as Lex suggests, set some things one way and some another, so, for example, I can make it a freebie that is modifiable, but keep my scripts hidden. Ideally (in that perfect world I dream of) I could click on the thing and bring up a list of the object and everything inside it, hierarchically all the way from top to bottom, with check boxes for all permissions on each item in the list and the option to change groups or all of them at once.

But really, just being able to say, "set everything in this sucker so I can give it way" would be a huge help.


McCabe Maxsted added a comment - 21/Feb/08 05:26 AM
I'd definitely like to see something like this as well.

Michelle2 Zenovka added a comment - 07/Jul/08 02:34 PM
Hey, this has been bugging me for ages and someone i know was nagging me at the weekend so attached is a screenshot of my first attempt to solve this issue.

I have working code that produces a floater window, with options to select the type of inventory effected and options to select the permissions. It works with multiple objects selected and multiple inventory items.

Currently it is limited to :-

  • Task inventory only
    That is, it does not set the permissions on top level objects but will set the permissions on the contents of the objects, eg all scripts (including linked prims). But it can handle multiple selections
  • No recursion
    Sorry but it does not yet have the ability to open an object inside an object and recuse through
  • Only works with in world objects and there inventory not Your inventory

But i' still pretty pleased with the results.

I'm cleaning the code a little but will post a patch soon for ya all to try.


Michelle2 Zenovka added a comment - 08/Jul/08 11:16 AM - edited
Right here goes, hope its complete ;-p

This is the patch as it currently stands. It works for me and allows me to set the Next owner properties of the inventory of selected objects (tasks). It works with multiple selected objects and allows you to specify just the inventory type to change. It works with inventory in child linked prims.

It is possible to set the Next owner properties of the (root) objects on there own (including multiple selections) using the old tools anyway so i have not reimplemented this.

it does not support recursion and cannot open objects within the inventory of the top level objects, but this could be a future addition.

It adds a new option to the tools menu "Set permissions on selected task inventory" which appears next to the reset scripts in selection and friends.

Have fun

m2


Tofu Linden added a comment - 10/Jul/08 08:43 AM
Sweet - what was this code based on?

Michelle2 Zenovka added a comment - 10/Jul/08 08:58 AM
I followed through what the existing script reset etc tools do as they all require inventory access on a given task and implemented something that is based on the same principles as it seemed a reasonable staring point. But a bit was implemented from scratch.

Brent Linden added a comment - 12/Aug/08 01:23 PM
The Rx Team reviewed this feature request and has the following recommendations before we accept the patch:
  • Add the option to change the permissions on the parent prim/object (default to on).
  • Why is the Recursive option shown in the screen shot if there is no case where it would be available?
    • An internal dev should add recursion to this feature – there are too many situations where omitting this could cause undesired and destructive behavior:
      • Example: My gun fires a scripted bullet. If I am reading this correctly, the script in the bullet would not be affected by the permissions change.
  • A developer must review this code extensively and some major QAing would have to be done. Changes that relate to permissions cannot be taken lightly.

Brent Linden added a comment - 12/Aug/08 01:24 PM
And on a personal note, I think this patch could be very useful! Thanks for your work on it.

Michelle2 Zenovka added a comment - 13/Aug/08 01:03 AM
Thanks for the feedback, i will commence a round of tidy ups.

The recursive option was left on the screen as it was planned to be done but it looked to much of a nightmare for a first pass. Yes you are right, if you rezed your gun then applied the permissions to it, it would not be able to do anything to scripts etc inside the bullet without recursion, it would set the permissions on the bullet itself (if apply to objects was selected). The asset of the bullet would need to be retrieved and its inventory opened etc by the recursive process.

I agree it needs major QA as it could cause upset if wrong, but as it does a very specific well defined "thing" it should make automated or unit tests of the area a lot easier that a wide code base effecting patch.

Regards M2


Michelle2 Zenovka added a comment - 01/Sep/08 02:17 PM
Updated patch

Fixes some issues in previous patch( would only work if prims contained a script, would fail on items that had one no mod script even if the rest is your stuff, could crash the viewer if prims had no inventory)

Added the ability to set parent prims (eg selected prims) permissions at same time (optional, default =ON)

I can't add recuse, it looks difficult and infact i think that its not possible to get a prims inventory unless the simulator has that asset in context. As the resursive items are only assets in inventory this is therefor not currently possible without a simulator change too or some other major fiddling. Please tell me if i have this but wrong.


Soft Linden added a comment - 11/Sep/08 01:28 PM
This has been assigned to Rx triage for final comments before it goes to a dev

Erica Linden added a comment - 18/Sep/08 05:54 PM - edited
Attaching recommend wording and layout changes - let me know if I overlooked anything - I'm doing too many things at once, apologies for the delay. Cool feature. It should be friends with VWR-8049.
-Erica

Jacek Antonelli added a comment - 20/Sep/08 02:10 PM
Wonderful, incredibly useful feature! Some thoughts and observations from using it:
  • It would be nice to be able to check / uncheck all the types in one go.
  • I'd love to be able to set "Share with group" and (to a lesser extent) "Allow anyone to copy", too. :-D
  • Setting permissions always fails for no-mod items, even for operations that are allowed, such as changing nomod|copy|trans to nomod|nocopy|trans.
  • Trying to enable copy on no-copy items gives a false success message. (I.e. it says "[OK]", even though the item did not become copyable.)
  • It should not be possible to disable all 3 perms. Right now, that is possible: all checkboxes become unchecked, Debug Permissions shows next owner having no perms, and the state persists even after transferring to another avatar (and back). The item behaves as transfer-only, so this is not a security issue, just a matter of potential confusion for users.
  • The order for the permissions checkboxes should be Modify, Copy, Resell/Give Away, and ideally they should be layed out horizontally. This is for consistency with other parts of the UI.
  • "Trans" should be "Resell/Give Away", also for consistency.
  • "Textures" should read "Textures & Snapshots". (Alternatively, add a separate checkbox for snapshots, but I don't think that's needed.)

I'm going to work on a mock-up for the floater layout, as there's a lot of needless empty space. Right now, I'm picturing the 3 permissions boxes in ar ow at the top left, the types beneath that, Apply and Cancel buttons below that, and move the feedback text display to the right side of the floater.


Erica Linden added a comment - 23/Sep/08 03:44 PM
Thanks Jacek!

Michelle2 Zenovka added a comment - 24/Sep/08 12:54 AM
Hi Jacek and Erica,

If you do the floater mock up please attached it here, i can implemented the back end for any extra buttons, unless a Linden grabs it first but UI design and layout is not my strong point. I think all the points raised by yourself and Erica are valid for a cleaner UI. The unsetting of all 3 perms is protected server side so this can't be done but in every other peice of code the UI is protected against this so it needs adding here to.

The setting permission failing (#3) is caused my bad logic as i apply a test to see if it is allowed and use that to display the [OK]/ [FAILED] looks like i need to update the logic there too.

I think the other changes are all pretty much UI centric and i don't believe adding share with group and allow anyone to copy would be difficult.

M2


Michelle2 Zenovka added a comment - 24/Sep/08 04:14 AM
I just wanted to add that VWR-8049 should be kept very separate from this issue, this issue provides a crude workaround for solving 8049 but it is not a replacement. There are two things to be considered here, one is that lots of people may want to give a no perms item to an alt/or a friend etc (as full perms) and not want to have to set the permissions on hundreds of sub scripts (think a xy text board or some other complex multi script item) this (the bulk patch) quickly gives people the ability to set/remove all permissions as they need on complex or multiple objects or people may just want to check the entire permission set is what they think it is on there objects etc. This JIRA provides a method to do this.

The 2nd issue is when working as a group having to remember to set the permissions (even via this feature) will still be a right PITA, imagine a private island where a team is building, this issue does not solve their problems but VWR-8049 does and would allow them all to work together with out remembering to re permission everything. Or a builder who always wants to create full perm obejcts, again keeping this and 8049 separate allows them to just specify there preferred defaults for building which out a clumsy 2nd step.

Thats why i think that VWR-5082 (this) and VWR-8049 are both very useful, complementary but independent features.

M2


catherine pfeffer added a comment - 24/Sep/08 04:45 AM - edited
Yes. Also, VWR-8049 is for all types of creation, including for things you create directly in your inventory folder (clothing, body parts, ...) or upload (textures, sounds, animations), while VWR-5082 is for fixing inworld objects' inventory.

Also VWR-8049 intends to address "allow anyone to copy" and "share with group" (but VWR-5082 could do that too in the future, so this is not a critical difference).

Finally, Michelle mentioned a number of use cases for VWR-8049. There is also one community for which VWR-8049 would be vital: the Open Source community. Having proprietary model as the default model for creation in Second Life is really something that is shocking to them, both on the point of view of the principle, and from a practical everyday point of view too.

However, there are things we could cooperate on : a set of default settings for example. In VWR-5082 they would be used in a "use default" button, used to return to the default settings, In VWR-8049 these default settings could be used upon creation or upload of new items. I don't see good reasons while we should use separate default settings for both features. But I might be wrong.

Another point where we could cooperate on is also the location of both features in the GUI. We could have adjacent menu entries in the "Tools" menu, for example.


Jacek Antonelli added a comment - 26/Sep/08 10:17 PM
Attached 3 mockups. Kinda rough, but I was trying out the Pencil Firefox add-on app with McCabe's (still in progress, I think?) Dazzle SL widget set. (I think I prefer Inkscape for its flexibility, though.)

#1 Bulk_Permissions_Mockup.png

The 3 permissions are laid out horizontally in the same order they appear elsewhere in the UI. Made a checkbox for the objects themselves, and an "overall" checkbox for all the content types. Enabling this checkbox would enable the child checkboxes; likewise for disabling. You can edit the child checkboxes individually, in which case the overall checkbox changes to the "mixed" state (not sure the technical term) to indicate that not all the child checkboxes have the same state. (The mixed state is the same one you see when you select multiple objects inworld with different permissions. I can try to clarify this more if this explanation is insufficient.)

I also decided to get rid of the results text box completely. Instead of having it built into the floater (which makes the floater much larger), I'd recommend a separate window come up with the results, as we see with script resets etc.

#2 Bulk_Permissions_Wide_Mockup.png

Same as #1, but with the built-in results text box, for comparison.

#3 Bulk_Permissions_Alt_Mockup.png

This represents how I'd actually like to apply the permissions. The current design doesn't allow operations like "Add modify, but leave copy and transfer as they are", which is something I would find very useful. So, this new design changes the checkboxes to 3 rows of radio buttons. The radio button labels should be self-explanatory.

I might try a mock-up with combo boxes instead of radio buttons; that would save some space, and maybe be more appealing.


Jacek Antonelli added a comment - 26/Sep/08 10:19 PM
I also wanted to chime in that VWR-5082 (this issue) and VWR-8049 are separate issues, and neither one is a solution to the other. They each address a different aspect of making the permissions system easier to work with, and I wholeheartedly support both of them.

Latif Khalifa added a comment - 19/Oct/08 04:20 AM
I just want to thank Michelle2 Zenovka for the great work. This was one single feature that made me switch to Cool SL Viewer (which incorporates this patch).

TigroSpottystripes Katsu added a comment - 10/Nov/08 05:56 PM
regarding the "don't touch this" mode, I'm more used to having this done by tri-state checkboxes, marked, unmarked and greyed out, the third state being for the "don't touch this" mode, I've seen this used on several different programs (but some programs once you click once, makes the checkbox be a regular 2-state checkbox, marked and unmarked, but that usually is only for when things are applied instantly), when the values the checkbox is suposed to change are mixed, it starts in the greyed-out state, otherwise, it shows the current state all the values are

Coco Linden added a comment - 11/Nov/08 03:00 PM
Resolved. See the attached screen shot for the final treatment.
Thanks Michelle2 for a great tool that should save a lot of pain for content developers! Thanks also to everyone else who contributed to the design discussion. With things as tricky as the SL permissions system, it definitely takes a village.

Cheshyr Pontchartrain added a comment - 28/Nov/08 07:11 AM
Question: Coco, you said resolved, but what exactly does that mean? This feature is sorely needed, and has not appeared in the 1.22 RC viewer, so obviously nothing is resolved.

Coco Linden added a comment - 29/Nov/08 07:36 PM
Cheshyr: The feature request is resolved as "fix pending". That means that it has been implemented, reviewed, and checked into an internal branch (featurettes7). It has missed the 1.22 deadlines by a fair bit but the internal JIRA task is resolved and has recently passed QA. Failing any big surprises, this is definitely on track for inclusion in 1.23. I know that this might seem slow to you but trust me when I say that it's hard for me to imagine features such as this moving into official release versions any quicker.

Cheshyr Pontchartrain added a comment - 01/Dec/08 01:30 PM
Fair enough. I know how bad bureaucracies are.

To those who don't want to wait, CoolViewer at http://my.opera.com/boylane/blog/ has already implemented this feature. it's not as complete as the version pictured above, but it does work nicely and has saved me hours of frustrating, tedious work.


catherine pfeffer added a comment - 02/Jan/09 03:01 AM
I think there is a bug in current implementation.

In linden/indra/newview/llfloaterbulkpermission.cpp, one can read:
LLCheckBoxCtrl* xfer = static_cast<LLFloaterPerms *>(data)->getChild<LLCheckBoxCtrl>("next owner transfer");

I think it should be:
LLCheckBoxCtrl* xfer = static_cast<LLFloaterBulkPermissions *>(data)->getChild<LLCheckBoxCtrl>("next owner transfer");

because I don't see the relation to LLFloaterPerms which is a completly different class than LLFloaterBulkPermissions.

Sorry in advance if I missed some point.


Lex Neva added a comment - 21/Apr/09 09:09 AM
I just tested this out in the BSI nightly release, and WOW is it cool. Great work! I've been waiting for this for so long!!

Everything seems to work quite smoothly. I only have a few minor aesthetic suggestions.

1. I initially had a hard time finding out how to access this new feature. I was looking under the Tools menu where the initial feature request suggested this should go, but it wasn't there. A "Permissions" button in the Contents tab was not the first (or second) thing I looked for. It's also a little confusing that this is the only operation that can be performed in the contents window when you have more than one object selected; I'm not used to being able to do anything there when I have multiple objects selected.

2. Is it possible to scroll the status text pane down as new lines are added? Otherwise it may not be clear that the operation is still in progress.

3. Clicking "close" while the operation is in progress seems to halt it midway. This could make sense, but it might be a good idea to either prevent the user from closing the dialog while the operation is in progress, or (preferably) warn them that continuing to close the window will abort the process.

Again, thank you SO MUCH for all of your work on this. This is an incredibly useful feature that has been a long time coming.


Lex Neva added a comment - 21/Apr/09 09:11 AM
This just occurred to me: in addition to the "Permissions" button being non-obvious, it might also not be obvious that it affects ALL selected prims and child prims, not just the contents you're looking at in that window.

TriloByte Zanzibar added a comment - 21/Apr/09 02:56 PM
Thanks to Lex's comment, I was able to find the feature - and I was looking for it. Let me just say it again.... WOW! Thank you very much, that's going to save a lot of people a lot of time. While I was looking for it elsewhere (because of what was mentioned in earlier posts), I think placing it in the contents is a little more intuitive than the Tools menu.

Stickman Ingmann added a comment - 21/Apr/09 03:10 PM
I haven't had the chance to try this out myself, but I'd like to express my thanks, too!

A number of months back a friend and I finished a big project. It took us A WEEK of mind-numbing and painful labor to set the permissions on everything. (They had been fullperm so we could give the items back and forth as we worked on them.) I had the foresight to restrict as much content to the root prim of the objects as possible, but it was still a long and painful process.

This tool will make many people's lives so much easier. Good tools allow better work to get done. Thank you so much for putting this in. Thank you Michelle, thank you Coco!


catherine pfeffer added a comment - 08/May/09 11:52 PM - edited
Good work, really.

Jopsy Pendragon suggested to extend it so one could recursively change permissions in his/her user inventory. Currently it applies only to inworld objects as far as I know.

Citing Jopsy:

[it would be good to have] "The ability to (recursively) Change Permissions on all contents of selected FOLDERS in our inventory. (without having to step through each and every single item as we do now, even when selected as a group). (Yes it may allow someone to spam the inventory database with tens of thousands of updates. Limit it to 999 items and put a delay on it if necessary.)"


Dessie Linden added a comment - 15/Jun/09 04:52 PM
Fixed in 1.23.4, released on 06/15/2009.