Some Built-in Types
Add RichTextRich text, and it's the default cardtype. Uses a simple wysiwyg editor.
TestOne+shady connectionsWelcome+hospitalityWelcome+kindnessWelcome+code reuseWelcome+shady connectionsLewis Hoffman+ResumeLewis Hoffman+Resume+skillsLewis Hoffman+Resume+experienceLewis Hoffman+Resume+educationEthan McCutchen+emailWalnut St. Co-op+phoneWalnut St. Co-op+mofoWalnut St. Co-op+websiteBug Report+doneBug Report+back burnerBug Report+todoBug Report+feedbacknode+APIBug Report+v0.4Bug Report+v0.4+todo
Add PlainTextPlainText cards are for unstyled text.drew bernard+nerdy nicknameVlad Metrik+nerdy nicknameRik Smoody+nerdy nicknameMMO Gold farming+Articlewelcome email+*text messagework phone+*right+*defaultPlainText : emptyJean Nurture Girl Russell+nerdy nicknamename of contact+*right+*defaultPlainText : emptyMeyer Memorial Trust+street addressArticle+*type+*defaultPlainText : title:{{+article|display:inline}} author:{{+article|display:inline}} date:{{+article|display:inline}} comments:{{+article|display:inline}}DukeNukemIV+nerdy nicknamemobile phone+*right+*defaultPlainText : emptybruder+nerdy nicknameGrant Kruger+nerdy nicknamestreet address+*right+*defaultPlainText : emptyhome phone+*right+*defaultPlainText : emptyDesign+Pointer+example 1Vinh Nguyen+nerdy nicknameLewis Hoffman+nerdy nicknamefollower notification email+*text message
Add HTMLThese cards allow unrestricted use of HTML. See the documentation on HTML cards.
home+originalsubtitle videos+html to appendAnimal+*type+*structureHTML :{{+feature}} {{+How Tos|titled; title: _right}}{{+headline| content}}{{+svg| content; size: large}}Circle 28: styling views+broadcastwikirate+storyWagn 1.3+Classic Layout*getting started+SharkCircle 31: Wikirate.org+broadcastCircle 13: Revival+broadcastCircle 8: Wagn Query Language (WQL)+broadcastEditing Eagle+svgCircle 7: Files and Images+broadcastCode Monkey+svgPlatform Platypus+svgBrowsing Butterfly+svgCircle 21: Pointers+broadcastWagn Circle+broadcast+*type plus right+*defaultHTML : emptyCard Shark+svgCardtype+*type+*structureHTML : {{+:description|content}} {{_|add_button}}{{_|configure_button}} {{+:type+:by_name|content}}
Add ImageOn Wagn you upload images to Image cards, then include them wherever you want the image to appear. Learn more about Image cards.
Card Shark+screenshottomwhyte1+ImageNavjeet Chabbewal+ImageSearch bar sometimes becomes unusable+screenshot2Code Monkey+screenshotMatthew Platte+ImageEditing Eagle+screenshotBrowsing Butterfly+screenshotCan't create account for existing card+screenshotIs there an optimum size for the resampling of images that Decko does?+screenshoterror code 500 cannot create new account (signup)+screenshotroc+ImageLewis Hoffman+Imagestedawa+ImageDavid Yarnell Jr.+Imagesamskivert+ImageSam Rose+ImageDrew+Imagerjbs+ImageList View (checkbox) Not Respected on New+screenshot
Add FileUploaded files are stored with Files cards: cards whose type is "File".
Creating or editing a File card will prompt you with a standard upload interface.
security
Most content managers do not check permissions on file downloads; if you know the url, you can get the file. They may try to keep the url a secret, but the internet being what it is, that's not a terribly safe approach.
By contrast, Wagn checks card permissions on every user's initial download of every protected file.
In technical terms, most systems expose directories of uploaded files directly to the webserver, so that the application isn't involved in any way in web requests. That makes it pretty much impossible for the application to check permissions on the files. Wagn, on the other hand, associates every file (including every image) with a card, and the read permissions on the card are equivalent to the read permissions on the file. Once Wagn determines that the user has permission to view the file, it hands the process back to the server (via xsendfile), and the download begins.
performance
Won't all this extra permission checking slow things down? The primary answer is that we keep things fast by only doing these checks once. Wagn gives unique urls to each file and image revision and instructs browsers to use cached versions of those revisions after the first download.
We will also soon be implementing optimizations to insure that public files (those that can be read by "Anyone") will skip permission checking altogether.
urls / api
Web API
/<cardname>
/<cardname>.<ext> # accepts "rev" param specify revision number /files/<card_id>/<action_id>.<ext>
Examples: GET /my_paper # returns card (html page). content is download link GET /my_paper.pdf # returns file. most recent revision. browser cannot cache GET /files/~67/12345.pdf # this is what is linked to in card content. returns file. server tells browser to cache permanently.
file storage
files/:card_id/:action_id[-:size].:extension
- by default the files directory is in "local" before 1.13 and in the app root beginning with 1.13
- you can configure a custom files directory in wagn.yml with "attachment_storage_dir"
- the files should NOT be directly exposed to the webserver (eg, by putting it in the "public" directory); this would negate all the value of wagn's permission checking.
- :size only applies to images and can be any of the following: icon, small, medium, large, original
special views
All file cards have a "source" view that will provide a standard url for the card (see the third variant above).
mod: carrierwave+*script+*asset outputmod: date+*script+*asset outputmod: rules+*script+*asset outputmod: tinymce_editor+*script+*asset output*all+*style+*asset outputmod: format+*script+*asset outputmod: list+*script+*asset outputmod: search+*script+*asset outputmod: edit+*script+*asset outputmod: bootstrap+*script+*asset outputmod: bar_and_box+*script+*asset outputmod: follow+*script+*asset outputmod: tabs+*script+*asset outputmod: layout+*script+*asset outputmod: recaptcha+*script+*asset outputmod: shades+*script+*asset outputmod: account+*script+*asset outputmod: ace_editor+*script+*asset outputmod: script+*script+*asset output*new file
Pointer cards let you create and maintain lists of cards.Add Pointer
They are a key tool in Wagneering, for relating cards to other cards.
For example, let's say you are setting up a Wagn for a conference that features lots of break-out sessions, and you want to know later who went to what session. You would create a Session cardtype, and on its form you would include a Pointer, which on each Session would list the people who participated in that session. What Pointers "point" to is one or more cards (or none), so in this example it would be pointing to each participant's User card.
This approach has several advantages over typing people's names into a regular text card:
- You can pick an editing interface to suit the situation (auto-complete, checkboxes, dropdown menu, etc.)
- There's no markup required to link to or include the cards you want to list.
- You can easily set the views of all the items in the pointer wherever you include it using the "item" property. E.g., Items will appear by default in closed view.
- You can draw on the information in other places. In the example given above, you could then add to the structure of User cards a Search card to automatically list the sessions they've attended.
In view mode, Pointers have an "add/edit" link beneath them which you can click on to go to edit mode.
+editing
Pointers have several different edit interfaces, which may be set using the *input setting.
To continue our example from above, assume you include a Pointer called "+participants" on the Session form. In that case, you can set "Participants+*right+*input" to be any of the following input types.
list
"List" view is the default interface for Pointers. It is basically a series of autocomplete fields.
In list view, when you start typing an item, Wagn will do its best to fill in the rest by listing the names of existing cards that begin with whatever you typed in (much like it does in the navbox).
radio
A list of radio buttons, each for one card. One and only one may be selected.
checkbox
A list of checkboxes, each for one card. You can select as few or as many as you want.
select
A dropdown menu of cards.
multiselect
A box listing all the relevant cards and allowing any number to be selected.
+options
You don't want every card in your Wagn to be listed. Even a brand new "empty" Wagn has hundreds of cards, and yours may have thousands or more! To narrow the options, you can add a *options setting which will be a Pointer (by default, but it can also be a Search) for just the cards you want listed. For example, continuing the example if you add "participants+*right+*options" as a Search card with the CQL {"type": "User"} then only User cards would be listed when editing "Making Wikis Welcome+participants".
Actually, in that example there might be so many users that we wouldn't want to have all of the names on screen. If so, you'd use "list" as the *input setting, which lets people type in a name. This could be any card they want (even cards that don't yet exist), but the Pointer will autofill cards that are in +*options. So in our example, this would mean that if I typed "Ja", then the pointer would autocomplete users' names beginning with "Ja".
Option labels
Checkboxes and radio buttons can have supplementary information next to each option. Let's say in our conference website example that we invite each person to share information about themselves on their User card in an included card called "+about me". And then we decided it would be useful to show that information on the Session card when editing our +participant Pointer. We can achieve this by creating an "participant+*option label" setting and setting its content to be "about me".
John Abbe+tagJohn Abbe+facilitatesJohn Abbe+countries visitedDahl+priority+*right+*defaultPointer : lowsupport wql count for end users+priorityDouble-click doesn't edit templates+priorityEscaping for links and inclusion+prioritySearch by permissions+priorityallow contextual right-side in links and inclusions+prioritynames for ticket priority+priorityalways apply soft form+priorityTransform existing card to User card+prioritysupport simple import and export+priorityCan't use Related tab button to relate cards+priorityimplement calculations+priorityPaging busted on search+priorityshow the image or file when in Edit mode+prioritySearch on *plus cards over-finding+priorityNo paging interface when only one page+priority
Add SearchSearch cards use WQL, the Wagn Query Language. See syntax documentation.
in progress tickets+*right+*structureSearch : {"type": "Ticket", "plus": ["tag", {"refer_to": "_left"} ], "right_plus": ["status", {"refer_to": "in progress"} ], "view": "closed" }acknowledged+*right+*structureSearch : {"found_by": "_left", "plus": ["status", {"match": "acknowledged"} ] }answered+*right+*structureSearch : {"found_by": "_left", "right_plus": ["status", {"refer_to": "answered"} ] }name8+*right+*structureSearch : /* Plussing any cardtype card to name8 gets cards of that type in groups of 8 */ {"type": "_left", "limit": 8, "sort": "name", "view": "link"}John Abbe+some tickets*attach+*right+*content options{"type": "File", "sort": "update" }closed+*right+*structureSearch : { "found_by": "_left", "right_plus": ["status", {"match": "closed"} ] }re+*right+*content options{"type": ["in", "Deck", "Lead", "Idea","Ticket","Document...Ticket+*right+*content options{"type": "Ticket", "plus": ["status", {"not": {"refer_to...reference test+Searchtags these people+*right+*structureSearch : {"type": "User", "plus": ["tag", {"refer_to": "_LL"} ] }User Story+tag+*type plus right+*content options{"or": { "and": {"type": ["in","Ticket","Idea"], ...can't reproduce+*right+*structureSearch : {"found_by": "_left", "plus": ["status", {"match": "can't reproduce"} ] }testing tickets+*right+*structureSearch : {"type": "Ticket", "plus": ["tag", {"refer_to": "_left"} ], "right_plus": ["status", {"refer_to": "testing"} ], "view": "closed" }open tickets+*right+*structureSearch : {"type": "Ticket", "plus": ["tag", {"refer_to": "_left"} ], "right_plus": ["status", {"refer_to": "open"} ], "view": "closed" }closed tickets+*right+*structureSearch : {"type": "Ticket", "plus": ["tag", {"refer_to": "_left"} ], "right_plus": ["status", {"refer_to": "closed"} ] }Nested $keyword in Search Fails+test search
Add SetA set is a card that defines a group of cards.
Any given card belongs to multiple sets. For example, the card named Wiki on Wheels is a member of these three sets:
- *all (All Cards)
- RichText+*type (All Basic Cards)
- Wiki on Wheels+*self (Just "Wiki on Wheels")
Rules are created by connecting Settings to Sets with the following formula:
Each Set card offers a convenient interface for viewing and editing related Rules. For example:
Rules
*all+*structure *all+*defaultRichText : empty *all+*autoname
*all+*captchayes
*all+*head{{:head|core}} *all+*layoutdecko org layout 2 *all+*styleDECKO ORG SKIN *all+*script16 items
*all+*help *all+*input type *all+*guideEditing Guide This default guide will appear in the full...
*all+*on create *all+*on update *all+*on delete
*all+*thanks *all+*follow fields*nests *all+*followThere are currently eight kinds of sets. From broadest to narrowest, they are:
- All Cards: *all
- All Plus Cards: *all plus — (learn about plus cards)
- All Cards of Type X: |Type X|+*type — (learn about card types)
- Star Cards: *star — (learn about star cards)
- Cards ending in +(Star Card): *rstar
- Cards ending in +(Name X): |Name X|+*right
- (Type X) + (Name Y) Cards: |Type X|+|Name Y|+*type plus right
- A Single Card: |Name X|+*self
Any rule on narrower set (higher number) will override a broader one (lower number).
For example, suppose you want to have a special layout for a card named "World Map". You can set the layout for that one card with the following Rule: "World Map+*self+*layout". Note that this connects a Set of one card ("World Map+*self") to the Setting "*layout". This rule would overrule any broader *layout rule, such as *all+*layout, because the single card set (#8 above) is narrower than the set of all cards (#1 above).
crasch+*selfBrandon WilliamsCraig+*selfLabeled contents on more than one line+*selfRakesh Goel+*selfUser Story+*typeProject Status+*typeSupport Ticket+*typeRecipe+*typePoint Releases+*type*credit_image+*selfBrandon WilliamsCraig+wiki+*self*to+*rightNot getting a cardtype option for adding a new card+*self*header 1+*selfWinston+*selfSlide+*type*left+*rightluwilburmaclab+*selfRecursive permissions?+*selfEvan Schmidt+*self
Add SettingSettings (or Rule Types) are options about how a card looks and behaves.
A Rule applies a specific Setting to a specific Set of cards. For example, the *update setting governs who can update cards. So one could make a rule with that setting that says only Administrators can create HTML cards.
See the Rule card to learn more about how to use Decko Rules.Note: the Setting+howto video is badly out of date and thus removed from this page. We hope to update it soon.
*autoname*captcha*content options*content option view*create*csv structure*default*default html view*delete*follow*follow fields*guide*head*help*input type*layout*on create*on delete*on update*read
Add CardtypeEvery card has a type, which shapes what kind of information goes into it. You can also add your own cardtypes. To learn more, read the documentation about card types.
Text
RichTextPlainTextMarkdownPhraseHTMLData
NumberToggleDateURIUpload
FileImageCustom
Support TicketOrganize
listPointerSearchLink listNest listTemplate
Notification templateEmail templateTwitter templateAdmin
CardtypeUserRoleSign upsessionsSetSettingStyling
LayoutSkinBootswatch skinCSSSCSSScripting
JSONJavaScriptCoffeeScript
Some Custom Types
Add CompanySome companies that we've worked with, have friends in, or just find interesting.
AboutUsBeyond YesChaotic Needs, IncGeek GeneMeyer Memorial TrustPermabitSocialtextmore_horizopen_in_full pagefullscreen modaledit editspace_dashboard advancedTargeted Currencies Network
If you've got a question, a bug to report, or an idea for improving Decko, we warmly invite you to
add a Support Ticket!
If you would like more substantial support, including a support contract, please see our services page.
Open
Acknowledged
Pending
Answered
Can't Reproduce
Closed
Add Ideacquin+wiki+issuesRESTful Web API+Racka way for WQL to follow rule logica way to filter cardtype menua way to size images listed by a Pointer or searchability to completely delete a cardacceptance testingAccount Cards for UsersAction Link to Create a Plus Cardactivate controls by clicking on wordsActive Cards ModelsActive Update Cardsadd a card for robots.txtadd a data viewadd a mechanism to reenable migration for edited cardAdd a mod to play sound filesadd a modular mechanism for custom URLsadd a special missing view for imagesadd a way to hide "0 results" in empty Search resultsadd a way to make links open in a new tab or window