Components
Activity catchers

Activity catchers are mainly related to user activity or participation. Their purpose is to isolate modules from contacts, without losing the ability to react on changes.

Catchers are lists of activities. Activities can be entity participations. Each activity use to contain a user participation. For instance, a user will participate in an issue if has a role within the issue, but not if just commented or participates in issue's dossier.

Assistants

Assistants are users that do not actually participate in an entity, but have entity permissions to assist. An example of assistants is the add by entity combobox. Deep assistants are those who do not assist directly in the related entity, but do indirectly in a parent oriented hierarchy.

Last activity centered

The Elephant system also provides last activity catchers. The activity source might be known or at first unknown. Known sources are data collected from actual entities. The unknown source is basically the log system, in which user activities are registered.


Collected activity

Agreements

The Agreements API help web administrators to deal with legal issues regarding data protection, terms and conditions.

Why an agreement API?

You may need to warn the user about things like:

The Agreements API provides a lightweight method to store when a user accepts what the agreement proposes. In order to achieve this, there are some restrictions you should be aware of:

How does it work?

First of all, you create an agreement. The main fields are:

Field

Usage

Title

Title of the agreement. Is what it shows in listings and the subject in notifications.

Text

Body of the agreement. Accepts del {site} macro, replaced by web site name.

Required to notify

Describes this agreement as required when sending email notifications to users.

Required to access

Describes this agreement as required to operate for authenticated users.

Peremptory

Will force sending a Pending signature notification each time encounters a failed intent, up to ten notifications.

Action

Defines de agreement as related to a user action. Those actions are reported by the modules (see module-actions). When unknown, let it blank.

Social groups

Defines de agreement for specific social groups. The input requires comma separated social group id's (as in Grups socials ). When unknown, let it blank.

What final users will see?

When the required signature forbids sending notifications, a Pending signature notification will be sent. The user will be able to Accept or Decline the agreement from the notification email.

When the required signature forbids operating, the user will be redirected to the agreement, expecting to Accept or Decline the agreement.

The agreement flow


Notifications

Modules chose whether to treat users as Observers or Participants.

Agreement

Not set

Accepted

Declined

Wants
Participant

Send

Send

Don't send

May want
Observer

Don't send

Send

Don't send

Module

Recipients

Sendables

Since sendables are configured by administrators, recipients are manually selected. Those who explicitly declined to receive notifications, despite being selected, will not receive any email.

Publications

Only those who explicitly accepted to receive notifications and are category subscribers, will receive the email.

Dossiers

Only those who explicitly declined to receive notifications, will not receive the email.

Newsletter

Each Newsletter decide how to treat the subscribers.

The generic rule to follow explains itself better in terms of participation. When a user participates in a module, the participation will prevail to the not signed status.

Publication category subscriptors are not considered participants, but observers. In this case, not signed prevails.

Module actions

API provided by modules

Key for the action

Marketplace new entry

marketplace-new

New project idea

project-new

New challenge

challenge-new

New response to challenge

challenge-response-new

calendars

Elephant Calendars are a full set of events, generated from application entities. Unlike Activity, calendars also contain future events and a relevant subset of the activity.

Calendars intention is to gather, in a temporal element, information about entities, display a summary and a link to the entity.

Calendar content

Calendars can be configured to show different content, and related-content. To understand what to expect from a Calendar, depending on the context where it's shown, see the tables below:

Type Description
Non-related Displays application-wide events, as configured (See Calendar entities)
Entity-related Displays entity-related events. For instance, if it's a category calendar, it will only show events related to that category.
Type Description
Public Displays public events. Includes Non-related and Entity-related calendars.
With target Displays public events, plus those specific to the target user, usually the one currently authenticated. Includes Non-related and Entity-related calendars.

Calendar entities

Each Non-related Calendar can be configured to display certain entities. The entities that can be configured are:

Entity Description
Publications Exposes publications as events using publication date.
Issues Exposes issues as events using modification date.
Convocations Exposes convocations as events using call date.
Services Exposes services as events using start date.

Calendar popups

Calendar popups are user conscious, showing only what is allowed to see by the target user. If allowed, users can see full detail in the user area, or the corresponding context if configured. For admins, when appropriate, also a link to the application.

Standard calendars provided

Some calendars are provided out-of-the-box, as part of the application functionality.

Calendar Description
User calendar Available at the user area, on Networking -> Calendar. This calendar is Non-related and With-target.
  • Provides all the entities in a single place.
  • Includes a link to integrate the calendar events into another calendar software.
Category calendar Part of projects, Entity-related to the selected category or all.
Noticeboard Part of the Noticeboard, Entity-related to services.
Public calendar Non-related and usually part of the landing page.

Calendar for admins

Admins have full access to calendar events using BaaS -> Session -> Calendar.

Colors

Elephant Colors API provides some useful methods for manipulating colors. The main goal, though, is finding the adequate font color, based on a solid background. The API can be accessed within templates using the helper object helper.color([name|hexvalue|rgb[a]()]). This function returns a Color object with these methods:

Method

Description

css()

The color in a CSS format #RRGGBB

font()

A Color object representing the adequate font color.

bw()

A gray-scale Color object representing the color.

Default palette

This palette is provided as color choosing helper. Any other color can be used with the Elephant Colors API. The palette uses the API to choose the adequate font color using the Color object:

// assign color using color = helper.color('name or hexvalue or rgb[a]()')

<div style="background-color:${color.css()};color:${color.font().css()}">
  ${color_name} (${color.css()})
</div>
Black (#000000)
Oil (#3B3131)
DarkCoffee (#3B2F2F)
LightBlack (#454545)
BlackCow (#4C4646)
GrayDolphin (#5C5858)
CarbonGray (#625D5D)
RedBlood (#660000)
DimGray (#696969)
SonicSilver (#757575)
PlatinumGray (#797979)
Gray (#808080)
Maroon (#800000)
DarkRed (#8B0000)
RoseDust (#997070)
CrimsonRed (#990000)
Brown (#A52A2A)
DarkGray (#A9A9A9)
FireBrick (#B22222)
RosyBrown (#BC8F8F)
Silver (#C0C0C0)
IndianRed (#CD5C5C)
PlatinumSilver (#CECECE)
LightGray (#D3D3D3)
Gainsboro (#DCDCDC)
LightCoral (#F08080)
WhiteSmoke (#F5F5F5)
White (#FFFFFF)
Snow (#FFFAFA)
Red (#FF0000)
LoveRed (#E41B17)
LightRed (#FFCCCB)
ValentineRed (#E55451)
ChilliPepper (#C11B17)
PinkCoral (#E77471)
BeanRed (#F75D59)
PeachPink (#F98B88)
DeepRose (#FBBBB9)
KhakiRose (#C5908E)
CherryRed (#C24641)
SilverPink (#C4AEAD)
LightRose (#FBCFCD)
Rose (#E8ADAA)
RubyRed (#F62217)
Puce (#7F5A58)
LavaRed (#E42217)
PinkBubbleGum (#FFDFDD)
RosyPink (#B38481)
FireEngineRed (#F62817)
OldBurgundy (#43302E)
TomatoSauceRed (#B21807)
NeonRed (#FD1C03)
MistyRose (#FFE4E1)
Salmon (#FA8072)
RoseGold (#ECC5C0)
GrayBrown (#3D3635)
SalmonPink (#FF8674)
Grapefruit (#DC381F)
GoldPink (#E6C7C2)
Scarlet (#FF2400)
Tomato (#FF6347)
Chestnut (#954535)
BlackBean (#3D0C02)
ShockingOrange (#E55B3C)
ChestnutRed (#C34A2C)
Midnight (#2B1B17)
WesternCharcoal (#49413F)
CloudyGray (#6D6968)
SmokeyGray (#726E6D)
AlienGray (#736F6E)
BloodNight (#551606)
CopperRed (#CB6D51)
SunriseOrange (#E67451)
AshGray (#666362)
DarkSalmon (#E9967A)
Rust (#C36241)
BasketBallOrange (#F88158)
Coral (#FF7F50)
OrangeRed (#FF4500)
Granite (#837E7C)
LightSalmon (#FFA07A)
BrightOrange (#FF5F1F)
BloodRed (#7E3517)
LightSalmonRose (#F9966B)
OrangeSalmon (#C47451)
LightCopper (#DA8A67)
Tangerine (#E78A61)
Sepia (#7F462C)
Sangria (#7E3817)
Sienna (#A0522D)
Mahogany (#C04000)
MangoOrange (#FF8040)
ConstructionConeOrange (#F87431)
PastelBrown (#B1907F)
RedGold (#EB5406)
HalloweenOrange (#E66C2C)
PaleSilver (#C9C0BB)
UnbleachedSilk (#FFDDCA)
DarkSienna (#8A4117)
RedFox (#C35817)
IndianSaffron (#FF7722)
PapayaOrange (#E56717)
PetraGold (#B76734)
NeonOrange (#FF6700)
PumpkinOrange (#F87217)
BakersBrown (#5C3317)
Coffee (#6F4E37)
SeaShell (#FFF5EE)
PastelOrange (#F8B88B)
SaddleBrown (#8B4513)
Chocolate (#D2691E)
DesertSand (#EDC9AF)
DeepPeach (#FFCBA4)
DarkGold (#AA6C39)
DarkAlmond (#AB784E)
Taupe (#483C32)
BrownBear (#835C3B)
SandyBrown (#F4A460)
CarrotOrange (#F88017)
PeachPuff (#FFDAB9)
LightBrown (#B5651D)
TigerOrange (#C88141)
BrownSand (#EE9A4D)
Copper (#B87333)
BrownSugar (#E2A76F)
Peru (#CD853F)
Bronze (#CD7F32)
DarkBrown (#654321)
SepiaBrown (#704214)
Sedona (#CC6600)
DarkWhite (#E1D9D1)
Linen (#FAF0E6)
LightOrange (#FED8B1)
DarkBeige (#9F8C76)
Bisque (#FFE4C4)
Rice (#FAF5EF)
CamelBrown (#C19A6B)
DarkBisque (#B86500)
DarkOrange (#FF8C00)
Sandstone (#786D5F)
BurlyWood (#DEB887)
RedDirt (#7F5217)
Tan (#D2B48C)
AntiqueWhite (#FAEBD7)
YellowOrange (#FFAE42)
Cantaloupe (#FFA62F)
DarkBronze (#804A00)
MilkChocolate (#513B1C)
NavajoWhite (#FFDEAD)
BlanchedAlmond (#FFEBCD)
Wood (#966F33)
DeerBrown (#E6BF83)
MacaroniandCheese (#F2BB66)
Champagne (#F7E7CE)
OffWhite (#F8F0E3)
PapayaWhip (#FFEFD5)
LightFrenchBeige (#C8AD7F)
Moccasin (#FFE4B5)
Orange (#FFA500)
Wheat (#F5DEB3)
OldLace (#FDF5E6)
Peach (#FFE5B4)
Cinnamon (#C58917)
SoftIvory (#FAF0DD)
Mocha (#493D26)
Iridium (#3D3C3A)
GrayGoose (#D1D0CE)
Platinum (#E5E4E2)
GoldenSilk (#F3E3C3)
FloralWhite (#FFFAF0)
SchoolBusYellow (#E8A317)
Beer (#FBB117)
Caramel (#C68E17)
WhiteChocolate (#EDE6D6)
BeeYellow (#E9AB17)
DarkGoldenRod (#B8860B)
Saffron (#FBB917)
GoldenRod (#DAA520)
OrangeGold (#D4A017)
BoneWhite (#F9F6EE)
ChromeGold (#FFCE44)
OakBrown (#806517)
NeonGold (#FDBD01)
BulletShell (#AF9B60)
BronzeGold (#C9AE5D)
PearlWhite (#F8F6F0)
Sand (#C2B280)
DarkBlonde (#F0E2B6)
AshWhite (#E9E4D4)
MetallicGold (#D4AF37)
DeepYellow (#F6BE00)
GoldenBlonde (#FBE7A1)
MustardYellow (#FFDB58)
EggShell (#FFF9E3)
ArmyBrown (#827B60)
CookieBrown (#C7A317)
Hazel (#8E7618)
Cornsilk (#FFF8DC)
BrightGold (#FDD017)
GoldenBrown (#EAC117)
Vanilla (#F3E5AB)
FallLeafBrown (#C8B560)
SunYellow (#FFE87C)
LightGold (#F1E5AC)
CardboardBrown (#EDDA74)
Gold (#FFD700)
RubberDuckyYellow (#FFD801)
Blonde (#FBF6D9)
BoldYellow (#F9DB24)
DarkMoccasin (#827839)
Brass (#B5A642)
TanBrown (#ECE5B6)
DirtyWhite (#E8E4C9)
GoldenYellow (#FFDF00)
AntiqueBronze (#665D1E)
GingerBrown (#C9BE62)
Khaki (#F0E68C)
LemonChiffon (#FFFACD)
CornYellow (#FFF380)
HarvestGold (#EDE275)
KhakiGreen (#8A865D)
PaleGoldenRod (#EEE8AA)
MilleniumJade (#93917C)
BananaYellow (#F5E216)
Sage (#BCB88A)
DarkYellow (#8B8000)
DarkKhaki (#BDB76B)
CanaryYellow (#FFEF00)
CreamWhite (#FFFDD0)
OliveGreen (#BAB86C)
PastelYellow (#FAF884)
Olive (#808000)
BattleshipGray (#848482)
GrayCloud (#B6B6B4)
Beige (#F5F5DC)
LightGoldenRodYellow (#FAFAD2)
Cotton (#FBFBF9)
LightWhite (#FFFFF7)
WhiteGold (#FFFFF4)
Ivory (#FFFFF0)
LightYellow (#FFFFE0)
Cream (#FFFFCC)
Parchment (#FFFFC2)
NeonYellow (#FFFF33)
Yellow (#FFFF00)
NeonYellowGreen (#DAEE01)
YellowGreenGrosbeak (#E2F516)
AcidGreen (#B0BF1A)
AvocadoGreen (#B2C248)
ArmyGreen (#4B5320)
VenomGreen (#728C00)
PistachioGreen (#9DC209)
ChameleonGreen (#BDF516)
FernGreen (#667C26)
OrganicBrown (#E3F9A6)
SaladGreen (#A1C935)
TeaGreen (#CCFB5D)
SlimeGreen (#BCE954)
MilitaryGreen (#4E5B31)
ChromeWhite (#E8F1D4)
IguanaGreen (#9CB071)
DullGreenYellow (#B1FB17)
OliveDrab (#6B8E23)
YellowGreen (#9ACD32)
DarkOliveGreen (#556B2F)
SageGreen (#848B79)
GreenYellow (#ADFF2F)
AloeVeraGreen (#98F516)
GreenOnion (#6AA121)
YellowLawnGreen (#87F717)
HummingbirdGreen (#7FE817)
Chartreuse (#7FFF00)
LawnGreen (#7CFC00)
AlienGreen (#6CC417)
CamouflageGreen (#78866B)
GreenPeas (#89C35C)
SeaweedGreen (#437C17)
BrightGreen (#66FF00)
GreenSnake (#6CBB3C)
DollarBillGreen (#85BB65)
DarkForestGreen (#254117)
PeaGreen (#52D017)
NebulaGreen (#59E817)
EmeraldGreen (#5FFB17)
GreenApple (#4CC417)
DarkLimeGreen (#41A317)
ShamrockGreen (#347C17)
GreenPepper (#4AA02C)
HazelGreen (#617C58)
FrogGreen (#99C68E)
GreenThumb (#B5EAAA)
LightJade (#C3FDB8)
DinosaurGreen (#73A16C)
JungleGreen (#347C2C)
DarkGreen (#006400)
Green (#008000)
ForestGreen (#228B22)
GunmetalGray (#8D918D)
DarkSeaGreen (#8FBC8F)
LimeGreen (#32CD32)
PastelGreen (#77DD77)
LightGreen (#90EE90)
LightRoseGreen (#DBF9DB)
PaleGreen (#98FB98)
HoneyDew (#F0FFF0)
MintGreen (#98FF98)
Lime (#00FF00)
MediumForestGreen (#347235)
DeepEmeraldGreen (#046307)
KellyGreen (#4CC552)
NeonGreen (#16F529)
StoplightGoGreen (#57E964)
JadeGreen (#5EFB6E)
HunterGreen (#355E3B)
FallForestGreen (#4E9258)
ParrotGreen (#12AD2B)
PineGreen (#387C44)
CloverGreen (#3EA055)
AlgaeGreen (#64E986)
ZombieGreen (#54C571)
DragonGreen (#6AFB92)
Emerald (#50C878)
LimeMintGreen (#36F57F)
SeaGreen (#2E8B57)
MediumSeaGreen (#3CB371)
SpringGreen (#00FF7F)
MintCream (#F5FFFA)
EarthGreen (#34A56F)
MetallicGreen (#7C9D8E)
MagicMint (#AAF0D1)
MediumSpringGreen (#00FA9A)
Mint (#3EB489)
DarkMint (#31906E)
Deep-SeaGreen (#306754)
MediumAquaMarine (#66CDAA)
Dull-SeaGreen (#4E8975)
Jade (#00A36C)
Aquamarine (#7FFFD4)
BlueGreen (#7BCCB5)
LightAquamarine (#93FFE8)
SeaTurtleGreen (#438D80)
Turquoise (#40E0D0)
SeafoamGreen (#3EA99F)
TiffanyBlue (#81D8D0)
AquamarineStone (#348781)
LightSeaGreen (#20B2AA)
MediumTurquoise (#48D1CC)
TealGreen (#00827F)
DeepTeal (#033E3E)
MediumTeal (#045F5F)
Teal (#008080)
DarkCyan (#008B8B)
Deep-Sea (#3B9C9C)
CyanOpaque (#92C7C7)
NorthernLightsBlue (#78C7C7)
Jellyfish (#46C7C7)
PaleBlueLily (#CFECEC)
PaleTurquoise (#AFEEEE)
Azure (#F0FFFF)
LightCyan (#E0FFFF)
LightSlate (#CCFFFF)
BrightCyan (#0AFFFF)
Aqua (#00FFFF)
BlueZircon (#57FEFF)
Celeste (#50EBEC)
DeepTurquoise (#48CCCD)
TronBlue (#7DFDFE)
ElectricBlue (#9AFEFF)
BlueLagoon (#8EEBEC)
GreenishBlue (#307D7E)
DarkTurquoise (#00CED1)
CadetBlue (#5F9EA0)
GrayishTurquoise (#5E7D7E)
MacawBlueGreen (#43BFC7)
BlueDiamond (#4EE2EC)
BrightTurquoise (#16E2F5)
BlueHosta (#77BFC7)
PowderBlue (#B0E0E6)
BeetleGreen (#4C787E)
BlueTurquoise (#43C6DB)
BlueMossGreen (#3C565B)
DarkSlateGray (#25383C)
LightBlue (#ADD8E6)
DeepSkyBlue (#00BFFF)
CoralBlue (#AFDCEC)
RobinEggBlue (#BDEDFF)
BabyBlue (#95B9C7)
SkyBlue (#87CEEB)
Gunmetal (#2C3539)
LightSteelBlue (#B0CFDE)
ButterflyBlue (#38ACEC)
MiddayBlue (#3BB9FF)
IronGray (#52595D)
BlueIvy (#3090C7)
GulfBlue (#C9DFEC)
ColumbiaBlue (#87AFC7)
MetallicSilver (#BCC6CC)
JeansBlue (#A0CFEC)
LightSkyBlue (#87CEFA)
GlacialBlueIce (#368BC1)
LightDayBlue (#ADDFFF)
CharcoalBlue (#36454F)
Water (#EBF4FA)
BlueKoi (#659EC7)
DarkBlueGrey (#29465B)
DaySkyBlue (#82CAFF)
MarbleBlue (#566D7E)
DenimBlue (#79BAEC)
SteelBlue (#4682B4)
AliceBlue (#F0F8FF)
CrystalBlue (#5CB3FF)
Iceberg (#56A5EC)
SilkBlue (#488AC7)
DodgerBlue (#1E90FF)
Deep-SeaBlue (#123456)
NardoGray (#686A6C)
SlateGray (#708090)
LightSlateGray (#778899)
WindowsBlue (#357EC7)
NeonBlue (#1589FF)
BlueJay (#2B547E)
BrightNavyBlue (#1974D2)
BlueGray (#98AFC7)
BlueDress (#157DEC)
PastelBlue (#B4CFEC)
SeaBlue (#C2DFFF)
BlueEyes (#1569C7)
SlateGraniteGray (#657383)
WhiteBlue (#DBE9FA)
RatGray (#6D7B8D)
BlueAngel (#B7CEEC)
HeavenlyBlue (#C6DEFF)
JetGray (#616D7E)
CornflowerBlue (#6495ED)
MistBlue (#646D7E)
BlueberryBlue (#0041C2)
SilverWhite (#DADBDD)
SkyBlueDress (#6698FF)
RomanSilver (#838996)
LightPurpleBlue (#728FCE)
AzureBlue (#4863A0)
DarkSlate (#2B3856)
OceanBlue (#2B65EC)
BlueRibbon (#306EFF)
BalloonBlue (#2B60DE)
SapphireBlue (#2554C7)
LapisBlue (#15317E)
RoyalBlue (#4169E1)
SlateBlueGrey (#737CA1)
BlueOrchid (#1F45FC)
CobaltBlue (#0020C2)
NightBlue (#151B54)
PurpleNavy (#4E5180)
DenimDarkBlue (#151B8D)
PastelLightBlue (#D5D6EA)
LavenderBlue (#E3E4FA)
VeryPeri (#6667AB)
MidnightBlue (#191970)
Navy (#000080)
DarkBlue (#00008B)
NewMidnightBlue (#0000A0)
EarthBlue (#0000A5)
MediumBlue (#0000CD)
PeriwinklePurple (#7575CF)
Lavender (#E6E6FA)
GhostWhite (#F8F8FF)
Periwinkle (#CCCCFF)
BrightBlue (#0909FF)
Blue (#0000FF)
DeepPeriwinkle (#5453A6)
LightSlateBlue (#736AFF)
BlueLotus (#6960EC)
CanaryBlue (#2916F5)
BlueWhale (#342D7E)
Grape (#5E5A80)
SlateBlue (#6A5ACD)
DarkSlateBlue (#483D8B)
MediumSlateBlue (#7B68EE)
CrocusPurple (#9172EC)
PaleLilac (#DCD0FF)
LightPurple (#8467D7)
PurpleMimosa (#9E7BFF)
PurpleSageBush (#7A5DC7)
PurpleHaze (#4E387E)
MediumPurple (#9370DB)
LovelyPurple (#7F38EC)
AztechPurple (#893BFF)
PurpleAmethyst (#6C2DC7)
PurpleMonster (#461B7E)
LavenderPurple (#967BB6)
PurplePlum (#8E35EF)
RebeccaPurple (#663399)
BlueViolet (#8A2BE2)
BrightGrape (#6F2DA8)
ClematisViolet (#842DCE)
Indigo (#4B0082)
BrightPurple (#6A0DAD)
JasminePurple (#A23BEC)
PurpleDaffodil (#B041FF)
PurpleViolet (#8D38C9)
PurpleIris (#571B7E)
Mauve (#E0B0FF)
NeonPurple (#9D00FF)
MilkWhite (#FEFCFF)
DarkOrchid (#9932CC)
DarkViolet (#9400D3)
TyrianPurple (#C45AEC)
HeliotropePurple (#D462FF)
RichLilac (#B666D2)
PurpleFlower (#A74AC7)
PurpleWhite (#DFD3E3)
BrightLilac (#D891EF)
PurpleJam (#6A287E)
MediumOrchid (#BA55D3)
FrenchLilac (#86608E)
DeepPurple (#36013F)
PeriwinklePink (#E9CFEC)
CottonCandy (#FCDFFF)
BlushPink (#E6A9EC)
BlossomPink (#F9B7FF)
PurpleDragon (#C38EC7)
DarkPurple (#4B0150)
CrimsonPurple (#E238EC)
BrightNeonPink (#F433FF)
OrchidPurple (#B048B5)
WisteriaPurple (#C6AEC7)
PurpleThistle (#D2B9D3)
PlumPurple (#583759)
ViolaPurple (#7E587E)
Purple (#800080)
DarkMagenta (#8B008B)
Lilac (#C8A2C8)
Thistle (#D8BFD8)
Plum (#DDA0DD)
Violet (#EE82EE)
FuchsiaPink (#FF77FF)
Fuchsia (#FF00FF)
Orchid (#DA70D6)
DeepMauve (#DF73D4)
PastelPurple (#F2A2E8)
PinkPlum (#B93B8F)
PastelViolet (#D291BC)
PlumVelvet (#7D0552)
MediumVioletRed (#C71585)
DarkCarnationPink (#C12283)
NeonPink (#F535AA)
DimorphothecaMagenta (#E3319D)
RoyalPink (#E759AC)
MagentaPink (#CC338B)
PurpleLily (#550A35)
DeepPink (#FF1493)
NeonHotPink (#FD349C)
Eggplant (#614051)
DarkRaspberry (#872657)
PlumPie (#7D0541)
DarkHotPink (#F660AB)
HotPink (#FF69B4)
BrightPink (#FF007F)
PurpleMaroon (#810541)
PinkCupcake (#E45E9D)
HotDeepPink (#F52887)
PinkLemonade (#E4287C)
VioletRed (#F6358A)
BashfulPink (#C25283)
PinkViolet (#CA226B)
BurntPink (#C12267)
RoguePink (#C12869)
CadillacPink (#E38AAE)
Pearl (#FDEEF4)
Raspberry (#E30B5D)
RaspberryPurple (#B3446C)
LavenderPinocchio (#EBDDE2)
PigPink (#FDD7E4)
RoseRed (#C21E56)
Night (#0C090A)
Charcoal (#34282C)
LavenderBlush (#FFF0F5)
VelvetMaroon (#7E354D)
PaleVioletRed (#DB7093)
TulipPink (#C25A7C)
CarnationPink (#F778A1)
BlushRed (#E56E94)
PurplePink (#D16587)
DarkPink (#E75480)
MauveTaupe (#915F6D)
DarkScarlet (#560319)
DullPurple (#7F525D)
BrightMaroon (#C32148)
ChocolateBrown (#3F000F)
RosePink (#E7A1B0)
RedPink (#FA2A55)
Crimson (#DC143C)
DonutPink (#FAAFBE)
LipstickPink (#C48793)
CarbonRed (#A70D2A)
Burgundy (#8C001A)
RedWhite (#F3E8EA)
Pink (#FFC0CB)
WatermelonPink (#FC6C85)
GrayWolf (#504A4B)
VampireGray (#565051)
LightPink (#FFB6C1)
BabyPink (#FAAFBA)
DeepRed (#800517)
DustyPink (#D58A94)
PinkDaisy (#E799A3)
BlackEel (#463E3F)
PinkBrown (#C48189)
RedWine (#990012)
BlackCat (#413839)
FlamingoPink (#F9A7B0)
PastelRed (#F67280)
Cranberry (#9F000F)
Rosy-Finch (#7F4E52)
Blush (#FFE6E8)
PastelPink (#FEA3AA)
FerrariRed (#F70D1A)
Vermilion (#7E191B)
SaffronRed (#931314)

Cookies

Elephant provides a cookie tracking mechanism to allow / decline types of cookies. The Cookie Management's goal is the ability to work in Elephant templates.

API calls in templates

helper.cookies.anyUnset()

Returns true if any configured cookie is unset.

helper.cookies.unset(type)

Returns true if the tracking cookie is unset.

helper.cookies.allow(type)

Returns true if the tracking cookie was accepted.

helper.cookies.decline(type)

Returns true if the tracking cookie was declined.

helper.cookies.createPost(type, accept)

Creates an asynchronous call for type to accept or decline depending on the boolean value of accept.

helper.cookies.createFormAction()

Creates the URL to use on form action attribute.

Simple management for analytics cookies

This example will show how to use the cookie tracking mechanism to allow or decline Google Analytics.

First, check if "track" type of cookies is unset and provide a user selection:

<#if helper.cookies.unset("track")>
  Would you allow Google Analytics?
  <a onclick='${helper.cookies.createPost("track", true)}'>Allow analytics</a>
  <a onclick='${helper.cookies.createPost("track", false)}'>Forbid analytics</a>
< /#if>
Now, if "track" type of cookies are allowed include Analytics:
<#if helper.cookies.allow("track")>
  #your Analytics code here
< /#if>

Using the default Elephant management for cookies

Elephant also provides a cookie management easy to activate. By default remains inactive due no configured cookies. To use the Elephant management create the file cookie-context.properties in /WEB-INF/elephant/conf folder. Edit in BaaS -> Tools -> Files -> Configuration -> Properties editor and write this:

track=lTrackCookie

This line will activate de track cookie, explained in the labels key lTrackCookie. Now, just put the tracking code like this:

<#if helper.cookies.allow("track")>
  // the tracking code, ex. Google Analytics
< /#if>

To control more kind of cookies, simply add more lines to the cookie-context.properties, being the key the cookies' type. For single language sites, is possible to explain the type directly in this file. Otherwise, use a label key and add the corresponding values to the labels-site[_lang] files (see BaaS -> Tools -> Files -> Configuration -> Resources)

Authenticated users will be able to modify their cookie preferences in the Session menu.

EWiki syntax
EWiki status
EWiki mantains its beta status, but now is widely available for all components.
Most old Wiki syntax can be used, see more info here Wiki syntax

Agnostic tags

You can use any HTML tag with EWiki, by simply enclosing the tag in brackets []. Also, you can convert any HTML tag to a Text container by adding -text to tag's name.

EWiki / Wiki syntax detection
The Wiki compiler detects if you are using EWiki features, and enables EWiki syntax. This may have side effects if you compile with EWiki activated, but content does not have any EWiki feature. These side effects may be visible the next time you edit this specific content.

Containers and Text containers

EWiki defines a Container as the content wrapped between [tag] and [/tag]. Containers are similar to normal HTML containers, with no especial treatment for new lines and empty lines.

A Text container, on the other hand, is the content wrapped between [tag-text] and [/tag-text]. Text containers treat new lines as line feeds, and empty lines as the beginning of a new paragraph.

Type Activation Usage Example
Container [tag]...[/tag] Banners, compositions, images... [div]...[/div]
Text container [tag-text]...[/tag-text] Normal text, messages, mixed content... [div-text]...[/div-text]
Text treatment
EWiki container type is -text at the start.

Mixed content

The directives related to changing the interpreter mode are no longer required. HTML can be embedded within wiki causing no extra formatting, except for text containers. Java code and XML can be included as blocks or inline using enclosing java and xml tags.

The HTML output
Despite allowing normal HTML, the compiler returns a well-formed result. Unclosed tags will be closed to ensure consistency.

Easy escaping characters

Any character can be escaped using the backslash. The exception are macro parameters, where compiler especial characters should be transformed to HTML entities.

Tags

To the EWiki compiler, tags are simple names that will be transformed into the HTML format. A [div] will be a <div>, without paying any further attention at the name div.

Parameters

Parameters differ from HTML. They are enclosed within parenthesis, separated by commas, using a colon to divide the attribute from its value. In the simple form, [div(font-weight:bold)] will be as HTML <div style="font-weight:bold">. At this point, doesn't seem to help much, but let's consider this: [div(font-weight:bold,margin:10px,class=supersized)], where the HTML will be <div style="font-weight:bold;margin:10px" class="supersized")>. First thing you may notice is that the compiler detected class as a separated attribute. Also, it's not necessary to create a style, nor include quotes.

CSS attributes
EWiki passes all attributes as CSS attributes, except for recognized names like class, href, etc. The later are expanded as HTML attributes.

Containers

As in HTML, EWiki tags are containers. You can add content within the container opening tag, and the closing tag.

EWiki introduces a major difference here, allowing any container to easily write text. By adding the suffix -text, EWiki containers create paragraphs by using simple line feeds. By default, the root container is a text container.

EWiki HTML Description
[div]
Hello

world
[/div]
Hello world
Behaves as normal HTML, where line feeds are white spaces.
[div-text]

Hello

world
[/div-text]

Hello

world

Creates HTML paragraphs for new lines.
Non-intrusive paragraphs
When in text containers, EWiki does not force a paragraph for the first block of text. This ensures not to create paragraphs inside macro containers, that may interfere with the expected result. To change this behavior for the first block of text, add an empty line at the beginning.
Macros

EWiki macros are resolved at compile time, when wiki is transformed to HTML. An expanded macro will not change, despite there are changes in the macro, until you save/compile the wiki content.

EWiki macros are self-contained in a single file, and the compiler finds and expands them.

An EWiki macro can have nested content, including more macros, or single line.

Macro parameters

Macro parameters are enclosed in parentheses, must be named as name=value and comma separated. Values with special characters, like a comma, can be enclosed in double or single quotes.

Learn by example
See the macro examples in the next section.

EWiki provided macros

Actions

@w{button}

Creates a button. Text can be enclosed or in text parameter.

button parameters Description Values
category Actions
class Adds extra classes to ui button See Fomantic-UI definition for button.
style Adds CSS styles See CSS documentation.
icon Adds an icon See FontAwesome icons.
link Link action
new True if the link opens a new page
text Text inside the button

Cards

@w{card}

Creates a card.

card parameters Description Values
category Cards
class Adds extra classes to ui card See Fomantic-UI definition for card.
style Adds CSS styles See CSS documentation.
image Adds an image

@w{cards}

Creates a container for cards.

cards parameters Description Values
category Cards
class Adds extra classes to ui cards See Fomantic-UI definition for cards.
style Adds CSS styles See CSS documentation.

@w{content}

Creates content for cards, items and lists.

content parameters Description Values
category Cards,Items,Lists
class Adds extra classes to content
style Adds CSS styles See CSS documentation.
header Adds a content header

@w{extra}

Creates extra content for cards, items. For items, should be nested into a content.

extra parameters Description Values
category Cards,Items
class Adds extra classes to extra content
style Adds CSS styles See CSS documentation.

Containers

@w{rotated}

Creates a rotated content with the given degrees.

rotated parameters Description Values
category Containers
class Adds class attribute
style Adds CSS styles See CSS documentation.
degrees Rotation By default -2. Positive number rotates clockwise, negative number rotates counter clockwise.

@w{segment}

Creates a segment.

segment parameters Description Values
category Containers
class Adds extra classes to ui segment See Fomantic-UI definition for segment.
style Adds CSS styles See CSS documentation.

@w{solid}

Creates a segment with the provided background color. Font color is automatically selected to make the content visible.

solid parameters Description Values
category Containers
class Adds extra classes to ui segment See Fomantic-UI definition for segment.
style Adds CSS styles See CSS documentation.
color Background color See CSS standard for accepted colors.
image Background image To ensure readability, the color should be image predominant.

Grids

@w{column}

Creates a grid column.

column parameters Description Values
category Grids
class Adds extra classes to column See Fomantic-UI definition for grid.
style Adds CSS styles See CSS documentation.

@w{grid}

Creates a grid. Can nest row and column.

grid parameters Description Values
category Grids
class Adds extra classes to ui grid See Fomantic-UI definition for grid.
style Adds CSS styles See CSS documentation.

@w{row}

Creates a grid row. Can nest column.

row parameters Description Values
category Grids
class Adds extra classes to row See Fomantic-UI definition for grid.
style Adds CSS styles See CSS documentation.

Images

@w{centeredImage}

Creates a container for centered images.

centeredImage parameters Description Values
category Images
class Adds classes
style Adds CSS styles See CSS documentation.

Items

@w{content}

Creates content for cards, items and lists.

content parameters Description Values
category Cards,Items,Lists
class Adds extra classes to content
style Adds CSS styles See CSS documentation.
header Adds a content header

@w{extra}

Creates extra content for cards, items. For items, should be nested into a content.

extra parameters Description Values
category Cards,Items
class Adds extra classes to extra content
style Adds CSS styles See CSS documentation.

@w{item}

Creates a item.

item parameters Description Values
category Items
class Adds extra classes to ui item See Fomantic-UI definition for item.
style Adds CSS styles See CSS documentation.
imgclass Adds extra classes to ui image See Fomantic-UI definition for image.
image Adds an image

@w{items}

Creates a container for items.

items parameters Description Values
category Items
class Adds extra classes to ui items See Fomantic-UI definition for items.
style Adds CSS styles See CSS documentation.

Labels

@w{label}

Creates a label.

label parameters Description Values
category Labels
class Adds extra classes to ui label See Fomantic-UI definition for label.
style Adds CSS styles See CSS documentation.
image Adds an image
text Text inside the label
detail Detail inside the label

@w{labels}

Creates a container for labels.

labels parameters Description Values
category Labels
class Adds extra classes to ui labels See Fomantic-UI definition for labels.
style Adds CSS styles See CSS documentation.

Lists

@w{content}

Creates content for cards, items and lists.

content parameters Description Values
category Cards,Items,Lists
class Adds extra classes to content
style Adds CSS styles See CSS documentation.
header Adds a content header

@w{li}

Creates a list item. Text can be enclosed or in text parameter.

li parameters Description Values
category Lists
class Adds extra classes to item See Fomantic-UI definition for list.
style Adds CSS styles See CSS documentation.
icon Adds an icon See FontAwesome icons.
text Text inside the list item

@w{lih}

Creates a list item with header. Text can be enclosed or in text parameter.

lih parameters Description Values
category Lists
class Adds extra classes to item See Fomantic-UI definition for list.
style Adds CSS styles See CSS documentation.
icon Adds an icon See FontAwesome icons.
header Header inside the list item
text Text inside the list item

@w{ol}

Creates an ordered list.

ol parameters Description Values
category Lists
class Adds extra classes to ui list See Fomantic-UI definition for list.
style Adds CSS styles See CSS documentation.

@w{ul}

Creates an unordered list.

ul parameters Description Values
category Lists
class Adds extra classes to ui list See Fomantic-UI definition for list.
style Adds CSS styles See CSS documentation.

Messages

@w{message}

Creates a friendly formatted message. The message content goes between open and closing macro.

message parameters Description Values
category Messages
class Adds extra classes to ui message warning, error, positive, negative... See Fomantic-UI definition for message.
style Adds CSS styles See CSS documentation.
icon Adds an icon See FontAwesome icons.
header Adds a message header

Stripes

@w{stripe}

Creates a horizontal stripe with the provided background color. Font color is automatically selected to make the content visible.

stripe parameters Description Values
category Stripes
class Adds extra classes to ui fluid padded container segment See Fomantic-UI definition for segment and container.
style Adds CSS styles See CSS documentation.
color Background color See CSS standard for accepted colors.
image Background image To ensure readability, the color should be image predominant. Also accepts 'radial' and 'linear'.

@w{text}

Creates a text friendly segment.

text parameters Description Values
category Stripes
class Adds extra classes to ui basic text container segment See Fomantic-UI definition for segment and container.
style Adds CSS styles See CSS documentation.

@w{textstripe}

Creates a text friendly horizontal stripe with the provided background color. Font color is automatically selected to make the content visible.

textstripe parameters Description Values
category Stripes
class Adds extra classes to ui fluid padded text container segment See Fomantic-UI definition for segment and container.
style Adds CSS styles See CSS documentation.
color Background color See CSS standard for accepted colors.
image Background image To ensure readability, the color should be image predominant. Also accepts 'radial' and 'linear'.

Support

@w{iframe}

Creates an iframe.

iframe parameters Description Values
category Support
src Iframe URL
width Iframe width
height Iframe height
allow Iframe allow

@w{script}

Creates a script. If src has a value, the script is correctly closed.

script parameters Description Values
category Support
src Script URL

@w{stylesheet}

If href has a value, loads a stylesheet. If not, creates a style block.

stylesheet parameters Description Values
category Support
href Stylesheet URL

Tables

@w{table}

Creates a table. Can nest theader, trow, tcol and tfooter.

table parameters Description Values
category Tables
class Adds extra classes to ui table See Fomantic-UI definition for table.
style Adds CSS styles See CSS documentation.

@w{tcol}

Adds a table column. If not value is set, content must be nested.

tcol parameters Description Values
category Tables
class Adds classes to td See Fomantic-UI definition for table, and CSS documentation.
style Adds CSS styles See CSS documentation.
value Value of the column

@w{tfooter}

Adds a table footer.

tfooter parameters Description Values
category Tables
class Adds classes to tfoot See Fomantic-UI definition for table, and CSS documentation.
style Adds CSS styles See CSS documentation.
values Values of footers, separated by | If the footer starts with >, will be right aligned.

@w{thead}

Adds a table header column. If not value is set, content must be nested.

thead parameters Description Values
category Tables
class Adds classes to th See Fomantic-UI definition for table, and CSS documentation.
style Adds CSS styles See CSS documentation.
value Value of the column

@w{theader}

Adds a table header.

theader parameters Description Values
category Tables
class Adds classes to thead See Fomantic-UI definition for table, and CSS documentation.
style Adds CSS styles See CSS documentation.
values Values of headers, separated by | If the header starts with >, will be right aligned.

@w{trow}

Adds a table row. If no values are set, the columns must be nested.

trow parameters Description Values
category Tables
class Adds classes to tr See Fomantic-UI definition for table, and CSS documentation.
style Adds CSS styles See CSS documentation.
values Values of columns, separated by | If the value starts with >, will be right aligned.

Text

@w{divider}

Creates a divider.

divider parameters Description Values
category Text
class Adds extra classes to ui divider See Fomantic-UI definition of divider.
text Adds text for horizontal and vertical dividers

@w{header}

Creates a header.

header parameters Description Values
category Text
class Adds extra classes to ui header See Fomantic-UI definition of header.
style Adds CSS styles See CSS documentation.
icon Adds an icon See FontAwesome icons.

@w{inline}

Creates an inline text.

inline parameters Description Values
category Text
class Adds extra classes to ui text See Fomantic-UI definition for text.
style Adds CSS styles See CSS documentation.
text The text

@w{striped}

Creates a striped text with the provided stripe color. Font color is automatically selected to make the content visible.

striped parameters Description Values
category Text
class Adds class attribute
style Adds CSS styles See CSS documentation.
color Background color See CSS standard for accepted colors.
image Background image To ensure readability, the color should be image predominant. Also accepts 'radial' and 'linear'.
separation Separation between lines By default is 1.

@w{subheader}

Creates a subheader.

subheader parameters Description Values
category Text
class Adds extra classes to sub header See Fomantic-UI definition of header.
style Adds CSS styles See CSS documentation.

Users

@w{signature}

Creates current user's signature.

signature parameters Description Values
category Users
Macro examples

EWiki provided macros may help you to create rich content, like striped landing pages, documentation, encapsulation, ...

Headers

The macro header creates an HTML header with an optional icon and a sub header.

@w{header(icon=cog)}
This is a header
@w{subheader}...with a sub header.@w{/subheader}
@w{/header}
This is a header
...with a sub header.

Headers can also change size.

@w{header(class=big,icon=cog)}
This is a header
@w{subheader}...with a sub header.@w{/subheader}
@w{/header}
This is a header
...with a sub header.

Stripes

The macros stripe and textstripe create a container that will reach the left and right borders, and a nested container with the normal width. This ensures a full stripe of the desired color, occupying the container limits. For landing pages, horizontal limits are the browser width.

@w{stripe(color=RedGold)}
@w{header(icon=cog)}
This is a header
@w{subheader}...with a sub header.@w{/subheader}
@w{/header}
@w{/stripe}
This is a header
...with a sub header.
@w{textstripe(color=RedGold)}
@w{header(icon=cog)}
This is a header
@w{subheader}...with a sub header.@w{/subheader}
@w{/header}
@w{/textstripe}
This is a header
...with a sub header.

Messages

The message macro is a way to draw attention to specific content.

@w{message(class=info,icon=info,header=Informative message)}
This content can be any EWiki content.
@w{/message}
Informative message
This content can be any EWiki content.
@w{message(class=warning,icon=warning,header=Warning message)}
This content can be any EWiki content.
@w{/message}
Warning message
This content can be any EWiki content.

Cards

The cards and card macros create an encapsulated content, with an optional image.

@w{card(image=repository(/topcard.jpg))}
@w{content(header=Card header)}
This content can be any EWiki content.
@w{/content}
@w{/card}
Card header
This content can be any EWiki content.

Wrapping cards within the cards macro can control how cards will show in rows, the type of card, color and more. Check the cards macro definition.

Items

The items and item macros create an encapsulated content, with an optional image.

@w{items}
@w{item(imgclass=tiny,image=repository(/topcard.jpg))}
@w{content(header=Card header)}
This content can be any EWiki content.
@w{/content}
@w{/item}
@w{/items}
Card header
This content can be any EWiki content.

Wrapping items within the items macro can control the type of item, color and more. Check the items macro definition.

Files based

Files based are components using the private part of Files from BrightSide Attachments. Each uses a specific root and makes the content available to specific roles or users, depending on functionality.

Current components are [ Deliverables, Documentation ] .

Deliverables

The Deliverables component aims to facilitate publishing entity deliverables. The roles allowing uploads and downloads can be controlled using Concept permissions . The show permissions grant users to download. The action permissions grant users to upload.

The administration form is quite forward and responds to user roles.


Deliverables configuration is included out-of-the-box in projects.
Documentation

The goal of this component is to allow specific roles to require documentation to specific users.

Documentation definition

Before requiring documentation, a definition about this documentation must be made. The definition fields are:

Field

Description

Required

Name

The name of the documentation. This name must be user-friendly and unmistakable.

Type

Indicates the type of files to be uploaded. Can be:

  • ANY
  • TEXT (pdf, txt, odt, fodt, doc, docx)
  • SHEET (ods, fods, xls, xlsx)
  • IMAGE (png, jpg)

Description

Supporting text describing what the documentation is about.

Allowed root

Filters whether this documentation will be shown. The root refers to the entity root.

Multiple contacts

Allows adding more contacts to a single documentation petition.

Upload control

Allows overriding files only when the uploaded version is newer than the already existing. When the failing condition is met, shows a message requesting the user to use the last file version.

min, max

Controls the numbers of files that should be uploaded. The min value must be reached before the documentation is evaluated.

References

Files used as a reference to documentation. In some cases, references can be the forms to fulfill.


Especial cases

The flow

Documentation fulfillment is a conversation between a requester and a requested, both registered users. The status of pending actions will appear in both users areas, with an easy-to-follow link.

Empty documentation form. The request action must be initiated by users with specific roles, depending on the associated entity.


The user with the right roles starts a request and the status changes to pending to upload. Only the requested user will be able to see the form and upload documents.


The documentation is uploaded and pending validation. Only the requester or administrators can validate or deny the documentation.


Denied documentation with a reason message.


Validated documentation.


Help context

The Elephant library has the ability to create a help context for each page, also called a context in Elephant nomenclature.

Help contexts are normal contexts that follow some rules. First, they have a single root, called help context root, second, they pair the path of the context that needs a help context and third, they have content.

The help context root is defined in /WEB-INF/elephant/conf/help-context.properties file, using root=[help context path] as an absolute path starting with / as the web root.

Learn by example

Suppose root=/docs/platform in the configuration file.

Help context

Exists?

Has content?

Web context

Has help?

/docs/platform/service/baas

Yes

Yes

/service/baas

Yes

/docs/platform/service/support

No

No

/service/support

No

/docs/platform/service

Yes

No

/service

No

How does show a help context

As seen before, in case the help context exists and has content, an will appear at bottom left of the screen. By clicking this icon the web visitor will get the help content as a modal popup.

This page has a sample help context, thus you may see the icon at screen bottom left.

Best practices

When creating the root for help contexts, is a good idea to protect it for casual visitors. Since some contexts will have no content, has to avoid the help icon to appear, the help root is not visitor friendly. The usual restricting role should be sysinfo:list, since points to web content administrators.

I18n

Elephant internationalization project aims to create an easy to maintain translation base.

The API

i.text

Results in text in the appropriate language.

i['text']

Results in text in the appropriate language.

i_.get('text')

Results in text in the appropriate language.

i_.get('text', count)

Results in text in the appropriate language, using the plural and empty variations depending on count.

i_.format('text', argument[, argument][, ...])

Formats text in the appropriate language, using arguments.

i[k[key]]

Results in the text associated to the given key, in the appropriate language.

i_.byKey('key')

Results in the text associated to the given key, in the appropriate language.

Hard-coded variations

Elephant i18n accepts adding variations to a single key. Those variations are singular and empty when the key contains a number formatting symbol like %d and %f, and their own variations.

They are applied when the i_.get('text', count) is called, count will replace the formatting symbol and a variation will be selected depending on count value. For > 1 the basic key, for =1 the singular key and for =0 the empty key.

Handling gender

Handling gender with i18n tools has always been a hard topic and is a matter of which language you take as reference when writing keys. Let's suppose you are the developer, and you are using English as the main language (Elephant i18n default). Now, you write this in your application:

i_.get("%d selected", images.size())

Some languages apply gender to adjectives, which means that selected will be different depending on what is selected. For example, in Catalan images would be seleccionades and files seleccionats. Gender might be different in other languages, and the API makes no hard-coded assumptions.

Elephant i18n approach to solve this problem using key discriminators. Key discriminators generate a different key, but do not show when rendering the translation. A discriminator is a sequence of lowercase letters, up to three, prefixed with the exclamation character. For example !f.

Elephant translations use English as the main key generator and Catalan as the gender reference. An example to solve the previous example would be:

i_.get("%d selected!f", images.size())
i_.get("%d selected!m", files.size())

In this example, English will show the same message (n selected) and will generate two different keys, allowing translators to apply gender to their translations. Elephant convention uses !f for female and !m for male.

Another approach would be using the discriminator to describe the noun, for example !img for images and !fil for files. This solution involves a more developed set of keys and arises the question about why not using the noun in the message (%d selected images).

Notice that the Translator API showing other language translations, tends to facilitate recognizing the pattern. Anyway, a full knowledge of how many languages and languages themselves, would be necessary to fully understand, and maybe solve, the problem. Discriminators are just a none hard-coded help. And there is always the try/error approach.

Translators

Elephant I18n recognizes translators as a specific actor. A translator can be assigned to a single language, to a partial set of languages, or to the whole site set.


Elephant I18n also provides an editable translation for the whole site set of languages, when adding entries.

Migration

The new API features a compatibility wrapper to allow a slower adoption. The compatibility wrapper does not solve all cases, particularly those scarcely in use.

The main difference between both APIs, compatibility and I18n, is the key treatment. I18n use keys only internally. In code you will only see readable text.

Compatibility table

Old API

Compatibility API

Elephant I18n

Covered by compatibility

labels.key

labels.key

i.text

labels['key']

labels['key']

i['text']

el_label.key

el_label.key

i.text

el_label['key']

el_label['key']

i['text']

labelAPI.getStringPars(key, ...)

i_.c.format(key, ...)

i_.format(text, ...)

Requires changing the call, but accepts using key.

el_cons.currentLocale

i_.used().language

i_.used().language

Requires changing the call.

el_cons.usedLocale

i_.used()

i_.used()

Requires changing the call.

By key

Even though this API aims to create a more readable code, still exists some hardcoded keys that need translation. Example of those are languages codes and Java enums. If everything were to be converted to natural language, the relation with codes will be broken. The ByKey extension allows to keep one to one relation between coded keys and natural language. Also, enforces Elephant I18N by creating the natural language related to the key used by this API.

I18n lanes


Importer

Elephant Importer API provides a way of loading data into modules implementing ImporterProvider.

Importers can add to the existing data or fully replace it. The importer front-end shows this option as Full import.


Provider sources

By default, data sources are CSV files uploaded into a provider. The API deals with the usual CSV formats, including differences among operating systems.

Currently accepted data sources are:

Name

Description

File extension

CSV

Comma Separated Values

cvs

TDF

Tab-Delimited Format

tdf

Sources must include a first row with headers. The importer will use those headers to map columns to actual fields.

Providers

Alliance Contact Provider

Imports data into Alliance Contacts. The accepted fields are:

Field

Description

Required

contactId

Contact ID as in the internal member system.

name

Contact name.

email

Contact email, used for notifications and authentication.

Since emails are used for authentication, the value MUST BE UNIQUE for users to authenticate.

pass

Contact password bytes retrieved with UTF-8 encoding, digested using SHA3-256 and converted to an hexadecimal string.

As for now, a password conversion is not provided, ensuring the password do not exist in its unencrypted form in any moment of the process.

deactivated

True if the contact is deactivated. Prevents this contact from authenticating and asking for participating in projects. Default is false.

face

URL to the contact profile image.

company

Contact's company name.

position

Contact's position in company.

companyFace

URL to the company logo image.

Alliance Project Provider

Imports data into Alliance Projects. The accepted fields are:

Field

Description

Required

projectId

Project ID as in the internal member system.

creation

Project creation date using yyyy-mm-dd format.

phaseIndex

Phase index as in the alliance set of phases.

projectCode

Project code.

name

Project name.

summary

Project summary, usually a brief description of project's goal.

categoryId

Category ID as in the alliance collection of categories.

source

URL to the original project.

Alliance Participation Provider

Imports data into Alliance Participations. The accepted fields are:

Field

Description

Required

projectId

Project ID as in the internal member system.

contactId

Contact ID as in the internal member system.

creation

Project creation date using yyyy-mm-dd format.

admin

True if contact is this project administrator.

beneficiary

True if contact is beneficiary of this project.

consortium

True if contact is part of a consortium within this project.

coordinator

True if contact is coordinator of this project.

driver

True if contact is driver of this project.

funding

True if contact does funding on this project.

offerer

True if contact is offerer of this project.

research

True if contact is part of this project research.

support

True if contact is part of this project support

company

Contact's company name. This company may differ from current contact company and should be related to creation date.

companyFace

URL to the company logo image.

Alliance Tag Provider

Imports data into wide-application Tags API. The accepted fields are:

Field

Description

Required

tag

Tag name.

entityId

Project ID as in the internal member system.

Indicators

Elephant provides the Indicator API as a way to generate statistics from entities. The main goal of the API is to facilitate the generation among modules, on separated DBs.

Indicators are usually stored using a separated convenience API. Examples of using indicators are the Ranking and Matching APIs. Both take indicators values and store them where needed, independently of the source of the stored data.

Main goals

Indicator composition

Since indicators are stored using separated APIs, the indicator may vary in its composition. For example, the Ranking API relates to sets of single entities, while the Matching API does with two entities. Provided that storage depends on others and Indicator API needs read access, the API imposes some requirements.

The reading mechanism

Since indicators solely generate and provide data, seems that being able to read this data on a separate process is far off its possibilities.

The reading mechanism comes in help and is able to provide indicator values for statistic purposes. To achieve this goal, indicators find storage classes and provide an specific syntax for reading its values at single, multiple or formulated basis.

Reading syntax

The form taken by readIndicator parameter is:

JPAEntityClass:IndicatorClass:entityPath[:relatedPath]:indicator

JPAEntityClass

These classes are usually named after their functionality. You can see an example in Ranking , where the class DossierRanking has the indicators for dossier's ranking.

IndicatorClass

Class that owns the JPA Dao and has the ability to read values.

entityPath

Refers to the entity to be read. Notice that readIndicator method will always return a SUM of the results. An identifier will return the results of a single entity, while * will return all.

relatedPath

Same as for entityPath but for the related entity. This field has meaning only when reading a matching indicator.

indicator

Refers to which indicator will be returned. For indicator the final word has special meaning. Refers to the resulting formula for the specified JPAEntityClass. Indicators can make use of wildcards to get fine grained statistics. For instance, status* will result with the sum of all indicators starting with status.

Wildcards

*

Represents one or more characters.

?

Represents a single character.

Discovering indicators

To understand how reading syntax helps locating values, this image shows the process of getting values.


Optimizations

Indicators are created from within modules and using JPA contexts. The results are stored at module convenience in order to be accessible for database queries. The Ranking API and the Matching API assist saving results in specialized tables. This would be the standard, and preferred, method.

Before diving into possible process optimizations, let's see some numbers.

Quantifying results

A ranking set of indicators will create (indicators + final_ranking) * entities tuples. For instance, if you have 500 entities and need 10 indicators to calculate the ranking value, this will create (10 + 1) * 500, 5,500 tuples. Not so bad.

A matching set of indicators will create (indicators + final_matching) * entities * related_entities tuples. Things have slightly changed since there is another factor: the related or entities to match with. The matched entities are usually contacts. Let's do the same example as above, saying that we have 1,000 contacts to match with. Applying the factor to the previous result give us the amount of 5,500,000 tuples. Quite impressive, isn't?

Three optimization approaches

Spare zeros is a first approach to optimize the results. The API does not save zero or near to zero values. The impact of this optimization highly depends on the related selection of the second approach, but is at least significant for non relevant indicators.

Fine selection approach affects both entities and related entities. It's difficult to implement since implies some kind of guessing which pairs are prone to match. The impact of this optimization is high because supposedly eliminates zeros and, more important, reduces the number of database reads.

Bulk data might be the more effective approach. Makes an initial selection and does de insertions as a pre-process. When doing so, the indicator does not have to load entities separately, knows the result from the read data.

Formulas

Formulas are mainly composed by variables, constants, operators and functions. See Variables for a full list of available ranking and matching variables.

Elephant Indicator API also adds some functions to facilitate the formula edition.

Using weighted values

Since variables return absolute values, being or not related to a second entity, the result treatment gets complicated. To palliate this, the weighted functions provide a more easy input.

weighted(value, meaning, weight)

Returns a weighted value based on:

reverseWeighted(value, meaning, weight)

Returns a weighted complementary value based on the same parameters that weighted.

Math functions

You can also use math functions to create your own calculations. Math functions are prefixed with Math, for example Math.floor(2.3) will return the parameter floor.

Variables

Variables are used inside formulas to create the final ranking or matching. Descriptions refer to current entity as the entity that's being processed and to self as the related entity for matching, usually a contact, therefore creating the self point of view.

Variables are used in Formulas .

attach
Indicator

Variable Descripció

attachments
attach:attachments
BOTH_VARIABLE

Ranking
Counts the number of attachments in current entity.
Matching
Counts the number of self uploaded attachments in current entity.

commons
Indicator

Variable Descripció

following
commons:following
BOTH_VARIABLE

Ranking
Matching

followed
commons:followed
BOTH_VARIABLE

Ranking
Matching

seen
commons:seen
BOTH_VARIABLE

Ranking
Counts the number of times has been seen.
Matching
Tells whether a user has seen current entity, 1=seen.

like
commons:like
BOTH_VARIABLE

Ranking
Matching

apply
commons:apply
BOTH_VARIABLE

Ranking
Matching

contact
Indicator

Variable Descripció

available
contact:available
RANKING_VARIABLE

Ranking

profile
contact:profile
RANKING_VARIABLE

Ranking

distance
contact:distance
MATCHING_VARIABLE

Matching

dossier
Indicator

Variable Descripció

participation
dossier:participation
BOTH_VARIABLE

Ranking
Counts the number of participations in current entity.
Matching
Counts the number of self participations in current entity.

categoryParticipation
dossier:categoryParticipation
BOTH_VARIABLE

Ranking
Counts the number of participations in current category's entity.
Matching
Counts the number of self participations in current category's entity.

daysCreation
dossier:daysCreation
RANKING_VARIABLE

Ranking
Returns the days passed since current entity's creation.

daysActivity
dossier:daysActivity
RANKING_VARIABLE

Ranking
Returns the days passed since current entity's last activity.

words
dossier:words
RANKING_VARIABLE

Ranking
Counts the number of words used to describe current entity.

issues
dossier:issues
BOTH_VARIABLE

Ranking
Counts the number of issues in current entity.
Matching
Counts the number of self participating issues in current entity.

issueActivity
dossier:issueActivity
BOTH_VARIABLE

Ranking
Counts the number of reported issue activity in current entity.
Matching
Counts the number of self reported issue activity in current entity.

issueResponsible
dossier:issueResponsible
RANKING_VARIABLE

Ranking

issueReporter
dossier:issueReporter
RANKING_VARIABLE

Ranking

issueQA
dossier:issueQA
RANKING_VARIABLE

Ranking

issueAssistant
dossier:issueAssistant
RANKING_VARIABLE

Ranking

siblings
dossier:siblings
MATCHING_VARIABLE

Matching
Counts the number of self siblings' participations in current entity.

siblingsCategory
dossier:siblingsCategory
MATCHING_VARIABLE

Matching
Counts the number of self siblings' participations in current category's entity.

forum
Indicator

Variable Descripció

topics
forum:topics
BOTH_VARIABLE

Ranking
Counts the number of topics in current entity.
Matching
Counts the number of self created topics in current entity.

posts
forum:posts
BOTH_VARIABLE

Ranking
Counts the number of posts in current entity.
Matching
Counts the number of self created posts in current entity.

generic
Indicator

Variable Descripció

stars
generic:stars
BOTH_VARIABLE

Ranking
Averages the number of stars for current entity.
Matching
Averages the number of self given stars for current entity.

comments
generic:comments
BOTH_VARIABLE

Ranking
Counts the number of comments in current entity.
Matching
Counts the number of self comments in current entity.

service
Indicator

Variable Descripció

participation
service:participation
MATCHING_VARIABLE

Matching
Counts the number of self participations in current entity.

daysCreation
service:daysCreation
RANKING_VARIABLE

Ranking
Returns the days passed since current entity's creation.

daysStart
service:daysStart
RANKING_VARIABLE

Ranking

daysEnd
service:daysEnd
RANKING_VARIABLE

Ranking

words
service:words
RANKING_VARIABLE

Ranking
Counts the number of words used to describe current entity.

student
Indicator

Variable Descripció

challenges
student:challenges
RANKING_VARIABLE

Ranking
Counts the number of challenges in current entity.

responses
student:responses
RANKING_VARIABLE

Ranking
Counts the number of responses to challenges in current entity.

responsesLike
student:responsesLike
RANKING_VARIABLE

Ranking

daysCreation
student:daysCreation
RANKING_VARIABLE

Ranking
Returns the days passed since current entity's creation.

distance
student:distance
MATCHING_VARIABLE

Matching

Macros

Elephant renders macros each time a page is requested. Macros start with {@ special characters and expand into text or HTML code. Macros can even include content from a file, HTML page or JSP page. In order to understand what macros are for see what current macros do:

Macros can be nested, but take in mind that macros are written inline, in order to allow content inclusions. Thus, only macros that resolve to a string could be nested. Ex.

{@equals:{@user:id}:admin:Administering:Browsing}

To escape the : character prepend a slash, like /:.

Next generation

The next generation of macros provide a great number of features, aiming to easy-of-use customization. The main goals are:

Next generation macros are expressed as @{macro_name}.

Backward compatibility

For compatibility reasons, next generation macros will be included at the end of each macro definition. Both macro types can be used in the same content, even combined.

Core
Core content

Core content macros help creating pages that are rendered using dynamic content.

With readers

Macros with readers help formatting data on properties, XML and JSON files.

Core
Macro parser

Expands into web application's context.

{@ webroot }

Expends into site name.

{@ site }

Shows current rendering context.

{@ rendering }

Elephant language.

{@ lang }

Calls modules' user summaries and show the results.

{@ user-summary [ : mode ] }
Atributs Descripció Opcions Per defecte
mode Mode to use. init

{@ user-contents }

Reads and renders file content.

{@ include : content-file }
Atributs Descripció Opcions Per defecte
content-file System file to show.

Writes parameter with name value or default when null.

{@ param : name [ : default ] }
Atributs Descripció Opcions Per defecte
name Attribute name.
default Default value.

Renders context content. If stopper is set to true, stops when finding a line starting with .

{@ render : context [ : stopper ] }
Atributs Descripció Opcions Per defecte
context Elephant context for links.
stopper Whether rendering should stop.

Writes current date, time or both using diferent localized formats.

{@ date [ : mode [ : format ] ] }
Atributs Descripció Opcions Per defecte
mode Mode to use. date, all, time date
format Format used to show the value. short, medium, long, full short

Renders the feed at url.

{@ feed : url }
Atributs Descripció Opcions Per defecte
url Uniform Resource Locator.

Creates an Elephant marker within context with name. Elephant markers are initialized with correct locale and constructor as variable.

{@ marker : tmpl-root : template : value-map }
Atributs Descripció Opcions Per defecte
tmpl-root Templates root.
template Template used to show the items.
value-map Values using the form variable=value separated by ;

Creates an Elephant marker within context with name. The repository-file is stored in props.

{@ marker-props : tmpl-root : template : repository-file }
Atributs Descripció Opcions Per defecte
tmpl-root Templates root.
template Template used to show the items.
repository-file Name of the repository file.

Creates an Elephant marker within context with name. The repository-file is stored in doc.

{@ marker-xml : tmpl-root : template : repository-file }
Atributs Descripció Opcions Per defecte
tmpl-root Templates root.
template Template used to show the items.
repository-file Name of the repository file.

Creates an Elephant marker within context with name. The repository-file is stored in json.

{@ marker-json : tmpl-root : template : repository-file }
Atributs Descripció Opcions Per defecte
tmpl-root Templates root.
template Template used to show the items.
repository-file Name of the repository file.

Writes a json array of files matching path and pattern. The array can be as is, sorted or shuffled.

{@ files : folder : pattern : mode }
Atributs Descripció Opcions Per defecte
folder Folder location.
pattern The pattern items must match.
mode Mode to use. normal, sort, shuffle

Creates a frame with url content. If url starts with '/' application context is automatically inserted.

{@ frame : url : width : height }
Atributs Descripció Opcions Per defecte
url Uniform Resource Locator.
width CSS style width.
height CSS style height.

Gets resource value and renders as mode. Mode is an integer optional parameter.

{@ res : resource-key [ : string-mode ] }
Atributs Descripció Opcions Per defecte
resource-key Key used to locate de resource.
string-mode Possible values are: 0 No transform, 1 Capitalized, 2 To upper case, 3 To lower case. 0

{@ i18n : resource [ : string-mode ] }
Atributs Descripció Opcions Per defecte
resource
string-mode Possible values are: 0 No transform, 1 Capitalized, 2 To upper case, 3 To lower case. 0

Writes a random number starting at zero and up to limit minus one.

{@ random : random-limit }
Atributs Descripció Opcions Per defecte
random-limit Random values ceil.

Elephant context for links.

{@ context : level }
Atributs Descripció Opcions Per defecte
level Number of the item level.

Writes currently logged user's name, identifier or email.

{@ user [ : mode ] }
Atributs Descripció Opcions Per defecte
mode Mode to use. name, id, email name

Writes true or false expressions depending on whether role:attribute pair are satisfied.

{@ if : role : attribute : true-expression : false-expression }
Atributs Descripció Opcions Per defecte
role Entity role part.
attribute Permission part.
true-expression When comparison is true.
false-expression When comparison is false.

Writes true or false expressions depending on whether cookie value equals value.

{@ ifcookie : cookie : value : true-expression : false-expression }
Atributs Descripció Opcions Per defecte
cookie Cookie name.
value Value to search for.
true-expression When comparison is true.
false-expression When comparison is false.

Writes true or false expressions depending on whether class could be instantiated.

{@ class : class-name : true-expression : false-expression }
Atributs Descripció Opcions Per defecte
class-name Java class name.
true-expression When comparison is true.
false-expression When comparison is false.

Writes true or false expressions depending on whether value1 equals value2.

{@ equals : value : value : true-expression : false-expression }
Atributs Descripció Opcions Per defecte
value Value to search for.
value Value to search for.
true-expression When comparison is true.
false-expression When comparison is false.

Renders object's attribute as string. object can also be an entityPath.

{@ object : ref-object : attribute }
Atributs Descripció Opcions Per defecte
ref-object Attribute name holding the object or an entityPath.
attribute Renders attribute's value as string.

Renders attribute's value as string.

{@ attribute : attribute [ : format ] }
Atributs Descripció Opcions Per defecte
attribute Renders attribute's value as string.
format Format used to show the value.

Renders entity using name and description.

{@ entity : entityPath : fmt-name-desc }
Atributs Descripció Opcions Per defecte
entityPath Path to a entity.
fmt-name-desc Format, as in String.format(), with entity name and description as parameters.

Renders the entity represented by path calling plugin and using template if specified.

{@ entity-ctrl : plugin : entityPath [ : template ] }
Atributs Descripció Opcions Per defecte
plugin Plugin name.
entityPath Path to a entity.
template Template used to show the items.

Writes cookie value. If optional value is defined, then sets cookie value.

{@ cookie : name [ : value ] }
Atributs Descripció Opcions Per defecte
name Attribute name.
value Value to be set when defined.

Indicator name.

{@ indicator : storeClass : indicatorClass : entityPath : indicator [ : relatedPath ] }
Atributs Descripció Opcions Per defecte
storeClass
indicatorClass
entityPath Path to a entity.
indicator Indicator name.
relatedPath

{@ entry-point : identifier [ : values ] }
Atributs Descripció Opcions Per defecte
identifier
values

Macros with readers, how does it work?

The easiest way to read a file is store it in context's repository and access it with */file. The * will expand into rendering context repository. For example:

{@marker-xml:xml:doc:*/doc.xml}

Reads doc.xml in current repository and passes its data to [Template_root]/xml/docTemplate.html to be formatted.

Reading properties

Properties are stored in props list in the same order they are stored on disc. You can iterate props with #list.

<#list props?keys as key>
   <#assign value=props[key]/>
   // do something with key and value
   ...
< /#list>

Reading XML

XML documents are stored in doc model. You can iterate the elements using dot syntax and iterate collections as you would usually do for any other data. The XML model is the FreeMarker NodeModel.

Reading JSON

JSON files are stored in json model. To access a root, use json.read("$.root"). If the root is a list, use json.list("$.root"). Once retrieved the root, you can iterate the elements using dot syntax and iterate collections as you would usually do for any other data. The JSON model is a subset of the JsonPath DocumentContext, optimized for templates usage.

The JSON books example

The data:

{
  "book": [
    {
      "title": "...",
      "author": "...",
      "excerpt": "...",
      "availability": "...",
      "link": "...",
      "filelink": "...",
      "imagelink": "...",
      "pages": 0
    },
    {
      ...
    },
    ...
  ]
}

The template (Semantic-UI):

<div class="ui divided items">
  <#list json.list("$.book") as book>
    <div class="item">
      <a class="ui tiny image" href="${book.link}">
        <img src="${book.imagelink}"/>
      </a>
      <div class="content">
        <a class="header" href="${book.link}">${book.title}</a>
        <div class="meta">
          ${book.author}
        </div>
        <div class="description">
          ${book.excerpt}
        </div>
        <div class="extra">
          ${book.availability}
          <#if book.filelink?has_content>
            <a target="_new" href="${book.filelink}">${book.pages}</a>
          < /#if>
        </div>
      </div>
    </div>
  < /#list>
</div>
Navigational
Do I have to use navigational macros in my site?

Not necessarily. By default Elephant already includes all navigation elements in its templates. Navigational macros are intended for special formatting purposes. Navigational macros do not include CSS especial notations, thus you use your own.

Listing macros or hard written links?

Both choices may have the result. Main difference is that listing macros will update their content based on current configuration.

Navigation
Macro parser

Renders a bread crumbs navigator as an HTML unordered list.

{@ navigator : location }
Atributs Descripció Opcions Per defecte
location Navigator mode.

Renders a traversal navigator as an HTML table with three columns.

{@ navigator : traversal [ : show-title ] }
Atributs Descripció Opcions Per defecte
traversal Navigator mode.
show-title When true, renders context name as well. false

Renders a menu as HTML unordered list. level tells starting at which level options are shown. preloaded indicates how many children are to be shown.

{@ navigator : options : decorators : level : preloaded [ : show-current ] }
Atributs Descripció Opcions Per defecte
options Navigator mode.
decorators When true, aditional DIVs are added at top and bottom.
level Number of the item level.
preloaded Number of preloaded children.
show-current When true, children passing preloaded value will show along with ancestors and siblings, as opposed to not showing any child with level over level + preloaded. true

Renders a tabulator as HTML unordered list. level tells at which level tabs are shown.

{@ navigator : tabulator : level }
Atributs Descripció Opcions Per defecte
tabulator Navigator mode.
level Number of the item level.

Renders a web map.

{@ webmap [ : level ] }
Atributs Descripció Opcions Per defecte
level Tells until which level contexts are shown. 1

Renders a list of selectable contexts.

{@ list : behavioural_keywords [,behavioural_keywords...] : navigational_keywords [,navigational_keywords...] : selection_keywords [,selection_keywords...] }
Atributs Descripció Opcions Per defecte
behavioural_keywords Keywords controlling how information displays. popup, external, hidden, verbose
navigational_keywords Keywords to navigate Elephant contexts. parent, locate, level, root, match
selection_keywords Keywords actually returning contexts. all, siblings, search, children, self, leaf, ancestors

Renders a line of selectable contexts.

{@ anchor : behavioural_keywords [,behavioural_keywords...] : navigational_keywords [,navigational_keywords...] : selection_keywords [,selection_keywords...] }
Atributs Descripció Opcions Per defecte
behavioural_keywords Keywords controlling how information displays. popup, external, hidden, verbose
navigational_keywords Keywords to navigate Elephant contexts. parent, locate, level, root, match
selection_keywords Keywords actually returning contexts. all, siblings, search, children, self, leaf, ancestors

Understanding what behavioural keywords are

Behavioural keywords stand for keywords controlling how information displays. The way behaviours will extend in future versions might be controlled in this section.

Behavioural keyword

Description

verbose

Writes the whole path to context, starting from current context.

popup

Popup effect on resulting links is to open a popup instead of opening a new context.

hidden

Hidden contexts will show, even if protected.

external

Links will open on a new tab or window.

Understanding what navigational keywords and selection keywords mean


Navigational keywords end up as a list, colon separated, of keywords pointing to existing contexts. As starting point, path_to_contexts initializes to current context, that is, the web page where macro displays.

Here comes a brief description of what each keyword does and after some clear examples:

Navigation keywords move current selection from context to context.

Navigation keyword

Description

parent

Moves to current selection's parent

root

Moves to root context

level

Moves to ancestor[level]

locate

Moves next token path, expands * to current path

match

Moves to matching context from current selection using regular expressions

Selection keywords actually return contexts, one or several. A zero results it's considered an error an macro will displays with m_error class, which defaults to red color and a warning image. Otherwise, macro expands into m_list class.

Render keyword

Description

self

Returns current selection

children

Returns current selection's children

all

Returns all descendant contexts

leaf

Returns all descendant contexts having no children

ancestors

Returns current selection's ancestors

siblings

Returns current selection's siblings, including itself

search

Returns matching contexts from current selection

Learning by example

Macro

Description

{@list:self}


{@anchor:self}
Navigational
{@anchor:popup:self}
Navigational

self returned current selection which defaults to current context, popup shows this page as a popup window

{@list:parent:children}


{@anchor:parent:children}
[ Core, Navigational, Modules, Documentation, Macro summary ]

parent took us into current context its parent, while children returned a list of its children

Modules

Current list of modules exposing macros.


Attachments
What are attachments' site terms?

Some macros user site terms as something well known within Elephant site components. This is not exactly true and the concept builds in template conventions. To make life easier, templates locate attachments' site terms under the terms folder in content/rot.txt. This file can be create or edited using the BaaS Tools -> Files option menu.

Attachments
Macro parser

Shows the attachments from a specific entity.

{@ attachment : entityPath [ : template ] }
Atributs Descripció Opcions Per defecte
entityPath Path to a entity.
template Template used to show the items. editableTree tree

Shows the attachments from a specific entity in readonly mode.

{@ attachment-ro : entityPath [ : template ] }
Atributs Descripció Opcions Per defecte
entityPath Path to a entity.
template Template used to show the items. tree-ro

Shows the attachments from a specific entity in readonly mode, after accepting site terms.

{@ attachment-rot : entityPath [ : template ] }
Atributs Descripció Opcions Per defecte
entityPath Path to a entity.
template Template used to show the items. tree-rot

Shows the attachments from current user.

{@ self-attachments [ : template ] }
Atributs Descripció Opcions Per defecte
template Template used to show the items. tree

Shows the attachments from current user in readonly mode.

{@ self-attachments-ro [ : template ] }
Atributs Descripció Opcions Per defecte
template Template used to show the items. tree-ro

Shows the attachments from current user in readonly mode, after accepting site terms.

{@ self-attachments-rot [ : template ] }
Atributs Descripció Opcions Per defecte
template Template used to show the items. tree-rot

Calendar
What can I do with the calendar URL?

The calendar URL generates an on line calendar for the requesting user. Includes those parts of modules the user is interested or participates in.

With this in mind, you can use this URL to import the calendar events into your favorite calendar application. See specific instructions on how to import calendars in your calendar application.

Calendar
Macro parser

Renders calendar URL for current user.

{@ calendar : type }
Atributs Descripció Opcions Per defecte
type Only items with type. url

Contacts
Groups

Groups is an application wide organizational utility. For instance, products may use categories of groups when exposed to the web store.

Directory

Directory is a group of contacts that share some of their data with other Directory members. There is a full directory listing, but also has other applications. For instance, only members of the Directory can see which members are registered and assisted to Convocations.

Contacts
Macro parser

Lists groups in a tree format.

{@ groups : context : group-category }
Atributs Descripció Opcions Per defecte
context Elephant context for links.
group-category Category identifier of the groups.

Lists contacts with page navigation.

{@ contacts [ : count [ : syndicationId [ : summaryTemplate [ : context [ : fullTemplate ] ] ] ] ] }
Atributs Descripció Opcions Per defecte
count Number of items to show. 10
syndicationId Sindication code. See Social Groups in Contacts.
summaryTemplate Template used to show the items in summary mode. summary
context Elephant context for links.
fullTemplate Template used to show one items in full mode. full

{@ contacts-summary [ : count [ : syndicationId [ : summaryTemplate [ : context [ : fullTemplate ] ] ] ] ] }
Atributs Descripció Opcions Per defecte
count Number of items to show. 10
syndicationId Sindication code. See Social Groups in Contacts.
summaryTemplate Template used to show the items in summary mode. summary
context Elephant context for links.
fullTemplate Template used to show one items in full mode. full

Lists contacts in grouping with page navigation.

{@ contacts-by-group [ : count [ : groupings [ : summaryTemplate ] ] ] }
Atributs Descripció Opcions Per defecte
count Number of items to show. 10
groupings Items groupings.
summaryTemplate Template used to show the items in summary mode. summary

Lists contacts in grouping without navigation.

{@ contacts-by-group-summary [ : count [ : groupings [ : summaryTemplate ] ] ] }
Atributs Descripció Opcions Per defecte
count Number of items to show. 10
groupings Items groupings.
summaryTemplate Template used to show the items in summary mode. summary

Shows contact count.

{@ contactcount [ : syndicationId ] }
Atributs Descripció Opcions Per defecte
syndicationId Sindication code. See Social Groups in Contacts.

Lists contacts with specific connector value with page navigation.

{@ contacts-connector : count : connector [ : value [,value...] [ : summaryTemplate [ : context [ : fullTemplate ] ] ] ] }
Atributs Descripció Opcions Per defecte
count Number of items to show. 10
connector Connector name.
value Value to search for.
summaryTemplate Template used to show the items in summary mode. summary
context Elephant context for links.
fullTemplate Template used to show one items in full mode. full

Lists contacts with specific connector value without navigation.

{@ contacts-connector-summary : count : connector [ : value [,value...] [ : summaryTemplate [ : context [ : fullTemplate ] ] ] ] }
Atributs Descripció Opcions Per defecte
count Number of items to show. 10
connector Connector name.
value Value to search for.
summaryTemplate Template used to show the items in summary mode. summary
context Elephant context for links.
fullTemplate Template used to show one items in full mode. full

Shows a text depending on whether user's my-data is valid or not.

{@ my-data : valid : not-valid }
Atributs Descripció Opcions Per defecte
valid
not-valid

Creates an editable form for web descriptors.

{@ describe-it : entityPath [ : id ] }
Atributs Descripció Opcions Per defecte
entityPath Path to a entity.
id Identifier. Default

Convocation check interface for attendance control.

{@ convocation-check [ : template ] }
Atributs Descripció Opcions Per defecte
template Template used to show the items. check

Shows convocations with page navigation.

{@ convocations : mode [ : context [ : count [ : template ] ] ] }
Atributs Descripció Opcions Per defecte
mode Mode to use. all, closed, open
context Elephant context for links.
count Number of items to show. 10
template Template used to show the items. summary

Shows convocations without navigation.

{@ convocation-summary : mode [ : context [ : count [ : template ] ] ] }
Atributs Descripció Opcions Per defecte
mode Mode to use. all, closed, open
context Elephant context for links.
count Number of items to show. 10
template Template used to show the items. summary

Shows public and user's convocations with page navigation.

{@ myconvocations : mode [ : context [ : count [ : template ] ] ] }
Atributs Descripció Opcions Per defecte
mode Mode to use. all, closed, open
context Elephant context for links.
count Number of items to show. 10
template Template used to show the items. summary

Shows public and user's convocations without navigation.

{@ myconvocation-summary : mode [ : context [ : count [ : template ] ] ] }
Atributs Descripció Opcions Per defecte
mode Mode to use. all, closed, open
context Elephant context for links.
count Number of items to show. 10
template Template used to show the items. summary

Shows public convocations with page navigation.

{@ public-convocations : mode [ : context [ : count [ : template ] ] ] }
Atributs Descripció Opcions Per defecte
mode Mode to use. all, closed, open
context Elephant context for links.
count Number of items to show. 10
template Template used to show the items. summary

Shows public convocations without navigation.

{@ public-convocation-summary : mode [ : context [ : count [ : template ] ] ] }
Atributs Descripció Opcions Per defecte
mode Mode to use. all, closed, open
context Elephant context for links.
count Number of items to show. 10
template Template used to show the items. summary

{@ old-directory [ : context [ : count [ : template ] ] ] }
Atributs Descripció Opcions Per defecte
context Elephant context for links.
count Number of items to show. 12
template Template used to show the items. summary

Renders the directory context.

{@ directory [ : type [,type...] [ : context [ : count [ : template ] ] ] ] }
Atributs Descripció Opcions Per defecte
type Only items with type. all, typed, companies, professionals, centers, students, educators, singletons all
context Elephant context for links.
count Number of items to show. 12
template Template used to show the items. summary

{@ directory-summary [ : type [,type...] [ : context [ : count [ : template ] ] ] ] }
Atributs Descripció Opcions Per defecte
type Only items with type. all, typed, companies, professionals, centers, students, educators, singletons all
context Elephant context for links.
count Number of items to show. 12
template Template used to show the items. summary

{@ directory-ranking [ : type [,type...] [ : context [ : count [ : template ] ] ] ] }
Atributs Descripció Opcions Per defecte
type Only items with type. all, typed, companies, professionals, centers, students, educators, singletons all
context Elephant context for links.
count Number of items to show. 12
template Template used to show the items. summary

{@ directory-summary-ranking [ : type [,type...] [ : context [ : count [ : template ] ] ] ] }
Atributs Descripció Opcions Per defecte
type Only items with type. all, typed, companies, professionals, centers, students, educators, singletons all
context Elephant context for links.
count Number of items to show. 12
template Template used to show the items. summary

{@ directory-restricted [ : type [,type...] [ : context [ : count [ : template ] ] ] ] }
Atributs Descripció Opcions Per defecte
type Only items with type. all, typed, companies, professionals, centers, students, educators, singletons all
context Elephant context for links.
count Number of items to show. 12
template Template used to show the items. summary

{@ directory-summary-ranking-restricted [ : type [,type...] [ : context [ : count [ : template ] ] ] ] }
Atributs Descripció Opcions Per defecte
type Only items with type. all, typed, companies, professionals, centers, students, educators, singletons all
context Elephant context for links.
count Number of items to show. 12
template Template used to show the items. summary

{@ directory-ranking-restricted [ : type [,type...] [ : context [ : count [ : template ] ] ] ] }
Atributs Descripció Opcions Per defecte
type Only items with type. all, typed, companies, professionals, centers, students, educators, singletons all
context Elephant context for links.
count Number of items to show. 12
template Template used to show the items. summary

{@ syndications [ : type [,type...] [ : syndicationId [ : context [ : count [ : template ] ] ] ] ] }
Atributs Descripció Opcions Per defecte
type Only items with type. all, typed, companies, professionals, centers, students, educators, singletons all
syndicationId Sindication code. See Social Groups in Contacts.
context Elephant context for links.
count Number of items to show. 12
template Template used to show the items. summary

{@ syndications-summary [ : type [,type...] [ : syndicationId [ : context [ : count [ : template ] ] ] ] ] }
Atributs Descripció Opcions Per defecte
type Only items with type. all, typed, companies, professionals, centers, students, educators, singletons all
syndicationId Sindication code. See Social Groups in Contacts.
context Elephant context for links.
count Number of items to show. 12
template Template used to show the items. summary

{@ syndications-ranking [ : type [,type...] [ : syndicationId [ : context [ : count [ : template ] ] ] ] ] }
Atributs Descripció Opcions Per defecte
type Only items with type. all, typed, companies, professionals, centers, students, educators, singletons all
syndicationId Sindication code. See Social Groups in Contacts.
context Elephant context for links.
count Number of items to show. 12
template Template used to show the items. summary

{@ syndications-summary-ranking [ : type [,type...] [ : syndicationId [ : context [ : count [ : template ] ] ] ] ] }
Atributs Descripció Opcions Per defecte
type Only items with type. all, typed, companies, professionals, centers, students, educators, singletons all
syndicationId Sindication code. See Social Groups in Contacts.
context Elephant context for links.
count Number of items to show. 12
template Template used to show the items. summary

{@ syndications-restricted [ : type [,type...] [ : syndicationId [ : context [ : count [ : template ] ] ] ] ] }
Atributs Descripció Opcions Per defecte
type Only items with type. all, typed, companies, professionals, centers, students, educators, singletons all
syndicationId Sindication code. See Social Groups in Contacts.
context Elephant context for links.
count Number of items to show. 12
template Template used to show the items. summary

{@ syndications-summary-ranking-restricted [ : type [,type...] [ : syndicationId [ : context [ : count [ : template ] ] ] ] ] }
Atributs Descripció Opcions Per defecte
type Only items with type. all, typed, companies, professionals, centers, students, educators, singletons all
syndicationId Sindication code. See Social Groups in Contacts.
context Elephant context for links.
count Number of items to show. 12
template Template used to show the items. summary

{@ syndications-ranking-restricted [ : type [,type...] [ : syndicationId [ : context [ : count [ : template ] ] ] ] ] }
Atributs Descripció Opcions Per defecte
type Only items with type. all, typed, companies, professionals, centers, students, educators, singletons all
syndicationId Sindication code. See Social Groups in Contacts.
context Elephant context for links.
count Number of items to show. 12
template Template used to show the items. summary

Shows services with page navigation.

{@ services : role : type [ : context [ : count [ : template ] ] ] }
Atributs Descripció Opcions Per defecte
role Entity role part. SERVICE_SUPPLY, SERVICE_DEMAND
type Only items with type.
context Elephant context for links.
count Number of items to show. 10
template Template used to show the items. summary

Shows services without navigation.

{@ service-summary : role : type [ : context [ : count [ : template ] ] ] }
Atributs Descripció Opcions Per defecte
role Entity role part. SERVICE_SUPPLY, SERVICE_DEMAND
type Only items with type.
context Elephant context for links.
count Number of items to show. 10
template Template used to show the items. summary

Shows user's company services with page navigation.

{@ myservices : role : type [ : context [ : count [ : template ] ] ] }
Atributs Descripció Opcions Per defecte
role Entity role part. SERVICE_SUPPLY, SERVICE_DEMAND
type Only items with type.
context Elephant context for links.
count Number of items to show. 10
template Template used to show the items. summary

Shows user's company services without navigation.

{@ myservice-summary : role : type [ : context [ : count [ : template ] ] ] }
Atributs Descripció Opcions Per defecte
role Entity role part. SERVICE_SUPPLY, SERVICE_DEMAND
type Only items with type.
context Elephant context for links.
count Number of items to show. 10
template Template used to show the items. summary

Shows last services with page navigation.

{@ lastservices : role : type [ : context [ : count [ : template ] ] ] }
Atributs Descripció Opcions Per defecte
role Entity role part. SERVICE_SUPPLY, SERVICE_DEMAND
type Only items with type.
context Elephant context for links.
count Number of items to show. 10
template Template used to show the items. summary

Shows last services without navigation.

{@ lastservice-summary : role : type [ : context [ : count [ : template ] ] ] }
Atributs Descripció Opcions Per defecte
role Entity role part. SERVICE_SUPPLY, SERVICE_DEMAND
type Only items with type.
context Elephant context for links.
count Number of items to show. 10
template Template used to show the items. summary

Shows user's company last services with page navigation.

{@ mylastservices : role : type [ : context [ : count [ : template ] ] ] }
Atributs Descripció Opcions Per defecte
role Entity role part. SERVICE_SUPPLY, SERVICE_DEMAND
type Only items with type.
context Elephant context for links.
count Number of items to show. 10
template Template used to show the items. summary

Shows user's company last services without navigation.

{@ mylastservice-summary : role : type [ : context [ : count [ : template ] ] ] }
Atributs Descripció Opcions Per defecte
role Entity role part. SERVICE_SUPPLY, SERVICE_DEMAND
type Only items with type.
context Elephant context for links.
count Number of items to show. 10
template Template used to show the items. summary

{@ register [ : template ] }
Atributs Descripció Opcions Per defecte
template Template used to show the items. signup

{@ profile : contactIds [ : template ] }
Atributs Descripció Opcions Per defecte
contactIds
template Template used to show the items. summary

{@ myprofile [ : template ] }
Atributs Descripció Opcions Per defecte
template Template used to show the items. profile

DAO
Search capabilities

Dao search are preferably created using the elephant/conf context notation, which is not context dependent on its editable property. The dao-search macro should be mainly used in conjunction with an iterable macro.

DAO
Macro parser

Creates an instance of a search form. Iterators use these instances to provide search capabilities.

{@ dao-search : context }
Atributs Descripció Opcions Per defecte
context Elephant context for links.

Dossier
Using editable forms

By default, the Dossiers module provides all necessary forms to edit data. It's recommended not to use editable forms macros, but there might be exceptional use cases. Provide you need a single entry point to add information to a fixed issue, then an editable form will solve the case.

Dossier
Macro parser

Shows issues with page navigation.

{@ issues : status [ : context [ : categoryId [ : dossierId [ : count [ : template ] ] ] ] ] }
Atributs Descripció Opcions Per defecte
status Only items with status. all, closed, onwork
context Elephant context for links.
categoryId Category identifier. 0
dossierId Dossier identifier. 0
count Number of items to show. 10
template Template used to show the items. kbSummary, questions, motions, mySummary, proposals summary

Shows issues without navigation.

{@ issue-summary : status [ : context [ : categoryId [ : dossierId [ : count [ : template ] ] ] ] ] }
Atributs Descripció Opcions Per defecte
status Only items with status. all, closed, onwork
context Elephant context for links.
categoryId Category identifier. 0
dossierId Dossier identifier. 0
count Number of items to show. 10
template Template used to show the items. kbSummary, questions, motions, mySummary, proposals summary

Shows issues restricted to current user with page navigation.

{@ myissues : status [ : context [ : categoryId [ : dossierId [ : count [ : template ] ] ] ] ] }
Atributs Descripció Opcions Per defecte
status Only items with status. all, closed, onwork
context Elephant context for links.
categoryId Category identifier. 0
dossierId Dossier identifier. 0
count Number of items to show. 10
template Template used to show the items. kbSummary, questions, motions, mySummary, proposals summary

Shows issues restricted to current user without navigation.

{@ myissues-summary : status [ : context [ : categoryId [ : dossierId [ : count [ : template ] ] ] ] ] }
Atributs Descripció Opcions Per defecte
status Only items with status. all, closed, onwork
context Elephant context for links.
categoryId Category identifier. 0
dossierId Dossier identifier. 0
count Number of items to show. 10
template Template used to show the items. kbSummary, questions, motions, mySummary, proposals summary

Shows issues where current user participates as assistant, with page navigation.

{@ assisted-issues : status [ : context [ : categoryId [ : dossierId [ : count [ : template ] ] ] ] ] }
Atributs Descripció Opcions Per defecte
status Only items with status. all, closed, onwork
context Elephant context for links.
categoryId Category identifier. 0
dossierId Dossier identifier. 0
count Number of items to show. 10
template Template used to show the items. kbSummary, questions, motions, mySummary, proposals summary

Shows issues where current user participates as assistant, without navigation.

{@ assisted-issue-summary : status [ : context [ : categoryId [ : dossierId [ : count [ : template ] ] ] ] ] }
Atributs Descripció Opcions Per defecte
status Only items with status. all, closed, onwork
context Elephant context for links.
categoryId Category identifier. 0
dossierId Dossier identifier. 0
count Number of items to show. 10
template Template used to show the items. kbSummary, questions, motions, mySummary, proposals summary

Shows dossiers with page navigation.

{@ dossiers : status [ : context [ : categoryIds [,categoryIds...] [ : dossierId [ : count [ : template ] ] ] ] ] }
Atributs Descripció Opcions Per defecte
status Only items with status. all, closed, frozen, not-frozen, onwork
context Elephant context for links.
categoryIds Category identifiers.
dossierId Dossier identifier.
count Number of items to show. 10
template Template used to show the items. projects, dossiers summary

Shows dossiers without navigation.

{@ dossier-summary : status [ : context [ : categoryIds [,categoryIds...] [ : dossierId [ : count [ : template ] ] ] ] ] }
Atributs Descripció Opcions Per defecte
status Only items with status. all, closed, frozen, not-frozen, onwork
context Elephant context for links.
categoryIds Category identifiers.
dossierId Dossier identifier.
count Number of items to show. 10
template Template used to show the items. projects, dossiers summary

Shows dossiers where current user pparticipates, with page navigation.

{@ mydossiers : status [ : context [ : categoryIds [,categoryIds...] [ : dossierId [ : count [ : template ] ] ] ] ] }
Atributs Descripció Opcions Per defecte
status Only items with status. all, closed, frozen, not-frozen, onwork
context Elephant context for links.
categoryIds Category identifiers.
dossierId Dossier identifier.
count Number of items to show. 10
template Template used to show the items. projects, dossiers summary

Shows dossiers where current user pparticipates, without navigation.

{@ mydossier-summary : status [ : context [ : categoryIds [,categoryIds...] [ : dossierId [ : count [ : template ] ] ] ] ] }
Atributs Descripció Opcions Per defecte
status Only items with status. all, closed, frozen, not-frozen, onwork
context Elephant context for links.
categoryIds Category identifiers.
dossierId Dossier identifier.
count Number of items to show. 10
template Template used to show the items. projects, dossiers summary

Shows dossiers where current user directly participates, with page navigation.

{@ direct-dossiers : status [ : context [ : categoryIds [,categoryIds...] [ : count [ : template ] ] ] ] }
Atributs Descripció Opcions Per defecte
status Only items with status. all, closed, frozen, not-frozen, onwork
context Elephant context for links.
categoryIds Category identifiers.
count Number of items to show. 10
template Template used to show the items. projects, dossiers summary

Shows dossiers where current user directly participates, without navigation.

{@ direct-dossier-summary : status [ : context [ : categoryIds [,categoryIds...] [ : count [ : template ] ] ] ] }
Atributs Descripció Opcions Per defecte
status Only items with status. all, closed, frozen, not-frozen, onwork
context Elephant context for links.
categoryIds Category identifiers.
count Number of items to show. 10
template Template used to show the items. projects, dossiers summary

Shows dossiers where current's co-workers directly participate, with page navigation.

{@ related-dossiers : status [ : context [ : categoryIds [,categoryIds...] [ : dossierId [ : count [ : template ] ] ] ] ] }
Atributs Descripció Opcions Per defecte
status Only items with status. all, closed, frozen, not-frozen, onwork
context Elephant context for links.
categoryIds Category identifiers.
dossierId Dossier identifier.
count Number of items to show. 10
template Template used to show the items. projects, dossiers summary

Shows dossiers where current's co-workers directly participate, without navigation.

{@ related-dossier-summary : status [ : context [ : categoryIds [,categoryIds...] [ : dossierId [ : count [ : template ] ] ] ] ] }
Atributs Descripció Opcions Per defecte
status Only items with status. all, closed, frozen, not-frozen, onwork
context Elephant context for links.
categoryIds Category identifiers.
dossierId Dossier identifier.
count Number of items to show. 10
template Template used to show the items. projects, dossiers summary

Shows dossiers where current user has pending votes on worths.

{@ pending-vote : context : phase : worths [,worths...] [ : categoryIds [,categoryIds...] [ : count [ : template ] ] ] }
Atributs Descripció Opcions Per defecte
context Elephant context for links.
phase Only items in phase type.
worths Identifiers of the worths to show.
categoryIds Category identifiers.
count Number of items to show. 10
template Template used to show the items. projects, dossiers summary

Lists categories in a tree format.

{@ categories : status [ : context [ : categoryIds [,categoryIds...] [ : template ] ] ] }
Atributs Descripció Opcions Per defecte
status Only items with status. all, closed, frozen, not-frozen, onwork
context Elephant context for links.
categoryIds Category identifiers.
template Template used to show the items. full

Writes web path from dossier or issue entities.

{@ web-path : path }
Atributs Descripció Opcions Per defecte
path

Creates an editable form with dossier data.

{@ edit-dossier : id [ : template ] }
Atributs Descripció Opcions Per defecte
id Identifier.
template Template used to show the items. editDossier

Creates an editable form for a new issue.

{@ create-issue : redirect [ : dossierId [ : template ] ] }
Atributs Descripció Opcions Per defecte
redirect Context where to redirect after the operation, usually saving.
dossierId Dossier identifier.
template Template used to show the items. create

Creates an editable form for question specific type of issue.

{@ edit-question : id : redirect [ : type [ : template ] ] }
Atributs Descripció Opcions Per defecte
id Identifier.
redirect Context where to redirect after the operation, usually saving.
type Only items with type. TYPE_QUESTION
template Template used to show the items. editQuestion

Creates an editable form with basic actions for adding information to an existing issue.

{@ issue-add-info : id [ : template [ : redirect ] ] }
Atributs Descripció Opcions Per defecte
id Identifier.
template Template used to show the items. addinfo
redirect Context where to redirect after the operation, usually saving.

Elephant
Polls are by default restricted

Due the fact that polls are related to other entities, polls are always restricted to user participation or observation of those entities. The public attribute refers to the attachments.

Elephant
Macro parser

Shows polls for current user with page navigation.

{@ polls [ : count [ : public ] ] }
Atributs Descripció Opcions Per defecte
count Number of items to show. 10
public Show only public content. true

Shows polls for current user without navigation.

{@ poll-list [ : count [ : public ] ] }
Atributs Descripció Opcions Per defecte
count Number of items to show. 10
public Show only public content. true

Renders the timer tracker control. When an entity path is given, returns the link to the control.

{@ time-tracker [ : entityPath ] }
Atributs Descripció Opcions Per defecte
entityPath Path to a entity.

{@ anonymous }

{@ last-activity [ : context [ : count [ : template ] ] ] }
Atributs Descripció Opcions Per defecte
context Elephant context for links.
count Number of items to show. 10
template Template used to show the items. summary

{@ last-activity-summary [ : context [ : count [ : template ] ] ] }
Atributs Descripció Opcions Per defecte
context Elephant context for links.
count Number of items to show. 10
template Template used to show the items. summary

Financials
User shopping

The site cart can be fully implement using cart related macros. See Adding a shopping cart context to an Elephant site.

Financials
Macro parser

Shows contracts with page navigation.

{@ contracts [ : context [ : count [ : intervention ] ] ] }
Atributs Descripció Opcions Per defecte
context Elephant context for links. /user/contracts
count Number of items to show. 10
intervention Only contracts where current user has intervention. true

Shows contracts without navigation.

{@ contract-list [ : context [ : count [ : intervention ] ] ] }
Atributs Descripció Opcions Per defecte
context Elephant context for links. /user/contracts
count Number of items to show. 10
intervention Only contracts where current user has intervention. true

Shows contracts of specific type with page navigation.

{@ contract-type [ : context [ : count [ : intervention [ : type [ : template ] ] ] ] ] }
Atributs Descripció Opcions Per defecte
context Elephant context for links. /user/contracts
count Number of items to show. 10
intervention Only contracts where current user has intervention. true
type Only items with type. 0
template Template used to show the items. summary

Shows contracts of specific type without navigation.

{@ contract-type-list [ : context [ : count [ : intervention [ : type [ : template ] ] ] ] ] }
Atributs Descripció Opcions Per defecte
context Elephant context for links. /user/contracts
count Number of items to show. 10
intervention Only contracts where current user has intervention. true
type Only items with type. 0
template Template used to show the items. summary

Cart's checkout form.

{@ checkout }

Clean cart content. Allows to create a context with after-clean actions.

{@ clean-cart }

Lists products with page navigation.

{@ products : context [ : count [ : summaryTemplate [ : fullTemplate ] ] ] }
Atributs Descripció Opcions Per defecte
context Elephant context for links.
count Number of items to show. 10
summaryTemplate Template used to show the items in summary mode. summary
fullTemplate Template used to show one items in full mode. full

Lists products without navigation.

{@ product-list : context [ : count [ : summaryTemplate [ : fullTemplate ] ] ] }
Atributs Descripció Opcions Per defecte
context Elephant context for links.
count Number of items to show. 10
summaryTemplate Template used to show the items in summary mode. summary
fullTemplate Template used to show one items in full mode. full

Lists promoted products with page navigation.

{@ promoted : context [ : count [ : summaryTemplate [ : fullTemplate ] ] ] }
Atributs Descripció Opcions Per defecte
context Elephant context for links.
count Number of items to show. 10
summaryTemplate Template used to show the items in summary mode. summary
fullTemplate Template used to show one items in full mode. full

Lists promoted products without navigation.

{@ promoted-list : context [ : count [ : summaryTemplate [ : fullTemplate ] ] ] }
Atributs Descripció Opcions Per defecte
context Elephant context for links.
count Number of items to show. 10
summaryTemplate Template used to show the items in summary mode. summary
fullTemplate Template used to show one items in full mode. full

Creates an unordered linkable list of product names.

{@ product-name : context : ids [,ids...] }
Atributs Descripció Opcions Per defecte
context Elephant context for links.
ids Identifiers.

Creates a comma separated linkable list of product names.

{@ product-name-list : context : ids [,ids...] }
Atributs Descripció Opcions Per defecte
context Elephant context for links.
ids Identifiers.

Shows product or sum of products' price.

{@ product-price : format : ids [,ids...] }
Atributs Descripció Opcions Per defecte
format Format used to show the value.
ids Identifiers.

Cart form.

{@ cart : shopping [ : template ] }
Atributs Descripció Opcions Per defecte
shopping Shopping mode.
template Template used to show the items. cart

Publications
How images are selected in image templates?

Publication macros provide several image templates. Because a publication macro lists a number of publications, images can't be selected individually. By default, the shown images are those in the root publishable folder. For other conventions see anchor.

The exception, the grid template

The grid template depends on a single image and uses the priorized folder. More information about publishable folders in anchor.

Publications
Macro parser

Lists publications with page navigation.

{@ publication : context [ : groupId [ : categoryId [ : count [ : template [ : lang ] ] ] ] ] }
Atributs Descripció Opcions Per defecte
context Elephant context for links.
groupId Group identifier. 0
categoryId Category identifier. 0
count Number of items to show. 10
template Template used to show the items. entryTitleImage, entry, eventTitle, eventTitleImage, grid, event, entryTitle summary
lang Elephant language.

Lists publications without navigation.

{@ publication-summary : context [ : groupId [ : categoryId [ : count [ : template [ : lang ] ] ] ] ] }
Atributs Descripció Opcions Per defecte
context Elephant context for links.
groupId Group identifier. 0
categoryId Category identifier. 0
count Number of items to show. 10
template Template used to show the items. entryTitleImage, entry, eventTitle, eventTitleImage, grid, event, entryTitle summary
lang Elephant language.

Shows a full publication.

{@ single-publication : id [ : template ] }
Atributs Descripció Opcions Per defecte
id Identifier.
template Template used to show the items. full

Students
Why do I want non restricted challenges?

Due the fact that challenges are intended to generate a response, should be not so important to make them visible to registered users. Responses to those challenges are strongly restricted to specific users.

Students
Macro parser

{@ challenges : context [ : count [ : summaryTemplate [ : fullTemplate ] ] ] }
Atributs Descripció Opcions Per defecte
context Elephant context for links.
count Number of items to show. 10
summaryTemplate Template used to show the items in summary mode. summary
fullTemplate Template used to show one items in full mode. full

{@ challenges-summary : context [ : count [ : summaryTemplate [ : fullTemplate ] ] ] }
Atributs Descripció Opcions Per defecte
context Elephant context for links.
count Number of items to show. 10
summaryTemplate Template used to show the items in summary mode. summary
fullTemplate Template used to show one items in full mode. full

{@ mychallenges : context [ : count [ : summaryTemplate [ : fullTemplate ] ] ] }
Atributs Descripció Opcions Per defecte
context Elephant context for links.
count Number of items to show. 10
summaryTemplate Template used to show the items in summary mode. summary
fullTemplate Template used to show one items in full mode. full

{@ mychallenges-summary : context [ : count [ : summaryTemplate [ : fullTemplate ] ] ] }
Atributs Descripció Opcions Per defecte
context Elephant context for links.
count Number of items to show. 10
summaryTemplate Template used to show the items in summary mode. summary
fullTemplate Template used to show one items in full mode. full

{@ jobboard : role : type [ : context [ : count [ : template ] ] ] }
Atributs Descripció Opcions Per defecte
role Entity role part. SERVICE_SUPPLY, SERVICE_DEMAND
type Only items with type.
context Elephant context for links.
count Number of items to show. 10
template Template used to show the items. summary

{@ jobboard-summary : role : type [ : context [ : count [ : template ] ] ] }
Atributs Descripció Opcions Per defecte
role Entity role part. SERVICE_SUPPLY, SERVICE_DEMAND
type Only items with type.
context Elephant context for links.
count Number of items to show. 10
template Template used to show the items. summary

{@ myjobboard : role : type [ : context [ : count [ : template ] ] ] }
Atributs Descripció Opcions Per defecte
role Entity role part. SERVICE_SUPPLY, SERVICE_DEMAND
type Only items with type.
context Elephant context for links.
count Number of items to show. 10
template Template used to show the items. summary

{@ myjobboard-summary : role : type [ : context [ : count [ : template ] ] ] }
Atributs Descripció Opcions Per defecte
role Entity role part. SERVICE_SUPPLY, SERVICE_DEMAND
type Only items with type.
context Elephant context for links.
count Number of items to show. 10
template Template used to show the items. summary

{@ lastjobboard : role : type [ : context [ : count [ : template ] ] ] }
Atributs Descripció Opcions Per defecte
role Entity role part. SERVICE_SUPPLY, SERVICE_DEMAND
type Only items with type.
context Elephant context for links.
count Number of items to show. 10
template Template used to show the items. summary

{@ lastjobboard-summary : role : type [ : context [ : count [ : template ] ] ] }
Atributs Descripció Opcions Per defecte
role Entity role part. SERVICE_SUPPLY, SERVICE_DEMAND
type Only items with type.
context Elephant context for links.
count Number of items to show. 10
template Template used to show the items. summary

{@ mylastjobboard : role : type [ : context [ : count [ : template ] ] ] }
Atributs Descripció Opcions Per defecte
role Entity role part. SERVICE_SUPPLY, SERVICE_DEMAND
type Only items with type.
context Elephant context for links.
count Number of items to show. 10
template Template used to show the items. summary

{@ mylastjobboard-summary : role : type [ : context [ : count [ : template ] ] ] }
Atributs Descripció Opcions Per defecte
role Entity role part. SERVICE_SUPPLY, SERVICE_DEMAND
type Only items with type.
context Elephant context for links.
count Number of items to show. 10
template Template used to show the items. summary

Documentation

Documentation macros are internal specific macros used to document elephant macros themselves and other BrightSide related macros.

This page is an example of using documentation macros. The following tables are generated by elephant-macros macro. Used as {@elephant-macros:Documentation}.

Documentation
Macro parser

Shows content providers. Mainly used in newsletters' external sections (External macros).

{@ provider-macros [ : doc-properties [ : tmpl-root [ : template ] ] ] }
Atributs Descripció Opcions Per defecte
doc-properties Properties file for documentation. */documentation
tmpl-root Templates root. documentation
template Template used to show the items. providerMacros

Contacts social groups (Social Groups).

{@ social-groups [ : doc-properties [ : tmpl-root [ : template ] ] ] }
Atributs Descripció Opcions Per defecte
doc-properties Properties file for documentation. */documentation
tmpl-root Templates root. documentation
template Template used to show the items. socialGroups

Shows Elephant macros.

{@ elephant-macros : parser [ : headers [ : doc-properties [ : tmpl-root [ : template ] ] ] ] }
Atributs Descripció Opcions Per defecte
parser Parser name. all
headers true
doc-properties Properties file for documentation. */documentation
tmpl-root Templates root. documentation
template Template used to show the items. elephantMacros

{@ elephant-emojis [ : tmpl-root [ : template ] ] }
Atributs Descripció Opcions Per defecte
tmpl-root Templates root. documentation
template Template used to show the items. providerEmojis

{@ elephant-icons [ : tmpl-root [ : template ] ] }
Atributs Descripció Opcions Per defecte
tmpl-root Templates root. documentation
template Template used to show the items. providerIcons

Shows Elephant indicators.

{@ elephant-indicators : indicator [ : headers [ : doc-properties [ : tmpl-root [ : template ] ] ] ] }
Atributs Descripció Opcions Per defecte
indicator Indicator name. all
headers true
doc-properties Properties file for documentation. */documentation
tmpl-root Templates root. documentation
template Template used to show the items. elephantIndicators

Macro summary

Current summary reflects only those macros related to modules. Next step will be move the whole set of macros to the self-explained API. Current page is rendered with elephant-macros, used as {@elephant-macros:all}.

Attachments
Macro parser

Shows the attachments from a specific entity.

{@ attachment : entityPath [ : template ] }
Atributs Descripció Opcions Per defecte
entityPath Path to a entity.
template Template used to show the items. editableTree tree

Shows the attachments from a specific entity in readonly mode.

{@ attachment-ro : entityPath [ : template ] }
Atributs Descripció Opcions Per defecte
entityPath Path to a entity.
template Template used to show the items. tree-ro

Shows the attachments from a specific entity in readonly mode, after accepting site terms.

{@ attachment-rot : entityPath [ : template ] }
Atributs Descripció Opcions Per defecte
entityPath Path to a entity.
template Template used to show the items. tree-rot

Shows the attachments from current user.

{@ self-attachments [ : template ] }
Atributs Descripció Opcions Per defecte
template Template used to show the items. tree

Shows the attachments from current user in readonly mode.

{@ self-attachments-ro [ : template ] }
Atributs Descripció Opcions Per defecte
template Template used to show the items. tree-ro

Shows the attachments from current user in readonly mode, after accepting site terms.

{@ self-attachments-rot [ : template ] }
Atributs Descripció Opcions Per defecte
template Template used to show the items. tree-rot

Calendar
Macro parser

Renders calendar URL for current user.

{@ calendar : type }
Atributs Descripció Opcions Per defecte
type Only items with type. url

Contacts
Macro parser

Lists groups in a tree format.

{@ groups : context : group-category }
Atributs Descripció Opcions Per defecte
context Elephant context for links.
group-category Category identifier of the groups.

Lists contacts with page navigation.

{@ contacts [ : count [ : syndicationId [ : summaryTemplate [ : context [ : fullTemplate ] ] ] ] ] }
Atributs Descripció Opcions Per defecte
count Number of items to show. 10
syndicationId Sindication code. See Social Groups in Contacts.
summaryTemplate Template used to show the items in summary mode. summary
context Elephant context for links.
fullTemplate Template used to show one items in full mode. full

{@ contacts-summary [ : count [ : syndicationId [ : summaryTemplate [ : context [ : fullTemplate ] ] ] ] ] }
Atributs Descripció Opcions Per defecte
count Number of items to show. 10
syndicationId Sindication code. See Social Groups in Contacts.
summaryTemplate Template used to show the items in summary mode. summary
context Elephant context for links.
fullTemplate Template used to show one items in full mode. full

Lists contacts in grouping with page navigation.

{@ contacts-by-group [ : count [ : groupings [ : summaryTemplate ] ] ] }
Atributs Descripció Opcions Per defecte
count Number of items to show. 10
groupings Items groupings.
summaryTemplate Template used to show the items in summary mode. summary

Lists contacts in grouping without navigation.

{@ contacts-by-group-summary [ : count [ : groupings [ : summaryTemplate ] ] ] }
Atributs Descripció Opcions Per defecte
count Number of items to show. 10
groupings Items groupings.
summaryTemplate Template used to show the items in summary mode. summary

Shows contact count.

{@ contactcount [ : syndicationId ] }
Atributs Descripció Opcions Per defecte
syndicationId Sindication code. See Social Groups in Contacts.

Lists contacts with specific connector value with page navigation.

{@ contacts-connector : count : connector [ : value [,value...] [ : summaryTemplate [ : context [ : fullTemplate ] ] ] ] }
Atributs Descripció Opcions Per defecte
count Number of items to show. 10
connector Connector name.
value Value to search for.
summaryTemplate Template used to show the items in summary mode. summary
context Elephant context for links.
fullTemplate Template used to show one items in full mode. full

Lists contacts with specific connector value without navigation.

{@ contacts-connector-summary : count : connector [ : value [,value...] [ : summaryTemplate [ : context [ : fullTemplate ] ] ] ] }
Atributs Descripció Opcions Per defecte
count Number of items to show. 10
connector Connector name.
value Value to search for.
summaryTemplate Template used to show the items in summary mode. summary
context Elephant context for links.
fullTemplate Template used to show one items in full mode. full

Shows a text depending on whether user's my-data is valid or not.

{@ my-data : valid : not-valid }
Atributs Descripció Opcions Per defecte
valid
not-valid

Creates an editable form for web descriptors.

{@ describe-it : entityPath [ : id ] }
Atributs Descripció Opcions Per defecte
entityPath Path to a entity.
id Identifier. Default

Convocation check interface for attendance control.

{@ convocation-check [ : template ] }
Atributs Descripció Opcions Per defecte
template Template used to show the items. check

Shows convocations with page navigation.

{@ convocations : mode [ : context [ : count [ : template ] ] ] }
Atributs Descripció Opcions Per defecte
mode Mode to use. all, closed, open
context Elephant context for links.
count Number of items to show. 10
template Template used to show the items. summary

Shows convocations without navigation.

{@ convocation-summary : mode [ : context [ : count [ : template ] ] ] }
Atributs Descripció Opcions Per defecte
mode Mode to use. all, closed, open
context Elephant context for links.
count Number of items to show. 10
template Template used to show the items. summary

Shows public and user's convocations with page navigation.

{@ myconvocations : mode [ : context [ : count [ : template ] ] ] }
Atributs Descripció Opcions Per defecte
mode Mode to use. all, closed, open
context Elephant context for links.
count Number of items to show. 10
template Template used to show the items. summary

Shows public and user's convocations without navigation.

{@ myconvocation-summary : mode [ : context [ : count [ : template ] ] ] }
Atributs Descripció Opcions Per defecte
mode Mode to use. all, closed, open
context Elephant context for links.
count Number of items to show. 10
template Template used to show the items. summary

Shows public convocations with page navigation.

{@ public-convocations : mode [ : context [ : count [ : template ] ] ] }
Atributs Descripció Opcions Per defecte
mode Mode to use. all, closed, open
context Elephant context for links.
count Number of items to show. 10
template Template used to show the items. summary

Shows public convocations without navigation.

{@ public-convocation-summary : mode [ : context [ : count [ : template ] ] ] }
Atributs Descripció Opcions Per defecte
mode Mode to use. all, closed, open
context Elephant context for links.
count Number of items to show. 10
template Template used to show the items. summary

{@ old-directory [ : context [ : count [ : template ] ] ] }
Atributs Descripció Opcions Per defecte
context Elephant context for links.
count Number of items to show. 12
template Template used to show the items. summary

Renders the directory context.

{@ directory [ : type [,type...] [ : context [ : count [ : template ] ] ] ] }
Atributs Descripció Opcions Per defecte
type Only items with type. all, typed, companies, professionals, centers, students, educators, singletons all
context Elephant context for links.
count Number of items to show. 12
template Template used to show the items. summary

{@ directory-summary [ : type [,type...] [ : context [ : count [ : template ] ] ] ] }
Atributs Descripció Opcions Per defecte
type Only items with type. all, typed, companies, professionals, centers, students, educators, singletons all
context Elephant context for links.
count Number of items to show. 12
template Template used to show the items. summary

{@ directory-ranking [ : type [,type...] [ : context [ : count [ : template ] ] ] ] }
Atributs Descripció Opcions Per defecte
type Only items with type. all, typed, companies, professionals, centers, students, educators, singletons all
context Elephant context for links.
count Number of items to show. 12
template Template used to show the items. summary

{@ directory-summary-ranking [ : type [,type...] [ : context [ : count [ : template ] ] ] ] }
Atributs Descripció Opcions Per defecte
type Only items with type. all, typed, companies, professionals, centers, students, educators, singletons all
context Elephant context for links.
count Number of items to show. 12
template Template used to show the items. summary

{@ directory-restricted [ : type [,type...] [ : context [ : count [ : template ] ] ] ] }
Atributs Descripció Opcions Per defecte
type Only items with type. all, typed, companies, professionals, centers, students, educators, singletons all
context Elephant context for links.
count Number of items to show. 12
template Template used to show the items. summary

{@ directory-summary-ranking-restricted [ : type [,type...] [ : context [ : count [ : template ] ] ] ] }
Atributs Descripció Opcions Per defecte
type Only items with type. all, typed, companies, professionals, centers, students, educators, singletons all
context Elephant context for links.
count Number of items to show. 12
template Template used to show the items. summary

{@ directory-ranking-restricted [ : type [,type...] [ : context [ : count [ : template ] ] ] ] }
Atributs Descripció Opcions Per defecte
type Only items with type. all, typed, companies, professionals, centers, students, educators, singletons all
context Elephant context for links.
count Number of items to show. 12
template Template used to show the items. summary

{@ syndications [ : type [,type...] [ : syndicationId [ : context [ : count [ : template ] ] ] ] ] }
Atributs Descripció Opcions Per defecte
type Only items with type. all, typed, companies, professionals, centers, students, educators, singletons all
syndicationId Sindication code. See Social Groups in Contacts.
context Elephant context for links.
count Number of items to show. 12
template Template used to show the items. summary

{@ syndications-summary [ : type [,type...] [ : syndicationId [ : context [ : count [ : template ] ] ] ] ] }
Atributs Descripció Opcions Per defecte
type Only items with type. all, typed, companies, professionals, centers, students, educators, singletons all
syndicationId Sindication code. See Social Groups in Contacts.
context Elephant context for links.
count Number of items to show. 12
template Template used to show the items. summary

{@ syndications-ranking [ : type [,type...] [ : syndicationId [ : context [ : count [ : template ] ] ] ] ] }
Atributs Descripció Opcions Per defecte
type Only items with type. all, typed, companies, professionals, centers, students, educators, singletons all
syndicationId Sindication code. See Social Groups in Contacts.
context Elephant context for links.
count Number of items to show. 12
template Template used to show the items. summary

{@ syndications-summary-ranking [ : type [,type...] [ : syndicationId [ : context [ : count [ : template ] ] ] ] ] }
Atributs Descripció Opcions Per defecte
type Only items with type. all, typed, companies, professionals, centers, students, educators, singletons all
syndicationId Sindication code. See Social Groups in Contacts.
context Elephant context for links.
count Number of items to show. 12
template Template used to show the items. summary

{@ syndications-restricted [ : type [,type...] [ : syndicationId [ : context [ : count [ : template ] ] ] ] ] }
Atributs Descripció Opcions Per defecte
type Only items with type. all, typed, companies, professionals, centers, students, educators, singletons all
syndicationId Sindication code. See Social Groups in Contacts.
context Elephant context for links.
count Number of items to show. 12
template Template used to show the items. summary

{@ syndications-summary-ranking-restricted [ : type [,type...] [ : syndicationId [ : context [ : count [ : template ] ] ] ] ] }
Atributs Descripció Opcions Per defecte
type Only items with type. all, typed, companies, professionals, centers, students, educators, singletons all
syndicationId Sindication code. See Social Groups in Contacts.
context Elephant context for links.
count Number of items to show. 12
template Template used to show the items. summary

{@ syndications-ranking-restricted [ : type [,type...] [ : syndicationId [ : context [ : count [ : template ] ] ] ] ] }
Atributs Descripció Opcions Per defecte
type Only items with type. all, typed, companies, professionals, centers, students, educators, singletons all
syndicationId Sindication code. See Social Groups in Contacts.
context Elephant context for links.
count Number of items to show. 12
template Template used to show the items. summary

Shows services with page navigation.

{@ services : role : type [ : context [ : count [ : template ] ] ] }
Atributs Descripció Opcions Per defecte
role Entity role part. SERVICE_SUPPLY, SERVICE_DEMAND
type Only items with type.
context Elephant context for links.
count Number of items to show. 10
template Template used to show the items. summary

Shows services without navigation.

{@ service-summary : role : type [ : context [ : count [ : template ] ] ] }
Atributs Descripció Opcions Per defecte
role Entity role part. SERVICE_SUPPLY, SERVICE_DEMAND
type Only items with type.
context Elephant context for links.
count Number of items to show. 10
template Template used to show the items. summary

Shows user's company services with page navigation.

{@ myservices : role : type [ : context [ : count [ : template ] ] ] }
Atributs Descripció Opcions Per defecte
role Entity role part. SERVICE_SUPPLY, SERVICE_DEMAND
type Only items with type.
context Elephant context for links.
count Number of items to show. 10
template Template used to show the items. summary

Shows user's company services without navigation.

{@ myservice-summary : role : type [ : context [ : count [ : template ] ] ] }
Atributs Descripció Opcions Per defecte
role Entity role part. SERVICE_SUPPLY, SERVICE_DEMAND
type Only items with type.
context Elephant context for links.
count Number of items to show. 10
template Template used to show the items. summary

Shows last services with page navigation.

{@ lastservices : role : type [ : context [ : count [ : template ] ] ] }
Atributs Descripció Opcions Per defecte
role Entity role part. SERVICE_SUPPLY, SERVICE_DEMAND
type Only items with type.
context Elephant context for links.
count Number of items to show. 10
template Template used to show the items. summary

Shows last services without navigation.

{@ lastservice-summary : role : type [ : context [ : count [ : template ] ] ] }
Atributs Descripció Opcions Per defecte
role Entity role part. SERVICE_SUPPLY, SERVICE_DEMAND
type Only items with type.
context Elephant context for links.
count Number of items to show. 10
template Template used to show the items. summary

Shows user's company last services with page navigation.

{@ mylastservices : role : type [ : context [ : count [ : template ] ] ] }
Atributs Descripció Opcions Per defecte
role Entity role part. SERVICE_SUPPLY, SERVICE_DEMAND
type Only items with type.
context Elephant context for links.
count Number of items to show. 10
template Template used to show the items. summary

Shows user's company last services without navigation.

{@ mylastservice-summary : role : type [ : context [ : count [ : template ] ] ] }
Atributs Descripció Opcions Per defecte
role Entity role part. SERVICE_SUPPLY, SERVICE_DEMAND
type Only items with type.
context Elephant context for links.
count Number of items to show. 10
template Template used to show the items. summary

{@ register [ : template ] }
Atributs Descripció Opcions Per defecte
template Template used to show the items. signup

{@ profile : contactIds [ : template ] }
Atributs Descripció Opcions Per defecte
contactIds
template Template used to show the items. summary

{@ myprofile [ : template ] }
Atributs Descripció Opcions Per defecte
template Template used to show the items. profile

Core
Macro parser

Expands into web application's context.

{@ webroot }

Expends into site name.

{@ site }

Shows current rendering context.

{@ rendering }

Elephant language.

{@ lang }

Calls modules' user summaries and show the results.

{@ user-summary [ : mode ] }
Atributs Descripció Opcions Per defecte
mode Mode to use. init

{@ user-contents }

Reads and renders file content.

{@ include : content-file }
Atributs Descripció Opcions Per defecte
content-file System file to show.

Writes parameter with name value or default when null.

{@ param : name [ : default ] }
Atributs Descripció Opcions Per defecte
name Attribute name.
default Default value.

Renders context content. If stopper is set to true, stops when finding a line starting with .

{@ render : context [ : stopper ] }
Atributs Descripció Opcions Per defecte
context Elephant context for links.
stopper Whether rendering should stop.

Writes current date, time or both using diferent localized formats.

{@ date [ : mode [ : format ] ] }
Atributs Descripció Opcions Per defecte
mode Mode to use. date, all, time date
format Format used to show the value. short, medium, long, full short

Renders the feed at url.

{@ feed : url }
Atributs Descripció Opcions Per defecte
url Uniform Resource Locator.

Creates an Elephant marker within context with name. Elephant markers are initialized with correct locale and constructor as variable.

{@ marker : tmpl-root : template : value-map }
Atributs Descripció Opcions Per defecte
tmpl-root Templates root.
template Template used to show the items.
value-map Values using the form variable=value separated by ;

Creates an Elephant marker within context with name. The repository-file is stored in props.

{@ marker-props : tmpl-root : template : repository-file }
Atributs Descripció Opcions Per defecte
tmpl-root Templates root.
template Template used to show the items.
repository-file Name of the repository file.

Creates an Elephant marker within context with name. The repository-file is stored in doc.

{@ marker-xml : tmpl-root : template : repository-file }
Atributs Descripció Opcions Per defecte
tmpl-root Templates root.
template Template used to show the items.
repository-file Name of the repository file.

Creates an Elephant marker within context with name. The repository-file is stored in json.

{@ marker-json : tmpl-root : template : repository-file }
Atributs Descripció Opcions Per defecte
tmpl-root Templates root.
template Template used to show the items.
repository-file Name of the repository file.

Writes a json array of files matching path and pattern. The array can be as is, sorted or shuffled.

{@ files : folder : pattern : mode }
Atributs Descripció Opcions Per defecte
folder Folder location.
pattern The pattern items must match.
mode Mode to use. normal, sort, shuffle

Creates a frame with url content. If url starts with '/' application context is automatically inserted.

{@ frame : url : width : height }
Atributs Descripció Opcions Per defecte
url Uniform Resource Locator.
width CSS style width.
height CSS style height.

Gets resource value and renders as mode. Mode is an integer optional parameter.

{@ res : resource-key [ : string-mode ] }
Atributs Descripció Opcions Per defecte
resource-key Key used to locate de resource.
string-mode Possible values are: 0 No transform, 1 Capitalized, 2 To upper case, 3 To lower case. 0

{@ i18n : resource [ : string-mode ] }
Atributs Descripció Opcions Per defecte
resource
string-mode Possible values are: 0 No transform, 1 Capitalized, 2 To upper case, 3 To lower case. 0

Writes a random number starting at zero and up to limit minus one.

{@ random : random-limit }
Atributs Descripció Opcions Per defecte
random-limit Random values ceil.

Elephant context for links.

{@ context : level }
Atributs Descripció Opcions Per defecte
level Number of the item level.

Writes currently logged user's name, identifier or email.

{@ user [ : mode ] }
Atributs Descripció Opcions Per defecte
mode Mode to use. name, id, email name

Writes true or false expressions depending on whether role:attribute pair are satisfied.

{@ if : role : attribute : true-expression : false-expression }
Atributs Descripció Opcions Per defecte
role Entity role part.
attribute Permission part.
true-expression When comparison is true.
false-expression When comparison is false.

Writes true or false expressions depending on whether cookie value equals value.

{@ ifcookie : cookie : value : true-expression : false-expression }
Atributs Descripció Opcions Per defecte
cookie Cookie name.
value Value to search for.
true-expression When comparison is true.
false-expression When comparison is false.

Writes true or false expressions depending on whether class could be instantiated.

{@ class : class-name : true-expression : false-expression }
Atributs Descripció Opcions Per defecte
class-name Java class name.
true-expression When comparison is true.
false-expression When comparison is false.

Writes true or false expressions depending on whether value1 equals value2.

{@ equals : value : value : true-expression : false-expression }
Atributs Descripció Opcions Per defecte
value Value to search for.
value Value to search for.
true-expression When comparison is true.
false-expression When comparison is false.

Renders object's attribute as string. object can also be an entityPath.

{@ object : ref-object : attribute }
Atributs Descripció Opcions Per defecte
ref-object Attribute name holding the object or an entityPath.
attribute Renders attribute's value as string.

Renders attribute's value as string.

{@ attribute : attribute [ : format ] }
Atributs Descripció Opcions Per defecte
attribute Renders attribute's value as string.
format Format used to show the value.

Renders entity using name and description.

{@ entity : entityPath : fmt-name-desc }
Atributs Descripció Opcions Per defecte
entityPath Path to a entity.
fmt-name-desc Format, as in String.format(), with entity name and description as parameters.

Renders the entity represented by path calling plugin and using template if specified.

{@ entity-ctrl : plugin : entityPath [ : template ] }
Atributs Descripció Opcions Per defecte
plugin Plugin name.
entityPath Path to a entity.
template Template used to show the items.

Writes cookie value. If optional value is defined, then sets cookie value.

{@ cookie : name [ : value ] }
Atributs Descripció Opcions Per defecte
name Attribute name.
value Value to be set when defined.

Indicator name.

{@ indicator : storeClass : indicatorClass : entityPath : indicator [ : relatedPath ] }
Atributs Descripció Opcions Per defecte
storeClass
indicatorClass
entityPath Path to a entity.
indicator Indicator name.
relatedPath

{@ entry-point : identifier [ : values ] }
Atributs Descripció Opcions Per defecte
identifier
values

DAO
Macro parser

Creates an instance of a search form. Iterators use these instances to provide search capabilities.

{@ dao-search : context }
Atributs Descripció Opcions Per defecte
context Elephant context for links.

Documentation
Macro parser

Shows content providers. Mainly used in newsletters' external sections (External macros).

{@ provider-macros [ : doc-properties [ : tmpl-root [ : template ] ] ] }
Atributs Descripció Opcions Per defecte
doc-properties Properties file for documentation. */documentation
tmpl-root Templates root. documentation
template Template used to show the items. providerMacros

Contacts social groups (Social Groups).

{@ social-groups [ : doc-properties [ : tmpl-root [ : template ] ] ] }
Atributs Descripció Opcions Per defecte
doc-properties Properties file for documentation. */documentation
tmpl-root Templates root. documentation
template Template used to show the items. socialGroups

Shows Elephant macros.

{@ elephant-macros : parser [ : headers [ : doc-properties [ : tmpl-root [ : template ] ] ] ] }
Atributs Descripció Opcions Per defecte
parser Parser name. all
headers true
doc-properties Properties file for documentation. */documentation
tmpl-root Templates root. documentation
template Template used to show the items. elephantMacros

{@ elephant-emojis [ : tmpl-root [ : template ] ] }
Atributs Descripció Opcions Per defecte
tmpl-root Templates root. documentation
template Template used to show the items. providerEmojis

{@ elephant-icons [ : tmpl-root [ : template ] ] }
Atributs Descripció Opcions Per defecte
tmpl-root Templates root. documentation
template Template used to show the items. providerIcons

Shows Elephant indicators.

{@ elephant-indicators : indicator [ : headers [ : doc-properties [ : tmpl-root [ : template ] ] ] ] }
Atributs Descripció Opcions Per defecte
indicator Indicator name. all
headers true
doc-properties Properties file for documentation. */documentation
tmpl-root Templates root. documentation
template Template used to show the items. elephantIndicators

Dossier
Macro parser

Shows issues with page navigation.

{@ issues : status [ : context [ : categoryId [ : dossierId [ : count [ : template ] ] ] ] ] }
Atributs Descripció Opcions Per defecte
status Only items with status. all, closed, onwork
context Elephant context for links.
categoryId Category identifier. 0
dossierId Dossier identifier. 0
count Number of items to show. 10
template Template used to show the items. kbSummary, questions, motions, mySummary, proposals summary

Shows issues without navigation.

{@ issue-summary : status [ : context [ : categoryId [ : dossierId [ : count [ : template ] ] ] ] ] }
Atributs Descripció Opcions Per defecte
status Only items with status. all, closed, onwork
context Elephant context for links.
categoryId Category identifier. 0
dossierId Dossier identifier. 0
count Number of items to show. 10
template Template used to show the items. kbSummary, questions, motions, mySummary, proposals summary

Shows issues restricted to current user with page navigation.

{@ myissues : status [ : context [ : categoryId [ : dossierId [ : count [ : template ] ] ] ] ] }
Atributs Descripció Opcions Per defecte
status Only items with status. all, closed, onwork
context Elephant context for links.
categoryId Category identifier. 0
dossierId Dossier identifier. 0
count Number of items to show. 10
template Template used to show the items. kbSummary, questions, motions, mySummary, proposals summary

Shows issues restricted to current user without navigation.

{@ myissues-summary : status [ : context [ : categoryId [ : dossierId [ : count [ : template ] ] ] ] ] }
Atributs Descripció Opcions Per defecte
status Only items with status. all, closed, onwork
context Elephant context for links.
categoryId Category identifier. 0
dossierId Dossier identifier. 0
count Number of items to show. 10
template Template used to show the items. kbSummary, questions, motions, mySummary, proposals summary

Shows issues where current user participates as assistant, with page navigation.

{@ assisted-issues : status [ : context [ : categoryId [ : dossierId [ : count [ : template ] ] ] ] ] }
Atributs Descripció Opcions Per defecte
status Only items with status. all, closed, onwork
context Elephant context for links.
categoryId Category identifier. 0
dossierId Dossier identifier. 0
count Number of items to show. 10
template Template used to show the items. kbSummary, questions, motions, mySummary, proposals summary

Shows issues where current user participates as assistant, without navigation.

{@ assisted-issue-summary : status [ : context [ : categoryId [ : dossierId [ : count [ : template ] ] ] ] ] }
Atributs Descripció Opcions Per defecte
status Only items with status. all, closed, onwork
context Elephant context for links.
categoryId Category identifier. 0
dossierId Dossier identifier. 0
count Number of items to show. 10
template Template used to show the items. kbSummary, questions, motions, mySummary, proposals summary

Shows dossiers with page navigation.

{@ dossiers : status [ : context [ : categoryIds [,categoryIds...] [ : dossierId [ : count [ : template ] ] ] ] ] }
Atributs Descripció Opcions Per defecte
status Only items with status. all, closed, frozen, not-frozen, onwork
context Elephant context for links.
categoryIds Category identifiers.
dossierId Dossier identifier.
count Number of items to show. 10
template Template used to show the items. projects, dossiers summary

Shows dossiers without navigation.

{@ dossier-summary : status [ : context [ : categoryIds [,categoryIds...] [ : dossierId [ : count [ : template ] ] ] ] ] }
Atributs Descripció Opcions Per defecte
status Only items with status. all, closed, frozen, not-frozen, onwork
context Elephant context for links.
categoryIds Category identifiers.
dossierId Dossier identifier.
count Number of items to show. 10
template Template used to show the items. projects, dossiers summary

Shows dossiers where current user pparticipates, with page navigation.

{@ mydossiers : status [ : context [ : categoryIds [,categoryIds...] [ : dossierId [ : count [ : template ] ] ] ] ] }
Atributs Descripció Opcions Per defecte
status Only items with status. all, closed, frozen, not-frozen, onwork
context Elephant context for links.
categoryIds Category identifiers.
dossierId Dossier identifier.
count Number of items to show. 10
template Template used to show the items. projects, dossiers summary

Shows dossiers where current user pparticipates, without navigation.

{@ mydossier-summary : status [ : context [ : categoryIds [,categoryIds...] [ : dossierId [ : count [ : template ] ] ] ] ] }
Atributs Descripció Opcions Per defecte
status Only items with status. all, closed, frozen, not-frozen, onwork
context Elephant context for links.
categoryIds Category identifiers.
dossierId Dossier identifier.
count Number of items to show. 10
template Template used to show the items. projects, dossiers summary

Shows dossiers where current user directly participates, with page navigation.

{@ direct-dossiers : status [ : context [ : categoryIds [,categoryIds...] [ : count [ : template ] ] ] ] }
Atributs Descripció Opcions Per defecte
status Only items with status. all, closed, frozen, not-frozen, onwork
context Elephant context for links.
categoryIds Category identifiers.
count Number of items to show. 10
template Template used to show the items. projects, dossiers summary

Shows dossiers where current user directly participates, without navigation.

{@ direct-dossier-summary : status [ : context [ : categoryIds [,categoryIds...] [ : count [ : template ] ] ] ] }
Atributs Descripció Opcions Per defecte
status Only items with status. all, closed, frozen, not-frozen, onwork
context Elephant context for links.
categoryIds Category identifiers.
count Number of items to show. 10
template Template used to show the items. projects, dossiers summary

Shows dossiers where current's co-workers directly participate, with page navigation.

{@ related-dossiers : status [ : context [ : categoryIds [,categoryIds...] [ : dossierId [ : count [ : template ] ] ] ] ] }
Atributs Descripció Opcions Per defecte
status Only items with status. all, closed, frozen, not-frozen, onwork
context Elephant context for links.
categoryIds Category identifiers.
dossierId Dossier identifier.
count Number of items to show. 10
template Template used to show the items. projects, dossiers summary

Shows dossiers where current's co-workers directly participate, without navigation.

{@ related-dossier-summary : status [ : context [ : categoryIds [,categoryIds...] [ : dossierId [ : count [ : template ] ] ] ] ] }
Atributs Descripció Opcions Per defecte
status Only items with status. all, closed, frozen, not-frozen, onwork
context Elephant context for links.
categoryIds Category identifiers.
dossierId Dossier identifier.
count Number of items to show. 10
template Template used to show the items. projects, dossiers summary

Shows dossiers where current user has pending votes on worths.

{@ pending-vote : context : phase : worths [,worths...] [ : categoryIds [,categoryIds...] [ : count [ : template ] ] ] }
Atributs Descripció Opcions Per defecte
context Elephant context for links.
phase Only items in phase type.
worths Identifiers of the worths to show.
categoryIds Category identifiers.
count Number of items to show. 10
template Template used to show the items. projects, dossiers summary

Lists categories in a tree format.

{@ categories : status [ : context [ : categoryIds [,categoryIds...] [ : template ] ] ] }
Atributs Descripció Opcions Per defecte
status Only items with status. all, closed, frozen, not-frozen, onwork
context Elephant context for links.
categoryIds Category identifiers.
template Template used to show the items. full

Writes web path from dossier or issue entities.

{@ web-path : path }
Atributs Descripció Opcions Per defecte
path

Creates an editable form with dossier data.

{@ edit-dossier : id [ : template ] }
Atributs Descripció Opcions Per defecte
id Identifier.
template Template used to show the items. editDossier

Creates an editable form for a new issue.

{@ create-issue : redirect [ : dossierId [ : template ] ] }
Atributs Descripció Opcions Per defecte
redirect Context where to redirect after the operation, usually saving.
dossierId Dossier identifier.
template Template used to show the items. create

Creates an editable form for question specific type of issue.

{@ edit-question : id : redirect [ : type [ : template ] ] }
Atributs Descripció Opcions Per defecte
id Identifier.
redirect Context where to redirect after the operation, usually saving.
type Only items with type. TYPE_QUESTION
template Template used to show the items. editQuestion

Creates an editable form with basic actions for adding information to an existing issue.

{@ issue-add-info : id [ : template [ : redirect ] ] }
Atributs Descripció Opcions Per defecte
id Identifier.
template Template used to show the items. addinfo
redirect Context where to redirect after the operation, usually saving.

Elephant
Macro parser

Shows polls for current user with page navigation.

{@ polls [ : count [ : public ] ] }
Atributs Descripció Opcions Per defecte
count Number of items to show. 10
public Show only public content. true

Shows polls for current user without navigation.

{@ poll-list [ : count [ : public ] ] }
Atributs Descripció Opcions Per defecte
count Number of items to show. 10
public Show only public content. true

Renders the timer tracker control. When an entity path is given, returns the link to the control.

{@ time-tracker [ : entityPath ] }
Atributs Descripció Opcions Per defecte
entityPath Path to a entity.

{@ anonymous }

{@ last-activity [ : context [ : count [ : template ] ] ] }
Atributs Descripció Opcions Per defecte
context Elephant context for links.
count Number of items to show. 10
template Template used to show the items. summary

{@ last-activity-summary [ : context [ : count [ : template ] ] ] }
Atributs Descripció Opcions Per defecte
context Elephant context for links.
count Number of items to show. 10
template Template used to show the items. summary

Financials
Macro parser

Shows contracts with page navigation.

{@ contracts [ : context [ : count [ : intervention ] ] ] }
Atributs Descripció Opcions Per defecte
context Elephant context for links. /user/contracts
count Number of items to show. 10
intervention Only contracts where current user has intervention. true

Shows contracts without navigation.

{@ contract-list [ : context [ : count [ : intervention ] ] ] }
Atributs Descripció Opcions Per defecte
context Elephant context for links. /user/contracts
count Number of items to show. 10
intervention Only contracts where current user has intervention. true

Shows contracts of specific type with page navigation.

{@ contract-type [ : context [ : count [ : intervention [ : type [ : template ] ] ] ] ] }
Atributs Descripció Opcions Per defecte
context Elephant context for links. /user/contracts
count Number of items to show. 10
intervention Only contracts where current user has intervention. true
type Only items with type. 0
template Template used to show the items. summary

Shows contracts of specific type without navigation.

{@ contract-type-list [ : context [ : count [ : intervention [ : type [ : template ] ] ] ] ] }
Atributs Descripció Opcions Per defecte
context Elephant context for links. /user/contracts
count Number of items to show. 10
intervention Only contracts where current user has intervention. true
type Only items with type. 0
template Template used to show the items. summary

Cart's checkout form.

{@ checkout }

Clean cart content. Allows to create a context with after-clean actions.

{@ clean-cart }

Lists products with page navigation.

{@ products : context [ : count [ : summaryTemplate [ : fullTemplate ] ] ] }
Atributs Descripció Opcions Per defecte
context Elephant context for links.
count Number of items to show. 10
summaryTemplate Template used to show the items in summary mode. summary
fullTemplate Template used to show one items in full mode. full

Lists products without navigation.

{@ product-list : context [ : count [ : summaryTemplate [ : fullTemplate ] ] ] }
Atributs Descripció Opcions Per defecte
context Elephant context for links.
count Number of items to show. 10
summaryTemplate Template used to show the items in summary mode. summary
fullTemplate Template used to show one items in full mode. full

Lists promoted products with page navigation.

{@ promoted : context [ : count [ : summaryTemplate [ : fullTemplate ] ] ] }
Atributs Descripció Opcions Per defecte
context Elephant context for links.
count Number of items to show. 10
summaryTemplate Template used to show the items in summary mode. summary
fullTemplate Template used to show one items in full mode. full

Lists promoted products without navigation.

{@ promoted-list : context [ : count [ : summaryTemplate [ : fullTemplate ] ] ] }
Atributs Descripció Opcions Per defecte
context Elephant context for links.
count Number of items to show. 10
summaryTemplate Template used to show the items in summary mode. summary
fullTemplate Template used to show one items in full mode. full

Creates an unordered linkable list of product names.

{@ product-name : context : ids [,ids...] }
Atributs Descripció Opcions Per defecte
context Elephant context for links.
ids Identifiers.

Creates a comma separated linkable list of product names.

{@ product-name-list : context : ids [,ids...] }
Atributs Descripció Opcions Per defecte
context Elephant context for links.
ids Identifiers.

Shows product or sum of products' price.

{@ product-price : format : ids [,ids...] }
Atributs Descripció Opcions Per defecte
format Format used to show the value.
ids Identifiers.

Cart form.

{@ cart : shopping [ : template ] }
Atributs Descripció Opcions Per defecte
shopping Shopping mode.
template Template used to show the items. cart

Navigation
Macro parser

Renders a bread crumbs navigator as an HTML unordered list.

{@ navigator : location }
Atributs Descripció Opcions Per defecte
location Navigator mode.

Renders a traversal navigator as an HTML table with three columns.

{@ navigator : traversal [ : show-title ] }
Atributs Descripció Opcions Per defecte
traversal Navigator mode.
show-title When true, renders context name as well. false

Renders a menu as HTML unordered list. level tells starting at which level options are shown. preloaded indicates how many children are to be shown.

{@ navigator : options : decorators : level : preloaded [ : show-current ] }
Atributs Descripció Opcions Per defecte
options Navigator mode.
decorators When true, aditional DIVs are added at top and bottom.
level Number of the item level.
preloaded Number of preloaded children.
show-current When true, children passing preloaded value will show along with ancestors and siblings, as opposed to not showing any child with level over level + preloaded. true

Renders a tabulator as HTML unordered list. level tells at which level tabs are shown.

{@ navigator : tabulator : level }
Atributs Descripció Opcions Per defecte
tabulator Navigator mode.
level Number of the item level.

Renders a web map.

{@ webmap [ : level ] }
Atributs Descripció Opcions Per defecte
level Tells until which level contexts are shown. 1

Renders a list of selectable contexts.

{@ list : behavioural_keywords [,behavioural_keywords...] : navigational_keywords [,navigational_keywords...] : selection_keywords [,selection_keywords...] }
Atributs Descripció Opcions Per defecte
behavioural_keywords Keywords controlling how information displays. popup, external, hidden, verbose
navigational_keywords Keywords to navigate Elephant contexts. parent, locate, level, root, match
selection_keywords Keywords actually returning contexts. all, siblings, search, children, self, leaf, ancestors

Renders a line of selectable contexts.

{@ anchor : behavioural_keywords [,behavioural_keywords...] : navigational_keywords [,navigational_keywords...] : selection_keywords [,selection_keywords...] }
Atributs Descripció Opcions Per defecte
behavioural_keywords Keywords controlling how information displays. popup, external, hidden, verbose
navigational_keywords Keywords to navigate Elephant contexts. parent, locate, level, root, match
selection_keywords Keywords actually returning contexts. all, siblings, search, children, self, leaf, ancestors

Publications
Macro parser

Lists publications with page navigation.

{@ publication : context [ : groupId [ : categoryId [ : count [ : template [ : lang ] ] ] ] ] }
Atributs Descripció Opcions Per defecte
context Elephant context for links.
groupId Group identifier. 0
categoryId Category identifier. 0
count Number of items to show. 10
template Template used to show the items. entryTitleImage, entry, eventTitle, eventTitleImage, grid, event, entryTitle summary
lang Elephant language.

Lists publications without navigation.

{@ publication-summary : context [ : groupId [ : categoryId [ : count [ : template [ : lang ] ] ] ] ] }
Atributs Descripció Opcions Per defecte
context Elephant context for links.
groupId Group identifier. 0
categoryId Category identifier. 0
count Number of items to show. 10
template Template used to show the items. entryTitleImage, entry, eventTitle, eventTitleImage, grid, event, entryTitle summary
lang Elephant language.

Shows a full publication.

{@ single-publication : id [ : template ] }
Atributs Descripció Opcions Per defecte
id Identifier.
template Template used to show the items. full

Students
Macro parser

{@ challenges : context [ : count [ : summaryTemplate [ : fullTemplate ] ] ] }
Atributs Descripció Opcions Per defecte
context Elephant context for links.
count Number of items to show. 10
summaryTemplate Template used to show the items in summary mode. summary
fullTemplate Template used to show one items in full mode. full

{@ challenges-summary : context [ : count [ : summaryTemplate [ : fullTemplate ] ] ] }
Atributs Descripció Opcions Per defecte
context Elephant context for links.
count Number of items to show. 10
summaryTemplate Template used to show the items in summary mode. summary
fullTemplate Template used to show one items in full mode. full

{@ mychallenges : context [ : count [ : summaryTemplate [ : fullTemplate ] ] ] }
Atributs Descripció Opcions Per defecte
context Elephant context for links.
count Number of items to show. 10
summaryTemplate Template used to show the items in summary mode. summary
fullTemplate Template used to show one items in full mode. full

{@ mychallenges-summary : context [ : count [ : summaryTemplate [ : fullTemplate ] ] ] }
Atributs Descripció Opcions Per defecte
context Elephant context for links.
count Number of items to show. 10
summaryTemplate Template used to show the items in summary mode. summary
fullTemplate Template used to show one items in full mode. full

{@ jobboard : role : type [ : context [ : count [ : template ] ] ] }
Atributs Descripció Opcions Per defecte
role Entity role part. SERVICE_SUPPLY, SERVICE_DEMAND
type Only items with type.
context Elephant context for links.
count Number of items to show. 10
template Template used to show the items. summary

{@ jobboard-summary : role : type [ : context [ : count [ : template ] ] ] }
Atributs Descripció Opcions Per defecte
role Entity role part. SERVICE_SUPPLY, SERVICE_DEMAND
type Only items with type.
context Elephant context for links.
count Number of items to show. 10
template Template used to show the items. summary

{@ myjobboard : role : type [ : context [ : count [ : template ] ] ] }
Atributs Descripció Opcions Per defecte
role Entity role part. SERVICE_SUPPLY, SERVICE_DEMAND
type Only items with type.
context Elephant context for links.
count Number of items to show. 10
template Template used to show the items. summary

{@ myjobboard-summary : role : type [ : context [ : count [ : template ] ] ] }
Atributs Descripció Opcions Per defecte
role Entity role part. SERVICE_SUPPLY, SERVICE_DEMAND
type Only items with type.
context Elephant context for links.
count Number of items to show. 10
template Template used to show the items. summary

{@ lastjobboard : role : type [ : context [ : count [ : template ] ] ] }
Atributs Descripció Opcions Per defecte
role Entity role part. SERVICE_SUPPLY, SERVICE_DEMAND
type Only items with type.
context Elephant context for links.
count Number of items to show. 10
template Template used to show the items. summary

{@ lastjobboard-summary : role : type [ : context [ : count [ : template ] ] ] }
Atributs Descripció Opcions Per defecte
role Entity role part. SERVICE_SUPPLY, SERVICE_DEMAND
type Only items with type.
context Elephant context for links.
count Number of items to show. 10
template Template used to show the items. summary

{@ mylastjobboard : role : type [ : context [ : count [ : template ] ] ] }
Atributs Descripció Opcions Per defecte
role Entity role part. SERVICE_SUPPLY, SERVICE_DEMAND
type Only items with type.
context Elephant context for links.
count Number of items to show. 10
template Template used to show the items. summary

{@ mylastjobboard-summary : role : type [ : context [ : count [ : template ] ] ] }
Atributs Descripció Opcions Per defecte
role Entity role part. SERVICE_SUPPLY, SERVICE_DEMAND
type Only items with type.
context Elephant context for links.
count Number of items to show. 10
template Template used to show the items. summary

Elephant Web
Macro parser

{@ wtargets : mode [ : selection [ : template ] ] }
Atributs Descripció Opcions Per defecte
mode Mode to use. all, current all
selection true, false true
template Template used to show the items. summary, vlist, hlist summary

{@ wsolutions : mode [ : selection [ : template ] ] }
Atributs Descripció Opcions Per defecte
mode Mode to use. all, current all
selection true, false true
template Template used to show the items. summary, vlist, hlist summary

{@ wservices : mode [ : selection [ : template ] ] }
Atributs Descripció Opcions Per defecte
mode Mode to use. all, current all
selection true, false true
template Template used to show the items. summary, vlist, hlist summary

{@ wnexts [ : template ] }
Atributs Descripció Opcions Per defecte
template Template used to show the items. summary, vlist, hlist summary

{@ wsiblings [ : template ] }
Atributs Descripció Opcions Per defecte
template Template used to show the items. summary, vlist, hlist summary

{@ wgoals [ : template ] }
Atributs Descripció Opcions Per defecte
template Template used to show the items. gsummary

{@ wcurrent [ : template ] }
Atributs Descripció Opcions Per defecte
template Template used to show the items. full

{@ witem : wtag [ : template ] }
Atributs Descripció Opcions Per defecte
wtag
template Template used to show the items. full

{@ wgoal : waction [ : template ] }
Atributs Descripció Opcions Per defecte
waction
template Template used to show the items. gfull

{@ wexternals [ : template ] }
Atributs Descripció Opcions Per defecte
template Template used to show the items. webLinks

Mail pool

Email pools are called from modules to deliver email messages. The mail pool interface is named after the calling module and stored in a file following the same rule. Using de BS Dossiers module as example:

The xml element for MailMessagePool

The xml element for MailMessagePools is a <impl interface java-class/> using org.turro.mail.impl.MailMessagePool. The attributes are:

Attribute

Description

mailhost

The mail server domain.

user

User account.

password

User password, as is. See cryptpass for a more secured method to store passwords.

cryptpass

Password encrypted. Use Tools -> Password generator to generate the encrypted string.

port

Port to connect to.

ssl

Whether use SSL protocol on connect. Server defined.

tls

Whether to encrypt content on connect. Server defined.

from

Email FROM part. Can take two valid forms:

  • Email
  • Email|Name

Example of an email pool for Gmail

<impl interface="IMailMessagePool_Dossier" java-class="org.turro.mail.impl.MailMessagePool">
  <attrib name="mailhost" value="smtp.gmail.com"/>
  <attrib name="user" value="user@gmail.com"/>
  <attrib name="cryptpass" value="xxxxxxx"/>
  <attrib name="port" value="465"/>
  <attrib name="ssl" value="true"/>
  <attrib name="tls" value="true"/>
  <attrib name="from" value="user@gmail.com|Site Comunications"/>
</impl>
Mail queue

Elephant uses a mail queue system to allow modules to send notifications, status information and publications. Each user can configure whether to receive messages from specific categories and, when available, in which period.

Module senders and user configurations


Elephant mail API

Periods

The API treats the don't want to receive these emails as a especial period, in order to remind when a user explicitly set this option. Also, categories define which periods are allowed and the default period to use when not specified. The periods are:

DONT_SEND

Do not send mails from this category.

AS_GENERATED

Send mails as they are generated by modules.

DAILY,
WEEKLY,
FORTNIGHTLY,
MONTHLY,
QUARTERLY,
EVERY_SIX_MONTHS,
YEARLY

Send a resume for this category in the specified period, in a single email.

For instance, de project activity notifications allow periods from DONT_SEND to MONTHLY, and the default period is DAILY, whilst publications allow the DONT_SEND and AS_GENERATED periods, since publications have their own scheduled senders.

User wants vs. user may want

The notifiers behavior may vary when the user hasn't specifically set a period option. User will be treated as a Participant (may want) or as an Observer (wants), depending on how module qualifies it. The following table shows how operates:

Subscription

Not set

Period set

Don't send

Wants
Participant

Don't send

Send

Don't send

May want
Observer

Send

Send

Don't send

Similar behavior applies to user's agreements. See Agreements .

To better understand the differences, lets take two examples: issue tracking and publications.

Issue tracking

Issues depend on users participation, a role sharing type of share. We know a user may want to know when an issue changes state, if he participates in this issue. The default notifier action will be try to send the notification. If the user hasn't specifically set a period option, the default category option will be used.

Publications

Publications are sent to subscribers. The notifier will send the publication to those users whom specifically have set a period option.

In all cases, when user selected DONT_SEND option for a category, no notification of this category will be sent.

Mail queue tasks

The Elephant Mail Queue API requires a task to be created for each existent period. These tasks are configured by default. The idea behind is to permit platform administrators to change things like the hour in which daily summaries are sent, the day for monthly summaries, and so forth.

Mail macros

{livelink:text-to-show:live-link}

Expands to text-to-show linked to live-link with the user auto-authenticated. Valid for a period of seven days.

{liveref:live-link}

Expands to live-link with the user auto-authenticated. Valid for a period of seven days.

{name}

Expands to the user name.

{email}

Expends to the user email. The one set as Email in contact connectors.

{friendly}

Expands to the friendly user name (using complex name).

{formal}

Expands to the formal user name (using complex name).

Images

Images aren't included in emails. Instead, images are links to the site. This means that the email client is responsible of reading them in order to be shown. Some god practices when uploading images are:

By default, files stored in publishable contexts will be transformed on uploads. The exact process do change white-spaces for hyphens and do remove any character not in the standard range. It will also try to transform punctuated vowels before removing.

Links

The recommendation for images with live links (auto-authenticated links) is:

[link({liveref:live-link})]
[img image-to-show]
[/link]

System notification queue

System queue is used to send admin notifications to site administradors, password reminders to users and more of the kind. The system queue is private, users can't change sending period. The logic used when sending is the User may want approach, which means that users will receive notifications except when explicitly set to DONT_SEND. Although administradors can set periods for this queue, it's not recommended. System notifications are better sent AS_GENERATED.

Direct emails

Elephant allows sending direct emails through the Mail API. This method is used, for instance, when sending activity emails from BrightSide Dossiers module.

Intercepting responses to direct emails

The Elephant Mail API defines a way for intercepting responses to direct emails. The method requires to declare a MailReader. The usual form to declare a MailReader is in the elephant_[module].xml file.

Processed messages will be flagged as configured in MailReader. The rest will be left as they were.

The xml element for MailReader

The xml element for MailReaders is a <impl interface java-class/> using org.turro.mail.reader.MailReader. The attributes are:

Attribute

Description

mailhost

The mail server domain.

type

The server type. Usually imap, imaps, pop3 or pop3s.

count

Number of messages to retrieve. Defaults to 50.

folder

Folder to read from. Defaults to INBOX.

user

User account.

password

User password, as is. See cryptpass for a more secured method to store passwords.

cryptpass

Password encrypted. Use Tools -> Password generator to generate the encrypted string.

port

Port to connect to.

ssl

Whether use SSL protocol on connect. Server defined.

tls

Whether to encrypt content on connect. Server defined.

flag

Flag to set if the message is processed. Defaults to SEEN.

Example for IMAP protocol on Gmail

<impl interface="IMailReader_Dossier" java-class="org.turro.mail.reader.MailReader">
  <attrib name="mailhost" value="imap.gmail.com"/>
  <attrib name="type" value="imaps"/>
  <attrib name="count" value="10"/>
  <attrib name="user" value="user@gmail.com"/>
  <attrib name="cryptpass" value="xxxxxxx"/>
  <attrib name="port" value="993"/>
  <attrib name="ssl" value="true"/>
  <attrib name="tls" value="false"/>
</impl>

Example for POP3 protocol on Gmail

<impl interface="IMailReader_Dossier" java-class="org.turro.mail.reader.MailReader">
  <attrib name="mailhost" value="pop.gmail.com"/>
  <attrib name="type" value="pop3s"/>
  <attrib name="count" value="10"/>
  <attrib name="user" value="user@gmail.com"/>
  <attrib name="cryptpass" value="xxxxxxx"/>
  <attrib name="port" value="995"/>
  <attrib name="ssl" value="true"/>
  <attrib name="tls" value="false"/>
</impl>
Matching

Elephant provides a generic API for generating matchings. Since matchings will be generated within different modules and using different Dao instances, the API provides a basic entity skeleton which is extended on the required JPA context.

Matching is closely related to Ranking . It might be regarded as a set of rankings for collections of entities. Usually, those collections are sets of contacts.

Main goals

Understanding the complexities of a multi-module approach

Using different JPA context or Dao instances with highly populated databases forces to have matching tables in the same context where are supposed to be used. The fact that indicators are kept after calculate the final ranking value, adds, if not enough, more complexity.

Matching produces values for each basis entity n times the size of the related entity set.

Keeping indicators is not a random decision. Once calculated, they can be used for other purposes. For example, statistics, entity honoring symbols and so on.

In order to achieve the expected results with the minimum effort, the Matching API provides base classes and interfaces to concentrate module and entity specifics.

How does it work?

The Matching API has the starting point using Matchings.process() static method. This is a bulk processing and starts deleting the matching table. When executing for a single entity of a specific module, uses instead Matchings.processFor(entity).

The API takes, one by one, all the module specific indicators and generate their values against the whole set of related entities. After that, generates a final entry with the calculated entity matching for each related entity. The formula is written as plain text and uses indicator's name as variables. Formulas are usually expressed as a sum of weighted indicators.

(indicator1 * weight) + (indicator2 * weight) + ...
Well explained indicators

Since indicators are script variables, it's important to have no ambiguous indicator names.

Finally, the API has some convenience methods for adding join with the related entity and ordering statements to database queries.

Matching and the entities

Matching is a both sides value. Once stressed the relation between n-A and n-B, the results can be used to show the matching from a single A to n-B, same as from a single B to n-A.


Sorting entities by matching

Matching results can be used to sort entities for their matching value to a related entity. The Matching API provides non intrusive methods for JPA queries, allowing the natural entity sort order in case there is no related entity or matching generated.

The image shows the elements at play when the related entity is an authenticated user. MatchingEntity represents the generated set of tuples containing the matching indicators and the final formula value. The matching value is sorted in descendant order as to show higher values first. In case of no matching, the fallback goes to the ranking and, finally, to entity sort order.


Microservices

Elephant Microservices is a ready-to-use component that allows machine to machine conversations among Elephant and non-Elephant implementations. The common used request language is JSON and results can be delivered in many formats.

Secured connections

Elephant Microservices can be built over a security system that will not accept requests from unknown sources. Two convenient classes are provided to ensure secured calls, SecuredClientService and SecuredServerService.

Publishing

Elephant provides system wide components to allow common access to entities. One of the advantages of this system is the ability to publish the activity using Visual elements to control whether a user has permissions to see specific data.

Publishing by condition

Elephant takes the publishing concept as a web context using an iterator with conditions. Let's say we want to publish a specific branch of dossier's categories tree. And from this branch, only those with particular conditions. Now, taking context, entity's type and conditions, we have the information necessary to feed the Publishing API:

Field

Description

Context

Web context path where the entities get published.

Entity root

The entity root as expressed in the Entities API.

Constraints

Array of conditions specific to the entity root.

Factory methods

Method

Description

getConstraint()

Returns constraint values.

getContext()

Returns web context for a given entity.

Who's benefiting from the Publishing API?

Push notifications

Modern browsers allow users to get push notifications on a large variety of devices. Despite being controlled by browsers, push notifications do not require an open browser.

Having a single specification, push notifications behavior is expected to be similar among different browser brands.

Mozilla has an updated page showing browser brands adoption https://developer.mozilla.org/en-US/docs/Web/API/Push_API

Elephant Push notifications

Elephant provides a convenience method to enable and subscribe to push notifications. A single check button will perform both actions:


Elephant push notifications control

This check button has three possible status:

Status

Description

Transition

Disabled

Browser doesn't support push notifications or user has blocked them.

To change push notifications status, see the following section.

Unchecked

No push notifications will be sent to this browser.

The user can check the button and immediately will receive a request from the browser asking whether to allow or block push notifications.

Checked

This device will be getting push notifications.

To disable push notifications, see the following section.

Browser options

In the navigation bar you will see one of these icons:

Firefox

Chrome

By clicking them, a dialog with site options will pop up. Notice that this options refer to the current site.

Firefox

Chrome

Ranking

Elephant provides a generic API for generating rankings. Since rankings will be generated within different modules and using different Dao instances, the API provides a basic entity skeleton which is extended on the required JPA context.

Main goals

Understanding the complexities of a multi-module approach

Using different JPA context or Dao instances with highly populated databases forces to have ranking tables in the same context where are supposed to be used. The fact that indicators are kept after calculate the final ranking value, adds, if not enough, more complexity.

Keeping indicators is not a random decision. Once calculated, they can be used for other purposes. For example, statistics, entity honoring symbols and so on.

In order to achieve the expected results with the minimum effort, the Ranking API provides base classes and interfaces to concentrate module and entity specifics.

How does it work?

The Ranking API has the starting point using Rankings.process() static method. This is a bulk processing and starts deleting the ranking table. When executing for a single entity of a specific module, uses instead Rankings.processFor(entity).

The API takes, one by one, all the module specific indicators and generate their values. After that, generates a final entry with the calculated entity ranking. The formula is written as plain text and uses indicator's name as variables. Formulas are usually expressed as a sum of weighted indicators.

(indicator1 * weight) + (indicator2 * weight) + ...
Well explained indicators

Since indicators are script variables, it's important to have no ambiguous indicator names.

Finally, the API has some convenience methods for adding join and ordering statements to database queries.

Dossier ranking example

Dossier ranking takes information from different modules and uses the extended syntax for indicators. The image shows class inheritance and data providing. The final result is kept in dossier module's JPA.


DossierIndicator excerpt

Indicators self-provided or from external modules.

@ElephantIndicator
public class DossierIndicator extends AbstractIndicator {

  public DossierIndicator() {
    root = "dossier";
    indicators = Arrays.asList(
            "participation", "fullParticipation", "issues", 
            "generic:stars", "generic:comments",
            "attach:attachments", "forum:topics");
  }
  
  @Override
  protected Dao createDao() {
    return new DossierPU();
  }

 ...

}

Sorting entities by ranking

Ranking results can be used to sort entities. The Ranking API provides non intrusive methods for JPA queries, allowing the natural entity sort order in case there is no ranking generated.

The image shows the elements at play. RankingEntity represents the generated set of tuples containing the ranking indicators and the final formula value. The ranking value is sorted in descendant order as to show higher values first.


Security

Elephant Security System is used to isolate contents based on user granted permissions. The content is generated at server side based on this security system.

Basic security points

Passwords

Elephant uses a symmetric cipher with a unique key pair, to produce the ciphertext to be stored.

Before stored, the application measures the password strength and shows the result as a percentage. The rules for measuring the strength are:

isInRole method

Elephant provides isInRole convenience method to check user assigned points. The method takes as string parameter with a permission checking syntax.

The scripts also provide a facade map named rolemap. The checking syntax will be rolemap['root:permission'].

See [ Social groups, Permissions, Scripting, Actors, Concept permissions ]

Social groups

Social groups propagate into static, application-wide permissions. Users syndicated to socials groups will also be granted with the related permissions.

Elephant comes with a ready-to-use set of social groups, associated to roles with fine-grained permissions. The following table is auto-generated with the current version. The identifier is the internal form of the social group. Syndicate shows nested social groups. Roles are the set of permissions granted with the social group. Each role has a popup showing the fine-grained permissions, where no-popup would mean no-permissions. Tags is no longer used, since contacts module already provides a tag-kind-of navigating among social groups.

Inheritance

Socials groups marked with are subject to inheritance. Inheritance ensures that staff from a company or center will inherit the social group and its permissions. Inheritance is dynamic and takes into account current companies or centers.

Grups socials Identificador Sindicar Rols Etiquetes
Auxiliar comptable account_auxiliar IssueParticipant, Acceptance, DossierParticipant, FinancialsAccountingAuxiliar account_auxiliar
Auxiliar administració admin_auxiliar IssueParticipant, Acceptance, DossierParticipant, Contacts, FinancialsAdministrationAuxiliar admin_auxiliar
Administració administration FileAttachSelf, Administration, Acceptance, MyDocuments, AttachDelete, AttachSelf, PublicationModerator, FileAttachDelete, Contacts, ConvocationAdmin, Dossier, Financials, DossierRegistry, Crm administration
Alliance administration alliance_admin AllianceAdmin alliance
Alliance member alliance_member AllianceMember alliance
Administració d'adjunts attach_admin AttachAdmin, FileAttachAdmin admin
Administració de BrightSide brightside_admin attach_admin, financials_admin, dossier_admin, contacts_admin SchedulerAdmin, FinancialsAdmin, ContactAdmin, CrmAdmin, FileAttachAdmin, StudentAdmin, BrightSideAdmin, FinancialsModel, BusinessAdmin, DirectoryMember, DossierAdmin, ErpAdmin, PublicationAdmin, ConvocationAdmin, AttachAdmin, AcceptanceAdmin brightside
Clusters cluster IssueParticipant, FileAttachSelf, DossierParticipant, Cluster, AttachSelf cluster
Entitat col·laboradora collaborating_entity IssueParticipant, FileAttachSelf, DossierParticipant, MarketplaceMember, ContactsViewer, AttachSelf, CollaboratingEntity collaborating
Col·laboradors collaborator IssueParticipant, FileAttachSelf, Collaborator, AttachSelf collaborator
Col·laboradors privilegiats collaborator_privileged collaborator IssueParticipant, PrivilegedCollaborator, FileAttachSelf, AttachSelfValidate, DossierParticipant, Collaborator, Publication privileged, collaborator
Comercials comercial IssueParticipant, MyDocuments, DossierParticipant, Convocation, Publication, Comercial, CrmVendor comercial
Assistents a direcció comercial comercial_dir_assistant IssueParticipant, MyDocuments, DossierParticipant, Contacts, ComercialDirAssistant, Publication, Crm assistant
Direcció comercial comercial_direction IssueParticipant, MyDocuments, DossierParticipant, ComercialDirection, Contacts, Convocation, CrmAdmin, Publication comercial, direction
Cap d'informàtica computer_manager Administration, MyDocuments, Contacts, PublicationAdmin, ErpAdmin, Attach, Dossier, Financials, CrmAdmin, AcceptanceAdmin, FileAttach, ComputerManager computer
Consultors consultant Consultant consultant
Administració de contactes contacts_admin ConvocationAdmin, ContactAdmin admin
Administració de continguts content_admin BlogAdmin, PublicationAdmin, ContentManager content
Consellers counselor IssueParticipant, FileAttachSelf, DossierParticipant, Collaborator, Counselor, Publication, AttachSelf counselor
Clients customer IssueParticipant, FileAttachSelf, Customer, AttachSelf customer
Clients privilegiats customer_privileged customer IssueParticipant, FileAttachSelf, AttachSelfValidate, DossierParticipant, Customer, Publication, PrivilegedCustomer privileged, customer
Direcció direction FileAttachSelf, Erp, MyDocuments, Attach, AttachSelf, Direction, Contacts, Dossier, Financials, AcceptanceAdmin, FileAttach, Crm, Business direction
Assistents a direcció direction_assistant FileAttachSelf, Acceptance, MyDocuments, Contacts, Attach, Dossier, Financials, DirectionAssistant, DossierRegistry, AttachSelf, FileAttach, Crm assistant
Directori directory DirectoryMember directory
Administració de dossiers dossier_admin DossierAdmin, ConvocationAdmin admin
Personal employee IssueParticipant, Acceptance, MyDocuments, DossierParticipant, Employee, Contacts employee
Auxiliars d'esdeveniments event_assistant ConvocationValidate, EventAssistant event_assistant
Administració de financials financials_admin BusinessAdmin, ConvocationAdmin, FinancialsAdmin, FinancialsModel admin
Empresa del grup groupcompany IssueParticipant, GroupCompany, FileAttachSelf, DossierParticipant, AttachSelf groupcompany
Convidats guest Guest guest
Hub hub Hub hub
Suport hub hub-support HubSupport hub-support
Inversors investor Investor investor
Caps de personal manager employee Acceptance, MyDocuments, Employee, Contacts, ErpAdmin, Dossier, Manager manager, employee
Marketing marketing ContactsMarketing marketing
Marketplace marketplace MarketplaceMember marketplace
Operaris operator employee IssueParticipant, Operator, Acceptance, DossierParticipant, ErpOperator employee, operator
Socis partner IssueParticipant, FileAttachSelf, DossierParticipant, MarketplaceMember, ContactsViewer, AttachSelf, Partner partner
Patrons patron IssueParticipant, FileAttachSelf, DossierParticipant, Collaborator, Publication, AttachSelf, Patron patron
Suport a projectes projectsupport IssueParticipant, DossierParticipant projectsupport
Proveïdors provider IssueParticipant, FileAttachSelf, AttachSelf, Provider provider
Proveïdors privilegiats provider_privileged provider IssueParticipant, FileAttachSelf, AttachSelfValidate, DossierParticipant, Publication, PrivilegedProvider, Provider privileged, provider
Investigadors researcher Researcher reasearcher
Administrador d'estudiants student_admin StudentAdmin admin
Comissió de talent talent_committee IssueParticipant, FileAttachSelf, DossierParticipant, MarketplaceMember, ContactsViewer, AttachSelf, TalentCommittee talent
Socis tecnològics techpartner TechnologyPartner techpartner
Testimonis testimonial Testimonial testimonial
Administració de la web web_admin WebAdministrator web

Permissions

Permissions' definition is explained in Social groups . Simplifying, definition is set of permissions related to a root, for example dossier:list,new,edit,delete, whereas checking a permission would take the form dossier:new. In the definition we say the permissions related to dossier, when checking we ask whether it has one of those permissions.

Permissions can be ORed using |, for example dossier:list|@customer:on.

Permission root types

Fuzzy roles

Fuzzy roles are those discovered by the application and highly dependent on interactions.

Fuzzy role

Description

admin

The user has admin capabilities, usually related to high administration roles.

natural

The user has a current relation with a company or center.

worker

The user has a current relation with a company.

professional

The user has a responsible relation with a company.

student

The user has a non-responsible relation with a center.

docent

The user has a docent relation with a center.

responsible

The user has a responsible relation with a company or center.

hhrr

The user is in Human Resources.

companyhhrr

The user is in company's Human Resources department.

centerhhrr

The user is in center's Human Resources department.

translator

The user is a language translator.

networking

The user is in the networking.

premium

The user is in the premium networking.

singleton

The user is a freelancer or a non recognized company or center.

Some examples

Check type

Syntax

Example

Permissions

entity-root:permission

dossier:list

Roles

#role:on

#DossierParticipant:on

Social groups

@socialGroupID:on

@customer:on

Fuzzy roles

@fuzzyrole:is

@worker:is

Actors

@actor:actor_name

@actor:PartnerNetwork

Suppose a sample user assigned to Privileged Customers social group. This social group grants the DossierParticipant role, which carries dossier=list,show permissions. Therefore, dossier:show will be granted.

Scriptable permissions

This feature is in its early stages and provides a more flexible way to use the permissions starting with a @. Adds the possibility of creating complex formulas, with preferences, negations and logical operators.

Operator

Description

Example

|

As in simple syntax, indicates OR.

A or B = A | B

&

Indicates AND.

A and B = A & B

( and )

Indicate preference.

(A and B) or C = (A & B) | C

!

Indicates a negation.

(A and not B) or C = (A & !B) | C

Scripting

Scripting is used by Actors , in Concept permissions and in Visual elements . The main goal is to provide an advanced way to check permissions, roles, social groups and entity related attributes.

User functions

Methods related to currently authenticated user. The scripting context initializes the variable user.

Function

Description

user.isAdmin(), user.isWorker(), user.isStudent(), user.isHhrr(), user.isResponsible(), user.isInNetworking(), user.isInternal(), user.isCompany(), user.isCenter()

True or false indicating user different statuses.

user.getBusiness()

User preferred business. Accepts the same functions as user.

user.getProfileMap().isInRole(role)

True or false if user conform the syntaxis specified in Security .

user.isActor(actor)

True or false if user is actor.

user.isActor(entity, actor)

True or false if user is actor for the given entity.

Helping functions

Function

Description

pfunc.isUser()

True or false if there is an authenticated user.

pfunc.anyOfSyndications(user, csvSyndications)

True or false if user is assigned to any of the comma separated list of syndications. See Social groups .

pfunc.anyOfGroupings(user, csvGroupings)

True or false if user is assigned to any of the comma separated list of groupings.

Per module functions

Per module attributes address those features unique to the entities in this module. Per module attributes sum to the generic attributes.

Issue, Dossier and Category

Dossier context initializes the variables dpl and issue, dossier or category. Notice that when applying constraints that uniquely refer to a project, the dossier must be of type project.

Function

Description

dossier.isDirectOwner(user), category.isDirectOwner(user)

True or false value indicating whether the user is directly assigned as owner.

dpl.isParticipant(user), dpl.isShowAllAttachments(user), dpl.isShowParticipants(user), dpl.isShowAllIssues(user),
dpl.isReceiveAllEmails(user), dpl.isBindingVote(user), dpl.isDriver(user), dpl.isCoordinator(user), dpl.isBeneficiary(user), dpl.isOfferer(user), dpl.isResearch(user), dpl.isFunding(user), dpl.isSupport(user), dpl.isConsortium(user), dpl.isAdmin(user)

True or false indicating the dossier/category participation attribute with the same name.

dpl.isOwner(user), dpl.isSubject(user)

True or false indicating the dossier/category participation attribute with the same name.

dpl.isResporter(user), dpl.isResponsible(user), dpl.isQA(user), dpl.isAssistant(user)

True or false indicating the issue participation attribute with the same name.

Helping functions

Function

Description

dfunc.anyParticipation(Object user)

True or false if the given user participates in any dossier or category.

dfunc.anyOfCategories(dossier, csvCategories)

True or false if issue, dossier or category is in any of the comma separated list of category IDs.

dfunc.anyOfPhases(dossier, csvIndexes)

True or false if issue's dossier or dossier is in any of the comma separated list of phase indexes.

dfunc.anyOfPhaseTypes(dossier, csvTypes)

True or false if issue's dossier or dossier is in any of the comma separated list of phase types, being those CREATION, INCUBATOR, VOTES, DECISION, PROPOSALS, EXECUTION and ARCHIVE.

dfunc.anyOfRoles(dpl, user, csvRoles)

True or false if user is assigned to any of the comma separated list of roles, being those PARTICIPANT_OWNER, PARTICIPANT_ASSISTANT and PARTICIPANT_SUBJECT.

dfunc.anyOfExtRoles(dpl, user, csvRoles)

True or false if user is assigned to any of the comma separated list of roles, being those showAllAttachments, showParticipants, showAllIssues, receiveAllEmails, bindingVote, driver, coordinator, beneficiary, offerer, research, funding, support, consortium, admin.

dfunc.anyOfDiscriminators(dpl, user, csvDiscriminators)

True or false if user is assigned to any of the comma separated list of discriminators.

dfunc.anyOfRoles(user, csvRoles)

True or false if user is assigned to any of the comma separated list of roles in any dossier or category, being those PARTICIPANT_OWNER, PARTICIPANT_ASSISTANT and PARTICIPANT_SUBJECT.

dfunc.anyOfExtRoles(user, csvRoles)

True or false if user is assigned to any of the comma separated list of roles in any dossier or category, being those showAllAttachments, showParticipants, showAllIssues, receiveAllEmails, bindingVote, driver, coordinator, beneficiary, offerer, research, funding, support, consortium, admin.

Script files

It is possible to use scripting files with the directive file:file_name. Scripting files are located in /WEB-INF/elephant/scripts.

Combining directives

When using file with other directives, like debug, they must be placed in the script file.

Debugging

Scripts generate no logs with errors. Starting the script with debug: indicates the Scripting API to write any error in the log file.

Actors

Actors API is a superset specification based in Security 's Scripting . The goal of this API is allowing the creation of easy-customizable application actors.

The basics

An actor is a given user complying with a group of constraints attached to the actor's name. An example would be:

PartnerNetwork=pfunc.anyOfSyndications(user, "partner,patron,contacts_admin")

The line configures the PartnerNetwork actor. In order to check if the visiting user is a PartnerNetwork, in Visuals we'll do:

user.isActor("PartnerNetwork")

Surpassing the individual

Actors API is fully compliant with the collaboration modules. We can create specific actors for a large variety of entities. An example of an actor related to dossiers or categories:

ComissionMember=dpl.isParticipant(user)

Now we could check if the visitor is a ComissionMember with:

user.isActor(dossier, "ComissionMember")

Checking a user

The BaaS service provides a view where we can check users against all defined actors. It's also possible to perform the check using an entity.

Concept permissions

Concept permissions is a convenience set of security settings, differentiated by their name (concept). Concept permissions factory should primarily be an Elephant Entity, by means of its method getConceptPermission(name). Using an Elephant Entity as a factory ensures the correct initialization of the Scripting methods.

Permission fields

Field

Description

Required

name

Used as the concept related to this set of constraints.

allow

True when the concept is allowed. Defaults to false. Usually allow controls interactions with the concept.

show

True when the concept should be shown. Defaults to false. Usually show controls visualization of the concept.

showRole

Extension to show. Defined as normal Security roles.

actionRole

Extension to allow. Defined as normal Security roles.

showScript

Extension to show. Defined as in Scripting . It is possible to use scripting files with the directive file:file_name. Scripting files are located in /WEB-INF/elephant/scripts.

actionScript

Extension to allow. Defined as in Scripting . It is possible to use scripting files with the directive file:file_name. Scripting files are located in /WEB-INF/elephant/scripts.

showActor

Extension to show. Defined as in Actors .

actionActor

Extension to allow. Defined as in Actors .

max

Used to pass a numerical value to visual controls.

order

Useful when concepts should be shown in specific order.

permissions

A set of conceptual permissions with the same structure. Used as sub-concept permissions and scalable to any level.

Sendables

Sendable has two main attributes, schedule and sent. schedule is a date and time field, representing when the entity should be sent. sent is set to TRUE when the entity has been sent. Sendable has also a list of SendableAssistant. The function of this list is the possibility to add recipients when sending.

Sendable was mainly added to schedule sending a Convocation. When programming a convocation, the assistant list is replaced by the convocation list of attendees.

Sendable on BrightSide Publications

Publications already have a sending method that suits perfectly for most cases. We should we use Sendable when we have a private category publication, with an always varying number of subscribers. We can keep the category with no subscribers and use Sendable assistants instead.

Differences between category sending method and Sendable

Category

Sendable

Mail subject is category related, since the message body can contain more than one publication.

Mail subject is the publication title.

Recipients are controlled by the category.

Recipients are Sendable assistants, unique for this publication.

The mail queue controls when publication are sent, taking into account user options when public.

The mail is sent as state in schedule attribute.

Sending a test

Sendable control allows sending an email-test. It's not required to have any sendable attribute configured, nor attendees added. The Send test to... action asks first to which contacts you want to send the test, then uses the saved entity to generate the email.

Test & Agreements

Notice that Send test to... isn't aware of user's agreements. It simply sends the email as a test.

Sitemap

Elephant is able to create a sitemap.xml file. The file is compliant with Google webmaster tools.

Auto-generated

The file is auto-generated when the BaaS administrator uses the option Tools -> Contexts. The file location is /sitemap.xml.

How it works

The sitemaps generator crawls Elephant contexts and adds those visible, that is, with no role restrictions. Also lists publications from BrightSide Publication module, and add those publications in visible groups and categories. It also adds publication images that follow the standard convention described here.

Extended URLs requirements for sitemaps

In order to generate the correct URL for specific BrightSide modules, is necessary to register a context as a web-context for the specific entity.

Elephant reads web-contexts from entity-web-context.properties file, located at WEB-INF/elephant/conf. The format of this file is entity=path. Examples:

publication=/publications
dossier=/projects

When the BrightSide Publication plugin for sitemap, expands the entity URL, uses the path defined for publication entities.

URL as parameter

Sitemaps highly depends on URL-as-parameter Elephant feature. Used mainly on BrightSide modules, the functionality is provided by the Elephant's core.

Current URL resolving state

In order to work correctly, you need to provide information to the file entity-web-context.properties, under /WEB-INF/elephant/conf. Elephant uses this information to ensure which entity is at stake. In short, entities not defined in this file wont get an URL.

As for now, the URLs are generated once, and would never change. This is in itself an issue, since users wont be able changing wrong generated URLs. On the other hand, URLs encountering problems at generation time (violating the primary key, for instance) could be easily corrected.

What happens in the background

URL-as-parameter uses the Elephant's context recede behavior. When extra path is provided, but there is no context supporting it, the context implementation moves up. Formerly, this step changed the servlet path as well. Now, simply uses this mechanism to pass the extra path to EntityWebUrls.exists().

Since entity-web-context.properties is involved, checking the full path to ensure the result is quite easy.

Skills & Tags

Skills and Tags are both different APIs and have different behaviors. Although, both share the final goals: create a transversal categorization and group transversal types of entity, otherwise ignored.

Skills

The user skill types are Knowledge, Functional and Attitude. The company or center skill types are Sector and Specialty.

For entities, all the above skill types apply.

When attached to entities, skills may have different meanings. The table below shows how to interpret skills regarding the entity they were attached.

Entity owning the skill

Interpretation

Contact

The contact owns the skill.

Convocation

The call should specify the reason: required for assistance or directed to those interested in.

Other entities

The entity requires the skill.

Tags

Tags are simple, synthetic words defining the entity. By default, entities aim to create separated sets of tags. The point is to separate tags by concept (type of entity) and by use (internal or external). Tags are all the same type.

Internal tags

When the BS Contacts was born, it owned the Tags API. Tags are mostly assigned by Social Group syndication. The final use is to easily filter contacts by their social group. Since then, even after the API independence, contact attached tags are treated as for internal use.

Social

Elephant creates Open Graph metas. By default, og:title will be the context name. Different modules may override this behavior.

Image conventions

When dealing with images, Elephant will resolve og:image using:

  1. The first PNG or JPG image in local repository, with its name ending with _social.(png|jpg).
  2. The first PNG or JPG image in local repository, with its name ending with .(png|jpg).
  3. The first PNG or JPG image in root repository, with its name ending with _def_social.(png|jpg).

In order to be a valid image, must have at least 200 pixels width or height. Images with more than 600 pixels will be considered large.

Some examples

Intention

Image

Default image for all contexts

Add a *_def_social.(png|jpg) to the root repository.

Image for a context, including root

Add a *.(png|jpg), equal or bigger than 200px higher or wider, to the context repository.

Image for a context, including root

Add a *_social.(png|jpg) to the context repository.

This examples do not apply to BrightSide modules, since single entities may have different images.

BrightSide modules

BrightSide modules implement social conventions their own way. For instance, BrightSide Publications use a convention based on repository folders (see Publication Conventions). BrightSide Dossiers and BrightSide Financials use instead the _social suffix convention.

Social image cache

Elephant maintains an image cache for social images. If you need to reset this cache, edit and save any context.

Students

Elephant Students seamlessly integrates with other Elephant and BrightSide modules. Its main purpose is to allow a Challenger to post challenges related to BrightSide entities. The Student will then be able to respond to those challenges, by itself or in a group.

Universities, deans, careers and tutors

In order to create the Students structure, some actors are essential.

The first step will be to create a University and add one or more Dean. Next, add some Career along with their Tutor.

Recognizing students

The application will recognize a potential Student because its Email connector. When creating a University we gave some domain terminations, ex. @university.edu. Whenever the user has an email ending with those termination, becomes marked as a potential Student and it's proposed to choose which careers is pursuing.

The Challengers

Platform administrators can be challengers for any Elephant or BrightSide. Each module extends the capability to be a Challenger based on how users participate.

The project challenger example

BrightSide Dossier defines as a Challenger users participating in a project. Those users are presented with a Add challenge button within the project they participate on.

What a role can see?

Role

What can see

Dean

  • The students of its university.
  • Projects (entities) they participate.
  • Responses from its students to challenges.

Tutor

  • The students pursuing its career.
  • Projects (entities) they participate.
  • Responses from its students to challenges.

Challenger, patron and partner

  • All students.
  • Projects (entities) they participate.
  • Responses from its students to challenges.

Student

  • All challenges.
  • All projects and who is participating.
  • Projects (entities) is participating.
  • His responses.
Entity viewpoint

From within an entity, the Students module provides ways of interaction, depending the user's role.


For the current example the related entity is a dossier of type Project.

Participating

A usual flow would be the student asking to participate in a project. As a result, the student will appear as a project participant and could be convocated when the project is used as convocation's entity (see Convocatòries ).


Deciding whether or not add a challenge

A challenger can add challenges despite there are or there are not, students participating. Students will see the challenges in their own challenges view. If there are students participating, the challenger will see their names and careers.


Editing the challenge

The challenger can edit the challenge by giving an unambiguous title, a rich-text description and attaching documents when required.


Deciding whether or not add a response

A student can add a response to a challenge once has read what the challenge is about.


Editing the response

The student can respond using a rich-text description, including images. Also can add other students to the response.


Challenger feedback

The final view for the challenger is a resume of all interactions and the implicated actors.


The whole interaction has been sending notifications to the interested people (see Notifications ).


Interactions


Participating


Responses


Notifications

New challenge

New response

Challenge changes

Response changes

Visual elements

The Visual Elements API provides an affordable way to create views with user sensible data. Visual Elements relies on names given to those parts to be controlled.

The most common example arises when creating a template that needs to know who is viewing it, so can render more or less content. With Visual elements you will give a name to the sensible parts and create a configuration file. The API will do the rest.

Visual Elements is stored as a JSON file in /WEB-INF/elephant/conf and can be edited using BaaS -> Tools -> Files -> Configuration -> JSON.

Controlled attributes against user

Every visual element will be checked against user his allowed social groups, grouping values, administration attributes. As a result, the API will tell if the user can have access to the element or is a simple visitor (an authenticated user with no specific permissions for the element).

First case, insert by iteration

The method allowed(user) returns a sorted collection of allowed elements for user. Inside the template you will iterate the collection, check its name and insert the content. The sort order is also part of the API and is specified in the configuration file.

The image gives a very simplified example of iteration. Does not show how to implement the iteration within the template. Usually you will check the visual element name against the expected name for content. Example, if visual-element-name equals content-name then add the content.


Second case, check against the API

Instead of iterating a collection, you can check directly against any given name. The method getElement(name, user) returns, if allowed for user, the visual element with the given name.


The sub elements

As you probably already noticed, both cases include the possibility of sub elements. A sub element is a visual element that fully depends on its parent. The allows(name, user) returns true when the element name can be shown to user.

To understand sub elements utility, think about form actions. The parent element is an HTML form and the buttons represent actions. Using the API, each button can be conditioned by the allows(action_name, user) method.

Another example, imagine you have a determined list of users. Now, you're not sure whether show user's name and company, or only company's name. And you're quite sure this will be something that will vary among your customers. Using the API, you can relay on an easy to edit configuration file.

Adding specific entities

The whole Elephant system heavily uses entities. Entities are groups of related information and have a full Entities API to relay on. In order to use entities with the Visual Elements API, you need to implement the VisualEntityCheck interface. Consists in a single method check(property, value, entity, user) and returns a boolean.

Attributes
Some attributes are deprecated

In the long run, Scripting will completely substitute most of the Attributes within Visual Elements.

Visual elements attributes are ORed. The constraints will be interpreted as if condition A or condition B ... are fulfilled by the current user, the requesting element will be shown.

Generic attributes

Generic attributes apply to any visual element node.

Attribute

Description

Required

name

The attribute name is used in templates to identify or locate the attribute.

label

Label points to a resource key. May be used as a caption for the attribute values.

order

Is a numerical that forces the sort order of elements returned in allowed method.

role

Must conform the syntaxis specified in Security .

eval

Allows complex constraints using scripting. See Scripting .

syndications

ORed social group identifiers the user needs to be assigned to. See Social groups .

groupings

ORed contact groupings the user needs to be assigned to.

businessSyndications

ORed social group identifiers the company or center where the user belongs, needs to be assigned to. See Social groups .

businessGroupings

ORed contact groupings the company or center where the user belongs, needs to be assigned to.

visitor

The user is authenticated.

admin, worker, student, hhrr

True or false ORed constraints indicating that the user must be an administrator, a working person in a company, a student in a center or a responsible for human resources in a company or center.

subElements

Children elements of current visual element. Mainly used when a visual has subelements with constraints.

Per module attributes

Per module attributes address those features unique to the entities in this module. Per module attributes sum to the generic attributes.

Dossier and Dossier category

Attribute

Description

Required

phases

Array of ORed phases, representing current project phase.

roles

Array of ORed participation roles: PARTICIPANT_OWNER, PARTICIPANT_ASSISTANT and PARTICIPANT_SUBJECT.

discriminators

Array of ORed participation discriminators.

directOwner

True or false value indicating whether the user is directly assigned as owner.

participates

True or false value indicating whether the user is participating, despite the role or attribute assigned.

branchAdmin, showAllAttachments, showParticipants, showAllIssues,
receiveAllEmails, bindingVote, driver, coordinator, beneficiary,
offerer, research, funding, support, consortium

True or false ORed constraints indicating the participation attribute with the same name.

Web actions

Elephant Web Actions is a specification used by several components to allow an easy way to execute actions based on URIs. The specification uses an action protocol to perform internal translations. Most of the actions could be executed using url:address, the specification liberates the user to remember special addresses and adds some helping attributes, like captions and icons.

The protocols

Protocol

Exposed as

Description

NAVIGATE

nav:value

Navigates internally. The value is an internal URL.

TAG

tag:value

Navigates internally. The value is a context WebTag.

ACTION

action:value

Internal application action. Current action values are:

  • signup
  • tellsomeone

URL

url:value

Generic navigation. The value is an URL.

MAIL

mailto:value

Mail to navigation URL. The value should be an email.

TEL

tel:value

Phone call navigation URL. The value should be a phone number.

WHATS

whats:value

Whatsapp send message URL. The value should be a phone number.

TGRAM

tgram:value

Telegram send message URL. The value should be a user identifier.

Elephant WebActions API is based on WebLinks and Icons classes. In combination, they make easy to create web actions based on protocols resulting in URLs.

WebLinks

WebLinks are created using the WebAction protocol, and they expose some useful methods when creating templates.

Method

Description

getType()

Returns the WebAction type used to create the link.

getCaption()

Returns the link caption.

getUrl()

Returns the URL for this link.

getIcon()

Returns the icon value.

getHelp()

Returns an extended value for this link, to be used as help. Usually is the original URL, the phone number, the user identifier or other value depending on the protocol type.

getIcons()

Return the Icons class, explained below.

isExternal()

Returns true when the link moves to another site.

isEmpty()

Return true when the WebLink has no values.

Icons

Icons is a utility class that helps adding icons to templates. Some methods can be concatenated, eliminating the necessity to make assignments.

Method

Description

Concatenated

cssClass(value)

Allows to add extra classes to the icon class. Mainly used for colors and size.

cssStyle(value)

Allows to add extra styles to the icon element.

path(value)

Adds a path for file based icons (ending with .png)

before(value)

HTML based value that will be added before the icon if there is an icon value.

after(value)

HTML based value that will be added after the icon if there is an icon value.

icon()

Returns the HTML to create the icon, or an empty string if the is not an icon value.

Wiki syntax

Wiki syntax is the default editing mode in Elephant modules. Abstracts from using HTML while helps creating rich content. Even those who master HTML will find it useful for several reasons:

Quick reference

Wiki Result
---+Header 1

Header 1

---++Header 2

Header 2

---+++Header 3

Header 3

**bold** bold
__italic__ italic
==fixed== fixed
* item 1
  * item 1.1
* item 2
  • item 1
    • item 1.1
  • item 2
1 item 1
  1 item 1.1
1 item 2
  1. item 1
    1. item 1.1
  2. item 2
[img repository(/powered.jpg)]
[[http://www.turro.org][turro.org]] turro.org
[link(http://www.turro.org)]
[img repository(/powered.png)]
[/link]
[block(center)]
Some text that will be centered%BR%within the container.
[/block]
Some text that will be centered
within the container.

||< Header 1
|< Header 2
|< Header 3
|-< Cell 1,1
|< Cell 2,1
|< Cell 3,1
|-< Cell 1,2
|< Cell 2,2
|< Cell 3,2
|-< Cell 1,3
|< Cell 2,3
|< Cell 3,3
-||

Header 1

Header 2

Header 3

Cell 1,1

Cell 2,1

Cell 3,1

Cell 1,2

Cell 2,2

Cell 3,2

Cell 1,3

Cell 2,3

Cell 3,3


Quick start

Creating a paragraph using Wiki is quite simple, just start typing. By default, wiki will put your text within <p></p>.

In order to add a new paragraph, live a blank line between text. This will tell the compiler to terminate the first <p> and create a new one. More than one blank line will be treated as one, creating only one paragraph.

If you don't live any space between paragraphs, a <br/> will be used to divide the text, instead of <p></p> blocks.

Wiki

HTML Result

Lorem ipsum dolor sit...
<p>Lorem ipsum dolor sit...</p>
Lorem ipsum dolor sit...

...mollit anim id est laborum.
<p>Lorem ipsum dolor sit...</p>
<p>...mollit anim id est laborum.</p>
Lorem ipsum dolor sit...
...mollit anim id est laborum.
<p>Lorem ipsum dolor sit...
<br/>
...mollit anim id est laborum.</p>

Headers

Headers are also easy. Three hyphens followed by the plus sign. One for each header number you want. Headers require to be at the beginning of the line.

Wiki

Result

HTML Result

---+Header 1

Header 1

<h1>Header 1</h1>
---++Header 2

Header 2

<h2>Header 2</h2>
---+++Header 3

Header 3

<h3>Header 3</h3>

Typefaces

You can enhance words by using different typefaces. Double asterisk for bold, double underline for oblique and double equal sign for fixed space. Typeface modifiers can appear wherever across the line, spanning among several words.

Wiki

Result

HTML Result

**bold**

bold

<b>bold</b>
__italic__

italic

<i>italic</i>
==fixed==

fixed

<code>fixed</code>

Lists

Lists use * or 1 depending on the list type, unordered or ordered. The syntax is simple, for unordered lists type an space, asterisk and space. Then the text. For indented lists, type an extra space before the asterisk. For ordered lists, substitute the asterisk for the number one.

Wiki

Result

 * Item 1
 * Item 2
  * Subitem  2.1
 * Item 3
  • Item 1
  • Item 2
    • Subitem 2.1
  • Item 3
 1 Item 1
 1 Item 2
  1 Subitem 2.1
 1 Item 3
  1. Item 1
  2. Item 2
    1. Subitem 2.1
  3. Item 3

Don't forget to use always the number 1 in ordered lists. Will always result in the correct number.

Blocks

The HTML <div> is [block] in wiki syntax. Blocks are key elements when formatting.

Wiki

Result

[block(center)]
Some text that will be centered%BR%within the container.
[/block]

Some text that will be centered
within the container.

[block(background-color:#eee,color:#333,padding:5px 10px)]
Some text.
[/block]

Some text.

Blocks do not directly accept characters, which has the effect of creating a paragraph surrounding the text inside. Also translates line feeds into <br/> and creates a new paragraph when an empty line is found.

If you need a block that accepts characters use instead [html].

Wiki

Result

[html(center)]
Some text that will be centered%BR%within the container.
[/html]
Some text that will be centered
within the container.
[html(background-color:#eee,color:#333,padding:5px 10px)]
Some text.
[/html]
Some text.

See more about passing attributes to wiki elements in CSS and attributes .

Icons

Elephant syntaxparser includes a macro to easily include fontawesome icons.

Macro

HTML

Result

%fa-home%

<i class="fa fa-home"></i>

%fa-home #00d0ff%

<i color="#00d0ff" class="fa fa-home"></i>

%fa-home fa-3x%

<i class="fa fa-home fa-3x"></i>

%fa-home fa-3x fa-rotate-90%

<i class="fa fa-home fa-3x fa-rotate-90"></i>

%fa-home fa-3x fa-spin%

<i class="fa fa-home fa-3x fa-spin"></i>

Elephant syntaxparser includes a macro to easily include semantic-ui icons.

Macro

HTML

Result

%icon-home%

<i class="home icon"></i>

%icon-red home%
Color choices: red, orange, yellow, olive, green, teal, blue, violet, purple, pink, brown, grey, black.

<i class="red home icon"></i>

%icon-big home%
Size choices: mini, tiny, small, large, big, huge, massive.

<i class="big home icon"></i>

%icon-big clockwise rotated home%
Rotation choices: clockwise, counterclockwise.

<i class="big clockwise rotated home icon"></i>

%icon-big loading home%
State choices: disabled, loading.

<i class="big loading home icon"></i>

Semantic-UI icon set


500px

accessible icon

accusoft

acquisitions incorporated

adn

adobe

adversal

affiliatetheme

airbnb

algolia

alipay

amazon

amazon pay

amilia

android

angellist

angrycreative

angular

app store

app store ios

apper

apple

apple pay

artstation

asymmetrik

atlassian

audible

autoprefixer

avianex

aviato

aws

bandcamp

battle net

behance

behance square

bimobject

bitbucket

bitcoin

bity

black tie

blackberry

blogger

blogger b

bluetooth

bluetooth b

bootstrap

btc

buffer

buromobelexperte

buy n large

buysellads

canadian maple leaf

cc amazon pay

cc amex

cc apple pay

cc diners club

cc discover

cc jcb

cc mastercard

cc paypal

cc stripe

cc visa

centercode

centos

chrome

chromecast

cloudscale

cloudsmith

cloudversify

codepen

codiepie

confluence

connectdevelop

contao

cotton bureau

cpanel

creative commons

creative commons by

creative commons nc

creative commons nc eu

creative commons nc jp

creative commons nd

creative commons pd

creative commons pd alt

creative commons remix

creative commons sa

creative commons sampling

creative commons sampling plus

creative commons share

creative commons zero

critical role

css3

css3 alt

cuttlefish

d and d

d and d beyond

dashcube

delicious

deploydog

deskpro

dev

deviantart

dhl

diaspora

digg

digital ocean

discord

discourse

dochub

docker

draft2digital

dribbble

dribbble square

dropbox

drupal

dyalog

earlybirds

ebay

edge

elementor

ello

ember

empire

envira

erlang

ethereum

etsy

evernote

expeditedssl

facebook

facebook f

facebook messenger

facebook square

fantasy flight games

fedex

fedora

figma

firefox

firefox browser

first order

first order alt

firstdraft

flickr

flipboard

fly

font awesome

font awesome alt

font awesome flag

fonticons

fonticons fi

fort awesome

fort awesome alt

forumbee

foursquare

free code camp

freebsd

fulcrum

galactic republic

galactic senate

get pocket

gg

gg circle

git

git alt

git square

github

github alt

github square

gitkraken

gitlab

gitter

glide

glide g

gofore

goodreads

goodreads g

google

google drive

google play

google plus

google plus g

google plus square

google wallet

gratipay

grav

gripfire

grunt

gulp

hacker news

hacker news square

hackerrank

hips

hire a helper

hooli

hornbill

hotjar

houzz

html5

hubspot

ideal

imdb

instagram

intercom

internet explorer

invision

ioxhost

itch io

itunes

itunes note

java

jedi order

jenkins

jira

joget

joomla

js

js square

jsfiddle

kaggle

keybase

keycdn

kickstarter

kickstarter k

korvue

laravel

lastfm

lastfm square

leanpub

less

line

linkedin

linkedin in

linode

linux

lyft

magento

mailchimp

mandalorian

markdown

mastodon

maxcdn

mdb

medapps

medium

medium m

medrt

meetup

megaport

mendeley

microblog

microsoft

mix

mixcloud

mizuni

modx

monero

napster

neos

nimblr

node

node js

npm

ns8

nutritionix

odnoklassniki

odnoklassniki square

old republic

opencart

openid

opera

optin monster

orcid

osi

page4

pagelines

palfed

patreon

paypal

penny arcade

periscope

phabricator

phoenix framework

phoenix squadron

php

pied piper

pied piper alt

pied piper hat

pied piper pp

pied piper square

pinterest

pinterest p

pinterest square

playstation

product hunt

pushed

python

qq

quinscape

quora

r project

raspberry pi

ravelry

react

reacteurope

readme

rebel

red river

reddit

reddit alien

reddit square

redhat

renren

replyd

researchgate

resolving

rev

rocketchat

rockrms

safari

salesforce

sass

schlix

scribd

searchengin

sellcast

sellsy

servicestack

shirtsinbulk

shopware

simplybuilt

sistrix

sith

sketch

skyatlas

skype

slack

slack hash

slideshare

snapchat

snapchat ghost

snapchat square

soundcloud

sourcetree

speakap

speaker deck

spotify

squarespace

stack exchange

stack overflow

stackpath

staylinked

steam

steam square

steam symbol

sticker mule

strava

stripe

stripe s

studiovinari

stumbleupon

stumbleupon circle

superpowers

supple

suse

swift

symfony

teamspeak

telegram

telegram plane

tencent weibo

the red yeti

themeco

themeisle

think peaks

trade federation

trello

tripadvisor

tumblr

tumblr square

twitch

twitter

twitter square

typo3

uber

ubuntu

uikit

umbraco

uniregistry

unity

untappd

ups

usb

usps

ussunnah

vaadin

viacoin

viadeo

viadeo square

viber

vimeo

vimeo square

vimeo v

vine

vk

vnv

vuejs

waze

weebly

weibo

weixin

whatsapp

whatsapp square

whmcs

wikipedia w

windows

wix

wizards of the coast

wolf pack battalion

wordpress

wordpress simple

wpbeginner

wpexplorer

wpforms

wpressr

xbox

xing

xing square

y combinator

yahoo

yammer

yandex

yandex international

yarn

yelp

yoast

youtube

youtube square

zhihu

ad

address book

address card

adjust

air freshener

align center

align justify

align left

align right

allergies

ambulance

american sign language interpreting

anchor

angle double down

angle double left

angle double right

angle double up

angle down

angle left

angle right

angle up

angry

ankh

apple alt

archive

archway

arrow alt circle down

arrow alt circle left

arrow alt circle right

arrow alt circle up

arrow circle down

arrow circle left

arrow circle right

arrow circle up

arrow down

arrow left

arrow right

arrow up

arrows alt

arrows alt h

arrows alt v

assistive listening systems

asterisk

at

atlas

atom

audio description

award

baby

baby carriage

backspace

backward

bacon

bahai

balance scale

balance scale left

balance scale right

ban

band aid

barcode

bars

baseball ball

basketball ball

bath

battery empty

battery full

battery half

battery quarter

battery three quarters

bed

beer

bell

bell slash

bezier curve

bible

bicycle

biking

binoculars

biohazard

birthday cake

blender

blender phone

blind

blog

bold

bolt

bomb

bone

bong

book

book dead

book medical

book open

book reader

bookmark

border all

border none

border style

bowling ball

box

box open

boxes

braille

brain

bread slice

briefcase

briefcase medical

broadcast tower

broom

brush

bug

building

bullhorn

bullseye

burn

bus

bus alt

business time

calculator

calendar

calendar alt

calendar check

calendar day

calendar minus

calendar plus

calendar times

calendar week

camera

camera retro

campground

candy cane

cannabis

capsules

car

car alt

car battery

car crash

car side

caravan

caret down

caret left

caret right

caret square down

caret square left

caret square right

caret square up

caret up

carrot

cart arrow down

cart plus

cash register

cat

certificate

chair

chalkboard

chalkboard teacher

charging station

chart area

chart bar

chart line

chart pie

check

check circle

check double

check square

cheese

chess

chess bishop

chess board

chess king

chess knight

chess pawn

chess queen

chess rook

chevron circle down

chevron circle left

chevron circle right

chevron circle up

chevron down

chevron left

chevron right

chevron up

child

church

circle

circle notch

city

clinic medical

clipboard

clipboard check

clipboard list

clock

clone

closed captioning

cloud

cloud download alt

cloud meatball

cloud moon

cloud moon rain

cloud rain

cloud showers heavy

cloud sun

cloud sun rain

cloud upload alt

cocktail

code

code branch

coffee

cog

cogs

coins

columns

comment

comment alt

comment dollar

comment dots

comment medical

comment slash

comments

comments dollar

compact disc

compass

compress

compress alt

compress arrows alt

concierge bell

cookie

cookie bite

copy

copyright

couch

credit card

crop

crop alt

cross

crosshairs

crow

crown

crutch

cube

cubes

cut

database

deaf

democrat

desktop

dharmachakra

diagnoses

dice

dice d20

dice d6

dice five

dice four

dice one

dice six

dice three

dice two

digital tachograph

directions

divide

dizzy

dna

dog

dollar sign

dolly

dolly flatbed

donate

door closed

door open

dot circle

dove

download

drafting compass

dragon

draw polygon

drum

drum steelpan

drumstick bite

dumbbell

dumpster

dumpster fire

dungeon

edit

egg

eject

ellipsis h

ellipsis v

envelope

envelope open

envelope open text

envelope square

equals

eraser

ethernet

euro sign

exchange alt

exclamation

exclamation circle

exclamation triangle

expand

expand alt

expand arrows alt

external link alt

external link square alt

eye

eye dropper

eye slash

fan

fast backward

fast forward

fax

feather

feather alt

female

fighter jet

file

file alt

file archive

file audio

file code

file contract

file csv

file download

file excel

file export

file image

file import

file invoice

file invoice dollar

file medical

file medical alt

file pdf

file powerpoint

file prescription

file signature

file upload

file video

file word

fill

fill drip

film

filter

fingerprint

fire

fire alt

fire extinguisher

first aid

fish

fist raised

flag

flag checkered

flag usa

flask

flushed

folder

folder minus

folder open

folder plus

font

football ball

forward

frog

frown

frown open

funnel dollar

futbol

gamepad

gas pump

gavel

gem

genderless

ghost

gift

gifts

glass cheers

glass martini

glass martini alt

glass whiskey

glasses

globe

globe africa

globe americas

globe asia

globe europe

golf ball

gopuram

graduation cap

greater than

greater than equal

grimace

grin

grin alt

grin beam

grin beam sweat

grin hearts

grin squint

grin squint tears

grin stars

grin tears

grin tongue

grin tongue squint

grin tongue wink

grin wink

grip horizontal

grip lines

grip lines vertical

grip vertical

guitar

h square

hamburger

hammer

hamsa

hand holding

hand holding heart

hand holding usd

hand lizard

hand middle finger

hand paper

hand peace

hand point down

hand point left

hand point right

hand point up

hand pointer

hand rock

hand scissors

hand spock

hands

hands helping

handshake

hanukiah

hard hat

hashtag

hat cowboy

hat cowboy side

hat wizard

hdd

heading

headphones

headphones alt

headset

heart

heart broken

heartbeat

helicopter

highlighter

hiking

hippo

history

hockey puck

holly berry

home

horse

horse head

hospital

hospital alt

hospital symbol

hot tub

hotdog

hotel

hourglass

hourglass end

hourglass half

hourglass start

house damage

hryvnia

i cursor

ice cream

icicles

icons

id badge

id card

id card alt

igloo

image

images

inbox

indent

industry

infinity

info

info circle

italic

jedi

joint

journal whills

kaaba

key

keyboard

khanda

kiss

kiss beam

kiss wink heart

kiwi bird

landmark

language

laptop

laptop code

laptop medical

laugh

laugh beam

laugh squint

laugh wink

layer group

leaf

lemon

less than

less than equal

level down alt

level up alt

life ring

lightbulb

link

lira sign

list

list alt

list ol

list ul

location arrow

lock

lock open

long arrow alt down

long arrow alt left

long arrow alt right

long arrow alt up

low vision

luggage cart

magic

magnet

mail bulk

male

map

map marked

map marked alt

map marker

map marker alt

map pin

map signs

marker

mars

mars double

mars stroke

mars stroke h

mars stroke v

mask

medal

medkit

meh

meh blank

meh rolling eyes

memory

menorah

mercury

meteor

microchip

microphone

microphone alt

microphone alt slash

microphone slash

microscope

minus

minus circle

minus square

mitten

mobile

mobile alt

money bill

money bill alt

money bill wave

money bill wave alt

money check

money check alt

monument

moon

mortar pestle

mosque

motorcycle

mountain

mouse

mouse pointer

mug hot

music

network wired

neuter

newspaper

not equal

notes medical

object group

object ungroup

oil can

om

otter

outdent

pager

paint brush

paint roller

palette

pallet

paper plane

paperclip

parachute box

paragraph

parking

passport

pastafarianism

paste

pause

pause circle

paw

peace

pen

pen alt

pen fancy

pen nib

pen square

pencil alt

pencil ruler

people carry

pepper hot

percent

percentage

person booth

phone

phone alt

phone slash

phone square

phone square alt

phone volume

photo video

piggy bank

pills

pizza slice

place of worship

plane

plane arrival

plane departure

play

play circle

plug

plus

plus circle

plus square

podcast

poll

poll h

poo

poo storm

poop

portrait

pound sign

power off

pray

praying hands

prescription

prescription bottle

prescription bottle alt

print

procedures

project diagram

puzzle piece

qrcode

question

question circle

quidditch

quote left

quote right

quran

radiation

radiation alt

rainbow

random

receipt

record vinyl

recycle

redo

redo alt

registered

remove format

reply

reply all

republican

restroom

retweet

ribbon

ring

road

robot

rocket

route

rss

rss square

ruble sign

ruler

ruler combined

ruler horizontal

ruler vertical

running

rupee sign

sad cry

sad tear

satellite

satellite dish

save

school

screwdriver

scroll

sd card

search

search dollar

search location

search minus

search plus

seedling

server

shapes

share

share alt

share alt square

share square

shekel sign

shield alt

ship

shipping fast

shoe prints

shopping bag

shopping basket

shopping cart

shower

shuttle van

sign

sign in alt

sign language

sign out alt

signal

signature

sim card

sitemap

skating

skiing

skiing nordic

skull

skull crossbones

slash

sleigh

sliders h

smile

smile beam

smile wink

smog

smoking

smoking ban

sms

snowboarding

snowflake

snowman

snowplow

socks

solar panel

sort

sort alpha down

sort alpha down alt

sort alpha up

sort alpha up alt

sort amount down

sort amount down alt

sort amount up

sort amount up alt

sort down

sort numeric down

sort numeric down alt

sort numeric up

sort numeric up alt

sort up

spa

space shuttle

spell check

spider

spinner

splotch

spray can

square

square full

square root alt

stamp

star

star and crescent

star half

star half alt

star of david

star of life

step backward

step forward

stethoscope

sticky note

stop

stop circle

stopwatch

store

store alt

stream

street view

strikethrough

stroopwafel

subscript

subway

suitcase

suitcase rolling

sun

superscript

surprise

swatchbook

swimmer

swimming pool

synagogue

sync

sync alt

syringe

table

table tennis

tablet

tablet alt

tablets

tachometer alt

tag

tags

tape

tasks

taxi

teeth

teeth open

temperature high

temperature low

tenge

terminal

text height

text width

th

th large

th list

theater masks

thermometer

thermometer empty

thermometer full

thermometer half

thermometer quarter

thermometer three quarters

thumbs down

thumbs up

thumbtack

ticket alt

times

times circle

tint

tint slash

tired

toggle off

toggle on

toilet

toilet paper

toolbox

tools

tooth

torah

torii gate

tractor

trademark

traffic light

trailer

train

tram

transgender

transgender alt

trash

trash alt

trash restore

trash restore alt

tree

trophy

truck

truck loading

truck monster

truck moving

truck pickup

tshirt

tty

tv

umbrella

umbrella beach

underline

undo

undo alt

universal access

university

unlink

unlock

unlock alt

upload

user

user alt

user alt slash

user astronaut

user check

user circle

user clock

user cog

user edit

user friends

user graduate

user injured

user lock

user md

user minus

user ninja

user nurse

user plus

user secret

user shield

user slash

user tag

user tie

user times

users

users cog

utensil spoon

utensils

vector square

venus

venus double

venus mars

vial

vials

video

video slash

vihara

voicemail

volleyball ball

volume down

volume mute

volume off

volume up

vote yea

vr cardboard

walking

wallet

warehouse

water

wave square

weight

weight hanging

wheelchair

wifi

wind

window close

window maximize

window minimize

window restore

wine bottle

wine glass

wine glass alt

won sign

wrench

x ray

yen sign

yin yang

address book outline

address card outline

angry outline

arrow alt circle down outline

arrow alt circle left outline

arrow alt circle right outline

arrow alt circle up outline

bell outline

bell slash outline

bookmark outline

building outline

calendar alt outline

calendar check outline

calendar minus outline

calendar outline

calendar plus outline

calendar times outline

caret square down outline

caret square left outline

caret square right outline

caret square up outline

chart bar outline

check circle outline

check square outline

circle outline

clipboard outline

clock outline

clone outline

closed captioning outline

comment alt outline

comment dots outline

comment outline

comments outline

compass outline

copy outline

copyright outline

credit card outline

dizzy outline

dot circle outline

edit outline

envelope open outline

envelope outline

eye outline

eye slash outline

file alt outline

file archive outline

file audio outline

file code outline

file excel outline

file image outline

file outline

file pdf outline

file powerpoint outline

file video outline

file word outline

flag outline

flushed outline

folder open outline

folder outline

frown open outline

frown outline

futbol outline

gem outline

grimace outline

grin alt outline

grin beam outline

grin beam sweat outline

grin hearts outline

grin outline

grin squint outline

grin squint tears outline

grin stars outline

grin tears outline

grin tongue outline

grin tongue squint outline

grin tongue wink outline

grin wink outline

hand lizard outline

hand paper outline

hand peace outline

hand point down outline

hand point left outline

hand point right outline

hand point up outline

hand pointer outline

hand rock outline

hand scissors outline

hand spock outline

handshake outline

hdd outline

heart outline

hospital outline

hourglass outline

id badge outline

id card outline

image outline

images outline

keyboard outline

kiss beam outline

kiss outline

kiss wink heart outline

laugh beam outline

laugh outline

laugh squint outline

laugh wink outline

lemon outline

life ring outline

lightbulb outline

list alt outline

map outline

meh blank outline

meh outline

meh rolling eyes outline

minus square outline

money bill alt outline

moon outline

newspaper outline

object group outline

object ungroup outline

paper plane outline

pause circle outline

play circle outline

plus square outline

question circle outline

registered outline

sad cry outline

sad tear outline

save outline

share square outline

smile beam outline

smile outline

smile wink outline

snowflake outline

square outline

star half outline

star outline

sticky note outline

stop circle outline

sun outline

surprise outline

thumbs down outline

thumbs up outline

times circle outline

tired outline

trash alt outline

user circle outline

user outline

window close outline

window maximize outline

window minimize outline

window restore outline

Images

The image syntax is [img:size image_file]. Size is optional and can be expressed in valid CSS units.

In some cases, when large images are used, you might prefer the thumb syntax. [thumb image_file:size]. Elephant internally creates a thumb file a renders the image with a link to the original one. Thumbs are restricted to JPG images.

Some examples

Wiki

Result

[img repository(/powered.jpg)]

[img:80px repository(/powered.jpg)]

[img:50% repository(/powered.jpg)]

[thumb repository(/powered.jpg):80]
The number stands for thumb's maximum size.

Thumbs automatically create a fileName_thumb.ext file from fileName.ext file. When visitors click on the thumb image get a new window with the original image.

In order to create links with images see anchor.

The repository

In the examples above you might noticed the function repository(), this function returns to current repository location.

Wiki

Result

repository()

/docs/elephant/components/wiki_syntax/images/_internal/repository

Links

Wiki has several ways for constructing links. Mainly they all derivate from the initial form:

[[the_link]] or
[[the_link][the_text_to_show]] or
[[the_link][img the_image]]

Wiki

Result

[[http://www.turro.org]]

http://www.turro.org

[[http://www.turro.org][turro.org]]

turro.org

[[http://www.turro.org][img repository(/powered.png)]]

Links with new target

You can create links that point to external sources or will create new a tab on the browser and make it clear to the visitor with ext or new:

Wiki

Result

[new[http://www.turro.org][turro.org]]

turro.org

[ext[http://www.turro.org][img repository(/powered.png)]]

The repository function is explained in Images .

Links with markup

Modern responsive frameworks require class assignments to links. In that case, you can use links with markup. The URL reference must be the first markup parameter.

Wiki

Result

[link(http://www.turro.org)]
turro.org
[/link]
turro.org
[link(http://www.turro.org)]
[img repository(/powered.png)]
[/link]
[link(http://www.turro.org,&class:ui primary button)]
turro.org
[/link]
turro.org

The last example take advantage from Semantic-ui, used in this site.

See more about passing attributes to wiki elements in CSS and attributes .

Topics

A page topic is any place within your text that you want marked. Topic related elements are:

Wiki

Result

[topic topic_name]

Creates a topic mark.

[[goto topic_name]]

topic_name. Jumps to topic_name.

[[goto topic_name][my topic]]

my topic. Jumps to topic_name.

[[goto topic_name][img repository(/powered.png)]]

.
Jumps to topic_name.

Tables

Table syntax helps creating tables with rich content.

The markup

Wiki

Result

||<

Starts a long table header. Left aligned.

||>

Starts a long table header. Right aligned.

|-<

Starts a long table row. Left aligned.

|->

Starts a long table row. Right aligned.

|<

Starts a long table column. Left aligned.

|>

Starts a long table column. Right aligned.

-||

Ends a long table

An example

In order to get those tags executed they need to be at line's start. To make text more readable let them take the whole line, giving as much spaces as needed. See an example:

||< Header 1 
|< Header 2
|< Header 3
|-< Cell 1,1
|< Cell 2,1
|< Cell 3,1
|-< Cell 1,2
|< Cell 2,2
|< Cell 3,2
|-< Cell 1,3
|< Cell 2,3
|< Cell 3,3
-||

creates:

Header 1

Header 2

Header 3

Cell 1,1

Cell 2,1

Cell 3,1

Cell 1,2

Cell 2,2

Cell 3,2

Cell 1,3

Cell 2,3

Cell 3,3

An example with populated cells

||< Name
|< Description
|> Value
|-< Elephant
|<
Portal framework running in any J2EE container. Features:

 * Contents management.
 * Wiki syntax.
 * Knowledge base.
 * etc.
|> 0
-||

creates:

Name

Description

Value

Elephant

Portal framework running in any J2EE container. Features:

  • Contents management.
  • Wiki syntax.
  • Knowledge base.
  • etc.

0

Tabs

Maybe you wanted to show some part while hiding the rest. Tabs do that for you, just write:

[tab(Hello)]
This will show after loading the page.

[tab(Click to see)]
Only after clicking on this tab you could see what was hiding.

[tab(Special effects, background-color:#eeeeee)]
This tab's content shows on a grayed background.

[/tab]

And get:

This will show after loading the page.

Or use blind instead:

[blind(Hello)]
This will show after clicking __Hello__.

[blind(Click to see)]
Only after clicking on this text you could see what was hiding.

[blind(Special effects, background-color:#eeeeee)]
Text on a grayed background.

[/blind]

And get:

Hello
Click to see
Special effects
Columns

Using wiki it's posible writing in multiple columns. Each column would start using [column] at line's begining. For instance, this text uses column at the top and at the end of this paragraph.

This text starts at the newly created column. You can start as many columns as you want. The same way, you can stop columns by introducing [/column] in an empty line.

See more about passing attributes to wiki elements in CSS and attributes .

Spans

The span element work much the way block does. The main difference is that span doesn't take the whole line, but can be related to a single among the paragraph.

Wiki

Result

This [span(color:red,background-color:gray,font-size:16pt)]
words will be red over gray and bigger[/span] than the rest.

This words will be red over gray and bigger than the rest.

See more about passing attributes to wiki elements in CSS and attributes .

Joker

The joker can transform into any HTML tag. It takes the first parameter as the pretended element.

Wiki

Result

[joker(div,color:red)]
Some text that will be centered%BR%within the container.
[/joker]
Some text that will be centered
within the container.
[joker(div,background-color:#eee,color:#333,padding:5px 10px)]
Some text.
[/joker]
Some text.
Floating frames

Suppose you want an image left aligned and located along text's flow. To achieve this using wiki syntax you create a float. The syntax is:

[float(left,center,right)]
whatever content you want aligned
[/float]

This text shows how it flows along with a floating frame. This text shows how it flows along with a floating frame. This text shows how it flows along with a floating frame. This text shows how it flows along with a floating frame. This text shows how it flows along with a floating frame. This text shows how it flows along with a floating frame. This text shows how it flows along with a floating frame. This text shows how it flows along with a floating frame. This text shows how it flows along with a floating frame. This text shows how it flows along with a floating frame.

See more about passing attributes to wiki elements in CSS and attributes .

Notes

A note is a margin annotation. Wiki syntaxis is:

[note] Your text [/note]
This text was entered as a wiki note.

See more about passing attributes to wiki elements in CSS and attributes .

Emoticons

Elephant allows emoticons in pages, articles and comments. In order to get the final emoticon image, emoticon symbols should have, at left, the beginning of a line or a space and, at right, the end of the line or a space.

Writing

You get this Emoticon

:-) or :)

:D or :-D

;-) or ;)

;-D or ;D

:-( or :(

:-/ or :/

8| or 8-|

:-o or :o

:| or :-|

:-, or :,

|-|

:-s or :s

:8)

:-b or :b

:-# or :#


Emojis

Elephant syntaxparser includes a macro to easily include fomantic-ui emojis.

Macro

HTML

Result

%emoji-relaxed%

<em data-emoji="relaxed"></em>

%emoji-relaxed #small%
Size choices: small, medium, large, big.

<em data-emoji="relaxed" class="small"></em>

%emoji-relaxed #medium loading%
Modifier choices: disabled, loading.

<em data-emoji="relaxed" class="medium loading"></em>

Fomantic-UI emoji set


:8ball:

:art:

:badminton:

:banjo:

:baseball:

:basketball:

:bow_and_arrow:

:bowling:

:boxing_glove:

:chess_pawn:

:circus_tent:

:clapper:

:cricket_game:

:curling_stone:

:dart:

:drum:

:field_hockey:

:first_place:

:fishing_pole_and_fish:

:flying_disc:

:football:

:game_die:

:goal:

:golf:

:guitar:

:headphones:

:hockey:

:horse_racing:

:horse_racing_tone1:

:horse_racing_tone2:

:horse_racing_tone3:

:horse_racing_tone4:

:horse_racing_tone5:

:ice_skate:

:jigsaw:

:kite:

:lacrosse:

:man_biking:

:man_biking_tone1:

:man_biking_tone2:

:man_biking_tone3:

:man_biking_tone4:

:man_biking_tone5:

:man_bouncing_ball:

:man_bouncing_ball_tone1:

:man_bouncing_ball_tone2:

:man_bouncing_ball_tone3:

:man_bouncing_ball_tone4:

:man_bouncing_ball_tone5:

:man_cartwheeling:

:man_cartwheeling_tone1:

:man_cartwheeling_tone2:

:man_cartwheeling_tone3:

:man_cartwheeling_tone4:

:man_cartwheeling_tone5:

:man_climbing:

:man_climbing_tone1:

:man_climbing_tone2:

:man_climbing_tone3:

:man_climbing_tone4:

:man_climbing_tone5:

:man_golfing:

:man_golfing_tone1:

:man_golfing_tone2:

:man_golfing_tone3:

:man_golfing_tone4:

:man_golfing_tone5:

:man_in_lotus_position:

:man_in_lotus_position_tone1:

:man_in_lotus_position_tone2:

:man_in_lotus_position_tone3:

:man_in_lotus_position_tone4:

:man_in_lotus_position_tone5:

:man_juggling:

:man_juggling_tone1:

:man_juggling_tone2:

:man_juggling_tone3:

:man_juggling_tone4:

:man_juggling_tone5:

:man_lifting_weights:

:man_lifting_weights_tone1:

:man_lifting_weights_tone2:

:man_lifting_weights_tone3:

:man_lifting_weights_tone4:

:man_lifting_weights_tone5:

:man_mountain_biking:

:man_mountain_biking_tone1:

:man_mountain_biking_tone2:

:man_mountain_biking_tone3:

:man_mountain_biking_tone4:

:man_mountain_biking_tone5:

:man_playing_handball:

:man_playing_handball_tone1:

:man_playing_handball_tone2:

:man_playing_handball_tone3:

:man_playing_handball_tone4:

:man_playing_handball_tone5:

:man_playing_water_polo:

:man_playing_water_polo_tone1:

:man_playing_water_polo_tone2:

:man_playing_water_polo_tone3:

:man_playing_water_polo_tone4:

:man_playing_water_polo_tone5:

:man_rowing_boat:

:man_rowing_boat_tone1:

:man_rowing_boat_tone2:

:man_rowing_boat_tone3:

:man_rowing_boat_tone4:

:man_rowing_boat_tone5:

:man_surfing:

:man_surfing_tone1:

:man_surfing_tone2:

:man_surfing_tone3:

:man_surfing_tone4:

:man_surfing_tone5:

:man_swimming:

:man_swimming_tone1:

:man_swimming_tone2:

:man_swimming_tone3:

:man_swimming_tone4:

:man_swimming_tone5:

:martial_arts_uniform:

:medal:

:men_wrestling:

:microphone:

:military_medal:

:musical_keyboard:

:musical_score:

:parachute:

:people_wrestling:

:performing_arts:

:person_biking:

:person_biking_tone1:

:person_biking_tone2:

:person_biking_tone3:

:person_biking_tone4:

:person_biking_tone5:

:person_bouncing_ball:

:person_bouncing_ball_tone1:

:person_bouncing_ball_tone2:

:person_bouncing_ball_tone3:

:person_bouncing_ball_tone4:

:person_bouncing_ball_tone5:

:person_climbing:

:person_climbing_tone1:

:person_climbing_tone2:

:person_climbing_tone3:

:person_climbing_tone4:

:person_climbing_tone5:

:person_doing_cartwheel:

:person_doing_cartwheel_tone1:

:person_doing_cartwheel_tone2:

:person_doing_cartwheel_tone3:

:person_doing_cartwheel_tone4:

:person_doing_cartwheel_tone5:

:person_fencing:

:person_golfing:

:person_golfing_tone1:

:person_golfing_tone2:

:person_golfing_tone3:

:person_golfing_tone4:

:person_golfing_tone5:

:person_in_lotus_position:

:person_in_lotus_position_tone1:

:person_in_lotus_position_tone2:

:person_in_lotus_position_tone3:

:person_in_lotus_position_tone4:

:person_in_lotus_position_tone5:

:person_juggling:

:person_juggling_tone1:

:person_juggling_tone2:

:person_juggling_tone3:

:person_juggling_tone4:

:person_juggling_tone5:

:person_lifting_weights:

:person_lifting_weights_tone1:

:person_lifting_weights_tone2:

:person_lifting_weights_tone3:

:person_lifting_weights_tone4:

:person_lifting_weights_tone5:

:person_mountain_biking:

:person_mountain_biking_tone1:

:person_mountain_biking_tone2:

:person_mountain_biking_tone3:

:person_mountain_biking_tone4:

:person_mountain_biking_tone5:

:person_playing_handball:

:person_playing_handball_tone1:

:person_playing_handball_tone2:

:person_playing_handball_tone3:

:person_playing_handball_tone4:

:person_playing_handball_tone5:

:person_playing_water_polo:

:person_playing_water_polo_tone1:

:person_playing_water_polo_tone2:

:person_playing_water_polo_tone3:

:person_playing_water_polo_tone4:

:person_playing_water_polo_tone5:

:person_rowing_boat:

:person_rowing_boat_tone1:

:person_rowing_boat_tone2:

:person_rowing_boat_tone3:

:person_rowing_boat_tone4:

:person_rowing_boat_tone5:

:person_surfing:

:person_surfing_tone1:

:person_surfing_tone2:

:person_surfing_tone3:

:person_surfing_tone4:

:person_surfing_tone5:

:person_swimming:

:person_swimming_tone1:

:person_swimming_tone2:

:person_swimming_tone3:

:person_swimming_tone4:

:person_swimming_tone5:

:ping_pong:

:reminder_ribbon:

:rosette:

:rugby_football:

:running_shirt_with_sash:

:saxophone:

:second_place:

:skateboard:

:ski:

:skier:

:sled:

:slot_machine:

:snowboarder:

:snowboarder_tone1:

:snowboarder_tone2:

:snowboarder_tone3:

:snowboarder_tone4:

:snowboarder_tone5:

:soccer:

:softball:

:tennis:

:third_place:

:ticket:

:tickets:

:trophy:

:trumpet:

:video_game:

:violin:

:volleyball:

:woman_biking:

:woman_biking_tone1:

:woman_biking_tone2:

:woman_biking_tone3:

:woman_biking_tone4:

:woman_biking_tone5:

:woman_bouncing_ball:

:woman_bouncing_ball_tone1:

:woman_bouncing_ball_tone2:

:woman_bouncing_ball_tone3:

:woman_bouncing_ball_tone4:

:woman_bouncing_ball_tone5:

:woman_cartwheeling:

:woman_cartwheeling_tone1:

:woman_cartwheeling_tone2:

:woman_cartwheeling_tone3:

:woman_cartwheeling_tone4:

:woman_cartwheeling_tone5:

:woman_climbing:

:woman_climbing_tone1:

:woman_climbing_tone2:

:woman_climbing_tone3:

:woman_climbing_tone4:

:woman_climbing_tone5:

:woman_golfing:

:woman_golfing_tone1:

:woman_golfing_tone2:

:woman_golfing_tone3:

:woman_golfing_tone4:

:woman_golfing_tone5:

:woman_in_lotus_position:

:woman_in_lotus_position_tone1:

:woman_in_lotus_position_tone2:

:woman_in_lotus_position_tone3:

:woman_in_lotus_position_tone4:

:woman_in_lotus_position_tone5:

:woman_juggling:

:woman_juggling_tone1:

:woman_juggling_tone2:

:woman_juggling_tone3:

:woman_juggling_tone4:

:woman_juggling_tone5:

:woman_lifting_weights:

:woman_lifting_weights_tone1:

:woman_lifting_weights_tone2:

:woman_lifting_weights_tone3:

:woman_lifting_weights_tone4:

:woman_lifting_weights_tone5:

:woman_mountain_biking:

:woman_mountain_biking_tone1:

:woman_mountain_biking_tone2:

:woman_mountain_biking_tone3:

:woman_mountain_biking_tone4:

:woman_mountain_biking_tone5:

:woman_playing_handball:

:woman_playing_handball_tone1:

:woman_playing_handball_tone2:

:woman_playing_handball_tone3:

:woman_playing_handball_tone4:

:woman_playing_handball_tone5:

:woman_playing_water_polo:

:woman_playing_water_polo_tone1:

:woman_playing_water_polo_tone2:

:woman_playing_water_polo_tone3:

:woman_playing_water_polo_tone4:

:woman_playing_water_polo_tone5:

:woman_rowing_boat:

:woman_rowing_boat_tone1:

:woman_rowing_boat_tone2:

:woman_rowing_boat_tone3:

:woman_rowing_boat_tone4:

:woman_rowing_boat_tone5:

:woman_surfing:

:woman_surfing_tone1:

:woman_surfing_tone2:

:woman_surfing_tone3:

:woman_surfing_tone4:

:woman_surfing_tone5:

:woman_swimming:

:woman_swimming_tone1:

:woman_swimming_tone2:

:woman_swimming_tone3:

:woman_swimming_tone4:

:woman_swimming_tone5:

:women_wrestling:

:yo_yo:

:checkered_flag:

:crossed_flags:

:england:

:flag_ac:

:flag_ad:

:flag_ae:

:flag_af:

:flag_ag:

:flag_ai:

:flag_al:

:flag_am:

:flag_ao:

:flag_aq:

:flag_ar:

:flag_as:

:flag_at:

:flag_au:

:flag_aw:

:flag_ax:

:flag_az:

:flag_ba:

:flag_bb:

:flag_bd:

:flag_be:

:flag_bf:

:flag_bg:

:flag_bh:

:flag_bi:

:flag_bj:

:flag_bl:

:flag_black:

:flag_bm:

:flag_bn:

:flag_bo:

:flag_bq:

:flag_br:

:flag_bs:

:flag_bt:

:flag_bv:

:flag_bw:

:flag_by:

:flag_bz:

:flag_ca:

:flag_cc:

:flag_cd:

:flag_cf:

:flag_cg:

:flag_ch:

:flag_ci:

:flag_ck:

:flag_cl:

:flag_cm:

:flag_cn:

:flag_co:

:flag_cp:

:flag_cr:

:flag_cu:

:flag_cv:

:flag_cw:

:flag_cx:

:flag_cy:

:flag_cz:

:flag_de:

:flag_dg:

:flag_dj:

:flag_dk:

:flag_dm:

:flag_do:

:flag_dz:

:flag_ea:

:flag_ec:

:flag_ee:

:flag_eg:

:flag_eh:

:flag_er:

:flag_es:

:flag_et:

:flag_eu:

:flag_fi:

:flag_fj:

:flag_fk:

:flag_fm:

:flag_fo:

:flag_fr:

:flag_ga:

:flag_gb:

:flag_gd:

:flag_ge:

:flag_gf:

:flag_gg:

:flag_gh:

:flag_gi:

:flag_gl:

:flag_gm:

:flag_gn:

:flag_gp:

:flag_gq:

:flag_gr:

:flag_gs:

:flag_gt:

:flag_gu:

:flag_gw:

:flag_gy:

:flag_hk:

:flag_hm:

:flag_hn:

:flag_hr:

:flag_ht:

:flag_hu:

:flag_ic:

:flag_id:

:flag_ie:

:flag_il:

:flag_im:

:flag_in:

:flag_io:

:flag_iq:

:flag_ir:

:flag_is:

:flag_it:

:flag_je:

:flag_jm:

:flag_jo:

:flag_jp:

:flag_ke:

:flag_kg:

:flag_kh:

:flag_ki:

:flag_km:

:flag_kn:

:flag_kp:

:flag_kr:

:flag_kw:

:flag_ky:

:flag_kz:

:flag_la:

:flag_lb:

:flag_lc:

:flag_li:

:flag_lk:

:flag_lr:

:flag_ls:

:flag_lt:

:flag_lu:

:flag_lv:

:flag_ly:

:flag_ma:

:flag_mc:

:flag_md:

:flag_me:

:flag_mf:

:flag_mg:

:flag_mh:

:flag_mk:

:flag_ml:

:flag_mm:

:flag_mn:

:flag_mo:

:flag_mp:

:flag_mq:

:flag_mr:

:flag_ms:

:flag_mt:

:flag_mu:

:flag_mv:

:flag_mw:

:flag_mx:

:flag_my:

:flag_mz:

:flag_na:

:flag_nc:

:flag_ne:

:flag_nf:

:flag_ng:

:flag_ni:

:flag_nl:

:flag_no:

:flag_np:

:flag_nr:

:flag_nu:

:flag_nz:

:flag_om:

:flag_pa:

:flag_pe:

:flag_pf:

:flag_pg:

:flag_ph:

:flag_pk:

:flag_pl:

:flag_pm:

:flag_pn:

:flag_pr:

:flag_ps:

:flag_pt:

:flag_pw:

:flag_py:

:flag_qa:

:flag_re:

:flag_ro:

:flag_rs:

:flag_ru:

:flag_rw:

:flag_sa:

:flag_sb:

:flag_sc:

:flag_sd:

:flag_se:

:flag_sg:

:flag_sh:

:flag_si:

:flag_sj:

:flag_sk:

:flag_sl:

:flag_sm:

:flag_sn:

:flag_so:

:flag_sr:

:flag_ss:

:flag_st:

:flag_sv:

:flag_sx:

:flag_sy:

:flag_sz:

:flag_ta:

:flag_tc:

:flag_td:

:flag_tf:

:flag_tg:

:flag_th:

:flag_tj:

:flag_tk:

:flag_tl:

:flag_tm:

:flag_tn:

:flag_to:

:flag_tr:

:flag_tt:

:flag_tv:

:flag_tw:

:flag_tz:

:flag_ua:

:flag_ug:

:flag_um:

:flag_us:

:flag_uy:

:flag_uz:

:flag_va:

:flag_vc:

:flag_ve:

:flag_vg:

:flag_vi:

:flag_vn:

:flag_vu:

:flag_wf:

:flag_white:

:flag_ws:

:flag_xk:

:flag_ye:

:flag_yt:

:flag_za:

:flag_zm:

:flag_zw:

:pirate_flag:

:rainbow_flag:

:scotland:

:triangular_flag_on_post:

:united_nations:

:wales:

:apple:

:avocado:

:baby_bottle:

:bacon:

:bagel:

:banana:

:beer:

:beers:

:bento:

:beverage_box:

:birthday:

:bowl_with_spoon:

:bread:

:broccoli:

:burrito:

:butter:

:cake:

:candy:

:canned_food:

:carrot:

:champagne:

:champagne_glass:

:cheese:

:cherries:

:chestnut:

:chocolate_bar:

:chopsticks:

:cocktail:

:coconut:

:coffee:

:cookie:

:cooking:

:corn:

:croissant:

:cucumber:

:cup_with_straw:

:cupcake:

:curry:

:custard:

:cut_of_meat:

:dango:

:doughnut:

:dumpling:

:egg:

:eggplant:

:falafel:

:fish_cake:

:fork_and_knife:

:fork_knife_plate:

:fortune_cookie:

:french_bread:

:fried_shrimp:

:fries:

:garlic:

:grapes:

:green_apple:

:hamburger:

:honey_pot:

:hot_pepper:

:hotdog:

:ice_cream:

:ice_cube:

:icecream:

:kiwi:

:leafy_green:

:lemon:

:lollipop:

:mango:

:mate:

:meat_on_bone:

:melon:

:milk:

:moon_cake:

:oden:

:onion:

:pancakes:

:peach:

:peanuts:

:pear:

:pie:

:pineapple:

:pizza:

:popcorn:

:potato:

:poultry_leg:

:pretzel:

:ramen:

:rice:

:rice_ball:

:rice_cracker:

:sake:

:salad:

:salt:

:sandwich:

:shallow_pan_of_food:

:shaved_ice:

:spaghetti:

:spoon:

:stew:

:strawberry:

:stuffed_flatbread:

:sushi:

:sweet_potato:

:taco:

:takeout_box:

:tangerine:

:tea:

:tomato:

:tropical_drink:

:tumbler_glass:

:waffle:

:watermelon:

:wine_glass:

:tone1:

:tone2:

:tone3:

:tone4:

:tone5:

:ant:

:baby_chick:

:badger:

:bamboo:

:bat:

:bear:

:bee:

:beetle:

:bird:

:blossom:

:blowfish:

:boar:

:boom:

:bouquet:

:bug:

:butterfly:

:cactus:

:camel:

:cat2:

:cat:

:cherry_blossom:

:chicken:

:chipmunk:

:christmas_tree:

:cloud:

:cloud_lightning:

:cloud_rain:

:cloud_snow:

:cloud_tornado:

:comet:

:cow2:

:cow:

:crab:

:crescent_moon:

:cricket:

:crocodile:

:dash:

:deciduous_tree:

:deer:

:dizzy:

:dog2:

:dog:

:dolphin:

:dove:

:dragon:

:dragon_face:

:dromedary_camel:

:droplet:

:duck:

:eagle:

:ear_of_rice:

:earth_africa:

:earth_americas:

:earth_asia:

:elephant:

:evergreen_tree:

:fallen_leaf:

:feet:

:fire:

:first_quarter_moon:

:first_quarter_moon_with_face:

:fish:

:flamingo:

:fog:

:four_leaf_clover:

:fox:

:frog:

:full_moon:

:full_moon_with_face:

:giraffe:

:goat:

:gorilla:

:guide_dog:

:hamster:

:hatched_chick:

:hatching_chick:

:hear_no_evil:

:hedgehog:

:herb:

:hibiscus:

:hippopotamus:

:horse:

:kangaroo:

:koala:

:last_quarter_moon:

:last_quarter_moon_with_face:

:leaves:

:leopard:

:lion_face:

:lizard:

:llama:

:lobster:

:maple_leaf:

:monkey:

:monkey_face:

:mosquito:

:mouse2:

:mouse:

:mushroom:

:new_moon:

:new_moon_with_face:

:ocean:

:octopus:

:orangutan:

:otter:

:owl:

:ox:

:oyster:

:palm_tree:

:panda_face:

:parrot:

:partly_sunny:

:peacock:

:penguin:

:pig2:

:pig:

:pig_nose:

:poodle:

:rabbit2:

:rabbit:

:raccoon:

:racehorse:

:rainbow:

:ram:

:rat:

:rhino:

:ringed_planet:

:rooster:

:rose:

:sauropod:

:scorpion:

:see_no_evil:

:seedling:

:service_dog:

:shamrock:

:shark:

:sheep:

:shell:

:shrimp:

:skunk:

:sloth:

:snail:

:snake:

:snowflake:

:snowman2:

:snowman:

:sparkles:

:speak_no_evil:

:spider:

:spider_web:

:squid:

:star2:

:star:

:sun_with_face:

:sunflower:

:sunny:

:swan:

:sweat_drops:

:t_rex:

:tanabata_tree:

:thunder_cloud_rain:

:tiger2:

:tiger:

:tropical_fish:

:tulip:

:turkey:

:turtle:

:umbrella2:

:umbrella:

:unicorn:

:waning_crescent_moon:

:waning_gibbous_moon:

:water_buffalo:

:waxing_crescent_moon:

:waxing_gibbous_moon:

:whale2:

:whale:

:white_sun_cloud:

:white_sun_rain_cloud:

:white_sun_small_cloud:

:wilted_rose:

:wind_blowing_face:

:wolf:

:zap:

:zebra:

:abacus:

:adhesive_bandage:

:alarm_clock:

:alembic:

:amphora:

:axe:

:balloon:

:ballot_box:

:bar_chart:

:barber:

:basket:

:bath:

:bath_tone1:

:bath_tone2:

:bath_tone3:

:bath_tone4:

:bath_tone5:

:bathtub:

:battery:

:bed:

:bellhop:

:black_nib:

:blue_book:

:bomb:

:book:

:bookmark:

:bookmark_tabs:

:books:

:bricks:

:broom:

:bulb:

:calendar:

:calendar_spiral:

:calling:

:camera:

:camera_with_flash:

:candle:

:card_box:

:card_index:

:cd:

:chains:

:chair:

:chart_with_downwards_trend:

:chart_with_upwards_trend:

:clipboard:

:clock:

:closed_book:

:closed_lock_with_key:

:coffin:

:compass:

:compression:

:computer:

:confetti_ball:

:control_knobs:

:couch:

:crayon:

:credit_card:

:crossed_swords:

:crystal_ball:

:dagger:

:date:

:desktop:

:dividers:

:diya_lamp:

:dna:

:dollar:

:dolls:

:door:

:drop_of_blood:

:dvd:

:e-mail:

:electric_plug:

:envelope:

:envelope_with_arrow:

:euro:

:fax:

:file_cabinet:

:file_folder:

:film_frames:

:fire_extinguisher:

:firecracker:

:flags:

:flashlight:

:floppy_disk:

:frame_photo:

:gear:

:gem:

:gift:

:green_book:

:gun:

:hammer:

:hammer_pick:

:hole:

:hourglass:

:hourglass_flowing_sand:

:inbox_tray:

:incoming_envelope:

:iphone:

:izakaya_lantern:

:joystick:

:key2:

:key:

:keyboard:

:knife:

:label:

:ledger:

:level_slider:

:link:

:lock:

:lock_with_ink_pen:

:love_letter:

:mag:

:mag_right:

:magnet:

:mailbox:

:mailbox_closed:

:mailbox_with_mail:

:mailbox_with_no_mail:

:microbe:

:microphone2:

:microscope:

:minidisc:

:money_with_wings:

:moneybag:

:mouse_three_button:

:movie_camera:

:nazar_amulet:

:newspaper2:

:newspaper:

:notebook:

:notebook_with_decorative_cover:

:notepad_spiral:

:nut_and_bolt:

:oil:

:open_file_folder:

:orange_book:

:outbox_tray:

:package:

:page_facing_up:

:page_with_curl:

:pager:

:paintbrush:

:paperclip:

:paperclips:

:pen_ballpoint:

:pen_fountain:

:pencil2:

:pencil:

:person_in_bed_tone1:

:person_in_bed_tone2:

:person_in_bed_tone3:

:person_in_bed_tone4:

:person_in_bed_tone5:

:petri_dish:

:pick:

:pill:

:postal_horn:

:postbox:

:potable_water:

:pound:

:prayer_beads:

:printer:

:probing_cane:

:projector:

:pushpin:

:radio:

:razor:

:receipt:

:red_envelope:

:ribbon:

:roll_of_paper:

:round_pushpin:

:safety_pin:

:satellite:

:scales:

:scissors:

:scroll:

:shield:

:shopping_bags:

:shopping_cart:

:shower:

:sleeping_accommodation:

:smoking:

:soap:

:sponge:

:squeeze_bottle:

:stethoscope:

:stopwatch:

:straight_ruler:

:syringe:

:tada:

:teddy_bear:

:telephone:

:telephone_receiver:

:telescope:

:test_tube:

:thermometer:

:timer:

:toilet:

:toolbox:

:tools:

:trackball:

:triangular_ruler:

:tv:

:unlock:

:urn:

:vhs:

:video_camera:

:wastebasket:

:watch:

:wind_chime:

:wrench:

:yen:

:adult:

:adult_tone1:

:adult_tone2:

:adult_tone3:

:adult_tone4:

:adult_tone5:

:alien:

:angel:

:angel_tone1:

:angel_tone2:

:angel_tone3:

:angel_tone4:

:angel_tone5:

:angry:

:anguished:

:astonished:

:athletic_shoe:

:baby:

:baby_tone1:

:baby_tone2:

:baby_tone3:

:baby_tone4:

:baby_tone5:

:bald:

:ballet_shoes:

:bearded_person:

:bearded_person_tone1:

:bearded_person_tone2:

:bearded_person_tone3:

:bearded_person_tone4:

:bearded_person_tone5:

:bikini:

:billed_cap:

:blond-haired_man:

:blond-haired_man_tone1:

:blond-haired_man_tone2:

:blond-haired_man_tone3:

:blond-haired_man_tone4:

:blond-haired_man_tone5:

:blond-haired_woman:

:blond-haired_woman_tone1:

:blond-haired_woman_tone2:

:blond-haired_woman_tone3:

:blond-haired_woman_tone4:

:blond-haired_woman_tone5:

:blond_haired_person:

:blond_haired_person_tone1:

:blond_haired_person_tone2:

:blond_haired_person_tone3:

:blond_haired_person_tone4:

:blond_haired_person_tone5:

:blush:

:bone:

:boot:

:boy:

:boy_tone1:

:boy_tone2:

:boy_tone3:

:boy_tone4:

:boy_tone5:

:brain:

:breast_feeding:

:breast_feeding_tone1:

:breast_feeding_tone2:

:breast_feeding_tone3:

:breast_feeding_tone4:

:breast_feeding_tone5:

:bride_with_veil:

:bride_with_veil_tone1:

:bride_with_veil_tone2:

:bride_with_veil_tone3:

:bride_with_veil_tone4:

:bride_with_veil_tone5:

:briefcase:

:briefs:

:bust_in_silhouette:

:busts_in_silhouette:

:call_me:

:call_me_tone1:

:call_me_tone2:

:call_me_tone3:

:call_me_tone4:

:call_me_tone5:

:child:

:child_tone1:

:child_tone2:

:child_tone3:

:child_tone4:

:child_tone5:

:clap:

:clap_tone1:

:clap_tone2:

:clap_tone3:

:clap_tone4:

:clap_tone5:

:closed_umbrella:

:clown:

:coat:

:cold_face:

:cold_sweat:

:confounded:

:confused:

:construction_worker:

:construction_worker_tone1:

:construction_worker_tone2:

:construction_worker_tone3:

:construction_worker_tone4:

:construction_worker_tone5:

:couple:

:couple_mm:

:couple_with_heart:

:couple_with_heart_woman_man:

:couple_ww:

:couplekiss:

:cowboy:

:crown:

:cry:

:crying_cat_face:

:curly_haired:

:dancer:

:dancer_tone1:

:dancer_tone2:

:dancer_tone3:

:dancer_tone4:

:dancer_tone5:

:dark_sunglasses:

:deaf_man:

:deaf_man_tone1:

:deaf_man_tone2:

:deaf_man_tone3:

:deaf_man_tone4:

:deaf_man_tone5:

:deaf_person:

:deaf_person_tone1:

:deaf_person_tone2:

:deaf_person_tone3:

:deaf_person_tone4:

:deaf_person_tone5:

:deaf_woman:

:deaf_woman_tone1:

:deaf_woman_tone2:

:deaf_woman_tone3:

:deaf_woman_tone4:

:deaf_woman_tone5:

:detective:

:detective_tone1:

:detective_tone2:

:detective_tone3:

:detective_tone4:

:detective_tone5:

:disappointed:

:disappointed_relieved:

:diving_mask:

:dizzy_face:

:dress:

:drooling_face:

:ear:

:ear_tone1:

:ear_tone2:

:ear_tone3:

:ear_tone4:

:ear_tone5:

:ear_with_hearing_aid:

:ear_with_hearing_aid_tone1:

:ear_with_hearing_aid_tone2:

:ear_with_hearing_aid_tone3:

:ear_with_hearing_aid_tone4:

:ear_with_hearing_aid_tone5:

:elf:

:elf_tone1:

:elf_tone2:

:elf_tone3:

:elf_tone4:

:elf_tone5:

:exploding_head:

:expressionless:

:eye:

:eyeglasses:

:eyes:

:face_vomiting:

:face_with_hand_over_mouth:

:face_with_monocle:

:face_with_raised_eyebrow:

:face_with_symbols_over_mouth:

:fairy:

:fairy_tone1:

:fairy_tone2:

:fairy_tone3:

:fairy_tone4:

:fairy_tone5:

:family:

:family_man_boy:

:family_man_boy_boy:

:family_man_girl:

:family_man_girl_boy:

:family_man_girl_girl:

:family_man_woman_boy:

:family_mmb:

:family_mmbb:

:family_mmg:

:family_mmgb:

:family_mmgg:

:family_mwbb:

:family_mwg:

:family_mwgb:

:family_mwgg:

:family_woman_boy:

:family_woman_boy_boy:

:family_woman_girl:

:family_woman_girl_boy:

:family_woman_girl_girl:

:family_wwb:

:family_wwbb:

:family_wwg:

:family_wwgb:

:family_wwgg:

:fearful:

:fingers_crossed:

:fingers_crossed_tone1:

:fingers_crossed_tone2:

:fingers_crossed_tone3:

:fingers_crossed_tone4:

:fingers_crossed_tone5:

:fist:

:fist_tone1:

:fist_tone2:

:fist_tone3:

:fist_tone4:

:fist_tone5:

:flushed:

:foot:

:foot_tone1:

:foot_tone2:

:foot_tone3:

:foot_tone4:

:foot_tone5:

:footprints:

:frowning2:

:frowning:

:genie:

:ghost:

:girl:

:girl_tone1:

:girl_tone2:

:girl_tone3:

:girl_tone4:

:girl_tone5:

:gloves:

:goggles:

:grimacing:

:grin:

:grinning:

:guard:

:guard_tone1:

:guard_tone2:

:guard_tone3:

:guard_tone4:

:guard_tone5:

:hand_splayed:

:hand_splayed_tone1:

:hand_splayed_tone2:

:hand_splayed_tone3:

:hand_splayed_tone4:

:hand_splayed_tone5:

:handbag:

:handshake:

:head_bandage:

:heart_eyes:

:heart_eyes_cat:

:helmet_with_cross:

:high_heel:

:hiking_boot:

:hot_face:

:hugging:

:hushed:

:imp:

:innocent:

:jack_o_lantern:

:japanese_goblin:

:japanese_ogre:

:jeans:

:joy:

:joy_cat:

:kimono:

:kiss:

:kiss_mm:

:kiss_woman_man:

:kiss_ww:

:kissing:

:kissing_cat:

:kissing_closed_eyes:

:kissing_heart:

:kissing_smiling_eyes:

:lab_coat:

:laughing:

:left_facing_fist:

:left_facing_fist_tone1:

:left_facing_fist_tone2:

:left_facing_fist_tone3:

:left_facing_fist_tone4:

:left_facing_fist_tone5:

:leg:

:leg_tone1:

:leg_tone2:

:leg_tone3:

:leg_tone4:

:leg_tone5:

:levitate:

:levitate_tone1:

:levitate_tone2:

:levitate_tone3:

:levitate_tone4:

:levitate_tone5:

:lips:

:lipstick:

:love_you_gesture:

:love_you_gesture_tone1:

:love_you_gesture_tone2:

:love_you_gesture_tone3:

:love_you_gesture_tone4:

:love_you_gesture_tone5:

:luggage:

:lying_face:

:mage:

:mage_tone1:

:mage_tone2:

:mage_tone3:

:mage_tone4:

:mage_tone5:

:man:

:man_artist:

:man_artist_tone1:

:man_artist_tone2:

:man_artist_tone3:

:man_artist_tone4:

:man_artist_tone5:

:man_astronaut:

:man_astronaut_tone1:

:man_astronaut_tone2:

:man_astronaut_tone3:

:man_astronaut_tone4:

:man_astronaut_tone5:

:man_bald:

:man_bald_tone1:

:man_bald_tone2:

:man_bald_tone3:

:man_bald_tone4:

:man_bald_tone5:

:man_bowing:

:man_bowing_tone1:

:man_bowing_tone2:

:man_bowing_tone3:

:man_bowing_tone4:

:man_bowing_tone5:

:man_construction_worker:

:man_construction_worker_tone1:

:man_construction_worker_tone2:

:man_construction_worker_tone3:

:man_construction_worker_tone4:

:man_construction_worker_tone5:

:man_cook:

:man_cook_tone1:

:man_cook_tone2:

:man_cook_tone3:

:man_cook_tone4:

:man_cook_tone5:

:man_curly_haired:

:man_curly_haired_tone1:

:man_curly_haired_tone2:

:man_curly_haired_tone3:

:man_curly_haired_tone4:

:man_curly_haired_tone5:

:man_dancing:

:man_dancing_tone1:

:man_dancing_tone2:

:man_dancing_tone3:

:man_dancing_tone4:

:man_dancing_tone5:

:man_detective:

:man_detective_tone1:

:man_detective_tone2:

:man_detective_tone3:

:man_detective_tone4:

:man_detective_tone5:

:man_elf:

:man_elf_tone1:

:man_elf_tone2:

:man_elf_tone3:

:man_elf_tone4:

:man_elf_tone5:

:man_facepalming:

:man_facepalming_tone1:

:man_facepalming_tone2:

:man_facepalming_tone3:

:man_facepalming_tone4:

:man_facepalming_tone5:

:man_factory_worker:

:man_factory_worker_tone1:

:man_factory_worker_tone2:

:man_factory_worker_tone3:

:man_factory_worker_tone4:

:man_factory_worker_tone5:

:man_fairy:

:man_fairy_tone1:

:man_fairy_tone2:

:man_fairy_tone3:

:man_fairy_tone4:

:man_fairy_tone5:

:man_farmer:

:man_farmer_tone1:

:man_farmer_tone2:

:man_farmer_tone3:

:man_farmer_tone4:

:man_farmer_tone5:

:man_firefighter:

:man_firefighter_tone1:

:man_firefighter_tone2:

:man_firefighter_tone3:

:man_firefighter_tone4:

:man_firefighter_tone5:

:man_frowning:

:man_frowning_tone1:

:man_frowning_tone2:

:man_frowning_tone3:

:man_frowning_tone4:

:man_frowning_tone5:

:man_genie:

:man_gesturing_no:

:man_gesturing_no_tone1:

:man_gesturing_no_tone2:

:man_gesturing_no_tone3:

:man_gesturing_no_tone4:

:man_gesturing_no_tone5:

:man_gesturing_ok:

:man_gesturing_ok_tone1:

:man_gesturing_ok_tone2:

:man_gesturing_ok_tone3:

:man_gesturing_ok_tone4:

:man_gesturing_ok_tone5:

:man_getting_face_massage:

:man_getting_face_massage_tone1:

:man_getting_face_massage_tone2:

:man_getting_face_massage_tone3:

:man_getting_face_massage_tone4:

:man_getting_face_massage_tone5:

:man_getting_haircut:

:man_getting_haircut_tone1:

:man_getting_haircut_tone2:

:man_getting_haircut_tone3:

:man_getting_haircut_tone4:

:man_getting_haircut_tone5:

:man_guard:

:man_guard_tone1:

:man_guard_tone2:

:man_guard_tone3:

:man_guard_tone4:

:man_guard_tone5:

:man_health_worker:

:man_health_worker_tone1:

:man_health_worker_tone2:

:man_health_worker_tone3:

:man_health_worker_tone4:

:man_health_worker_tone5:

:man_in_manual_wheelchair:

:man_in_manual_wheelchair_tone1:

:man_in_manual_wheelchair_tone2:

:man_in_manual_wheelchair_tone3:

:man_in_manual_wheelchair_tone4:

:man_in_manual_wheelchair_tone5:

:man_in_motorized_wheelchair:

:man_in_motorized_wheelchair_tone1:

:man_in_motorized_wheelchair_tone2:

:man_in_motorized_wheelchair_tone3:

:man_in_motorized_wheelchair_tone4:

:man_in_motorized_wheelchair_tone5:

:man_in_steamy_room:

:man_in_steamy_room_tone1:

:man_in_steamy_room_tone2:

:man_in_steamy_room_tone3:

:man_in_steamy_room_tone4:

:man_in_steamy_room_tone5:

:man_in_tuxedo:

:man_in_tuxedo_tone1:

:man_in_tuxedo_tone2:

:man_in_tuxedo_tone3:

:man_in_tuxedo_tone4:

:man_in_tuxedo_tone5:

:man_judge:

:man_judge_tone1:

:man_judge_tone2:

:man_judge_tone3:

:man_judge_tone4:

:man_judge_tone5:

:man_kneeling:

:man_kneeling_tone1:

:man_kneeling_tone2:

:man_kneeling_tone3:

:man_kneeling_tone4:

:man_kneeling_tone5:

:man_mage:

:man_mage_tone1:

:man_mage_tone2:

:man_mage_tone3:

:man_mage_tone4:

:man_mage_tone5:

:man_mechanic:

:man_mechanic_tone1:

:man_mechanic_tone2:

:man_mechanic_tone3:

:man_mechanic_tone4:

:man_mechanic_tone5:

:man_office_worker:

:man_office_worker_tone1:

:man_office_worker_tone2:

:man_office_worker_tone3:

:man_office_worker_tone4:

:man_office_worker_tone5:

:man_pilot:

:man_pilot_tone1:

:man_pilot_tone2:

:man_pilot_tone3:

:man_pilot_tone4:

:man_pilot_tone5:

:man_police_officer:

:man_police_officer_tone1:

:man_police_officer_tone2:

:man_police_officer_tone3:

:man_police_officer_tone4:

:man_police_officer_tone5:

:man_pouting:

:man_pouting_tone1:

:man_pouting_tone2:

:man_pouting_tone3:

:man_pouting_tone4:

:man_pouting_tone5:

:man_raising_hand:

:man_raising_hand_tone1:

:man_raising_hand_tone2:

:man_raising_hand_tone3:

:man_raising_hand_tone4:

:man_raising_hand_tone5:

:man_red_haired:

:man_red_haired_tone1:

:man_red_haired_tone2:

:man_red_haired_tone3:

:man_red_haired_tone4:

:man_red_haired_tone5:

:man_running:

:man_running_tone1:

:man_running_tone2:

:man_running_tone3:

:man_running_tone4:

:man_running_tone5:

:man_scientist:

:man_scientist_tone1:

:man_scientist_tone2:

:man_scientist_tone3:

:man_scientist_tone4:

:man_scientist_tone5:

:man_shrugging:

:man_shrugging_tone1:

:man_shrugging_tone2:

:man_shrugging_tone3:

:man_shrugging_tone4:

:man_shrugging_tone5:

:man_singer:

:man_singer_tone1:

:man_singer_tone2:

:man_singer_tone3:

:man_singer_tone4:

:man_singer_tone5:

:man_standing:

:man_standing_tone1:

:man_standing_tone2:

:man_standing_tone3:

:man_standing_tone4:

:man_standing_tone5:

:man_student:

:man_student_tone1:

:man_student_tone2:

:man_student_tone3:

:man_student_tone4:

:man_student_tone5:

:man_superhero:

:man_superhero_tone1:

:man_superhero_tone2:

:man_superhero_tone3:

:man_superhero_tone4:

:man_superhero_tone5:

:man_supervillain:

:man_supervillain_tone1:

:man_supervillain_tone2:

:man_supervillain_tone3:

:man_supervillain_tone4:

:man_supervillain_tone5:

:man_teacher:

:man_teacher_tone1:

:man_teacher_tone2:

:man_teacher_tone3:

:man_teacher_tone4:

:man_teacher_tone5:

:man_technologist:

:man_technologist_tone1:

:man_technologist_tone2:

:man_technologist_tone3:

:man_technologist_tone4:

:man_technologist_tone5:

:man_tipping_hand:

:man_tipping_hand_tone1:

:man_tipping_hand_tone2:

:man_tipping_hand_tone3:

:man_tipping_hand_tone4:

:man_tipping_hand_tone5:

:man_tone1:

:man_tone2:

:man_tone3:

:man_tone4:

:man_tone5:

:man_vampire:

:man_vampire_tone1:

:man_vampire_tone2:

:man_vampire_tone3:

:man_vampire_tone4:

:man_vampire_tone5:

:man_walking:

:man_walking_tone1:

:man_walking_tone2:

:man_walking_tone3:

:man_walking_tone4:

:man_walking_tone5:

:man_wearing_turban:

:man_wearing_turban_tone1:

:man_wearing_turban_tone2:

:man_wearing_turban_tone3:

:man_wearing_turban_tone4:

:man_wearing_turban_tone5:

:man_white_haired:

:man_white_haired_tone1:

:man_white_haired_tone2:

:man_white_haired_tone3:

:man_white_haired_tone4:

:man_white_haired_tone5:

:man_with_chinese_cap:

:man_with_chinese_cap_tone1:

:man_with_chinese_cap_tone2:

:man_with_chinese_cap_tone3:

:man_with_chinese_cap_tone4:

:man_with_chinese_cap_tone5:

:man_with_probing_cane:

:man_with_probing_cane_tone1:

:man_with_probing_cane_tone2:

:man_with_probing_cane_tone3:

:man_with_probing_cane_tone4:

:man_with_probing_cane_tone5:

:man_zombie:

:mans_shoe:

:mask:

:mechanical_arm:

:mechanical_leg:

:men_holding_hands_tone1:

:men_holding_hands_tone2:

:men_holding_hands_tone2_tone1:

:men_holding_hands_tone3:

:men_holding_hands_tone3_tone1:

:men_holding_hands_tone3_tone2:

:men_holding_hands_tone4:

:men_holding_hands_tone4_tone1:

:men_holding_hands_tone4_tone2:

:men_holding_hands_tone4_tone3:

:men_holding_hands_tone5:

:men_holding_hands_tone5_tone1:

:men_holding_hands_tone5_tone2:

:men_holding_hands_tone5_tone3:

:men_holding_hands_tone5_tone4:

:men_with_bunny_ears_partying:

:mermaid:

:mermaid_tone1:

:mermaid_tone2:

:mermaid_tone3:

:mermaid_tone4:

:mermaid_tone5:

:merman:

:merman_tone1:

:merman_tone2:

:merman_tone3:

:merman_tone4:

:merman_tone5:

:merperson:

:merperson_tone1:

:merperson_tone2:

:merperson_tone3:

:merperson_tone4:

:merperson_tone5:

:metal:

:metal_tone1:

:metal_tone2:

:metal_tone3:

:metal_tone4:

:metal_tone5:

:middle_finger:

:middle_finger_tone1:

:middle_finger_tone2:

:middle_finger_tone3:

:middle_finger_tone4:

:middle_finger_tone5:

:money_mouth:

:mortar_board:

:mrs_claus:

:mrs_claus_tone1:

:mrs_claus_tone2:

:mrs_claus_tone3:

:mrs_claus_tone4:

:mrs_claus_tone5:

:muscle:

:muscle_tone1:

:muscle_tone2:

:muscle_tone3:

:muscle_tone4:

:muscle_tone5:

:nail_care:

:nail_care_tone1:

:nail_care_tone2:

:nail_care_tone3:

:nail_care_tone4:

:nail_care_tone5:

:nauseated_face:

:necktie:

:nerd:

:neutral_face:

:no_mouth:

:nose:

:nose_tone1:

:nose_tone2:

:nose_tone3:

:nose_tone4:

:nose_tone5:

:ok_hand:

:ok_hand_tone1:

:ok_hand_tone2:

:ok_hand_tone3:

:ok_hand_tone4:

:ok_hand_tone5:

:older_adult:

:older_adult_tone1:

:older_adult_tone2:

:older_adult_tone3:

:older_adult_tone4:

:older_adult_tone5:

:older_man:

:older_man_tone1:

:older_man_tone2:

:older_man_tone3:

:older_man_tone4:

:older_man_tone5:

:older_woman:

:older_woman_tone1:

:older_woman_tone2:

:older_woman_tone3:

:older_woman_tone4:

:older_woman_tone5:

:one_piece_swimsuit:

:open_hands:

:open_hands_tone1:

:open_hands_tone2:

:open_hands_tone3:

:open_hands_tone4:

:open_hands_tone5:

:open_mouth:

:palms_up_together:

:palms_up_together_tone1:

:palms_up_together_tone2:

:palms_up_together_tone3:

:palms_up_together_tone4:

:palms_up_together_tone5:

:partying_face:

:pensive:

:people_holding_hands:

:people_holding_hands_tone1:

:people_holding_hands_tone2:

:people_holding_hands_tone2_tone1:

:people_holding_hands_tone3:

:people_holding_hands_tone3_tone1:

:people_holding_hands_tone3_tone2:

:people_holding_hands_tone4:

:people_holding_hands_tone4_tone1:

:people_holding_hands_tone4_tone2:

:people_holding_hands_tone4_tone3:

:people_holding_hands_tone5:

:people_holding_hands_tone5_tone1:

:people_holding_hands_tone5_tone2:

:people_holding_hands_tone5_tone3:

:people_holding_hands_tone5_tone4:

:people_with_bunny_ears_partying:

:persevere:

:person_bowing:

:person_bowing_tone1:

:person_bowing_tone2:

:person_bowing_tone3:

:person_bowing_tone4:

:person_bowing_tone5:

:person_facepalming:

:person_facepalming_tone1:

:person_facepalming_tone2:

:person_facepalming_tone3:

:person_facepalming_tone4:

:person_facepalming_tone5:

:person_frowning:

:person_frowning_tone1:

:person_frowning_tone2:

:person_frowning_tone3:

:person_frowning_tone4:

:person_frowning_tone5:

:person_gesturing_no:

:person_gesturing_no_tone1:

:person_gesturing_no_tone2:

:person_gesturing_no_tone3:

:person_gesturing_no_tone4:

:person_gesturing_no_tone5:

:person_gesturing_ok:

:person_gesturing_ok_tone1:

:person_gesturing_ok_tone2:

:person_gesturing_ok_tone3:

:person_gesturing_ok_tone4:

:person_gesturing_ok_tone5:

:person_getting_haircut:

:person_getting_haircut_tone1:

:person_getting_haircut_tone2:

:person_getting_haircut_tone3:

:person_getting_haircut_tone4:

:person_getting_haircut_tone5:

:person_getting_massage:

:person_getting_massage_tone1:

:person_getting_massage_tone2:

:person_getting_massage_tone3:

:person_getting_massage_tone4:

:person_getting_massage_tone5:

:person_in_steamy_room:

:person_in_steamy_room_tone1:

:person_in_steamy_room_tone2:

:person_in_steamy_room_tone3:

:person_in_steamy_room_tone4:

:person_in_steamy_room_tone5:

:person_kneeling:

:person_kneeling_tone1:

:person_kneeling_tone2:

:person_kneeling_tone3:

:person_kneeling_tone4:

:person_kneeling_tone5:

:person_pouting:

:person_pouting_tone1:

:person_pouting_tone2:

:person_pouting_tone3:

:person_pouting_tone4:

:person_pouting_tone5:

:person_raising_hand:

:person_raising_hand_tone1:

:person_raising_hand_tone2:

:person_raising_hand_tone3:

:person_raising_hand_tone4:

:person_raising_hand_tone5:

:person_running:

:person_running_tone1:

:person_running_tone2:

:person_running_tone3:

:person_running_tone4:

:person_running_tone5:

:person_shrugging:

:person_shrugging_tone1:

:person_shrugging_tone2:

:person_shrugging_tone3:

:person_shrugging_tone4:

:person_shrugging_tone5:

:person_standing:

:person_standing_tone1:

:person_standing_tone2:

:person_standing_tone3:

:person_standing_tone4:

:person_standing_tone5:

:person_tipping_hand:

:person_tipping_hand_tone1:

:person_tipping_hand_tone2:

:person_tipping_hand_tone3:

:person_tipping_hand_tone4:

:person_tipping_hand_tone5:

:person_walking:

:person_walking_tone1:

:person_walking_tone2:

:person_walking_tone3:

:person_walking_tone4:

:person_walking_tone5:

:person_wearing_turban:

:person_wearing_turban_tone1:

:person_wearing_turban_tone2:

:person_wearing_turban_tone3:

:person_wearing_turban_tone4:

:person_wearing_turban_tone5:

:pinching_hand:

:pinching_hand_tone1:

:pinching_hand_tone2:

:pinching_hand_tone3:

:pinching_hand_tone4:

:pinching_hand_tone5:

:pleading_face:

:point_down:

:point_down_tone1:

:point_down_tone2:

:point_down_tone3:

:point_down_tone4:

:point_down_tone5:

:point_left:

:point_left_tone1:

:point_left_tone2:

:point_left_tone3:

:point_left_tone4:

:point_left_tone5:

:point_right:

:point_right_tone1:

:point_right_tone2:

:point_right_tone3:

:point_right_tone4:

:point_right_tone5:

:point_up:

:point_up_2:

:point_up_2_tone1:

:point_up_2_tone2:

:point_up_2_tone3:

:point_up_2_tone4:

:point_up_2_tone5:

:point_up_tone1:

:point_up_tone2:

:point_up_tone3:

:point_up_tone4:

:point_up_tone5:

:police_officer:

:police_officer_tone1:

:police_officer_tone2:

:police_officer_tone3:

:police_officer_tone4:

:police_officer_tone5:

:poop:

:pouch:

:pouting_cat:

:pray:

:pray_tone1:

:pray_tone2:

:pray_tone3:

:pray_tone4:

:pray_tone5:

:pregnant_woman:

:pregnant_woman_tone1:

:pregnant_woman_tone2:

:pregnant_woman_tone3:

:pregnant_woman_tone4:

:pregnant_woman_tone5:

:prince:

:prince_tone1:

:prince_tone2:

:prince_tone3:

:prince_tone4:

:prince_tone5:

:princess:

:princess_tone1:

:princess_tone2:

:princess_tone3:

:princess_tone4:

:princess_tone5:

:punch:

:punch_tone1:

:punch_tone2:

:punch_tone3:

:punch_tone4:

:punch_tone5:

:purse:

:rage:

:raised_back_of_hand:

:raised_back_of_hand_tone1:

:raised_back_of_hand_tone2:

:raised_back_of_hand_tone3:

:raised_back_of_hand_tone4:

:raised_back_of_hand_tone5:

:raised_hand:

:raised_hand_tone1:

:raised_hand_tone2:

:raised_hand_tone3:

:raised_hand_tone4:

:raised_hand_tone5:

:raised_hands:

:raised_hands_tone1:

:raised_hands_tone2:

:raised_hands_tone3:

:raised_hands_tone4:

:raised_hands_tone5:

:red_haired:

:relaxed:

:relieved:

:right_facing_fist:

:right_facing_fist_tone1:

:right_facing_fist_tone2:

:right_facing_fist_tone3:

:right_facing_fist_tone4:

:right_facing_fist_tone5:

:ring:

:robot:

:rofl:

:rolling_eyes:

:safety_vest:

:sandal:

:santa:

:santa_tone1:

:santa_tone2:

:santa_tone3:

:santa_tone4:

:santa_tone5:

:sari:

:scarf:

:school_satchel:

:scream:

:scream_cat:

:selfie:

:selfie_tone1:

:selfie_tone2:

:selfie_tone3:

:selfie_tone4:

:selfie_tone5:

:shirt:

:shorts:

:shushing_face:

:skull:

:skull_crossbones:

:sleeping:

:sleepy:

:slight_frown:

:slight_smile:

:smile:

:smile_cat:

:smiley:

:smiley_cat:

:smiling_face_with_3_hearts:

:smiling_imp:

:smirk:

:smirk_cat:

:sneezing_face:

:sob:

:socks:

:space_invader:

:speaking_head:

:star_struck:

:stuck_out_tongue:

:stuck_out_tongue_closed_eyes:

:stuck_out_tongue_winking_eye:

:sunglasses:

:superhero:

:superhero_tone1:

:superhero_tone2:

:superhero_tone3:

:superhero_tone4:

:superhero_tone5:

:supervillain:

:supervillain_tone1:

:supervillain_tone2:

:supervillain_tone3:

:supervillain_tone4:

:supervillain_tone5:

:sweat:

:sweat_smile:

:thermometer_face:

:thinking:

:thread:

:thumbsdown:

:thumbsdown_tone1:

:thumbsdown_tone2:

:thumbsdown_tone3:

:thumbsdown_tone4:

:thumbsdown_tone5:

:thumbsup:

:thumbsup_tone1:

:thumbsup_tone2:

:thumbsup_tone3:

:thumbsup_tone4:

:thumbsup_tone5:

:tired_face:

:tongue:

:tooth:

:tophat:

:triumph:

:two_men_holding_hands:

:two_women_holding_hands:

:unamused:

:upside_down:

:v:

:v_tone1:

:v_tone2:

:v_tone3:

:v_tone4:

:v_tone5:

:vampire:

:vampire_tone1:

:vampire_tone2:

:vampire_tone3:

:vampire_tone4:

:vampire_tone5:

:vulcan:

:vulcan_tone1:

:vulcan_tone2:

:vulcan_tone3:

:vulcan_tone4:

:vulcan_tone5:

:wave:

:wave_tone1:

:wave_tone2:

:wave_tone3:

:wave_tone4:

:wave_tone5:

:weary:

:white_haired:

:wink:

:woman:

:woman_and_man_holding_hands_tone1:

:woman_and_man_holding_hands_tone1_tone2:

:woman_and_man_holding_hands_tone1_tone3:

:woman_and_man_holding_hands_tone1_tone4:

:woman_and_man_holding_hands_tone1_tone5:

:woman_and_man_holding_hands_tone2:

:woman_and_man_holding_hands_tone2_tone1:

:woman_and_man_holding_hands_tone2_tone3:

:woman_and_man_holding_hands_tone2_tone4:

:woman_and_man_holding_hands_tone2_tone5:

:woman_and_man_holding_hands_tone3:

:woman_and_man_holding_hands_tone3_tone1:

:woman_and_man_holding_hands_tone3_tone2:

:woman_and_man_holding_hands_tone3_tone4:

:woman_and_man_holding_hands_tone3_tone5:

:woman_and_man_holding_hands_tone4:

:woman_and_man_holding_hands_tone4_tone1:

:woman_and_man_holding_hands_tone4_tone2:

:woman_and_man_holding_hands_tone4_tone3:

:woman_and_man_holding_hands_tone4_tone5:

:woman_and_man_holding_hands_tone5:

:woman_and_man_holding_hands_tone5_tone1:

:woman_and_man_holding_hands_tone5_tone2:

:woman_and_man_holding_hands_tone5_tone3:

:woman_and_man_holding_hands_tone5_tone4:

:woman_artist:

:woman_artist_tone1:

:woman_artist_tone2:

:woman_artist_tone3:

:woman_artist_tone4:

:woman_artist_tone5:

:woman_astronaut:

:woman_astronaut_tone1:

:woman_astronaut_tone2:

:woman_astronaut_tone3:

:woman_astronaut_tone4:

:woman_astronaut_tone5:

:woman_bald:

:woman_bald_tone1:

:woman_bald_tone2:

:woman_bald_tone3:

:woman_bald_tone4:

:woman_bald_tone5:

:woman_bowing:

:woman_bowing_tone1:

:woman_bowing_tone2:

:woman_bowing_tone3:

:woman_bowing_tone4:

:woman_bowing_tone5:

:woman_construction_worker:

:woman_construction_worker_tone1:

:woman_construction_worker_tone2:

:woman_construction_worker_tone3:

:woman_construction_worker_tone4:

:woman_construction_worker_tone5:

:woman_cook:

:woman_cook_tone1:

:woman_cook_tone2:

:woman_cook_tone3:

:woman_cook_tone4:

:woman_cook_tone5:

:woman_curly_haired:

:woman_curly_haired_tone1:

:woman_curly_haired_tone2:

:woman_curly_haired_tone3:

:woman_curly_haired_tone4:

:woman_curly_haired_tone5:

:woman_detective:

:woman_detective_tone1:

:woman_detective_tone2:

:woman_detective_tone3:

:woman_detective_tone4:

:woman_detective_tone5:

:woman_elf:

:woman_elf_tone1:

:woman_elf_tone2:

:woman_elf_tone3:

:woman_elf_tone4:

:woman_elf_tone5:

:woman_facepalming:

:woman_facepalming_tone1:

:woman_facepalming_tone2:

:woman_facepalming_tone3:

:woman_facepalming_tone4:

:woman_facepalming_tone5:

:woman_factory_worker:

:woman_factory_worker_tone1:

:woman_factory_worker_tone2:

:woman_factory_worker_tone3:

:woman_factory_worker_tone4:

:woman_factory_worker_tone5:

:woman_fairy:

:woman_fairy_tone1:

:woman_fairy_tone2:

:woman_fairy_tone3:

:woman_fairy_tone4:

:woman_fairy_tone5:

:woman_farmer:

:woman_farmer_tone1:

:woman_farmer_tone2:

:woman_farmer_tone3:

:woman_farmer_tone4:

:woman_farmer_tone5:

:woman_firefighter:

:woman_firefighter_tone1:

:woman_firefighter_tone2:

:woman_firefighter_tone3:

:woman_firefighter_tone4:

:woman_firefighter_tone5:

:woman_frowning:

:woman_frowning_tone1:

:woman_frowning_tone2:

:woman_frowning_tone3:

:woman_frowning_tone4:

:woman_frowning_tone5:

:woman_genie:

:woman_gesturing_no:

:woman_gesturing_no_tone1:

:woman_gesturing_no_tone2:

:woman_gesturing_no_tone3:

:woman_gesturing_no_tone4:

:woman_gesturing_no_tone5:

:woman_gesturing_ok:

:woman_gesturing_ok_tone1:

:woman_gesturing_ok_tone2:

:woman_gesturing_ok_tone3:

:woman_gesturing_ok_tone4:

:woman_gesturing_ok_tone5:

:woman_getting_face_massage:

:woman_getting_face_massage_tone1:

:woman_getting_face_massage_tone2:

:woman_getting_face_massage_tone3:

:woman_getting_face_massage_tone4:

:woman_getting_face_massage_tone5:

:woman_getting_haircut:

:woman_getting_haircut_tone1:

:woman_getting_haircut_tone2:

:woman_getting_haircut_tone3:

:woman_getting_haircut_tone4:

:woman_getting_haircut_tone5:

:woman_guard:

:woman_guard_tone1:

:woman_guard_tone2:

:woman_guard_tone3:

:woman_guard_tone4:

:woman_guard_tone5:

:woman_health_worker:

:woman_health_worker_tone1:

:woman_health_worker_tone2:

:woman_health_worker_tone3:

:woman_health_worker_tone4:

:woman_health_worker_tone5:

:woman_in_manual_wheelchair:

:woman_in_manual_wheelchair_tone1:

:woman_in_manual_wheelchair_tone2:

:woman_in_manual_wheelchair_tone3:

:woman_in_manual_wheelchair_tone4:

:woman_in_manual_wheelchair_tone5:

:woman_in_motorized_wheelchair:

:woman_in_motorized_wheelchair_tone1:

:woman_in_motorized_wheelchair_tone2:

:woman_in_motorized_wheelchair_tone3:

:woman_in_motorized_wheelchair_tone4:

:woman_in_motorized_wheelchair_tone5:

:woman_in_steamy_room:

:woman_in_steamy_room_tone1:

:woman_in_steamy_room_tone2:

:woman_in_steamy_room_tone3:

:woman_in_steamy_room_tone4:

:woman_in_steamy_room_tone5:

:woman_judge:

:woman_judge_tone1:

:woman_judge_tone2:

:woman_judge_tone3:

:woman_judge_tone4:

:woman_judge_tone5:

:woman_kneeling:

:woman_kneeling_tone1:

:woman_kneeling_tone2:

:woman_kneeling_tone3:

:woman_kneeling_tone4:

:woman_kneeling_tone5:

:woman_mage:

:woman_mage_tone1:

:woman_mage_tone2:

:woman_mage_tone3:

:woman_mage_tone4:

:woman_mage_tone5:

:woman_mechanic:

:woman_mechanic_tone1:

:woman_mechanic_tone2:

:woman_mechanic_tone3:

:woman_mechanic_tone4:

:woman_mechanic_tone5:

:woman_office_worker:

:woman_office_worker_tone1:

:woman_office_worker_tone2:

:woman_office_worker_tone3:

:woman_office_worker_tone4:

:woman_office_worker_tone5:

:woman_pilot:

:woman_pilot_tone1:

:woman_pilot_tone2:

:woman_pilot_tone3:

:woman_pilot_tone4:

:woman_pilot_tone5:

:woman_police_officer:

:woman_police_officer_tone1:

:woman_police_officer_tone2:

:woman_police_officer_tone3:

:woman_police_officer_tone4:

:woman_police_officer_tone5:

:woman_pouting:

:woman_pouting_tone1:

:woman_pouting_tone2:

:woman_pouting_tone3:

:woman_pouting_tone4:

:woman_pouting_tone5:

:woman_raising_hand:

:woman_raising_hand_tone1:

:woman_raising_hand_tone2:

:woman_raising_hand_tone3:

:woman_raising_hand_tone4:

:woman_raising_hand_tone5:

:woman_red_haired:

:woman_red_haired_tone1:

:woman_red_haired_tone2:

:woman_red_haired_tone3:

:woman_red_haired_tone4:

:woman_red_haired_tone5:

:woman_running:

:woman_running_tone1:

:woman_running_tone2:

:woman_running_tone3:

:woman_running_tone4:

:woman_running_tone5:

:woman_scientist:

:woman_scientist_tone1:

:woman_scientist_tone2:

:woman_scientist_tone3:

:woman_scientist_tone4:

:woman_scientist_tone5:

:woman_shrugging:

:woman_shrugging_tone1:

:woman_shrugging_tone2:

:woman_shrugging_tone3:

:woman_shrugging_tone4:

:woman_shrugging_tone5:

:woman_singer:

:woman_singer_tone1:

:woman_singer_tone2:

:woman_singer_tone3:

:woman_singer_tone4:

:woman_singer_tone5:

:woman_standing:

:woman_standing_tone1:

:woman_standing_tone2:

:woman_standing_tone3:

:woman_standing_tone4:

:woman_standing_tone5:

:woman_student:

:woman_student_tone1:

:woman_student_tone2:

:woman_student_tone3:

:woman_student_tone4:

:woman_student_tone5:

:woman_superhero:

:woman_superhero_tone1:

:woman_superhero_tone2:

:woman_superhero_tone3:

:woman_superhero_tone4:

:woman_superhero_tone5:

:woman_supervillain:

:woman_supervillain_tone1:

:woman_supervillain_tone2:

:woman_supervillain_tone3:

:woman_supervillain_tone4:

:woman_supervillain_tone5:

:woman_teacher:

:woman_teacher_tone1:

:woman_teacher_tone2:

:woman_teacher_tone3:

:woman_teacher_tone4:

:woman_teacher_tone5:

:woman_technologist:

:woman_technologist_tone1:

:woman_technologist_tone2:

:woman_technologist_tone3:

:woman_technologist_tone4:

:woman_technologist_tone5:

:woman_tipping_hand:

:woman_tipping_hand_tone1:

:woman_tipping_hand_tone2:

:woman_tipping_hand_tone3:

:woman_tipping_hand_tone4:

:woman_tipping_hand_tone5:

:woman_tone1:

:woman_tone2:

:woman_tone3:

:woman_tone4:

:woman_tone5:

:woman_vampire:

:woman_vampire_tone1:

:woman_vampire_tone2:

:woman_vampire_tone3:

:woman_vampire_tone4:

:woman_vampire_tone5:

:woman_walking:

:woman_walking_tone1:

:woman_walking_tone2:

:woman_walking_tone3:

:woman_walking_tone4:

:woman_walking_tone5:

:woman_wearing_turban:

:woman_wearing_turban_tone1:

:woman_wearing_turban_tone2:

:woman_wearing_turban_tone3:

:woman_wearing_turban_tone4:

:woman_wearing_turban_tone5:

:woman_white_haired:

:woman_white_haired_tone1:

:woman_white_haired_tone2:

:woman_white_haired_tone3:

:woman_white_haired_tone4:

:woman_white_haired_tone5:

:woman_with_headscarf:

:woman_with_headscarf_tone1:

:woman_with_headscarf_tone2:

:woman_with_headscarf_tone3:

:woman_with_headscarf_tone4:

:woman_with_headscarf_tone5:

:woman_with_probing_cane:

:woman_with_probing_cane_tone1:

:woman_with_probing_cane_tone2:

:woman_with_probing_cane_tone3:

:woman_with_probing_cane_tone4:

:woman_with_probing_cane_tone5:

:woman_zombie:

:womans_clothes:

:womans_flat_shoe:

:womans_hat:

:women_holding_hands_tone1:

:women_holding_hands_tone2:

:women_holding_hands_tone2_tone1:

:women_holding_hands_tone3:

:women_holding_hands_tone3_tone1:

:women_holding_hands_tone3_tone2:

:women_holding_hands_tone4:

:women_holding_hands_tone4_tone1:

:women_holding_hands_tone4_tone2:

:women_holding_hands_tone4_tone3:

:women_holding_hands_tone5:

:women_holding_hands_tone5_tone1:

:women_holding_hands_tone5_tone2:

:women_holding_hands_tone5_tone3:

:women_holding_hands_tone5_tone4:

:women_with_bunny_ears_partying:

:woozy_face:

:worried:

:writing_hand:

:writing_hand_tone1:

:writing_hand_tone2:

:writing_hand_tone3:

:writing_hand_tone4:

:writing_hand_tone5:

:yarn:

:yawning_face:

:yum:

:zany_face:

:zipper_mouth:

:zombie:

:regional_indicator_a:

:regional_indicator_b:

:regional_indicator_c:

:regional_indicator_d:

:regional_indicator_e:

:regional_indicator_f:

:regional_indicator_g:

:regional_indicator_h:

:regional_indicator_i:

:regional_indicator_j:

:regional_indicator_k:

:regional_indicator_l:

:regional_indicator_m:

:regional_indicator_n:

:regional_indicator_o:

:regional_indicator_p:

:regional_indicator_q:

:regional_indicator_r:

:regional_indicator_s:

:regional_indicator_t:

:regional_indicator_u:

:regional_indicator_v:

:regional_indicator_w:

:regional_indicator_x:

:regional_indicator_y:

:regional_indicator_z:

:100:

:1234:

:a:

:ab:

:abc:

:abcd:

:accept:

:anger:

:anger_right:

:aquarius:

:aries:

:arrow_backward:

:arrow_double_down:

:arrow_double_up:

:arrow_down:

:arrow_down_small:

:arrow_forward:

:arrow_heading_down:

:arrow_heading_up:

:arrow_left:

:arrow_lower_left:

:arrow_lower_right:

:arrow_right:

:arrow_right_hook:

:arrow_up:

:arrow_up_down:

:arrow_up_small:

:arrow_upper_left:

:arrow_upper_right:

:arrows_clockwise:

:arrows_counterclockwise:

:asterisk:

:asterisk_symbol:

:atm:

:atom:

:b:

:baby_symbol:

:back:

:baggage_claim:

:ballot_box_with_check:

:bangbang:

:beginner:

:bell:

:biohazard:

:black_circle:

:black_heart:

:black_joker:

:black_large_square:

:black_medium_small_square:

:black_medium_square:

:black_small_square:

:black_square_button:

:blue_circle:

:blue_heart:

:blue_square:

:broken_heart:

:brown_circle:

:brown_heart:

:brown_square:

:cancer:

:capital_abcd:

:capricorn:

:chart:

:children_crossing:

:cinema:

:cl:

:clock1030:

:clock10:

:clock1130:

:clock11:

:clock1230:

:clock12:

:clock130:

:clock1:

:clock230:

:clock2:

:clock330:

:clock3:

:clock430:

:clock4:

:clock530:

:clock5:

:clock630:

:clock6:

:clock730:

:clock7:

:clock830:

:clock8:

:clock930:

:clock9:

:clubs:

:congratulations:

:cool:

:copyright:

:cross:

:cupid:

:curly_loop:

:currency_exchange:

:customs:

:cyclone:

:diamond_shape_with_a_dot_inside:

:diamonds:

:digit_eight:

:digit_five:

:digit_four:

:digit_nine:

:digit_one:

:digit_seven:

:digit_six:

:digit_three:

:digit_two:

:digit_zero:

:do_not_litter:

:eight:

:eight_pointed_black_star:

:eight_spoked_asterisk:

:eject:

:end:

:exclamation:

:eye_in_speech_bubble:

:fast_forward:

:female_sign:

:five:

:fleur-de-lis:

:flower_playing_cards:

:four:

:free:

:gemini:

:gift_heart:

:globe_with_meridians:

:green_circle:

:green_heart:

:green_square:

:grey_exclamation:

:grey_question:

:hash:

:heart:

:heart_decoration:

:heart_exclamation:

:heartbeat:

:heartpulse:

:hearts:

:heavy_check_mark:

:heavy_division_sign:

:heavy_dollar_sign:

:heavy_minus_sign:

:heavy_multiplication_x:

:heavy_plus_sign:

:high_brightness:

:hotsprings:

:id:

:ideograph_advantage:

:infinity:

:information_source:

:interrobang:

:keycap_ten:

:koko:

:large_blue_diamond:

:large_orange_diamond:

:left_luggage:

:left_right_arrow:

:leftwards_arrow_with_hook:

:leo:

:libra:

:loop:

:loud_sound:

:loudspeaker:

:low_brightness:

:m:

:mahjong:

:male_sign:

:medical_symbol:

:mega:

:menorah:

:mens:

:mobile_phone_off:

:musical_note:

:mute:

:name_badge:

:negative_squared_cross_mark:

:new:

:ng:

:nine:

:no_bell:

:no_bicycles:

:no_entry:

:no_entry_sign:

:no_mobile_phones:

:no_pedestrians:

:no_smoking:

:non-potable_water:

:notes:

:o2:

:o:

:octagonal_sign:

:ok:

:om_symbol:

:on:

:one:

:ophiuchus:

:orange_circle:

:orange_heart:

:orange_square:

:orthodox_cross:

:parking:

:part_alternation_mark:

:passport_control:

:pause_button:

:peace:

:pisces:

:place_of_worship:

:play_pause:

:pound_symbol:

:purple_circle:

:purple_heart:

:purple_square:

:put_litter_in_its_place:

:question:

:radio_button:

:radioactive:

:record_button:

:recycle:

:red_circle:

:red_square:

:registered:

:repeat:

:repeat_one:

:restroom:

:revolving_hearts:

:rewind:

:sa:

:sagittarius:

:scorpius:

:secret:

:seven:

:signal_strength:

:six:

:six_pointed_star:

:small_blue_diamond:

:small_orange_diamond:

:small_red_triangle:

:small_red_triangle_down:

:soon:

:sos:

:sound:

:spades:

:sparkle:

:sparkling_heart:

:speaker:

:speech_balloon:

:speech_left:

:star_and_crescent:

:star_of_david:

:stop_button:

:symbols:

:taurus:

:thought_balloon:

:three:

:tm:

:top:

:track_next:

:track_previous:

:trident:

:twisted_rightwards_arrows:

:two:

:two_hearts:

:u5272:

:u5408:

:u55b6:

:u6307:

:u6708:

:u6709:

:u6e80:

:u7121:

:u7533:

:u7981:

:u7a7a:

:underage:

:up:

:vibration_mode:

:virgo:

:vs:

:warning:

:wavy_dash:

:wc:

:wheel_of_dharma:

:wheelchair:

:white_check_mark:

:white_circle:

:white_flower:

:white_heart:

:white_large_square:

:white_medium_small_square:

:white_medium_square:

:white_small_square:

:white_square_button:

:womens:

:x:

:yellow_circle:

:yellow_heart:

:yellow_square:

:yin_yang:

:zero:

:zzz:

:aerial_tramway:

:airplane:

:airplane_arriving:

:airplane_departure:

:airplane_small:

:ambulance:

:anchor:

:articulated_lorry:

:auto_rickshaw:

:bank:

:beach:

:beach_umbrella:

:bike:

:blue_car:

:bridge_at_night:

:bullettrain_front:

:bullettrain_side:

:bus:

:busstop:

:camping:

:canoe:

:carousel_horse:

:church:

:city_dusk:

:city_sunset:

:cityscape:

:classical_building:

:construction:

:construction_site:

:convenience_store:

:cruise_ship:

:department_store:

:desert:

:european_castle:

:european_post_office:

:factory:

:ferris_wheel:

:ferry:

:fire_engine:

:fireworks:

:flying_saucer:

:foggy:

:fountain:

:fuelpump:

:helicopter:

:hindu_temple:

:homes:

:hospital:

:hotel:

:house:

:house_abandoned:

:house_with_garden:

:island:

:japan:

:japanese_castle:

:kaaba:

:light_rail:

:love_hotel:

:manual_wheelchair:

:map:

:metro:

:milky_way:

:minibus:

:monorail:

:mosque:

:motor_scooter:

:motorboat:

:motorcycle:

:motorized_wheelchair:

:motorway:

:mount_fuji:

:mountain:

:mountain_cableway:

:mountain_railway:

:mountain_snow:

:moyai:

:night_with_stars:

:office:

:oncoming_automobile:

:oncoming_bus:

:oncoming_police_car:

:oncoming_taxi:

:park:

:police_car:

:post_office:

:race_car:

:railway_car:

:railway_track:

:red_car:

:rice_scene:

:rocket:

:roller_coaster:

:rotating_light:

:sailboat:

:satellite_orbital:

:school:

:scooter:

:seat:

:shinto_shrine:

:ship:

:sparkler:

:speedboat:

:stadium:

:stars:

:station:

:statue_of_liberty:

:steam_locomotive:

:sunrise:

:sunrise_over_mountains:

:suspension_railway:

:synagogue:

:taxi:

:tent:

:tokyo_tower:

:tractor:

:traffic_light:

:train2:

:train:

:tram:

:trolleybus:

:truck:

:vertical_traffic_light:

:volcano:

:wedding:

Location

Wiki allows to point links to locations within XMLPortal. This makes easy linking among portal contexts. Current location functions are:

repository(file_location_within_repository)

This function returns full repository location plus file_location_within_repository. File's location must start with a slash.

context(location_within_portal)

This function returns full application context plus location_within_portal. Location must start with a slash. Context deals with application's deployed context, thus, for web applications deployed at root context, result string will be empty, whereas for the rest will return to /application_context

current(extra_parameters)

Current refers to the current portal context, thus linking to current function will end you up to the same context you already are. This function is intended to add parameters .

More location options in anchor.

Tips and tricks

Break headers in multiple lines

In wiki, a header is a single line starting with ---+. The moment you press enter key and create a new line, you also stop the header. In order to split a header in multiple lines, use the %BR% macro. %BR% generates a new line, but continues the same line as for wiki processor.

The wiki text

[block(center)]
---+++Centered header%BR%with multiple%BR%lines
[/block]

Will compile into

Centered header
with multiple
lines

List element with multiple lines

Lists are represented by one or more spaces followed by * or 1. As it happen with headers, list elements use a single line. You can split the line into multiple lines using the %BR% macro.

The wiki text

 * **A list element**%BR%With some description...
 * **A second element**%BR%With some more description attached...

Will compile into

Conditional visibility

By using macros, you can control elements visibility. We'll use two macros, {@user} and {@equals}. The first one will check if current user id is blank, in which case no user is authenticated. The second macro will expand to none when user id is blank, and to blank otherwise.

The wiki text

[block(display:{@equals:{@user:id}::none: })]
Hello {@user:name}!
[/block]

The statement the equals macro aims to resolve is: if user id is blank, write none, otherwise write one space. Read more about the equals macro in anchor.

Will compile into, visible only when authenticated

Hello !

If you're an unauthenticated visitor, you'll be able to see the invisible block by inspecting the element.
CSS and attributes

Most of wiki blocks, in the form of [element], accept passing CSS style attributes and element attributes. There are several differences, though. Styles are separated by comma instead of semicolon. They are introduced directly between parenthesis, not in a style attribute. Element attributes, for example class, are prefixed with &.

Let's see by example using the [block] element:

CSS styles

Wiki

[block(background-color:#eee,color:#333,padding:5px 10px)]

Result

<div style="background-color:#eee;color:#333;padding:5px 10px;">

Class attribute

Wiki

[block(&class:ui segment)]

Result

<div class="ui segment">

Mixing both

Wiki

[block(&class:ui segment,background-color:#eee,color:#333,padding:5px 10px)]

Result

<div class="ui segment" style="background-color:#eee;color:#333;padding:5px 10px;">

For full CSS specification details see CSS at W3C. Starters might prefer LEARN & USE.

HTML

It is possible to write HTML directly. If you do so, the wiki processor will add unnecessary paragraphs and new lines. To avoid this behavior, stop wiki by writing $no_wiki. You can start it whenever you want by writing $wiki.

Best practices

The recommended way to add the $wiki and $no_wiki directives, is using an empty line. Mainly when stopping the wiki processor.

To understand why an empty line, you need to know what happen behind scenes. The wiki processor maintains a stack with all the elements created. When stops, the processor ensures that all the elements still open are closed, in the correct order. If you stop the processor, for instance, inside a [block], the processor will generate a [/block].

Java

Writing colored Java code is very simple using $java in an empty line. Following text will be considered Java code.

public void main(String[] args) {
  public final String hello = "Hello!";
  public final int INITIAL_MODE = 23;
  // here will come your code
}
Java, as with wiki syntax, ends with $no_java.
XML

Writing colored XML is very simple using $xml in an empty line. Following text will be considered XML.

<task id="1">
  <responsible id="19"/>
  <parent id="12"/>
</task>
XML, as with wiki syntax, ends with $no_xml.
UI Frameworks
Get along with JavaScript frameworks and Elephant Wiki

This site uses Semantic-UI / Fomantic-UI. It also uses the wiki syntax in all pages.

Adding the class attribute to wiki elements

Wiki elements accept CSS style attributes directly within parenthesis. When adding (attribute:value) wiki expands to style="attribute:value". Attributes starting with & are treated as non-style attributes and became an HTML element attribute. This is the case for class.

Wiki

Expanded HTML

Result

[html(&class:ui button)]Button[/html]
<div class="ui button">Button</div>
Button

Mixing class and style attributes

It is possible to use both, class and style attributes in wiki elements. Simply add style attributes separated by comas.

Wiki

Expanded HTML

Result

[html(&class:ui button,font-style:oblique,text-transform:uppercase)]Button[/html]
<div class="ui button" style="font-style:oblique;text-transform:uppercase;">Button</div>
Button

Wiki elements relation to HTML

Wiki

Results in

Description

[html]
<div>

Accepting characters block. Will not create new lines or paragraphs. See Blocks .

[block]
<div>

Non accepting characters block. Creates new lines and paragraphs when an empty line is given. See Blocks .

[span]
<span>

Creates an in line element. See Spans .

[link]
<a>

Creates an anchor. See Links .

[joker(element)]
<element>

Creates an accepting characters element named as the first parameter. See Joker .

The joker as a joker

The joker wiki element can emulate any HTML element. Let's see a joker as an HTML anchor.

Wiki

Expanded HTML

Result

[joker(a,&href:/docs,&class:ui button,text-transform:uppercase)]Docs[/joker]
<a href="/docs" class="ui button" style="text-transform:uppercase;">Docs</a>
Docs

When to use html or block

As you probably noticed, html and block wiki elements do much the same. They create an HTML div with the difference of accepting or not characters. When accepting characters, the element does not create new lines or paragraphs.

When creating Semantic-UI grids, the grid requires the use of html. Columns may use html or block depending on their content. For example, if the column content is text, is preferable to use block. If the content is mainly other elements, use html instead.

The two blocks of construction would be:

For text columns

[html(&class:ui two column grid)]
[block(&class:column)]
Some text.
[/block]
[block(&class:column)]
Some other text.
[/block]
[/html]

For more element columns

[html(&class:ui two column grid)]
[html(&class:column)]
[block(&class:ui segment)]Some segment.[/block]
[/html]
[html(&class:column)]
[block(&class:ui segment)]Some other segment.[/block]
[/html]
[/html]
Useful templates

These templates use the wiki syntax to create Semantic-UI elements. By default, Elephant uses the template-semantic root for web templates.

Web site solution vs. Email solution

It's important to understand differences between the content published in the web from that sent by email.

Emails cannot use web frameworks. Email applications do not allow the whole set of CSS rules, neither accept executing all JavaScript code. In short, emails use a subset of the wiki syntax in order to allow publications to be sent by email and show as expected. As a rule, do not use framework specific classes in email content.

Left image, right centered text

Web site solution


This is an example of middle and center aligned text

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

Code

[html(&class:ui stackable middle aligned grid)]
[html(&class:six wide column,padding-top:0px,margin:0px,line-height:0px)]
[img repository(/abstractal1.jpg)]
[/html]
[html(&class:ten wide column)]
[block(&class:ui basic center aligned text container segment,font-size:2.1em)]
---+This is an example of middle and center aligned text

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
[/block]
[/html]
[/html]

Email solution


This is an example of middle and center aligned text

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

Code

[column(width:35%)]
[img repository(/abstractal1.jpg)]
[column(width:65%,text-align:center,vertical-align:middle,font-size:2.1em)]
---+This is an example of middle and center aligned text

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
[/column]
[/no-format]
Video
This example requires Semantic-UI / Fomantic-UI.

Although you can disconnect wiki syntax, this example shows how you could mix both. In normal cases, you will add this code within stackable grids, cards, items and so on, to create a better user experience.

Wiki

The data-id is the YouTube video code. This code is visible in the URL as a parameter or part of the path, depending if is a share URL or you're watching in YouTube.

[html(&class:ui embed normal,&data-source:youtube,&data-id:eCBUrsqVfgE)][/html]

Result

EWiki (Beta)

A new version of the wiki interpreter is coming. There are some major features that may change the way wiki is used, although the intention is to be backward compatible.

Check EWiki syntax for updates.

New features

Error handling

The interpreter will be able to inform about formatting errors and point them in the editor.

The agnostic tag

Tags can be created despite not being in the specification. This overpowers the old joker tag.

Mixed content

The directives related to changing the interpreter mode are no longer required. HTML can be embedded within wiki causing no extra formatting, except for text containers. Java code and XML can be included as blocks or inline using enclosing java and xml tags.

Easy escaping characters

Any character can be escaped using the back slash.

Quoted or double-quoted tag parameters

Complex strings can be quoted or double-quoted. No need to escape the double dot in URLs, simply quote it.

Common non-style attributes

The class attribute no longer needs to be prefixed with &. The more usual attributes will follow the same direction.

Tagged templates

Tags with existing templates are rendered using the template.

HTML beautified

HTML output block indented. Missing tags corrected, even if not in the specification.