<% Global.gallery %>
macro renders images as a thumbnail gallery images can be either specified directly via the images-attribute or via their topic

  • Parameter images:
    String (optional), column separated list of image aliases
  • Parameter topic:
    String (optional), specifies from which topic the image should be taken
  • Parameter as:
    String (optional), default "popup"
  • Parameter cols:
    Integer (optional), default=4; if 0 then no table is rendered
Sourcecode in Global/macros.js:
1:   function gallery_macro(param) {
2:      if (param.images) {
3:         var items = new Array();
4:         var aliases = param.images.split(",");
5:         for (var i=0; i<aliases.length; i++) {
6:            aliases[i] = aliases[i].trim();
7:            var img = getPoolObj(aliases[i], "images");
8:            if (img && img.obj) items[items.length] = img.obj;
9:         }
10:     } else if (param.topic == null && path.Topic) {
11:        var items = path.Topic.list();
12:     } else {
13:        var top = param.topic;
14:        if (top && top.indexOf("/") >= 0) {
15:           var objPath = top.split("/");
16:           var s = (!objPath[0] || objPath[0] == "root") ? root : root.get(objPath[0]);
17:           top = objPath[1];
18:        }
19:        if (s==null) var s = res.handlers.site;
20:        var pool = (top) ? s.images.topics.get(top) : s.images;
21:        if (pool==null) return;
22:        var items = pool.list();
23:     }
24:     var cols = param.cols ? parseInt(param.cols) : 4;
25:     var table_params = param.table_params ? " "+param.table_params : " class=\"gallery\"";
26:     var tr_params = param.tr_params ? " "+param.tr_params : "";
27:     var td_params = param.td_params ? " "+param.td_params : "";
28:     var itemprefix = param.itemprefix ? param.itemprefix : "";
29:     var itemsuffix = param.itemsuffix ? param.itemsuffix : "";
30:     var order = param.order ? param.order : null;
31:     delete(param.topic);
32:     delete(param.images);
33:     delete(param.cols);
34:     delete(param.itemprefix);
35:     delete(param.itemsuffix);
36:     delete(param.table_params);
37:     delete(param.tr_params);
38:     delete(param.td_params);
39:  
40:     if (param.as==null) param.as = "popup";
41:     if (cols>0) res.write("<table"+table_params+">\n");
42:     if (cols==0 || items.length%cols==0)
43:        var max = items.length;
44:     else
45:        var max = items.length + (cols - items.length%cols);
46:     for (var i=0; i<max; i++) {
47:        var img = (i<items.length) ? items[i] : null;
48:        if (cols>0 && i%cols==0) res.write("<tr"+tr_params+">\n");
49:        if (cols>0) res.write("<td"+td_params+">");
50:        if (img) {
51:           res.write(itemprefix);
52:           var obj = new HopObject();
53:           for (var j in param) obj[j] = param[j];
54:           obj.name = img.site.alias + "/" + img.alias;
55:           image_macro(obj);
56:           res.write(itemsuffix);
57:        }
58:        if (cols>0) res.write("</td>\n");
59:        if (cols>0 && i%cols==cols-1) res.write("</tr>\n");
60:     }
61:     if (cols>0) res.write("</table>\n");
62:     return;
63:  }