<% Story.editableby %>
macro renders the property of story that defines if other users may edit this story

Sourcecode in Story/macros.js:
1:   function editableby_macro(param) {
2:      if (param.as == "editor" && (session.user == this.creator || !this.creator)) {
3:         var options = [EDITABLEBY_ADMINS,
4:                        EDITABLEBY_CONTRIBUTORS,
5:                        EDITABLEBY_SUBSCRIBERS];
6:         var labels = [getMessage("Story.editableBy.admins"), 
7:                       getMessage("Story.editableBy.contributors"), 
8:                       getMessage("Story.editableBy.subscribers")];
9:         delete param.as;
10:        if (req.data.publish || req.data.save)
11:           var selValue = !isNaN(req.data.editableby) ? req.data.editableby : null;
12:        else
13:           var selValue = this.editableby;
14:        for (var i=0;i<options.length;i++) {
15:           Html.radioButton({name: "editableby", value: options[i], selectedValue: selValue});
16:           res.write("&nbsp;");
17:           res.write(labels[i]);
18:           res.write("&nbsp;");
19:        }
20:     } else {
21:        switch (this.editableby) {
22:           case 0 :
23:              res.write(getMessage("Story.editableBy.adminsLong", {siteTitle: path.Site.title}));
24:              return;
25:           case 1 :
26:              res.write(getMessage("Story.editableBy.contributorsLong", {siteTitle: path.Site.title}));
27:              break;
28:           case 2 :
29:              res.write(getMessage("Story.editableBy.subscribersLong", {siteTitle: path.Site.title}));
30:              break;
31:        }
32:     }
33:     return;
34:  }