aboutsummaryrefslogtreecommitdiff
path: root/mod/ecml/README.txt
blob: 12b6a1c8b0629655bdaf1ce4eb45b2c480b4d1d6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
ECML - Elgg Custom Markup Language

CONTENTS:
	1.  Overview
	2.  Using ECML Keywords
		2.1  Built-in keywords
		2.2  Entities
		2.3  Views
	3.  Custom ECML Keywords
	4.  Hints and Quirks


1.  OVERVIEW

	ECML adds support for an extensible keyword	system that allows users
	to quickly add elements and embed media in their content.  The ECML
	control panel can be used to granualarly allow ECML keywords in certain
	contexts and views.


2.  USING ECML KEYWORDS

	All ECML keywords are surrounded by two square brackets: [[ and ]].
	Some keywords, like views and entity lists, take optional parameters.

	Example:
		[[user_list]] -- Display up to 10 newest users.

		[[user_list: list_type=online]] -- Display up to 10 active users.

		[[user_list: list_type=online, only_with_avatars=true]] -- Display
			up to 10 active users who have uploaded avatars.


2.1  BUILT-IN KEYWORDS

	ECML includes a few built-in keywords to get you started:
		[[entity]] - Displays a list of users.

		[[view]] - Shows the total members in your site, the currently
						active members, and other fun stuff.


2.2  Entities

	You can generate a list of entities by using the [[entity]] keyword.  This
	keyword takes similar arguments to the elgg_get_entities() function.  See
	documentation in that function for a complete list.

	Additional / changed parameters supported by keywords:
	* owner: The username owner. (You can still use owner_guid)

	Example: To generate a list of all blog posts by the user named 'admin':
		[[entities: type=object, subtype=blog, owner=admin]]

	Example: To show newest group created:
		[[entities: type=object, subtype=group, limit=1]]


2.1 Views

	Keywords support outputting arbitrary views with the [[view]] keyword and
	supports passing arguments as name=value pairs.

	Example: Output a text input field with a default value:
		[[view: input/text, value=This is a test!]]

	NB: Do NOT quote the name or values when passing them.  Also, as of 1.8
	using commas or = in the name or value is unsupported.


3.0  CUSTOM FRONT PAGE KEYWORDS

	Plugins can add their own keywords by replying to the 'get_keywords' hook
	of type 'sitepages.'  Each keyword must be bound to a valid view.  Almost
	all functionality in custom keywords could be implemented using the 'view'
	keyword, but custom keywords provide a simple way for non-techy users to
	include ready-made views without the fuss of knowing what they're doing.

	Custom keywords support arguments in the same format as views and entities.
	These arguments are passed to the custom view via the $vars array.  It is
	the responsibility of the custom view to parse these arguments.

	The below example creates the 'my_plugin_keyword' keyword that displays the
	view at 'my_plugin/keyword_view.'  This is exactly the same as saying
	[[view: my_plugin/keyword_view]] but much simpler for the user.

	Example:
		register_plugin_hook('get_keywords', 'sitepages', 'my_plugin_keywords');

		function my_plugin_keywords($hook, $type, $value, $params) {
			$value['my_plugin_keyword'] = array(
				'view' => 'my_plugin/keyword_view',
				'description' => 'Provides the awesome My Plugin keyword'
			);

			return $value;
		}


4.  HINTS AND QUIRKS

	* A custom keyword is slightly more complicated to implement, but is
	much simpler for the end user to use.

	* Custom keywords can contain only alphanumeric and the underscore
	character.

	* All keywords have limited support for passing arguments but the arguments
	cannot contain '=' or ','.  If you need complicated arguments for a custom
	keyword, it's better to split the functionality into multiple keywords and
	views instead of requiring complicated arguments.