Hide last authors
Andrey Che 1.1 1 {{groovy}}
2 import org.xwiki.velocity.tools.JSONTool;
3 import org.apache.commons.lang3.StringUtils;
4
5 def lock = "lock"
6 def result = new HashMap();
7 try {
8 if(request.page && request.action) {
9 synchronized(lock) {
10 def mydoc = xwiki.getDocument(request.page);
11 if(!mydoc.isNew() && null != mydoc.getObject("Ideas.IdeasClass") && xcontext.user != "XWiki.XWikiGuest") {
12 def doRemove = false;
13 def doRemoveagainst = false;
14 // Action : Add a supporter (vote)
15 if(request.action == "addVote") {
16 mydoc.use("Ideas.IdeasClass");
17 def userList = mydoc.getValue("supporters");
18 def userListSup = mydoc.getValue("against");
19 def nbvotes = mydoc.getValue("nbvotes");
20 def nbopp = mydoc.getValue("nbagainst");
21 if(StringUtils.contains(userList, xwiki.checkAuth().toString())) {
22 doRemove = true;
23 }
24 else {
25 // Add user in userList
26 if (StringUtils.contains(userListSup, xwiki.checkAuth().toString())){
27 doRemoveagainst = true;
28 result.put("remove", true);
29 result.put("nbopp", nbopp - 1);
30 }
31 userList = userList + "," + xwiki.checkAuth();
32 mydoc.set("supporters", userList);
33 // Increase vote by one
34 if(!nbvotes) {
35 nbvotes = 1;
36 } else {
37 nbvotes = nbvotes + 1;
38 }
39 mydoc.set("nbvotes", nbvotes);
40 // Save document
41 mydoc.saveWithProgrammingRights();
42 result.put("result", true);
43 result.put("nbvotes", nbvotes);
44 }
45 }
46 else if(request.action == "addVoteOpp") {
47 mydoc.use("Ideas.IdeasClass");
48 def userList = mydoc.getValue("against");
49 def userListSup = mydoc.getValue("supporters");
50 def nbvotes = mydoc.getValue("nbagainst");
51 def nbopp = mydoc.getValue("nbvotes");
52 if(StringUtils.contains(userList, xwiki.checkAuth().toString())) {
53 doRemoveagainst = true;
54 }
55 else {
56 // Add user in userList
57 if (StringUtils.contains(userListSup, xwiki.checkAuth().toString())){
58 doRemove = true;
59 result.put("remove", true);
60 result.put("nbopp", nbopp - 1);
61 }
62 if (userList == null){
63 userList = "," + xwiki.checkAuth();
64 }
65 else{
66 userList = userList + "," + xwiki.checkAuth();
67 }
68 mydoc.set("against", userList);
69 // Increase vote by one
70 if(!nbvotes) {
71 nbvotes = 1;
72 } else {
73 nbvotes = nbvotes + 1;
74 }
75 mydoc.set("nbagainst", nbvotes);
76 // Save document
77 mydoc.saveWithProgrammingRights();
78 result.put("result", true);
79 result.put("nbagainst", nbvotes);
80 }
81 }
82 // Action : Remove a supporter (vote)
83 if(request.action == "removeVote" || doRemove){
84 // Remove user from user list
85 def userList = mydoc.getValue("supporters");
86 def nbvotes = mydoc.getValue("nbvotes");
87 def theUser = xwiki.checkAuth();
88 def newUserList = StringUtils.replaceOnce(userList, ","+theUser.toString(), "");
89 newUserList = StringUtils.replaceOnce(newUserList , theUser.toString()+",", "");
90 newUserList = StringUtils.replaceOnce(newUserList , theUser.toString(), "");
91 mydoc.set("supporters", newUserList);
92 // Decrease vote by one
93 nbvotes = nbvotes - 1;
94 mydoc.set("nbvotes", nbvotes);
95 // Save document
96 mydoc.saveWithProgrammingRights();
97 result.put("result", true);
98 result.put("nbvotes", nbvotes);
99 }
100 else if(doRemoveagainst){
101 // Remove user from user list
102 def userList = mydoc.getValue("against");
103 def nbvotes = mydoc.getValue("nbagainst");
104 def theUser = xwiki.checkAuth();
105 def newUserList = StringUtils.replaceOnce(userList, ","+theUser.toString(), "");
106 newUserList = StringUtils.replaceOnce(newUserList , theUser.toString()+",", "");
107 newUserList = StringUtils.replaceOnce(newUserList , theUser.toString(), "");
108 mydoc.set("against", newUserList);
109 // Decrease vote by one
110 nbvotes = nbvotes - 1;
111 mydoc.set("nbagainst", nbvotes);
112 // Save document
113 mydoc.saveWithProgrammingRights();
114 result.put("result", true);
115 result.put("nbagainst", nbvotes);
116 }
117 } else if (xcontext.user == "XWiki.XWikiGuest") {
118 result.put("result", false);
119 result.put("msg", services.localization.render('ideas.message.guess'));
120 } else {
121 result.put("result", false);
122 result.put("msg", services.localization.render('ideas.message.error'));
123 }
124 }
125 } else {
126 result.put("result", false);
127 result.put("msg", "Dev error : Missing parameters")
128 }
129
130 // Format JSON response
131 response.setContentType("application/json");
132 def json = new JSONTool();
133 println json.serialize(result);
134 }
135 catch (Exception exception) {
136 println "Message : " + exception.getMessage();
137 println "StackTrace : " + exception.printStackTrace();
138 }
139 {{/groovy}}

Tips

You can click on the arrows next to the breadcrumb elements to quickly navigate to sibling and children pages.

My Recent Modifications

Need help?

If you need help with XWiki you can contact: