Code source wiki de Organizational Chart Macro Setup
Modifié par john le 2025/05/31 14:13
Afficher les derniers auteurs
| author | version | line-number | content |
|---|---|---|---|
| 1 | |||
| 2 | In order to build organizational charts using XWiki users, it is necessary to configure XWiki to add a "manager" field to the user class and also add this field to the user profile configuration. | ||
| 3 | |||
| 4 | This can be done by editing the [[xwiki:XWiki.XWikiUsers]] class, adding a user field called "manager" and by updating the [[profile in the administration>>xwiki:XWiki.XWikiPreferences||queryString="editor=globaladmin§ion=UserProfile"]] to add the "manager" field in the profile display. | ||
| 5 | |||
| 6 | Alternatively you can click on the button below to have this done for you, provided you have administration rights. | ||
| 7 | |||
| 8 | {{velocity}} | ||
| 9 | #set($classUpdateNeeded = false) | ||
| 10 | #set($profileUpdateNeeded = false) | ||
| 11 | #set($userclassdoc = $xwiki.getDocument("xwiki:XWiki.XWikiUsers")) | ||
| 12 | #set($userclass = $userclassdoc.getxWikiClass()) | ||
| 13 | #set($baseuserclass = $userclass.getXWikiClass()) | ||
| 14 | #if($userclass.get("title")) | ||
| 15 | * Title field already exists in XWiki.XWikiUsers class | ||
| 16 | #else | ||
| 17 | * Title field should be added in XWiki.XWikiUsers class | ||
| 18 | #set($ok = $baseuserclass.addTextField("title", "Title", 40)) | ||
| 19 | #set($classUpdateNeeded = true) | ||
| 20 | #end | ||
| 21 | #if($userclass.get("manager")) | ||
| 22 | * Manager field already exists in XWiki.XWikiUsers class | ||
| 23 | #else | ||
| 24 | * Manager field should be added in XWiki.XWikiUsers class | ||
| 25 | #set($ok = $baseuserclass.addUsersField("manager", "Manager", false)) | ||
| 26 | #set($classUpdateNeeded = true) | ||
| 27 | #end | ||
| 28 | #if($userclass.get("company")) | ||
| 29 | * Company field already exists in XWiki.XWikiUsers class | ||
| 30 | #else | ||
| 31 | * Company field should be added in XWiki.XWikiUsers class | ||
| 32 | #set($ok = $baseuserclass.addTextField("company", "Company", 40)) | ||
| 33 | #set($classUpdateNeeded = true) | ||
| 34 | #end | ||
| 35 | #if($request.confirm && $classUpdateNeeded) | ||
| 36 | * User class is being saved with new fields added | ||
| 37 | #set($ok = $userclassdoc.save("Adding organizational chart fields")) | ||
| 38 | #end | ||
| 39 | #set($userprofiledoc = $xwiki.getDocument("xwiki:XWiki.AdminUserProfileSheet")) | ||
| 40 | #set($ok = $userprofiledoc.use("XWiki.UserProfileSectionClass")) | ||
| 41 | #set($props = $userprofiledoc.getValue("properties")) | ||
| 42 | #if($props.contains("title:title")) | ||
| 43 | * Title field is already added to the user profile | ||
| 44 | #else | ||
| 45 | * Title field should be added in user profile | ||
| 46 | #set($profileUpdateNeeded = true) | ||
| 47 | #if($props.contains("family-name:last_name")) | ||
| 48 | #set($props = "${props}$!{util.newline}title:title") | ||
| 49 | #else | ||
| 50 | #set($props = $props.replaceAll("family-name:last_name", "family-name:last_name$!{util.newline}title:title")) | ||
| 51 | #end | ||
| 52 | #end | ||
| 53 | #if($props.contains("manager:manager")) | ||
| 54 | * Manager field is already added to the user profile | ||
| 55 | #else | ||
| 56 | #set($profileUpdateNeeded = true) | ||
| 57 | * Manager field should be added in user profile | ||
| 58 | #set($props = $props.replaceAll("title:title", "title:title$!{util.newline}manager:manager")) | ||
| 59 | #end | ||
| 60 | #if($props.contains("org:company")) | ||
| 61 | * Company field is already added to the user profile | ||
| 62 | #else | ||
| 63 | #set($profileUpdateNeeded = true) | ||
| 64 | #set($props = $props.replaceAll("manager:manager", "manager:manager$!{util.newline}org:company")) | ||
| 65 | #end | ||
| 66 | #if($request.confirm && $profileUpdateNeeded) | ||
| 67 | * User Profile is being saved with new fields added | ||
| 68 | #set($ok = $userprofiledoc.set("properties", $props)) | ||
| 69 | #set($ok = $userprofiledoc.save("Adding organizational chart fields")) | ||
| 70 | #end | ||
| 71 | |||
| 72 | |||
| 73 | #if(!$request.confirm) | ||
| 74 | #if($profileUpdateNeeded||$classUpdateNeeded) | ||
| 75 | [[Confirm adding fields>>||queryString="confirm=1"]] | ||
| 76 | #else | ||
| 77 | * All necessary fields are already added | ||
| 78 | #end | ||
| 79 | #elseif(!$profileUpdateNeeded&&!$classUpdateNeeded) | ||
| 80 | * All necessary fields are already added | ||
| 81 | #end | ||
| 82 | {{/velocity}} |