|
Frequently Asked Questions v2
|
When you write an item which goes into the Active bin or when you approve an
item, the feeding function is invoked. This function finds all slices
where the item should be fed (depending on current feeding permissions ("Admin"
-> "Content pooling - Import & Export") and feeding setings ("Admin"
-> "Content pooling - Filters")). The feeding goes deeper and deeper between the slices until a cycle is detected or feeding into Holding bin is set.
Feeding one item from one slice to another means:
- The content of each field is copied to the destination slice (there is one exception
- see the STATE_UNFEEDABLE flag in following text)
- The content is copied including the HTML codded / plain text flag
- The field is fed to the destination field with the same field_id as default (headline........
goes to headline........ field). This can be changed in the feedmap
table, where you can map fields to another ones (See "Admin"
-> "Content pooling - Mapping"
- flag FLAG_FEED is set for each stored value (see FLAG_* definitons
in following text)
Let's look in the constants.php3 file:
# content table flags
define( "FLAG_HTML", 1 );
define( "FLAG_FEED", 2 );
define( "FLAG_FREEZE", 4 );
define( "FLAG_OFFLINE", 8 );
define( "FLAG_UPDATE", 16 );
# states of feed field of field table
define( "STATE_FEEDABLE", 0 );
define( "STATE_UNFEEDABLE", 1 );
define( "STATE_FEEDNOCHANGE", 2 );
define( "STATE_FEEDABLE_UPDATE",3);
define( "STATE_FEEDABLE_UPDATE_LOCKED",4);
# relation table flags
define( "REL_FLAG_FEED", 2 ); # 2 - just to be compatible with content table
There you see how the various flags can be set. The most important are the flags
for the field table. For each field you can set whether this field is
- feedable (STATE_FEEDABLE) - the content of this field is copied
to the new slice and user in the new slice can freely edit it
- unfeedable (STATE_UNFEEDABLE) - the content of this field is never
copied to the new slice
- feedable, but locked (STATE_FEEDNOCHANGE) - the field is copied to the new
slice, but the flag FLAG_FREEZE is set for the field, so the
user in the new slice can display the content of this field, but she can't change
the value
- feedable with update(STATE_FEEDABLE_UPDATE) - the same as STATE_FEEDABLE, but if the content of source field is changed, the content of the destination field is updated too. Editor of the destination slice can change value of such a field, but when someone changes the field in the source slice, the value is rewritten.
- feedable with update and locked (STATE_FEEDABLE_UPDATE_LOCKED) - the same as STATE_FEEDABLE_UPDATE, but the editor of the destination slice can't change the value of this field.
These settings can be done on the "Admin" -> "Main settings -
Fields" -> "Edit" -> "Feeding mode" page, where you can set for each field:
- Feed (= STATE_FEEDABLE) -
copy the content of the source field once (to the destination field)
- Do not Feed (=
STATE_UNFEEDABLE) - do not copy the content of this field to the destination slice
- Feed locked (=
STATE_FEEDNOCHANGE) - copy the content once, but forbid editors of the destination
slice to change the value of this field
- Feed & update (=
STATE_FEEDABLE_UPDATE) - copy the content and update the content of the
destination field each time the source field is changed (content sharing)
- Feed & update & lock (= STATE_FEEDABLE_UPDATE_LOCKED) - the same as before, but editors of the destination slice can't change the content
Depending on field table flags, the flags for content table are set:
- FLAG_HTML is allways copied from the source field
- FLAG_FEED is allways set for fed fields (currently it has no specific
use - we just mark the fed content)
- FLAG_FREEZE is set if the source field has STATE_FEEDNOCHANGE
flag set. In other cases this flag is unset. All fields with FLAG_FREEZE
are never displayed in the input form so they can't be changed by the user in the destination
slice.
After copying the contents, the relation table is updated. This table holds
information about the feeding tree (from which item is the content fed to another).
The relation table will be used for another purposes in future too (for holding
discussion threads, ...), so each record for feeding if flagged as REL_FLAG_FEED.
Last Edit: Aug 17 2011
<aafaq id=1774> ~ToDo: 1774 How can I control which fields are fed, and whether they are editable </aafaq>
This FAQ interface was developed
by Jason at Commons.ca
|
APC
ActionApps is a free software content management system initiated by
the Association for Progressive Communications (APC)
APC - Internet and ICTs for social justice and development |