diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000000..c6c8b36219 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,9 @@ +root = true + +[*] +indent_style = space +indent_size = 2 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true diff --git a/.github/styles/Google/AMPM.yml b/.github/styles/Google/AMPM.yml new file mode 100644 index 0000000000..fbdc6e4f84 --- /dev/null +++ b/.github/styles/Google/AMPM.yml @@ -0,0 +1,9 @@ +extends: existence +message: "Use 'AM' or 'PM' (preceded by a space)." +link: 'https://developers.google.com/style/word-list' +level: error +nonword: true +tokens: + - '\d{1,2}[AP]M' + - '\d{1,2} ?[ap]m' + - '\d{1,2} ?[aApP]\.[mM]\.' diff --git a/.github/styles/Google/Acronyms.yml b/.github/styles/Google/Acronyms.yml new file mode 100644 index 0000000000..f41af0189b --- /dev/null +++ b/.github/styles/Google/Acronyms.yml @@ -0,0 +1,64 @@ +extends: conditional +message: "Spell out '%s', if it's unfamiliar to the audience." +link: 'https://developers.google.com/style/abbreviations' +level: suggestion +ignorecase: false +# Ensures that the existence of 'first' implies the existence of 'second'. +first: '\b([A-Z]{3,5})\b' +second: '(?:\b[A-Z][a-z]+ )+\(([A-Z]{3,5})\)' +# ... with the exception of these: +exceptions: + - API + - ASP + - CLI + - CPU + - CSS + - CSV + - DEBUG + - DOM + - DPI + - FAQ + - GCC + - GDB + - GET + - GPU + - GTK + - GUI + - HTML + - HTTP + - HTTPS + - IDE + - JAR + - JSON + - JSX + - LESS + - LLDB + - NET + - NOTE + - NVDA + - OSS + - PATH + - PDF + - PHP + - POST + - RAM + - REPL + - RSA + - SCM + - SCSS + - SDK + - SQL + - SSH + - SSL + - SVG + - TBD + - TCP + - TODO + - URI + - URL + - USB + - UTF + - XML + - XSS + - YAML + - ZIP diff --git a/.github/styles/Google/Colons.yml b/.github/styles/Google/Colons.yml new file mode 100644 index 0000000000..99363fbd46 --- /dev/null +++ b/.github/styles/Google/Colons.yml @@ -0,0 +1,8 @@ +extends: existence +message: "'%s' should be in lowercase." +link: 'https://developers.google.com/style/colons' +nonword: true +level: warning +scope: sentence +tokens: + - ':\s[A-Z]' diff --git a/.github/styles/Google/Contractions.yml b/.github/styles/Google/Contractions.yml new file mode 100644 index 0000000000..6c363129e5 --- /dev/null +++ b/.github/styles/Google/Contractions.yml @@ -0,0 +1,31 @@ +extends: substitution +message: "Use '%s' instead of '%s'." +link: 'https://developers.google.com/style/contractions' +level: suggestion +ignorecase: true +action: + name: replace +swap: +# Decidim reverses this rule, and do not use contractions, so this is tweaked accordingly. + aren't: are not + can't: cannot + couldn't: could not + didn't: did not + don't: do not + doesn't: does not + hasn't: has not + haven't: have not + how's: how is + isn't: is not + it's: it is + shouldn't: should not + that's: that is + they're: they are + wasn't: was not + we're: we are + we've: we have + weren't: were not + what's: what is + when's: when is + where's: where is + won't: will not diff --git a/.github/styles/Google/DateFormat.yml b/.github/styles/Google/DateFormat.yml new file mode 100644 index 0000000000..e9d227fa13 --- /dev/null +++ b/.github/styles/Google/DateFormat.yml @@ -0,0 +1,9 @@ +extends: existence +message: "Use 'July 31, 2016' format, not '%s'." +link: 'https://developers.google.com/style/dates-times' +ignorecase: true +level: error +nonword: true +tokens: + - '\d{1,2}(?:\.|/)\d{1,2}(?:\.|/)\d{4}' + - '\d{1,2} (?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)|May|Jun(?:e)|Jul(?:y)|Aug(?:ust)|Sep(?:tember)?|Oct(?:ober)|Nov(?:ember)?|Dec(?:ember)?) \d{4}' diff --git a/.github/styles/Google/Ellipses.yml b/.github/styles/Google/Ellipses.yml new file mode 100644 index 0000000000..1e070517bf --- /dev/null +++ b/.github/styles/Google/Ellipses.yml @@ -0,0 +1,9 @@ +extends: existence +message: "In general, don't use an ellipsis." +link: 'https://developers.google.com/style/ellipses' +nonword: true +level: warning +action: + name: remove +tokens: + - '\.\.\.' diff --git a/.github/styles/Google/EmDash.yml b/.github/styles/Google/EmDash.yml new file mode 100644 index 0000000000..1befe72aa8 --- /dev/null +++ b/.github/styles/Google/EmDash.yml @@ -0,0 +1,12 @@ +extends: existence +message: "Don't put a space before or after a dash." +link: 'https://developers.google.com/style/dashes' +nonword: true +level: error +action: + name: edit + params: + - remove + - ' ' +tokens: + - '\s[—–]\s' diff --git a/.github/styles/Google/EnDash.yml b/.github/styles/Google/EnDash.yml new file mode 100644 index 0000000000..b314dc4e98 --- /dev/null +++ b/.github/styles/Google/EnDash.yml @@ -0,0 +1,13 @@ +extends: existence +message: "Use an em dash ('—') instead of '–'." +link: 'https://developers.google.com/style/dashes' +nonword: true +level: error +action: + name: edit + params: + - replace + - '-' + - '—' +tokens: + - '–' diff --git a/.github/styles/Google/Exclamation.yml b/.github/styles/Google/Exclamation.yml new file mode 100644 index 0000000000..eea5fd24bd --- /dev/null +++ b/.github/styles/Google/Exclamation.yml @@ -0,0 +1,9 @@ +extends: existence +message: "Don't use exclamation points in text." +link: 'https://developers.google.com/style/exclamation-points' +nonword: true +level: error +action: + name: remove +tokens: + - '\w+!(?:\s|$)' diff --git a/.github/styles/Google/FirstPerson.yml b/.github/styles/Google/FirstPerson.yml new file mode 100644 index 0000000000..0b7b8828ca --- /dev/null +++ b/.github/styles/Google/FirstPerson.yml @@ -0,0 +1,13 @@ +extends: existence +message: "Avoid first-person pronouns such as '%s'." +link: 'https://developers.google.com/style/pronouns#personal-pronouns' +ignorecase: true +level: warning +nonword: true +tokens: + - (?:^|\s)I\s + - (?:^|\s)I,\s + - \bI'm\b + - \bme\b + - \bmy\b + - \bmine\b diff --git a/.github/styles/Google/Gender.yml b/.github/styles/Google/Gender.yml new file mode 100644 index 0000000000..c8486181d6 --- /dev/null +++ b/.github/styles/Google/Gender.yml @@ -0,0 +1,9 @@ +extends: existence +message: "Don't use '%s' as a gender-neutral pronoun." +link: 'https://developers.google.com/style/pronouns#gender-neutral-pronouns' +level: error +ignorecase: true +tokens: + - he/she + - s/he + - \(s\)he diff --git a/.github/styles/Google/GenderBias.yml b/.github/styles/Google/GenderBias.yml new file mode 100644 index 0000000000..9e70190863 --- /dev/null +++ b/.github/styles/Google/GenderBias.yml @@ -0,0 +1,47 @@ +extends: substitution +message: "Consider using '%s' instead of '%s'." +link: 'https://developers.google.com/style/inclusive-documentation' +ignorecase: true +level: error +action: + name: replace +swap: + (?:alumna|alumnus): graduate + (?:alumnae|alumni): graduates + air(?:m[ae]n|wom[ae]n): pilot(s) + anchor(?:m[ae]n|wom[ae]n): anchor(s) + authoress: author + camera(?:m[ae]n|wom[ae]n): camera operator(s) + chair(?:m[ae]n|wom[ae]n): chair(s) + congress(?:m[ae]n|wom[ae]n): member(s) of congress + door(?:m[ae]|wom[ae]n): concierge(s) + draft(?:m[ae]n|wom[ae]n): drafter(s) + fire(?:m[ae]n|wom[ae]n): firefighter(s) + fisher(?:m[ae]n|wom[ae]n): fisher(s) + fresh(?:m[ae]n|wom[ae]n): first-year student(s) + garbage(?:m[ae]n|wom[ae]n): waste collector(s) + lady lawyer: lawyer + ladylike: courteous + landlord: building manager + mail(?:m[ae]n|wom[ae]n): mail carriers + man and wife: husband and wife + man enough: strong enough + mankind: human kind + manmade: manufactured + manpower: personnel + men and girls: men and women + middle(?:m[ae]n|wom[ae]n): intermediary + news(?:m[ae]n|wom[ae]n): journalist(s) + ombuds(?:man|woman): ombuds + oneupmanship: upstaging + poetess: poet + police(?:m[ae]n|wom[ae]n): police officer(s) + repair(?:m[ae]n|wom[ae]n): technician(s) + sales(?:m[ae]n|wom[ae]n): salesperson or sales people + service(?:m[ae]n|wom[ae]n): soldier(s) + steward(?:ess)?: flight attendant + tribes(?:m[ae]n|wom[ae]n): tribe member(s) + waitress: waiter + woman doctor: doctor + woman scientist[s]?: scientist(s) + work(?:m[ae]n|wom[ae]n): worker(s) diff --git a/.github/styles/Google/HeadingPunctuation.yml b/.github/styles/Google/HeadingPunctuation.yml new file mode 100644 index 0000000000..b538be5b42 --- /dev/null +++ b/.github/styles/Google/HeadingPunctuation.yml @@ -0,0 +1,13 @@ +extends: existence +message: "Don't put a period at the end of a heading." +link: 'https://developers.google.com/style/capitalization#capitalization-in-titles-and-headings' +nonword: true +level: warning +scope: heading +action: + name: edit + params: + - remove + - '.' +tokens: + - '[a-z0-9][.]\s*$' diff --git a/.github/styles/Google/Headings.yml b/.github/styles/Google/Headings.yml new file mode 100644 index 0000000000..a53301338a --- /dev/null +++ b/.github/styles/Google/Headings.yml @@ -0,0 +1,29 @@ +extends: capitalization +message: "'%s' should use sentence-style capitalization." +link: 'https://developers.google.com/style/capitalization#capitalization-in-titles-and-headings' +level: warning +scope: heading +match: $sentence +indicators: + - ':' +exceptions: + - Azure + - CLI + - Code + - Cosmos + - Docker + - Emmet + - gRPC + - I + - Kubernetes + - Linux + - macOS + - Marketplace + - MongoDB + - REPL + - Studio + - TypeScript + - URLs + - Visual + - VS + - Windows diff --git a/.github/styles/Google/Latin.yml b/.github/styles/Google/Latin.yml new file mode 100644 index 0000000000..ca03b9154b --- /dev/null +++ b/.github/styles/Google/Latin.yml @@ -0,0 +1,11 @@ +extends: substitution +message: "Use '%s' instead of '%s'." +link: 'https://developers.google.com/style/abbreviations' +ignorecase: true +level: error +nonword: true +action: + name: replace +swap: + '\b(?:eg|e\.g\.)(?=[\s,;])': for example + '\b(?:ie|i\.e\.)(?=[\s,;])': that is diff --git a/.github/styles/Google/LyHyphens.yml b/.github/styles/Google/LyHyphens.yml new file mode 100644 index 0000000000..ac8f557a4a --- /dev/null +++ b/.github/styles/Google/LyHyphens.yml @@ -0,0 +1,14 @@ +extends: existence +message: "'%s' doesn't need a hyphen." +link: 'https://developers.google.com/style/hyphens' +level: error +ignorecase: false +nonword: true +action: + name: edit + params: + - replace + - '-' + - ' ' +tokens: + - '\s[^\s-]+ly-' diff --git a/.github/styles/Google/OptionalPlurals.yml b/.github/styles/Google/OptionalPlurals.yml new file mode 100644 index 0000000000..f858ea6fee --- /dev/null +++ b/.github/styles/Google/OptionalPlurals.yml @@ -0,0 +1,12 @@ +extends: existence +message: "Don't use plurals in parentheses such as in '%s'." +link: 'https://developers.google.com/style/plurals-parentheses' +level: error +nonword: true +action: + name: edit + params: + - remove + - '(s)' +tokens: + - '\b\w+\(s\)' diff --git a/.github/styles/Google/Ordinal.yml b/.github/styles/Google/Ordinal.yml new file mode 100644 index 0000000000..d1ac7d27e8 --- /dev/null +++ b/.github/styles/Google/Ordinal.yml @@ -0,0 +1,7 @@ +extends: existence +message: "Spell out all ordinal numbers ('%s') in text." +link: 'https://developers.google.com/style/numbers' +level: error +nonword: true +tokens: + - \d+(?:st|nd|rd|th) diff --git a/.github/styles/Google/OxfordComma.yml b/.github/styles/Google/OxfordComma.yml new file mode 100644 index 0000000000..b9ba21ebb2 --- /dev/null +++ b/.github/styles/Google/OxfordComma.yml @@ -0,0 +1,7 @@ +extends: existence +message: "Use the Oxford comma in '%s'." +link: 'https://developers.google.com/style/commas' +scope: sentence +level: warning +tokens: + - '(?:[^,]+,){1,}\s\w+\s(?:and|or)' diff --git a/.github/styles/Google/Parens.yml b/.github/styles/Google/Parens.yml new file mode 100644 index 0000000000..3b8711d0c8 --- /dev/null +++ b/.github/styles/Google/Parens.yml @@ -0,0 +1,7 @@ +extends: existence +message: "Use parentheses judiciously." +link: 'https://developers.google.com/style/parentheses' +nonword: true +level: suggestion +tokens: + - '\(.+\)' diff --git a/.github/styles/Google/Passive.yml b/.github/styles/Google/Passive.yml new file mode 100644 index 0000000000..3265890e52 --- /dev/null +++ b/.github/styles/Google/Passive.yml @@ -0,0 +1,184 @@ +extends: existence +link: 'https://developers.google.com/style/voice' +message: "In general, use active voice instead of passive voice ('%s')." +ignorecase: true +level: suggestion +raw: + - \b(am|are|were|being|is|been|was|be)\b\s* +tokens: + - '[\w]+ed' + - awoken + - beat + - become + - been + - begun + - bent + - beset + - bet + - bid + - bidden + - bitten + - bled + - blown + - born + - bought + - bound + - bred + - broadcast + - broken + - brought + - built + - burnt + - burst + - cast + - caught + - chosen + - clung + - come + - cost + - crept + - cut + - dealt + - dived + - done + - drawn + - dreamt + - driven + - drunk + - dug + - eaten + - fallen + - fed + - felt + - fit + - fled + - flown + - flung + - forbidden + - foregone + - forgiven + - forgotten + - forsaken + - fought + - found + - frozen + - given + - gone + - gotten + - ground + - grown + - heard + - held + - hidden + - hit + - hung + - hurt + - kept + - knelt + - knit + - known + - laid + - lain + - leapt + - learnt + - led + - left + - lent + - let + - lighted + - lost + - made + - meant + - met + - misspelt + - mistaken + - mown + - overcome + - overdone + - overtaken + - overthrown + - paid + - pled + - proven + - put + - quit + - read + - rid + - ridden + - risen + - run + - rung + - said + - sat + - sawn + - seen + - sent + - set + - sewn + - shaken + - shaven + - shed + - shod + - shone + - shorn + - shot + - shown + - shrunk + - shut + - slain + - slept + - slid + - slit + - slung + - smitten + - sold + - sought + - sown + - sped + - spent + - spilt + - spit + - split + - spoken + - spread + - sprung + - spun + - stolen + - stood + - stridden + - striven + - struck + - strung + - stuck + - stung + - stunk + - sung + - sunk + - swept + - swollen + - sworn + - swum + - swung + - taken + - taught + - thought + - thrived + - thrown + - thrust + - told + - torn + - trodden + - understood + - upheld + - upset + - wed + - wept + - withheld + - withstood + - woken + - won + - worn + - wound + - woven + - written + - wrung diff --git a/.github/styles/Google/Periods.yml b/.github/styles/Google/Periods.yml new file mode 100644 index 0000000000..d24a6a6c03 --- /dev/null +++ b/.github/styles/Google/Periods.yml @@ -0,0 +1,7 @@ +extends: existence +message: "Don't use periods with acronyms or initialisms such as '%s'." +link: 'https://developers.google.com/style/abbreviations' +level: error +nonword: true +tokens: + - '\b(?:[A-Z]\.){3,}' diff --git a/.github/styles/Google/Quotes.yml b/.github/styles/Google/Quotes.yml new file mode 100644 index 0000000000..3cb6f1abd1 --- /dev/null +++ b/.github/styles/Google/Quotes.yml @@ -0,0 +1,7 @@ +extends: existence +message: "Commas and periods go inside quotation marks." +link: 'https://developers.google.com/style/quotation-marks' +level: error +nonword: true +tokens: + - '"[^"]+"[.,?]' diff --git a/.github/styles/Google/Ranges.yml b/.github/styles/Google/Ranges.yml new file mode 100644 index 0000000000..3ec045e777 --- /dev/null +++ b/.github/styles/Google/Ranges.yml @@ -0,0 +1,7 @@ +extends: existence +message: "Don't add words such as 'from' or 'between' to describe a range of numbers." +link: 'https://developers.google.com/style/hyphens' +nonword: true +level: warning +tokens: + - '(?:from|between)\s\d+\s?-\s?\d+' diff --git a/.github/styles/Google/Semicolons.yml b/.github/styles/Google/Semicolons.yml new file mode 100644 index 0000000000..bb8b85b420 --- /dev/null +++ b/.github/styles/Google/Semicolons.yml @@ -0,0 +1,8 @@ +extends: existence +message: "Use semicolons judiciously." +link: 'https://developers.google.com/style/semicolons' +nonword: true +scope: sentence +level: suggestion +tokens: + - ';' diff --git a/.github/styles/Google/Slang.yml b/.github/styles/Google/Slang.yml new file mode 100644 index 0000000000..63f4c248a8 --- /dev/null +++ b/.github/styles/Google/Slang.yml @@ -0,0 +1,11 @@ +extends: existence +message: "Don't use internet slang abbreviations such as '%s'." +link: 'https://developers.google.com/style/abbreviations' +ignorecase: true +level: error +tokens: + - 'tl;dr' + - ymmv + - rtfm + - imo + - fwiw diff --git a/.github/styles/Google/Spacing.yml b/.github/styles/Google/Spacing.yml new file mode 100644 index 0000000000..66e45a6b72 --- /dev/null +++ b/.github/styles/Google/Spacing.yml @@ -0,0 +1,10 @@ +extends: existence +message: "'%s' should have one space." +link: 'https://developers.google.com/style/sentence-spacing' +level: error +nonword: true +action: + name: remove +tokens: + - '[a-z][.?!] {2,}[A-Z]' + - '[a-z][.?!][A-Z]' diff --git a/.github/styles/Google/Spelling.yml b/.github/styles/Google/Spelling.yml new file mode 100644 index 0000000000..527ac07d31 --- /dev/null +++ b/.github/styles/Google/Spelling.yml @@ -0,0 +1,10 @@ +extends: existence +message: "In general, use American spelling instead of '%s'." +link: 'https://developers.google.com/style/spelling' +ignorecase: true +level: warning +tokens: + - '(?:\w+)nised?' + - 'colour' + - 'labour' + - 'centre' diff --git a/.github/styles/Google/Units.yml b/.github/styles/Google/Units.yml new file mode 100644 index 0000000000..53522ab2de --- /dev/null +++ b/.github/styles/Google/Units.yml @@ -0,0 +1,8 @@ +extends: existence +message: "Put a nonbreaking space between the number and the unit in '%s'." +link: "https://developers.google.com/style/units-of-measure" +nonword: true +level: error +tokens: + - \b\d+(?:B|kB|MB|GB|TB) + - \b\d+(?:ns|ms|s|min|h|d) diff --git a/.github/styles/Google/We.yml b/.github/styles/Google/We.yml new file mode 100644 index 0000000000..c7ac7d3622 --- /dev/null +++ b/.github/styles/Google/We.yml @@ -0,0 +1,11 @@ +extends: existence +message: "Try to avoid using first-person plural like '%s'." +link: 'https://developers.google.com/style/pronouns#personal-pronouns' +level: warning +ignorecase: true +tokens: + - we + - we'(?:ve|re) + - ours? + - us + - let's diff --git a/.github/styles/Google/Will.yml b/.github/styles/Google/Will.yml new file mode 100644 index 0000000000..128a918362 --- /dev/null +++ b/.github/styles/Google/Will.yml @@ -0,0 +1,7 @@ +extends: existence +message: "Avoid using '%s'." +link: 'https://developers.google.com/style/tense' +ignorecase: true +level: warning +tokens: + - will diff --git a/.github/styles/Google/WordList.yml b/.github/styles/Google/WordList.yml new file mode 100644 index 0000000000..0d675f2372 --- /dev/null +++ b/.github/styles/Google/WordList.yml @@ -0,0 +1,81 @@ +extends: substitution +message: "Use '%s' instead of '%s'." +link: "https://developers.google.com/style/word-list" +level: warning +ignorecase: false +action: + name: replace +swap: + "(?:API Console|dev|developer) key": API key + "(?:cell ?phone|smart ?phone)": phone|mobile phone + "(?:dev|developer|APIs) console": API console + "(?:e-mail|Email|E-mail)": email + "(?:file ?path|path ?name)": path + "(?:kill|terminate|abort)": stop|exit|cancel|end + "(?:OAuth ?2|Oauth)": OAuth 2.0 + "(?:ok|Okay)": OK|okay + "(?:WiFi|wifi)": Wi-Fi + '[\.]+apk': APK + '3\-D': 3D + 'Google (?:I\-O|IO)': Google I/O + "tap (?:&|and) hold": touch & hold + "un(?:check|select)": clear + above: preceding + account name: username + action bar: app bar + admin: administrator + Ajax: AJAX + a\.k\.a|aka: or|also known as + Android device: Android-powered device + android: Android + API explorer: APIs Explorer + application: app + approx\.: approximately + authN: authentication + authZ: authorization + autoupdate: automatically update + cellular data: mobile data + cellular network: mobile network + chapter: documents|pages|sections + check box: checkbox + check: select + CLI: command-line tool + click on: click|click in + Cloud: Google Cloud Platform|GCP + Container Engine: Kubernetes Engine + content type: media type + curated roles: predefined roles + data are: data is + Developers Console: Google API Console|API Console + disabled?: turn off|off + ephemeral IP address: ephemeral external IP address + fewer data: less data + file name: filename + firewalls: firewall rules + functionality: capability|feature + Google account: Google Account + Google accounts: Google Accounts + Googling: search with Google + grayed-out: unavailable + HTTPs: HTTPS + in order to: to + ingest: import|load + k8s: Kubernetes + long press: touch & hold + network IP address: internal IP address + omnibox: address bar + open-source: open source + overview screen: recents screen + regex: regular expression + SHA1: SHA-1|HAS-SHA1 + sign into: sign in to + sign-?on: single sign-on + static IP address: static external IP address + stylesheet: style sheet + synch: sync + tablename: table name + tablet: device + touch: tap + url: URL + vs\.: versus + World Wide Web: web diff --git a/.github/styles/Google/meta.json b/.github/styles/Google/meta.json new file mode 100644 index 0000000000..a5da2a8480 --- /dev/null +++ b/.github/styles/Google/meta.json @@ -0,0 +1,4 @@ +{ + "feed": "https://github.com/errata-ai/Google/releases.atom", + "vale_version": ">=1.0.0" +} diff --git a/en/modules/admin/assets/attachments/.gitkeep b/.github/styles/Google/vocab.txt similarity index 100% rename from en/modules/admin/assets/attachments/.gitkeep rename to .github/styles/Google/vocab.txt diff --git a/.github/styles/alex/Ablist.yml b/.github/styles/alex/Ablist.yml new file mode 100644 index 0000000000..cd6ddb5bd3 --- /dev/null +++ b/.github/styles/alex/Ablist.yml @@ -0,0 +1,248 @@ +--- +extends: substitution +message: When referring to a person, consider using '%s' instead of '%s'. +ignorecase: true +level: warning +action: + name: replace +swap: + ablebodied: non-disabled + addict: person with a drug addiction|person recovering from a drug addiction + addicts: people with a drug addiction|people recovering from a drug addiction + adhd: disorganized|distracted|energetic|hyperactive|impetuous|impulsive|inattentive|restless|unfocused + afflicted with MD: person who has muscular dystrophy + afflicted with a disability: has a disability|person with a disability|people with + disabilities + afflicted with a intellectual disability: person with an intellectual disability + afflicted with a polio: polio|person who had polio + afflicted with aids: person with AIDS + afflicted with an injury: sustain an injury|receive an injury + afflicted with disabilities: has a disability|person with a disability|people with + disabilities + afflicted with injuries: sustain injuries|receive injuries + afflicted with intellectual disabilities: person with an intellectual disability + afflicted with multiple sclerosis: person who has multiple sclerosis + afflicted with muscular dystrophy: person who has muscular dystrophy + afflicted with polio: polio|person who had polio + afflicted with psychosis: person with a psychotic condition|person with psychosis + afflicted with schizophrenia: person with schizophrenia + aids victim: person with AIDS + alcohol abuser: someone with an alcohol problem + alcoholic: someone with an alcohol problem + amputee: person with an amputation + anorexic: thin|slim + asylum: psychiatric hospital|mental health hospital + barren: empty|sterile|infertile + batshit: rude|malicious|mean|disgusting|incredible|vile|person with symptoms of + mental illness|person with mental illness|person with symptoms of a mental disorder|person + with a mental disorder + bedlam: chaos|hectic|pandemonium + binge: enthusiastic|spree + bipolar: fluctuating|person with bipolar disorder + birth defect: has a disability|person with a disability|people with disabilities + blind eye to: careless|heartless|indifferent|insensitive + blind to: careless|heartless|indifferent|insensitive + blinded by: careless|heartless|indifferent|insensitive + bony: thin|slim + bound to a wheelchair: uses a wheelchair + buckteeth: person with prominent teeth|prominent teeth + bucktoothed: person with prominent teeth|prominent teeth + challenged: has a disability|person with a disability|people with disabilities + cleftlipped: person with a cleft-lip and palate + confined to a wheelchair: uses a wheelchair + contard: disagreeable|uneducated|ignorant|naive|inconsiderate + crazy: rude|malicious|mean|disgusting|incredible|vile|person with symptoms of mental + illness|person with mental illness|person with symptoms of a mental disorder|person + with a mental disorder + cretin: creep|fool + cripple: person with a limp + crippled: person with a limp + daft: absurd|foolish + deaf and dumb: deaf + deaf ear to: careless|heartless|indifferent|insensitive + deaf to: careless|heartless|indifferent|insensitive + deafened by: careless|heartless|indifferent|insensitive + deafmute: deaf + delirious: rude|malicious|mean|disgusting|incredible|vile|person with symptoms of + mental illness|person with mental illness|person with symptoms of a mental disorder|person + with a mental disorder + demented: person with dementia + depressed: sad|blue|bummed out|person with seasonal affective disorder|person with + psychotic depression|person with postpartum depression + detox: treatment + detox center: treatment center + diffability: has a disability|person with a disability|people with disabilities + differently abled: has a disability|person with a disability|people with disabilities + disabled: turned off|has a disability|person with a disability|people with disabilities + downs syndrome: Down Syndrome + dumb: foolish|ludicrous|speechless|silent + dummy: test double|placeholder|fake|stub + dummyobject: test double|placeholder|fake|stub + dummyvalue: test double|placeholder|fake|stub + dummyvariable: test double|placeholder|fake|stub + dwarf: person with dwarfism|little person|little people|LP|person of short stature + dyslexic: person with dyslexia + epileptic: person with epilepsy + family burden: with family support needs + feeble minded: foolish|ludicrous|silly + feebleminded: foolish|ludicrous|silly + fucktard: disagreeable|uneducated|ignorant|naive|inconsiderate + gimp: person with a limp + handicapable: has a disability|person with a disability|people with disabilities + handicapped: person with a handicap|accessible + handicapped parking: accessible parking + hare lip: cleft-lip and palate + harelip: cleft-lip and palate + harelipped: person with a cleft-lip and palate + has intellectual issues: person with an intellectual disability + hearing impaired: hard of hearing|partially deaf|partial hearing loss|deaf + hearing impairment: hard of hearing|partially deaf|partial hearing loss|deaf + idiot: foolish|ludicrous|silly + imbecile: foolish|ludicrous|silly + infantile paralysis: polio|person who had polio + insane: rude|malicious|mean|disgusting|incredible|vile|person with symptoms of mental + illness|person with mental illness|person with symptoms of a mental disorder|person + with a mental disorder + insanely: incredibly + insanity: rude|malicious|mean|disgusting|incredible|vile|person with symptoms of + mental illness|person with mental illness|person with symptoms of a mental disorder|person + with a mental disorder + insomnia: restlessness|sleeplessness + insomniac: person who has insomnia + insomniacs: people who have insomnia + intellectually disabled: person with an intellectual disability + intellectually disabled people: people with intellectual disabilities + invalid: turned off|has a disability|person with a disability|people with disabilities + junkie: person with a drug addiction|person recovering from a drug addiction + junkies: people with a drug addiction|people recovering from a drug addiction + lame: boring|dull + learning disabled: person with learning disabilities + libtard: disagreeable|uneducated|ignorant|naive|inconsiderate + loony: rude|malicious|mean|disgusting|incredible|vile|person with symptoms of mental + illness|person with mental illness|person with symptoms of a mental disorder|person + with a mental disorder + loony bin: chaos|hectic|pandemonium + low iq: foolish|ludicrous|unintelligent + lunacy: rude|malicious|mean|disgusting|incredible|vile|person with symptoms of mental + illness|person with mental illness|person with symptoms of a mental disorder|person + with a mental disorder + lunatic: rude|malicious|mean|disgusting|incredible|vile|person with symptoms of + mental illness|person with mental illness|person with symptoms of a mental disorder|person + with a mental disorder + madhouse: chaos|hectic|pandemonium + maniac: fanatic|zealot|enthusiast + manic: person with schizophrenia + mental: rude|malicious|mean|disgusting|incredible|vile|person with symptoms of mental + illness|person with mental illness|person with symptoms of a mental disorder|person + with a mental disorder + mental case: rude|malicious|mean|disgusting|incredible|vile|person with symptoms + of mental illness|person with mental illness|person with symptoms of a mental + disorder|person with a mental disorder + mental defective: rude|malicious|mean|disgusting|incredible|vile|person with symptoms + of mental illness|person with mental illness|person with symptoms of a mental + disorder|person with a mental disorder + mentally ill: rude|malicious|mean|disgusting|incredible|vile|person with symptoms + of mental illness|person with mental illness|person with symptoms of a mental + disorder|person with a mental disorder + midget: person with dwarfism|little person|little people|LP|person of short stature + mongoloid: person with Down Syndrome + moron: rude|malicious|mean|disgusting|incredible|vile|person with symptoms of mental + illness|person with mental illness|person with symptoms of a mental disorder|person + with a mental disorder + moronic: rude|malicious|mean|disgusting|incredible|vile|person with symptoms of + mental illness|person with mental illness|person with symptoms of a mental disorder|person + with a mental disorder + multiple sclerosis victim: person who has multiple sclerosis + neurotic: has an anxiety disorder|obsessive|pedantic|niggly|picky + nuts: rude|malicious|mean|disgusting|incredible|vile|person with symptoms of mental + illness|person with mental illness|person with symptoms of a mental disorder|person + with a mental disorder + o.c.d: has an anxiety disorder|obsessive|pedantic|niggly|picky + o.c.d.: has an anxiety disorder|obsessive|pedantic|niggly|picky + ocd: has an anxiety disorder|obsessive|pedantic|niggly|picky + panic attack: fit of terror|scare + paraplegic: person with paraplegia + psycho: rude|malicious|mean|disgusting|incredible|vile|person with symptoms of mental + illness|person with mental illness|person with symptoms of a mental disorder|person + with a mental disorder + psychopathology: rude|malicious|mean|disgusting|incredible|vile|person with symptoms + of mental illness|person with mental illness|person with symptoms of a mental + disorder|person with a mental disorder + psychotic: person with a psychotic condition|person with psychosis + quadriplegic: person with quadriplegia + rehab: treatment + rehab center: treatment center + restricted to a wheelchair: uses a wheelchair + retard: silly|dullard|person with Down Syndrome|person with developmental disabilities|delay|hold + back + retarded: silly|dullard|person with Down Syndrome|person with developmental disabilities|delay|hold + back + retards: "sillies|dullards|people with developmental disabilities|people with Down\u2019\ + s Syndrome|delays|holds back" + sane: correct|adequate|sufficient|consistent|valid|coherent|sensible|reasonable + sanity check: check|assertion|validation|smoke test + schizo: person with schizophrenia + schizophrenic: person with schizophrenia + senile: person with dementia + short bus: silly|dullard|person with Down Syndrome|person with developmental disabilities|delay|hold + back + simpleton: foolish|ludicrous|unintelligent + small person: person with dwarfism|little person|little people|LP|person of short + stature + sociopath: person with a personality disorder|person with psychopathic personality + sociopaths: people with psychopathic personalities|people with a personality disorder + spastic: person with cerebral palsy|twitch|flinch + spaz: person with cerebral palsy|twitch|flinch|hectic + special: has a disability|person with a disability|people with disabilities + special needs: has a disability|person with a disability|people with disabilities + special olympians: athletes|Special Olympics athletes + special olympic athletes: athletes|Special Olympics athletes + specially abled: has a disability|person with a disability|people with disabilities + stammering: stuttering|disfluency of speech + stroke victim: individual who has had a stroke + stupid: foolish|ludicrous|unintelligent + stutterer: person who stutters + suffer from aids: person with AIDS + suffer from an injury: sustain an injury|receive an injury + suffer from injuries: sustain injuries|receive injuries + suffering from a disability: has a disability|person with a disability|people with + disabilities + suffering from a polio: polio|person who had polio + suffering from a stroke: individual who has had a stroke + suffering from aids: person with AIDS + suffering from an injury: sustain an injury|receive an injury + suffering from an intellectual disability: person with an intellectual disability + suffering from disabilities: has a disability|person with a disability|people with + disabilities + suffering from injuries: sustain injuries|receive injuries + suffering from intellectual disabilities: person with an intellectual disability + suffering from multiple sclerosis: person who has multiple sclerosis + suffering from polio: polio|person who had polio + suffering from psychosis: person with a psychotic condition|person with psychosis + suffering from schizophrenia: person with schizophrenia + suffers from MD: person who has muscular dystrophy + suffers from aids: person with AIDS + suffers from an injury: sustain an injury|receive an injury + suffers from disabilities: has a disability|person with a disability|people with + disabilities + suffers from injuries: sustain injuries|receive injuries + suffers from intellectual disabilities: person with an intellectual disability + suffers from multiple sclerosis: person who has multiple sclerosis + suffers from muscular dystrophy: person who has muscular dystrophy + suffers from polio: polio|person who had polio + suffers from psychosis: person with a psychotic condition|person with psychosis + suffers from schizophrenia: person with schizophrenia + tourettes disorder: Tourette syndrome + tourettes syndrome: Tourette syndrome + vertically challenged: person with dwarfism|little person|little people|LP|person + of short stature + victim of a stroke: individual who has had a stroke + victim of aids: person with AIDS + victim of an injury: sustain an injury|receive an injury + victim of injuries: sustain injuries|receive injuries + victim of multiple sclerosis: person who has multiple sclerosis + victim of polio: polio|person who had polio + victim of psychosis: person with a psychotic condition|person with psychosis + wacko: foolish|ludicrous|unintelligent + whacko: foolish|ludicrous|unintelligent + wheelchair bound: uses a wheelchair diff --git a/.github/styles/alex/Condescending.yml b/.github/styles/alex/Condescending.yml new file mode 100644 index 0000000000..4283a33671 --- /dev/null +++ b/.github/styles/alex/Condescending.yml @@ -0,0 +1,16 @@ +--- +extends: existence +message: Using '%s' may come across as condescending. +link: https://css-tricks.com/words-avoid-educational-writing/ +level: error +ignorecase: true +tokens: + - obvious + - obviously + - simple + - simply + - easy + - easily + - of course + - clearly + - everyone knows diff --git a/.github/styles/alex/Gendered.yml b/.github/styles/alex/Gendered.yml new file mode 100644 index 0000000000..c7b1f06b4f --- /dev/null +++ b/.github/styles/alex/Gendered.yml @@ -0,0 +1,108 @@ +--- +extends: substitution +message: "Consider using '%s' instead of '%s'." +ignorecase: true +level: warning +action: + name: replace +swap: + ancient man: ancient civilization|ancient people + authoress: author|writer + average housewife: average consumer|average household|average homemaker + average man: average person + average working man: average wage earner|average taxpayer + aviatrix: aviator + bitch: whine|complain|cry + bitching: whining|complaining|crying + brotherhood of man: the human family + calendar girl: model + call girl: escort|prostitute|sex worker + churchman: cleric|practicing Christian|pillar of the Church + english master: english coordinator|senior teacher of english + englishmen: the english + executrix: executor + father of *: founder of + fellowship: camaraderie|community|organization + founding father: the founders|founding leaders|forebears + frenchmen: french|the french + freshman: first-year student|fresher + freshwoman: first-year student|fresher + housemaid: house worker|domestic help + housewife: homemaker|homeworker + housewives: homemakers|homeworkers + industrial man: industrial civilization|industrial people + lady doctor: doctor + ladylike: courteous|cultured + leading lady: lead + like a man: resolutely|bravely + mad man: fanatic|zealot|enthusiast + mad men: fanatics|zealots|enthusiasts + madman: fanatic|zealot|enthusiast + madmen: fanatics|zealots|enthusiasts + maiden: virgin + maiden flight: first flight + maiden name: birth name + maiden race: first race + maiden speech: first speech + maiden voyage: first voyage + man a desk: staff a desk + man enough: strong enough + man hour: staff hour|hour of work + man hours: staff hours|hours of work|hours of labor|hours + man in the street: ordinary citizen|typical person|average person + man of action: dynamo + man of letters: scholar|writer|literary figure + man of the land: farmer|rural worker|grazier|landowner|rural community|country people|country + folk + man of the world: sophisticate + man sized task: a demanding task|a big job + man the booth: staff the booth + man the phones: answer the phones + manhour: staff hour|hour of work + manhours: staff hours|hours of work|hours of labor|hours + mankind: humankind + manmade: manufactured|artificial|synthetic|machine-made|constructed + manned: staffed|crewed|piloted + manpower: human resources|workforce|personnel|staff|labor|personnel|labor force|staffing|combat + personnel + mans best friend: a faithful dog + mansized task: a demanding task|a big job + master copy: pass key|original + master key: pass key|original + master of ceremonies: emcee|moderator|convenor + master plan: grand scheme|guiding principles + master the art: become skilled + masterful: skilled|authoritative|commanding + mastermind: genius|creator|instigator|oversee|launch|originate + masterpiece: "work of genius|chef d\u2019oeuvre" + masterplan: vision|comprehensive plan + masterstroke: trump card|stroke of genius + men of science: scientists + midwife: birthing nurse + miss\.: ms. + moan: whine|complain|cry + moaning: whining|complaining|crying + modern man: modern civilization|modern people + motherly: loving|warm|nurturing + mrs\.: ms. + no mans land: unoccupied territory|wasteland|deathtrap + office girls: administrative staff + oneupmanship: upstaging|competitiveness + poetess: poet + railwayman: railway worker + sportsmanlike: fair|sporting + sportsmanship: fairness|good humor|sense of fair play + statesman like: diplomatic + statesmanlike: diplomatic + stockman: cattle worker|farmhand|drover + tax man: tax commissioner|tax office|tax collector + tradesmans entrance: service entrance + unmanned: robotic|automated + usherette: usher + wife beater: tank top|sleeveless undershirt + wifebeater: tank top|sleeveless undershirt + woman lawyer: lawyer + woman painter: painter + working mother: wage or salary earning woman|two-income family + working wife: wage or salary earning woman|two-income family + workmanship: quality construction|expertise diff --git a/.github/styles/alex/LGBTQ.yml b/.github/styles/alex/LGBTQ.yml new file mode 100644 index 0000000000..842a9c6f1d --- /dev/null +++ b/.github/styles/alex/LGBTQ.yml @@ -0,0 +1,55 @@ +--- +extends: substitution +message: Consider using '%s' instead of '%s'. +ignorecase: true +level: warning +action: + name: replace +swap: + bathroom bill: non-discrimination law|non-discrimination ordinance + bi: bisexual + biologically female: assigned female at birth|designated female at birth + biologically male: assigned male at birth|designated male at birth + born a man: assigned male at birth|designated male at birth + born a woman: assigned female at birth|designated female at birth + dyke: gay + fag: gay + faggot: gay + gay agenda: gay issues + gay lifestyle: gay lives|gay/lesbian lives + gay rights: equal rights|civil rights for gay people + gender pronoun: pronoun|pronouns + gender pronouns: pronoun|pronouns + genetically female: assigned female at birth|designated female at birth + genetically male: assigned male at birth|designated male at birth + hermaphrodite: person who is intersex|person|intersex person + hermaphroditic: intersex + heshe: transgender person|person + homo: gay + homosexual: gay|gay man|lesbian|gay person/people + homosexual agenda: gay issues + homosexual couple: couple + homosexual lifestyle: gay lives|gay/lesbian lives + homosexual marriage: gay marriage|same-sex marriage + homosexual relations: relationship + homosexual relationship: relationship + preferred pronoun: pronoun|pronouns + preferred pronouns: pronoun|pronouns + pseudo hermaphrodite: person who is intersex|person|intersex person + pseudo hermaphroditic: intersex + pseudohermaphrodite: person who is intersex|person|intersex person + pseudohermaphroditic: intersex + sex change: transition|gender confirmation surgery + sex change operation: sex reassignment surgery|gender confirmation surgery + sexchange: transition|gender confirmation surgery + sexual preference: sexual orientation|orientation + she male: transgender person|person + shehe: transgender person|person + shemale: transgender person|person + sodomite: gay + special rights: equal rights|civil rights for gay people + tranny: transgender + transgendered: transgender + transgenderism: being transgender|the movement for transgender equality + transgenders: transgender people + transvestite: cross-dresser diff --git a/.github/styles/alex/Press.yml b/.github/styles/alex/Press.yml new file mode 100644 index 0000000000..06991dbf18 --- /dev/null +++ b/.github/styles/alex/Press.yml @@ -0,0 +1,11 @@ +--- +extends: substitution +message: Consider using '%s' instead of '%s'. +ignorecase: true +level: warning +action: + name: replace +swap: + islamist: muslim|person of Islamic faith|fanatic|zealot|follower of islam|follower + of the islamic faith + islamists: muslims|people of Islamic faith|fanatics|zealots diff --git a/.github/styles/alex/ProfanityLikely.yml b/.github/styles/alex/ProfanityLikely.yml new file mode 100644 index 0000000000..1c03e19897 --- /dev/null +++ b/.github/styles/alex/ProfanityLikely.yml @@ -0,0 +1,1289 @@ +extends: existence +message: Don't use '%s', it’s profane. +level: warning +ignorecase: true +tokens: + - abeed + - africoon + - alligator bait + - alligatorbait + - analannie + - arabush + - arabushs + - argie + - armo + - armos + - arse + - arsehole + - ass + - assbagger + - assblaster + - assclown + - asscowboy + - asses + - assfuck + - assfucker + - asshat + - asshole + - assholes + - asshore + - assjockey + - asskiss + - asskisser + - assklown + - asslick + - asslicker + - asslover + - assman + - assmonkey + - assmunch + - assmuncher + - asspacker + - asspirate + - asspuppies + - assranger + - asswhore + - asswipe + - backdoorman + - badfuck + - balllicker + - barelylegal + - barf + - barface + - barfface + - bazongas + - bazooms + - beanbag + - beanbags + - beaner + - beaners + - beaney + - beaneys + - beatoff + - beatyourmeat + - biatch + - bigass + - bigbastard + - bigbutt + - bitcher + - bitches + - bitchez + - bitchin + - bitching + - bitchslap + - bitchy + - biteme + - blowjob + - bluegum + - bluegums + - boang + - boche + - boches + - bogan + - bohunk + - bollick + - bollock + - bollocks + - bong + - boob + - boobies + - boobs + - booby + - boody + - boong + - boonga + - boongas + - boongs + - boonie + - boonies + - bootlip + - bootlips + - booty + - bootycall + - bosch + - bosche + - bosches + - boschs + - brea5t + - breastjob + - breastlover + - breastman + - buddhahead + - buddhaheads + - buffies + - bugger + - buggered + - buggery + - bule + - bules + - bullcrap + - bulldike + - bulldyke + - bullshit + - bumblefuck + - bumfuck + - bung + - bunga + - bungas + - bunghole + - "burr head" + - "burr heads" + - burrhead + - burrheads + - butchbabes + - butchdike + - butchdyke + - buttbang + - buttface + - buttfuck + - buttfucker + - buttfuckers + - butthead + - buttman + - buttmunch + - buttmuncher + - buttpirate + - buttplug + - buttstain + - byatch + - cacker + - "camel jockey" + - "camel jockeys" + - cameljockey + - cameltoe + - carpetmuncher + - carruth + - chav + - "cheese eating surrender monkey" + - "cheese eating surrender monkies" + - "cheeseeating surrender monkey" + - "cheeseeating surrender monkies" + - cheesehead + - cheeseheads + - cherrypopper + - chickslick + - "china swede" + - "china swedes" + - chinaman + - chinamen + - chinaswede + - chinaswedes + - "ching chong" + - "ching chongs" + - chingchong + - chingchongs + - chink + - chinks + - chinky + - choad + - chode + - chonkies + - chonky + - chonkys + - "christ killer" + - "christ killers" + - chug + - chugs + - chunger + - chungers + - chunkies + - chunky + - chunkys + - clamdigger + - clamdiver + - clansman + - clansmen + - clanswoman + - clanswomen + - clit + - clitoris + - clogwog + - cockblock + - cockblocker + - cockcowboy + - cockfight + - cockhead + - cockknob + - cocklicker + - cocklover + - cocknob + - cockqueen + - cockrider + - cocksman + - cocksmith + - cocksmoker + - cocksucer + - cocksuck + - cocksucked + - cocksucker + - cocksucking + - cocktease + - cocky + - cohee + - commie + - coolie + - coolies + - cooly + - coon + - "coon ass" + - "coon asses" + - coonass + - coonasses + - coondog + - coons + - cornhole + - cracka + - crackwhore + - crap + - crapola + - crapper + - crappy + - crotchjockey + - crotchmonkey + - crotchrot + - cum + - cumbubble + - cumfest + - cumjockey + - cumm + - cummer + - cumming + - cummings + - cumquat + - cumqueen + - cumshot + - cunn + - cunntt + - cunt + - cunteyed + - cuntfuck + - cuntfucker + - cuntlick + - cuntlicker + - cuntlicking + - cuntsucker + - "curry muncher" + - "curry munchers" + - currymuncher + - currymunchers + - cushi + - cushis + - cyberslimer + - dago + - dagos + - dahmer + - dammit + - damnit + - darkey + - darkeys + - darkie + - darkies + - darky + - datnigga + - deapthroat + - deepthroat + - dego + - degos + - "diaper head" + - "diaper heads" + - diaperhead + - diaperheads + - dickbrain + - dickforbrains + - dickhead + - dickless + - dicklick + - dicklicker + - dickman + - dickwad + - dickweed + - diddle + - dingleberry + - dink + - dinks + - dipshit + - dipstick + - dix + - dixiedike + - dixiedyke + - doggiestyle + - doggystyle + - dong + - doodoo + - dope + - "dot head" + - "dot heads" + - dothead + - dotheads + - dragqueen + - dragqween + - dripdick + - dumb + - dumbass + - dumbbitch + - dumbfuck + - "dune coon" + - "dune coons" + - dyefly + - easyslut + - eatballs + - eatme + - eatpussy + - "eight ball" + - "eight balls" + - ero + - esqua + - evl + - exkwew + - facefucker + - faeces + - fagging + - faggot + - fagot + - fannyfucker + - farty + - fastfuck + - fatah + - fatass + - fatfuck + - fatfucker + - fatso + - fckcum + - felch + - felcher + - felching + - fellatio + - feltch + - feltcher + - feltching + - fingerfuck + - fingerfucked + - fingerfucker + - fingerfuckers + - fingerfucking + - fister + - fistfuck + - fistfucked + - fistfucker + - fistfucking + - fisting + - flange + - floo + - flydie + - flydye + - fok + - footfuck + - footfucker + - footlicker + - footstar + - forni + - fornicate + - foursome + - fourtwenty + - fraud + - freakfuck + - freakyfucker + - freefuck + - fu + - fubar + - fuc + - fucck + - fuck + - fucka + - fuckable + - fuckbag + - fuckbook + - fuckbuddy + - fucked + - fuckedup + - fucker + - fuckers + - fuckface + - fuckfest + - fuckfreak + - fuckfriend + - fuckhead + - fuckher + - fuckin + - fuckina + - fucking + - fuckingbitch + - fuckinnuts + - fuckinright + - fuckit + - fuckknob + - fuckme + - fuckmehard + - fuckmonkey + - fuckoff + - fuckpig + - fucks + - fucktard + - fuckwhore + - fuckyou + - fudgepacker + - fugly + - fuk + - fuks + - funeral + - funfuck + - fungus + - fuuck + - gables + - gangbang + - gangbanged + - gangbanger + - gangsta + - "gator bait" + - gatorbait + - gaymuthafuckinwhore + - gaysex + - geez + - geezer + - geni + - getiton + - ginzo + - ginzos + - gipp + - gippo + - gippos + - gipps + - givehead + - glazeddonut + - godammit + - goddamit + - goddammit + - goddamn + - goddamned + - goddamnes + - goddamnit + - goddamnmuthafucker + - goldenshower + - golliwog + - golliwogs + - gonorrehea + - gonzagas + - gook + - "gook eye" + - "gook eyes" + - gookeye + - gookeyes + - gookies + - gooks + - gooky + - gora + - goras + - gotohell + - greaseball + - greaseballs + - greaser + - greasers + - gringo + - gringos + - groe + - groid + - groids + - gubba + - gubbas + - gubs + - gummer + - gwailo + - gwailos + - gweilo + - gweilos + - gyopo + - gyopos + - gyp + - gyped + - gypo + - gypos + - gypp + - gypped + - gyppie + - gyppies + - gyppo + - gyppos + - gyppy + - gyppys + - gypsies + - gypsy + - gypsys + - hadji + - hadjis + - hairyback + - hairybacks + - haji + - hajis + - hajji + - hajjis + - "half breed" + - "half caste" + - halfbreed + - halfcaste + - hamas + - handjob + - haole + - haoles + - hapa + - hardon + - headfuck + - headlights + - hebe + - hebephila + - hebephile + - hebephiles + - hebephilia + - hebephilic + - hebes + - heeb + - heebs + - hillbillies + - hillbilly + - hindoo + - hiscock + - hitler + - hitlerism + - hitlerist + - ho + - hobo + - hodgie + - hoes + - holestuffer + - homo + - homobangers + - honger + - honk + - honkers + - honkey + - honkeys + - honkie + - honkies + - honky + - hooker + - hookers + - hooters + - hore + - hori + - horis + - hork + - horney + - horniest + - horseshit + - hosejob + - hoser + - hotdamn + - hotpussy + - hottotrot + - hussy + - hymie + - hymies + - iblowu + - idiot + - ikeymo + - ikeymos + - ikwe + - indons + - injun + - injuns + - insest + - intheass + - inthebuff + - jackass + - jackoff + - jackshit + - jacktheripper + - jap + - japcrap + - japie + - japies + - japs + - jebus + - jeez + - jerkoff + - jewboy + - jewed + - jewess + - jig + - jiga + - jigaboo + - jigaboos + - jigarooni + - jigaroonis + - jigg + - jigga + - jiggabo + - jiggabos + - jiggas + - jigger + - jiggers + - jiggs + - jiggy + - jigs + - jijjiboo + - jijjiboos + - jimfish + - jism + - jiz + - jizim + - jizjuice + - jizm + - jizz + - jizzim + - jizzum + - juggalo + - "jungle bunnies" + - "jungle bunny" + - junglebunny + - kacap + - kacapas + - kacaps + - kaffer + - kaffir + - kaffre + - kafir + - kanake + - katsap + - katsaps + - khokhol + - khokhols + - kigger + - kike + - kikes + - kimchis + - kissass + - kkk + - klansman + - klansmen + - klanswoman + - klanswomen + - kondum + - koon + - krap + - krappy + - krauts + - kuffar + - kum + - kumbubble + - kumbullbe + - kummer + - kumming + - kumquat + - kums + - kunilingus + - kunnilingus + - kunt + - kushi + - kushis + - kwa + - "kwai lo" + - "kwai los" + - ky + - kyke + - kykes + - kyopo + - kyopos + - lebo + - lebos + - lesbain + - lesbayn + - lesbian + - lesbin + - lesbo + - lez + - lezbe + - lezbefriends + - lezbo + - lezz + - lezzo + - lickme + - limey + - limpdick + - limy + - livesex + - loadedgun + - looser + - loser + - lovebone + - lovegoo + - lovegun + - lovejuice + - lovemuscle + - lovepistol + - loverocket + - lowlife + - lsd + - lubejob + - lubra + - luckycammeltoe + - lugan + - lugans + - mabuno + - mabunos + - macaca + - macacas + - magicwand + - mahbuno + - mahbunos + - mams + - manhater + - manpaste + - mastabate + - mastabater + - masterbate + - masterblaster + - mastrabator + - masturbate + - masturbating + - mattressprincess + - "mau mau" + - "mau maus" + - maumau + - maumaus + - meatbeatter + - meatrack + - mgger + - mggor + - mickeyfinn + - milf + - mockey + - mockie + - mocky + - mofo + - moky + - moneyshot + - "moon cricket" + - "moon crickets" + - mooncricket + - mooncrickets + - moron + - moskal + - moskals + - moslem + - mosshead + - mothafuck + - mothafucka + - mothafuckaz + - mothafucked + - mothafucker + - mothafuckin + - mothafucking + - mothafuckings + - motherfuck + - motherfucked + - motherfucker + - motherfuckin + - motherfucking + - motherfuckings + - motherlovebone + - muff + - muffdive + - muffdiver + - muffindiver + - mufflikcer + - mulatto + - muncher + - munt + - mzungu + - mzungus + - nastybitch + - nastyho + - nastyslut + - nastywhore + - negres + - negress + - negro + - negroes + - negroid + - negros + - nig + - nigar + - nigars + - niger + - nigerian + - nigerians + - nigers + - nigette + - nigettes + - nigg + - nigga + - niggah + - niggahs + - niggar + - niggaracci + - niggard + - niggarded + - niggarding + - niggardliness + - niggardlinesss + - niggardly + - niggards + - niggars + - niggas + - niggaz + - nigger + - niggerhead + - niggerhole + - niggers + - niggle + - niggled + - niggles + - niggling + - nigglings + - niggor + - niggress + - niggresses + - nigguh + - nigguhs + - niggur + - niggurs + - niglet + - nignog + - nigor + - nigors + - nigr + - nigra + - nigras + - nigre + - nigres + - nigress + - nigs + - nip + - nittit + - nlgger + - nlggor + - nofuckingway + - nookey + - nookie + - noonan + - nudger + - nutfucker + - ontherag + - orga + - orgasim + - paki + - pakis + - palesimian + - "pancake face" + - "pancake faces" + - pansies + - pansy + - panti + - payo + - peckerwood + - pedo + - peehole + - peepshpw + - peni5 + - perv + - phuk + - phuked + - phuking + - phukked + - phukking + - phungky + - phuq + - pi55 + - picaninny + - piccaninny + - pickaninnies + - pickaninny + - piefke + - piefkes + - piker + - pikey + - piky + - pimp + - pimped + - pimper + - pimpjuic + - pimpjuice + - pimpsimp + - pindick + - piss + - pissed + - pisser + - pisses + - pisshead + - pissin + - pissing + - pissoff + - pocha + - pochas + - pocho + - pochos + - pocketpool + - pohm + - pohms + - polack + - polacks + - pollock + - pollocks + - pom + - pommie + - "pommie grant" + - "pommie grants" + - pommies + - pommy + - poms + - poo + - poon + - poontang + - poop + - pooper + - pooperscooper + - pooping + - poorwhitetrash + - popimp + - "porch monkey" + - "porch monkies" + - porchmonkey + - pornking + - porno + - pornography + - pornprincess + - "prairie nigger" + - "prairie niggers" + - premature + - pric + - prick + - prickhead + - pu55i + - pu55y + - pubiclice + - pud + - pudboy + - pudd + - puddboy + - puke + - puntang + - purinapricness + - puss + - pussie + - pussies + - pussyeater + - pussyfucker + - pussylicker + - pussylips + - pussylover + - pussypounder + - pusy + - quashie + - queef + - quickie + - quim + - ra8s + - raghead + - ragheads + - raper + - rearend + - rearentry + - redleg + - redlegs + - redneck + - rednecks + - redskin + - redskins + - reefer + - reestie + - rere + - retard + - retarded + - ribbed + - rigger + - rimjob + - rimming + - "round eyes" + - roundeye + - russki + - russkie + - sadis + - sadom + - sambo + - sambos + - samckdaddy + - "sand nigger" + - "sand niggers" + - sandm + - sandnigger + - satan + - scag + - scallywag + - schlong + - schvartse + - schvartsen + - schwartze + - schwartzen + - screwyou + - seppo + - seppos + - sexed + - sexfarm + - sexhound + - sexhouse + - sexing + - sexkitten + - sexpot + - sexslave + - sextogo + - sexwhore + - sexymoma + - sexyslim + - shaggin + - shagging + - shat + - shav + - shawtypimp + - sheeney + - shhit + - shiksa + - shinola + - shit + - shitcan + - shitdick + - shite + - shiteater + - shited + - shitface + - shitfaced + - shitfit + - shitforbrains + - shitfuck + - shitfucker + - shitfull + - shithapens + - shithappens + - shithead + - shithouse + - shiting + - shitlist + - shitola + - shitoutofluck + - shits + - shitstain + - shitted + - shitter + - shitting + - shitty + - shortfuck + - shylock + - shylocks + - sissy + - sixsixsix + - sixtynine + - sixtyniner + - skank + - skankbitch + - skankfuck + - skankwhore + - skanky + - skankybitch + - skankywhore + - skinflute + - skum + - skumbag + - skwa + - skwe + - slant + - slanteye + - slanty + - slapper + - slave + - slavedriver + - sleezebag + - sleezeball + - slideitin + - slimeball + - slimebucket + - slopehead + - slopeheads + - sloper + - slopers + - slopes + - slopey + - slopeys + - slopies + - slopy + - slut + - sluts + - slutt + - slutting + - slutty + - slutwear + - slutwhore + - smackthemonkey + - smut + - snatchpatch + - snowback + - snownigger + - sodomise + - sodomize + - sodomy + - sonofabitch + - sonofbitch + - sooties + - sooty + - spaghettibender + - spaghettinigger + - spankthemonkey + - spearchucker + - spearchuckers + - spermacide + - spermbag + - spermhearder + - spermherder + - spic + - spick + - spicks + - spics + - spig + - spigotty + - spik + - spit + - spitter + - splittail + - spooge + - spreadeagle + - spunk + - spunky + - sqeh + - squa + - squarehead + - squareheads + - squaw + - squinty + - stringer + - stripclub + - stuinties + - stupid + - stupidfuck + - stupidfucker + - suckdick + - sucker + - suckme + - suckmyass + - suckmydick + - suckmytit + - suckoff + - swallower + - swalow + - "swamp guinea" + - "swamp guineas" + - tacohead + - tacoheads + - taff + - tang + - "tar babies" + - "tar baby" + - tarbaby + - tard + - teste + - thicklip + - thicklips + - thirdeye + - thirdleg + - threeway + - "timber nigger" + - "timber niggers" + - timbernigger + - tinker + - tinkers + - titbitnipply + - titfuck + - titfucker + - titfuckin + - titjob + - titlicker + - titlover + - tits + - tittie + - titties + - titty + - tongethruster + - tongue + - tonguethrust + - tonguetramp + - tortur + - tosser + - "towel head" + - "towel heads" + - towelhead + - trailertrash + - trannie + - tranny + - transvestite + - triplex + - tuckahoe + - tunneloflove + - turd + - turnon + - twat + - twink + - twinkie + - twobitwhore + - uck + - ukrop + - "uncle tom" + - unfuckable + - upskirt + - uptheass + - upthebutt + - usama + - vibr + - vibrater + - vomit + - wab + - wank + - wanker + - wanking + - waysted + - weenie + - weewee + - welcher + - welfare + - wetb + - wetback + - wetbacks + - wetspot + - whacker + - whash + - whigger + - whiggers + - whiskeydick + - whiskydick + - "white trash" + - whitenigger + - whitetrash + - whitey + - whiteys + - whities + - whiz + - whop + - whore + - whorefucker + - whorehouse + - wigga + - wiggas + - wigger + - wiggers + - willie + - williewanker + - wn + - wog + - wogs + - womens + - wop + - wtf + - wuss + - wuzzie + - xkwe + - yank + - yanks + - yarpie + - yarpies + - yellowman + - yid + - yids + - zigabo + - zigabos + - zipperhead + - zipperheads diff --git a/.github/styles/alex/ProfanityMaybe.yml b/.github/styles/alex/ProfanityMaybe.yml new file mode 100644 index 0000000000..e889b3a3b1 --- /dev/null +++ b/.github/styles/alex/ProfanityMaybe.yml @@ -0,0 +1,282 @@ +extends: existence +message: Reconsider using '%s', it may be profane. +level: warning +ignorecase: true +tokens: + - abbo + - abid + - abo + - abortion + - abuse + - addict + - addicts + - alla + - anal + - analsex + - anus + - areola + - athletesfoot + - attack + - australian + - babe + - banging + - bastard + - beastality + - beastial + - beastiality + - bicurious + - bitch + - bitches + - blackman + - blacks + - bondage + - boob + - boobs + - "bounty bar" + - "bounty bars" + - bountybar + - brothel + - buttplug + - clit + - clitoris + - cocaine + - cock + - coitus + - condom + - copulate + - cra5h + - crack + - cracker + - crackpipe + - crotch + - cunilingus + - cunillingus + - cybersex + - damn + - damnation + - defecate + - demon + - devil + - devilworshipper + - dick + - dike + - dildo + - drug + - drunk + - drunken + - dyke + - ejaculate + - ejaculated + - ejaculating + - ejaculation + - enema + - erection + - excrement + - fag + - fart + - farted + - farting + - feces + - felatio + - fetish + - fingerfood + - flasher + - flatulence + - fondle + - footaction + - foreskin + - foursome + - fourtwenty + - fruitcake + - gable + - genital + - gob + - god + - gonzagas + - goy + - goyim + - groe + - gross + - grostulation + - gub + - guinea + - guineas + - guizi + - hamas + - hebephila + - hebephile + - hebephiles + - hebephilia + - hebephilic + - heroin + - herpes + - hiv + - homicide + - horney + - ike + - ikes + - ikey + - illegals + - incest + - intercourse + - interracial + - italiano + - jerries + - jerry + - jesus + - jesuschrist + - jihad + - kink + - kinky + - knockers + - kock + - kotex + - kraut + - ky + - lactate + - lapdance + - libido + - licker + - liquor + - lolita + - lsd + - lynch + - mafia + - marijuana + - meth + - mick + - molest + - molestation + - molester + - molestor + - murder + - narcotic + - nazi + - necro + - nigerian + - nigerians + - nipple + - nipplering + - nook + - nooner + - nude + - nuke + - nymph + - oral + - orgasm + - orgies + - orgy + - paddy + - paederastic + - paederasts + - paederasty + - pearlnecklace + - peck + - pecker + - pederastic + - pederasts + - pederasty + - pedophile + - pedophiles + - pedophilia + - pedophilic + - pee + - peepshow + - pendy + - penetration + - penile + - penis + - penises + - penthouse + - phonesex + - pistol + - pixie + - pixy + - playboy + - playgirl + - porn + - pornflick + - porno + - pornography + - prostitute + - protestant + - pube + - pubic + - pussy + - pussycat + - queer + - racist + - radical + - radicals + - randy + - rape + - raped + - raper + - rapist + - rectum + - ribbed + - satan + - scag + - scat + - screw + - scrotum + - scum + - semen + - septic + - septics + - sex + - sexhouse + - sextoy + - sextoys + - sexual + - sexually + - sexy + - shag + - shinola + - shit + - slaughter + - smack + - snatch + - sniggers + - sodom + - sodomite + - spade + - spank + - sperm + - stagg + - stiffy + - strapon + - stroking + - suck + - suicide + - swallow + - swastika + - syphilis + - tantra + - teat + - terrorist + - testicle + - testicles + - threesome + - tinkle + - tit + - tits + - tnt + - torture + - tramp + - trap + - trisexual + - trots + - turd + - uterus + - vagina + - vaginal + - vibrator + - vulva + - whit + - whites + - willy + - xtc + - xxx + - yankee + - yankees \ No newline at end of file diff --git a/.github/styles/alex/ProfanityUnlikely.yml b/.github/styles/alex/ProfanityUnlikely.yml new file mode 100644 index 0000000000..8e13052d38 --- /dev/null +++ b/.github/styles/alex/ProfanityUnlikely.yml @@ -0,0 +1,251 @@ +extends: existence +message: Be careful with '%s', it’s profane in some cases. +level: warning +ignorecase: true +tokens: + - adult + - africa + - african + - allah + - amateur + - american + - angie + - angry + - arab + - arabs + - aroused + - asian + - assassin + - assassinate + - assassination + - assault + - attack + - australian + - babies + - backdoor + - backseat + - banana + - bananas + - baptist + - bast + - beast + - beaver + - bi + - bigger + - bisexual + - blackout + - blind + - blow + - bomb + - bombers + - bombing + - bombs + - bomd + - boom + - bosch + - bra + - breast + - brownie + - brownies + - buffy + - burn + - butt + - canadian + - cancer + - catholic + - catholics + - cemetery + - childrens + - chin + - chinese + - christ + - christian + - church + - cigarette + - cigs + - cocktail + - coconut + - coconuts + - color + - colored + - coloured + - communist + - conservative + - conspiracy + - corruption + - crabs + - crash + - creamy + - criminal + - criminals + - dead + - death + - deposit + - desire + - destroy + - deth + - die + - died + - dies + - dirty + - disease + - diseases + - disturbed + - dive + - doom + - ecstacy + - enemy + - erect + - escort + - ethiopian + - ethnic + - european + - execute + - executed + - execution + - executioner + - explosion + - failed + - failure + - fairies + - fairy + - faith + - fat + - fear + - fight + - filipina + - filipino + - fire + - firing + - fore + - fraud + - funeral + - fungus + - gay + - german + - gin + - girls + - gun + - harder + - harem + - headlights + - hell + - henhouse + - heterosexual + - hijack + - hijacker + - hijacking + - hole + - honk + - hook + - horn + - hostage + - hummer + - hun + - huns + - husky + - hustler + - illegal + - israel + - israeli + - israels + - itch + - jade + - japanese + - jerry + - jew + - jewish + - joint + - jugs + - kid + - kill + - killed + - killer + - killing + - kills + - kimchi + - knife + - laid + - latin + - lesbian + - liberal + - lies + - lingerie + - lotion + - lucifer + - mad + - mexican + - mideast + - minority + - moles + - mormon + - muslim + - naked + - nasty + - niger + - niggardly + - oreo + - oreos + - osama + - palestinian + - panties + - penthouse + - period + - pot + - poverty + - premature + - primetime + - propaganda + - pros + - que + - rabbi + - racial + - redlight + - refugee + - reject + - remains + - republican + - roach + - robber + - rump + - servant + - shoot + - shooting + - showtime + - sick + - slant + - slav + - slime + - slope + - slopes + - snigger + - sniggered + - sniggering + - sniggers + - sniper + - snot + - sob + - sos + - soviet + - spa + - stroke + - sweetness + - taboo + - tampon + - terror + - toilet + - tongue + - transexual + - transsexual + - trojan + - uk + - urinary + - urinate + - urine + - vatican + - vietcong + - violence + - virgin + - weapon + - whiskey + - womens \ No newline at end of file diff --git a/.github/styles/alex/README.md b/.github/styles/alex/README.md new file mode 100644 index 0000000000..0185d0e35e --- /dev/null +++ b/.github/styles/alex/README.md @@ -0,0 +1,27 @@ +Based on [alex](https://github.com/get-alex/alex). + +> Catch insensitive, inconsiderate writing + +``` +(The MIT License) + +Copyright (c) 2015 Titus Wormer + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +``` diff --git a/.github/styles/alex/Race.yml b/.github/styles/alex/Race.yml new file mode 100644 index 0000000000..9979c0b205 --- /dev/null +++ b/.github/styles/alex/Race.yml @@ -0,0 +1,87 @@ +--- +extends: substitution +message: Consider using '%s' instead of '%s'. +ignorecase: true +level: warning +action: + name: replace +swap: + Gipsy: Nomad|Traveler|Roma|Romani + Indian country: enemy territory + animal spirit: favorite|inspiration|personal interest|personality type + black list: blocklist|wronglist|banlist|deny list + blacklist: blocklist|wronglist|banlist|deny list + blacklisted: blocklisted|wronglisted|banlisted|deny-listed + blacklisting: blocklisting|wronglisting|banlisting|deny-listing + bugreport: bug report|snapshot + circle the wagons: defend + dream catcher: favorite|inspiration|personal interest|personality type + eskimo: Inuit + eskimos: Inuits + ghetto: projects|urban + goy: a person who is not Jewish|not Jewish + goyim: a person who is not Jewish|not Jewish + goyum: a person who is not Jewish|not Jewish + grandfather clause: legacy policy|legacy clause|deprecation policy + grandfather policy: legacy policy|legacy clause|deprecation policy + grandfathered: deprecated + grandfathering: deprecate + gyp: Nomad|Traveler|Roma|Romani + gyppo: Nomad|Traveler|Roma|Romani + gypsy: Nomad|Traveler|Roma|Romani + hymie: Jewish person + indian give: "go back on one\u2019s offer" + indian giver: "go back on one\u2019s offer" + japs: Japanese person|Japanese people + jump the reservation: disobey|endure|object to|oppose|resist + latina: Latinx + latino: Latinx + long time no hear: "I haven\u2019t seen you in a long time|it\u2019s been a long\ + \ time" + long time no see: "I haven\u2019t seen you in a long time|it\u2019s been a long\ + \ time" + master: primary|hub|reference + masters: primaries|hubs|references + mexican: Latinx + natives are becoming restless: dissatisfied|frustrated + natives are getting restless: dissatisfied|frustrated + natives are growing restless: dissatisfied|frustrated + natives are restless: dissatisfied|frustrated + non white: person of color|people of color + nonwhite: person of color|people of color + off reserve: disobey|endure|object to|oppose|resist + off the reservation: disobey|endure|object to|oppose|resist + on the warpath: defend + oriental: Asian person + orientals: Asian people + pinays: Filipinos|Filipino people + pinoys: Filipinos|Filipino people + pocahontas: Native American + pow wow: conference|gathering|meeting + powwow: conference|gathering|meeting + primitive: simple|indigenous|hunter-gatherer + red indian: Native American + red indians: Native American People + redskin: Native American + redskins: Native American People + sand niggers: Arabs|Middle Eastern People + savage: simple|indigenous|hunter-gatherer + shlomo: Jewish person + shyster: Jewish person + sophisticated culture: complex culture + sophisticated technology: complex technology + spade: a Black person + spirit animal: favorite|inspiration|personal interest|personality type + stone age: simple|indigenous|hunter-gatherer + too many chiefs: too many chefs in the kitchen|too many cooks spoil the broth + totem: favorite|inspiration|personal interest|personality type + towel heads: Arabs|Middle Eastern People + tribe: society|community + white list: passlist|alrightlist|safelist|allow list + white space: space|blank + white spaces: space|blank + whitelist: passlist|alrightlist|safelist|allow list + whitelisted: passlisted|alrightlisted|safelisted|allow-listed + whitelisting: passlisting|alrightlisting|safelisting|allow-listing + whitespace: space|blank + whitespaces: space|blank diff --git a/.github/styles/alex/Suicide.yml b/.github/styles/alex/Suicide.yml new file mode 100644 index 0000000000..3dfd3e33d2 --- /dev/null +++ b/.github/styles/alex/Suicide.yml @@ -0,0 +1,24 @@ +--- +extends: substitution +message: When referring to a person, consider using '%s' instead of '%s'. +ignorecase: true +level: warning +action: + name: replace +swap: + commit suicide: die by suicide + committed suicide: died by suicide + complete suicide: die by suicide + completed suicide: died by suicide + epidemic of suicides: rise in suicides + failed attempt: suicide attempt|attempted suicide + failed suicide: suicide attempt|attempted suicide + hang: the app froze|the app stopped responding|the app stopped responding to events|the + app became unresponsive + hanged: the app froze|the app stopped responding|the app stopped responding to events|the + app became unresponsive + successful suicide: die by suicide + suicide epidemic: rise in suicides + suicide failure: suicide attempt|attempted suicide + suicide note: a note from the deceased + suicide pact: rise in suicides diff --git a/.github/styles/alex/meta.json b/.github/styles/alex/meta.json new file mode 100644 index 0000000000..3db4c282ed --- /dev/null +++ b/.github/styles/alex/meta.json @@ -0,0 +1,4 @@ +{ + "feed": "https://github.com/errata-ai/alex/releases.atom", + "vale_version": ">=1.0.0" +} \ No newline at end of file diff --git a/.github/styles/config/vocabularies/Decidim/accept.txt b/.github/styles/config/vocabularies/Decidim/accept.txt new file mode 100644 index 0000000000..31e7bdab35 --- /dev/null +++ b/.github/styles/config/vocabularies/Decidim/accept.txt @@ -0,0 +1,19 @@ +[Aa]nonymised +Config +CSV +[Dd]ecidim +[Ee]mail +[Ff]aq +[Gg]amification +Keka +[Mm]oderations +[Nn]ickame +[Oo]fficialization +[Oo]fficializing +[Oo]fficialize +[Oo]fficialized +[Rr]eoffficialize +[Un]nfollow +[Uu]nhide +[Uu]npublish +[Uu]nreport diff --git a/en/modules/admin/assets/images/.gitkeep b/.github/styles/config/vocabularies/Decidim/reject.txt similarity index 100% rename from en/modules/admin/assets/images/.gitkeep rename to .github/styles/config/vocabularies/Decidim/reject.txt diff --git a/.github/workflows/ci_antora.yml b/.github/workflows/ci_antora.yml new file mode 100644 index 0000000000..c1d565a3ea --- /dev/null +++ b/.github/workflows/ci_antora.yml @@ -0,0 +1,25 @@ +name: "[CI] Antora" +on: + push: + branches: + - develop + pull_request: + paths: + - "*" + +jobs: + check: + name: Install and run Antora CI + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Use Node.js + uses: actions/setup-node@v3 + with: + node-version-file: ".node-version" + - name: Install dependencies + run: npm install + - name: Run test script + run: npm test + shell: "bash" + diff --git a/.github/workflows/trigger_build.yml b/.github/workflows/trigger_build.yml index 429b470e92..ca01d30d85 100644 --- a/.github/workflows/trigger_build.yml +++ b/.github/workflows/trigger_build.yml @@ -6,9 +6,13 @@ jobs: name: Trigger build runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2.0.0 + - uses: actions/checkout@v3 + with: + token: ${{ secrets.WORKFLOW_PAT }} - uses: stefanzweifel/git-auto-commit-action@v4 with: skip_dirty_check: true commit_message: "Trigger build" commit_options: "--allow-empty" + commit_user_name: decidim-bot + commit_user_email: decidim-bot@users.noreply.github.com diff --git a/.github/workflows/vale_linting.yml b/.github/workflows/vale_linting.yml new file mode 100644 index 0000000000..6425727eb1 --- /dev/null +++ b/.github/workflows/vale_linting.yml @@ -0,0 +1,27 @@ +name: Vale linting +on: + pull_request: + +jobs: + prose: + runs-on: ubuntu-latest + permissions: + contents: read + pull-requests: write + + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Install Asciidoctor + run: sudo apt-get install -y asciidoctor + + - name: Vale + uses: errata-ai/vale-action@reviewdog + with: + version: 3.7.1 + files: docs/en + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.node-version b/.node-version new file mode 100644 index 0000000000..d9f880069d --- /dev/null +++ b/.node-version @@ -0,0 +1 @@ +16.14.2 diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index aecd8daae8..ab8179dad9 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -1,41 +1,24 @@ -# Contributor Covenant Code of Conduct +# Contributor Code of Conduct -## Our Pledge +As contributors and maintainers of this project, and in the interest of +fostering an open and welcoming community, we pledge to respect all people who +contribute through reporting issues, posting feature requests, updating +documentation, submitting pull requests or patches, and other activities. -In the interest of fostering an open and welcoming environment, we as -contributors and maintainers pledge to making participation in our project and -our community a harassment-free experience for everyone, regardless of age, body -size, disability, ethnicity, sex characteristics, gender identity and expression, -level of experience, education, socio-economic status, nationality, personal -appearance, race, religion, or sexual identity and orientation. - -## Our Standards - -Examples of behavior that contributes to creating a positive environment -include: - -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members +We are committed to making participation in this project a harassment-free +experience for everyone, regardless of level of experience, gender, gender +identity and expression, sexual orientation, disability, personal appearance, +body size, race, ethnicity, age, religion, or nationality. Examples of unacceptable behavior by participants include: -* The use of sexualized language or imagery and unwelcome sexual attention or - advances -* Trolling, insulting/derogatory comments, and personal or political attacks +* The use of sexualized language or imagery +* Personal attacks +* Trolling or insulting/derogatory comments * Public or private harassment -* Publishing others' private information, such as a physical or electronic - address, without explicit permission -* Other conduct which could reasonably be considered inappropriate in a - professional setting - -## Our Responsibilities - -Project maintainers are responsible for clarifying the standards of acceptable -behavior and are expected to take appropriate and fair corrective action in -response to any instances of unacceptable behavior. +* Publishing other's private information, such as physical or electronic + addresses, without explicit permission +* Other unethical or unprofessional conduct Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions @@ -43,34 +26,24 @@ that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. -## Scope +By adopting this Code of Conduct, project maintainers commit themselves to +fairly and consistently applying these principles to every aspect of managing +this project. Project maintainers who do not follow or enforce the Code of +Conduct may be permanently removed from the project team. -This Code of Conduct applies both within project spaces and in public spaces -when an individual is representing the project or its community. Examples of -representing a project or community include using an official project e-mail -address, posting via an official social media account, or acting as an appointed -representative at an online or offline event. Representation of a project may be -further defined and clarified by project maintainers. - -## Enforcement +This code of conduct applies both within project spaces and in public spaces +when an individual is representing the project or its community. Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported by contacting the project team at hola@decidim.org. All +reported by contacting a project maintainer at hola@decidim.org. All complaints will be reviewed and investigated and will result in a response that -is deemed necessary and appropriate to the circumstances. The project team is -obligated to maintain confidentiality with regard to the reporter of an incident. -Further details of specific enforcement policies may be posted separately. - -Project maintainers who do not follow or enforce the Code of Conduct in good -faith may face temporary or permanent repercussions as determined by other -members of the project's leadership. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, -available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html +is deemed necessary and appropriate to the circumstances. Maintainers are +obligated to maintain confidentiality with regard to the reporter of an +incident. -[homepage]: https://www.contributor-covenant.org +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 1.3.0, available at +[http://contributor-covenant.org/version/1/3/0/][version] -For answers to common questions about this code of conduct, see -https://www.contributor-covenant.org/faq +[homepage]: http://contributor-covenant.org +[version]: http://contributor-covenant.org/version/1/3/0/ diff --git a/README.md b/README.md index 07e0106880..25b447388f 100644 --- a/README.md +++ b/README.md @@ -1,38 +1,34 @@ -# Decidim Documentation +# Decidim Documentation [![Netlify Status](https://api.netlify.com/api/v1/badges/d20ee965-1821-49c9-8e5a-f428133b5c39/deploy-status)](https://app.netlify.com/sites/decidim-documentation/deploys) -This is the new repository for the [Decidim Documentation website](https://docs.decidim.org/). Is built with [Antora](https://antora.org/). +This is the repository for the [Decidim Documentation website](https://docs.decidim.org/). Is built with [Antora](https://antora.org/). -## Install locally +## Install locally ### Manually -##### [Install antora](https://docs.antora.org/antora/2.3/install-and-run-quickstart/) with software dependencies. +[Install antora](https://docs.antora.org/antora/2.3/install-and-run-quickstart/) with software dependencies. ```bash -# Install Node & npm using nvm +# Install Node and Npm, for instance using nvm: wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash nvm install node -# Install Antora and dependencies -npm install -``` +# If antora installation succeed, `antora -v` will return antora's version. -If antora installation succeed, `antora -v` will return antora's version. - -##### Clone repository and build documentation website. - -```bash +# Clone repository and build documentation website. git clone https://github.com/decidim/documentation cd documentation -./bin/build -``` -The generated website will be create under ```build/site/``` folder. Open ```index.html``` with any browser. +# Install Antora and dependencies +npm install + +# build the static site +npm run build -```bash +# The generated website will be create under ```build/site/``` folder. Open ```index.html``` with any browser. xdg-open build/site/index.html ``` @@ -46,3 +42,4 @@ cd documentation ./bin/dbuild xdg-open build/site/index.html ``` + diff --git a/antora-playbook.yml b/antora-playbook.yml index c61f18e4e1..6ee4e28e3a 100644 --- a/antora-playbook.yml +++ b/antora-playbook.yml @@ -1,27 +1,32 @@ +# This file is changed during the build process, so if you want to save your changes +# You'd need to commit them before running the `npm run build` script, or +# just comment the `postbuild` script that restores this file +# site: title: Decidim Docs url: https://docs.decidim.org - start_page: master@en:ROOT:index.adoc + start_page: v0.29@en:ROOT:index.adoc content: - edit_url: "https://github.com/decidim/documentation/edit/{refname}/{path}" sources: - - url: &landing . - start_path: /en - branches: HEAD + - url: &documentation https://github.com/decidim/documentation + start_path: docs/en + branches: [release/0.29-stable, release/0.28-stable, release/0.27-stable, develop] + edit_url: "https://github.com/decidim/documentation/edit/{refname}/{path}" - url: https://github.com/decidim/decidim start_path: docs - branches: develop - - url: https://github.com/decidim/decidim-bulletin-board - start_path: docs - branches: develop + branches: [release/0.29-stable, release/0.28-stable, release/0.27-stable, develop] ui: bundle: - url: https://github.com/decidim/documentation-antora-ui/releases/download/v0.3/ui-bundle.zip + url: https://github.com/decidim/documentation-antora-ui/releases/download/v0.4/ui-bundle.zip snapshot: true supplemental_files: ./supplemental_ui +antora: + extensions: + - require: '@antora/lunr-extension' asciidoc: attributes: kroki-fetch-diagram: true page-pagination: "" extensions: - asciidoctor-kroki + - asciidoctor-mathjax diff --git a/bin/build b/bin/build deleted file mode 100755 index 939f750fbe..0000000000 --- a/bin/build +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/env bash - -DOCSEARCH_ENABLED=true DOCSEARCH_ENGINE=lunr antora --generator antora-site-generator-lunr antora-playbook.yml $@ diff --git a/bin/dbuild b/bin/dbuild index 6cfa9a3e2f..d02d34d867 100755 --- a/bin/dbuild +++ b/bin/dbuild @@ -1,4 +1,4 @@ #!/bin/env bash -docker run -u $(id -u) -e DOCSEARCH_ENABLED=true -e DOCSEARCH_ENGINE=lunr -v $PWD:/antora:Z --rm -t antora/antora --generator antora-site-generator-lunr --cache-dir=./.cache/antora antora-playbook.yml $@ +docker run -u $(id -u) -v $PWD:/antora:Z --rm -t antora/antora --cache-dir=./.cache/antora antora-playbook.yml $@ diff --git a/bin/playbook-changer.js b/bin/playbook-changer.js new file mode 100755 index 0000000000..5c2abe7b1b --- /dev/null +++ b/bin/playbook-changer.js @@ -0,0 +1,140 @@ +#!/bin/env node +// Antora playbook changer script for Decidim documentation +// +// Changes the playbook accordingly to its environment +// + +const fs = require('fs'); +const exec = require('child_process').exec; + +// Executes a command and returns the output as a Promise +// +// @param {string} command - The command to run +// @returns {Promise} The output of the command +function executeCommand(command) { + return new Promise((resolve, reject) => { + exec(command, (error, stdout, stderr) => { + if (error) { + console.error(`Error: ${error.message}`); + reject(error); + return; + } + if (stderr) { + console.error(`Command execution error: ${stderr}`); + reject(new Error(stderr)); + return; + } + resolve(stdout); + }); + }); +} + +// Infers base branch reference according to the head reference +// +// If the head reference starts with the version number (i.e. "v0.26/fix/preview"), returns the base branch reference (i.e. "release/0.26-stable") +// If not, then returns "develop" +// +// @param {string} headRef - The head reference. Examples: "v0.26/fix/preview" or "fix/preview" +// @returns {string} The base reference. Examples "release/0.26-stable" or "develop" +function baseFromHead(headRef) { + let baseRef = "develop"; + + if (headRef.startsWith("v0.")) { + const version = headRef.split("/")[0].replace("v", ""); + baseRef = `release/${version}-stable`; + }; + + return baseRef; +} + +// Get metatada from the environment +// +// Gets the head reference and the base reference by checking out environment variables +// +// @returns {object} +async function getMetadataFromEnvironment() { + let headRef; + let baseRef; + + const isNetlifyDeployPreview = process.env.CONTEXT === "deploy-preview"; + const isNetlifyProduction = process.env.CONTEXT === "production"; + const isGithubActionCI = process.env.RUNNER_ENVIRONMENT == "github-hosted"; + + if (isNetlifyDeployPreview || isGithubActionCI) { + // We're in CI and we need to change the head of the playbook + console.log("ENVIRONMENT IS CI"); + headRef = process.env.HEAD || process.env.GITHUB_HEAD_REF; + if (process.env.GITHUB_BASE_REF != undefined) { + baseRef = process.env.GITHUB_BASE_REF + } else { + baseRef = baseFromHead(headRef); + } + } else if (isNetlifyProduction) { + // We're in production so we don't need to change anything + console.log("ENVIRONMENT IS PROD"); + headRef = "develop"; + baseRef = "develop"; + } else { + // We're in development and we need to change the head + console.log("ENVIRONMENT IS DEV"); + headRef = "HEAD"; + const branch = await executeCommand("git branch --show-current"); + baseRef = baseFromHead(branch); + } + + return { + headRef, + baseRef, + } +} + +// Given an antora-playbook.yml file, and a metadata object +// Replaces the contents of the file depending in the metadata +// +// @param {string} antoraPlaybookFile - the path of the antora-playbook.yml file +// @param {object} metadata - an object with the metadata +// @param {string} metadata.baseRef - the base branch from where this branch was created +// It can be `develop` or the release branch (i.e. `release/0.27-stable`) +// @param {string} metadata.headRef - the head reference of git +// It's the name of the current branch +function writeToFile(antoraPlaybookFile, metadata) { + fs.readFile(antoraPlaybookFile, "utf8", function (err,data) { + if (err) { + return console.err(err); + } + + let result = data.replace(metadata.baseRef, metadata.headRef); + + const isDevelopment = metadata.headRef === "HEAD"; + if (isDevelopment) { + const antoraDocumentationUrl = "https://github.com/decidim/documentation"; + result = result.replace(antoraDocumentationUrl, "."); + } + + console.log("********************************") + console.log(antoraPlaybookFile); + console.log(result); + console.log("********************************") + + fs.writeFile(antoraPlaybookFile, result, "utf8", function (err) { + if (err) { + return console.err(err); + } + }); + }); +} + +(async function() { + console.log("********************************") + console.log(process.env); + console.log("********************************") + + const ANTORA_PLAYBOOK = "antora-playbook.yml"; + const metadata = await getMetadataFromEnvironment(); + + console.log("********************************") + console.log(metadata); + console.log("********************************") + + writeToFile(ANTORA_PLAYBOOK, metadata); +}()); diff --git a/bin/test b/bin/test new file mode 100755 index 0000000000..4756682054 --- /dev/null +++ b/bin/test @@ -0,0 +1,14 @@ +#!/bin/env bash + +stderrlog=$(mktemp) + +npm run build 2> $stderrlog + +if [ -e "$stderrlog" ] && [ -s "$stderrlog" ]; +then + cat $stderrlog + exit 1 +else + exit 0 +fi + diff --git a/crowdin.yml b/crowdin.yml new file mode 100644 index 0000000000..bac4673d34 --- /dev/null +++ b/crowdin.yml @@ -0,0 +1,3 @@ +files: + - source: /docs/en/**/*.adoc + translation: /docs/%two_letters_code%/**/%original_file_name% diff --git a/en/modules/ROOT/nav.adoc b/docs/ca/modules/ROOT/nav.adoc similarity index 74% rename from en/modules/ROOT/nav.adoc rename to docs/ca/modules/ROOT/nav.adoc index 4d69ae4761..ef8f361fc9 100644 --- a/en/modules/ROOT/nav.adoc +++ b/docs/ca/modules/ROOT/nav.adoc @@ -1,33 +1,34 @@ - * xref:install:index.adoc[Getting started] ** xref:install:manual.adoc[Manual Installation] ** xref:install:checklist.adoc[Checklist] ** xref:install:update.adoc[Update] - * xref:configure:index.adoc[Configure] ** xref:configure:environment_variables.adoc[Environment Variables] ** xref:configure:initializer.adoc[Initializer] ** xref:customize:index.adoc[Customize] *** xref:customize:authorizations.adoc[Authorizations] *** xref:customize:code.adoc[Code] +*** xref:customize:data_consent.adoc[Data consent] *** xref:customize:gemfile.adoc[Gemfile] *** xref:customize:images.adoc[Images] *** xref:customize:javascript.adoc[Javascript] +*** xref:customize:logic.adoc[Logic] *** xref:customize:menu.adoc[Menu] *** xref:customize:oauth.adoc[OAuth] *** xref:customize:styles.adoc[Styles] *** xref:customize:texts.adoc[Texts] *** xref:customize:users_registration_mode.adoc[User registration mode] *** xref:customize:views.adoc[Views] -** xref:configure:services:index.adoc[Services] +** xref:services:index.adoc[Services] *** xref:services:activejob.adoc[Active Job] +*** xref:services:activestorage.adoc[Active Storage] *** xref:services:elections_bulletin_board.adoc[Elections Bulletin Board] *** xref:services:etherpad.adoc[Etherpad] *** xref:services:maps.adoc[Maps] +*** xref:services:sms.adoc[SMS] *** xref:services:smtp.adoc[SMTP] *** xref:services:social_providers.adoc[Social Providers] - -* xref:admin:index.adoc[Admin] +* Admin ** xref:admin:index.adoc[Introduction] *** xref:admin:system.adoc[System panel] *** xref:admin:dashboard.adoc[Dashboard] @@ -104,59 +105,52 @@ **** xref:admin:components/proposals/participatory_texts.adoc[Participatory texts] *** xref:admin:components/sortitions.adoc[Sortitions] *** xref:admin:components/surveys.adoc[Surveys] -// ** xref:admin:features.adoc[Features] -// *** xref:admin:features/badges.adoc[Badges] -// *** xref:admin:features/comments.adoc[Comments] -// *** xref:admin:features/conversations.adoc[Conversations] -// *** xref:admin:features/embed.adoc[Embed] -// *** xref:admin:features/endorsements.adoc[Endorsements] -// *** xref:admin:features/fingerprint.adoc[Fingerprint] -// *** xref:admin:features/follows.adoc[Follows] -// *** xref:admin:features/metrics.adoc[Metrics] -// *** xref:admin:features/my_account.adoc[My account] -// **** xref:admin:features/my_account/account.adoc[Account] -// **** xref:admin:features/my_account/notifications_settings.adoc[Notifications settings] -// **** xref:admin:features/my_account/authorizations.adoc[Authorizations] -// **** xref:admin:features/my_account/groups.adoc[Groups] -// **** xref:admin:features/my_account/my_interests.adoc[My interests] -// **** xref:admin:features/my_account/my_data.adoc[My data] -// **** xref:admin:features/my_account/delete_my_account.adoc[Delete my account] -// *** xref:admin:features/my_public_profile.adoc[My public profile] -// **** xref:admin:features/my_public_profile/timeline.adoc[Timeline] -// **** xref:admin:features/my_public_profile/activity.adoc[Activity] -// **** xref:admin:features/my_public_profile/badges.adoc[Badges] -// **** xref:admin:features/my_public_profile/follows.adoc[Follows] -// **** xref:admin:features/my_public_profile/followers.adoc[Followers] -// **** xref:admin:features/my_public_profile/groups.adoc[Groups] -// *** xref:admin:features/notifications.adoc[Notifications] -// *** xref:admin:features/search.adoc[Search] -// *** xref:admin:features/share.adoc[Share] -// *** xref:admin:features/statistics.adoc[Statistics] -// *** xref:admin:features/versions.adoc[Versions] +** Features +*** xref:admin:features/badges.adoc[Badges] +*** xref:admin:features/comments.adoc[Comments] +*** xref:admin:features/conversations.adoc[Conversations] +*** xref:admin:features/embed.adoc[Embed] +*** xref:admin:features/endorsements.adoc[Endorsements] +*** xref:admin:features/fingerprint.adoc[Fingerprint] +*** xref:admin:features/follows.adoc[Follows] +*** xref:admin:features/metrics.adoc[Metrics] +*** xref:admin:features/my_account.adoc[My account] +**** xref:admin:features/my_account/account.adoc[Account] +**** xref:admin:features/my_account/notifications_settings.adoc[Notifications settings] +**** xref:admin:features/my_account/authorizations.adoc[Authorizations] +**** xref:admin:features/my_account/groups.adoc[Groups] +**** xref:admin:features/my_account/my_interests.adoc[My interests] +**** xref:admin:features/my_account/my_data.adoc[My data] +**** xref:admin:features/my_account/delete_my_account.adoc[Delete my account] +*** xref:admin:features/my_public_profile.adoc[My public profile] +**** xref:admin:features/my_public_profile/timeline.adoc[Timeline] +**** xref:admin:features/my_public_profile/activity.adoc[Activity] +**** xref:admin:features/my_public_profile/badges.adoc[Badges] +**** xref:admin:features/my_public_profile/follows.adoc[Follows] +**** xref:admin:features/my_public_profile/followers.adoc[Followers] +**** xref:admin:features/my_public_profile/groups.adoc[Groups] +*** xref:admin:features/notifications.adoc[Notifications] +*** xref:admin:features/search.adoc[Search] +*** xref:admin:features/share.adoc[Share] +*** xref:admin:features/statistics.adoc[Statistics] +*** xref:admin:features/versions.adoc[Versions] ** xref:admin:newsletters.adoc[Newsletters] ** xref:admin:global_moderations.adoc[Global moderations] ** Deprecated -*** xref:admin:how-to-access-administrator-menu.adoc[How to access the administrator menu] *** xref:admin:information-pages.adoc[Information pages] - * xref:contribute:index.adoc[Contribute] -** xref:ROOT:governance.adoc[Governance] +** xref:contribute:governance.adoc[Governance] ** xref:contribute:translations.adoc[Translations] - +** xref:contribute:documentation.adoc[Documentation] * xref:develop:index.adoc[Develop] ** xref:develop:guide.adoc[Guide] -*** xref:develop:guide_architecture.adoc[Architecture] -*** xref:develop:guide_changelog.adoc[Changelog] -*** xref:develop:guide_commands.adoc[Commands] -*** xref:develop:guide_development_app.adoc[Development App] -*** xref:develop:guide_development_with_custom_seed_data.adoc[Development With Custom Seed Data] -*** xref:develop:guide_development_with_localhost_ssl.adoc[Testing SSL and Tenants in Development] -*** xref:develop:guide_example_apps.adoc[Example Applications] -*** xref:develop:guide_git_conventions.adoc[Git conventions] -*** xref:develop:guide_github_projects.adoc[GitHub Projects Workflow] -*** xref:develop:guide_semver.adoc[Semantic Versioning] +*** xref:develop:guide_example_apps.adoc[1. Example Applications] +*** xref:develop:guide_development_app.adoc[2. Development App] +*** xref:develop:guide_commands.adoc[3. Commands] +*** xref:develop:guide_conventions.adoc[4. Conventions] +*** xref:develop:guide_architecture.adoc[5. Architecture] ** xref:develop:security.adoc[Security] -** xref:develop:index.adoc[Advanced] +** Advanced *** Concerns **** xref:develop:authorable.adoc[Authorable] **** xref:develop:embeddable.adoc[Embeddable] @@ -164,14 +158,16 @@ **** xref:develop:followable.adoc[Followable] **** xref:develop:reportable.adoc[Reportable] **** xref:develop:traceable.adoc[Traceable] -**** xref:develop:translatable_resource.adoc[TranslatableResource aka Machine Translations] -**** xref:develop:shareable_tokens.adoc[Shareable with Tokens] +**** xref:develop:machine_translations.adoc[TranslatableResource aka Machine Translations] +**** xref:develop:share_tokens.adoc[Shareable with Tokens] *** xref:develop:api.adoc[API] *** xref:develop:components.adoc[Components] *** xref:develop:content_processors.adoc[Content Processors] +*** xref:develop:custom_seed_data.adoc[Custom Seed Data] *** xref:develop:deploy.adoc[Deploy] *** xref:develop:docker.adoc[Docker] *** xref:develop:fixing_locales.adoc[Fixing locales] +*** xref:develop:guide_github_projects.adoc[GitHub Projects Workflow] *** xref:develop:maps.adoc[Maps] *** xref:develop:managing_translations_i18n.adoc[i18n] *** xref:develop:metrics.adoc[Metrics] @@ -181,8 +177,10 @@ *** xref:develop:permissions.adoc[Permissions] *** xref:develop:profiling.adoc[Profiling] *** xref:develop:releases.adoc[Releases] +*** xref:develop:reminders.adoc[Reminders] *** xref:develop:templates.adoc[Templates] *** xref:develop:testing.adoc[Testing] +*** xref:develop:guide_development_with_localhost_ssl.adoc[Testing SSL and Tenants in Development] *** xref:develop:turbolinks.adoc[Turbolinks] *** Views **** xref:develop:content_blocks.adoc[Content Blocks] @@ -190,7 +188,6 @@ **** xref:develop:newsletter_templates.adoc[Newsletter Templates] **** xref:develop:view_hooks.adoc[View Hooks] **** xref:develop:view_models_aka_cells.adoc[View Models (Cells)] - * Understand ** xref:understand:about.adoc[About] ** xref:understand:background.adoc[Background] @@ -199,20 +196,23 @@ *** xref:features:components.adoc[Components] *** xref:features:participants.adoc[Participants] *** xref:features:general-features.adoc[General features] ++ // ** xref:understand:governance.adoc[Project governance] + // ** xref:understand:history.adoc[History of the project] + // ** xref:understand:research.adoc[Research] + ** xref:understand:social-contract.adoc[Social Contract] -** xref:publications:index.adoc[Publications] +*** xref:understand:social-contract-ca.adoc[Català] +*** xref:understand:social-contract-es.adoc[Castellano] +** Publications *** xref:publications:catalan.adoc[Catalan] *** xref:publications:english.adoc[English] *** xref:publications:french.adoc[French] *** xref:publications:german.adoc[German] *** xref:publications:italian.adoc[Italian] *** xref:publications:spanish.adoc[Spanish] - -* xref:whitepaper:index.adoc[Whitepaper] -** xref:whitepaper:decidim-a-brief-overview.adoc[Decidim: a brief overview] - -* xref:releases:index.adoc[Release Notes] - +** Whitepaper +*** xref:whitepaper:decidim-a-brief-overview.adoc[Decidim: a brief overview] +* xref:releases:index.adoc[Release Notes] \ No newline at end of file diff --git a/en/modules/ROOT/pages/index.adoc b/docs/ca/modules/ROOT/pages/index.adoc similarity index 70% rename from en/modules/ROOT/pages/index.adoc rename to docs/ca/modules/ROOT/pages/index.adoc index 4de462be2c..8ed5c4eb1d 100644 --- a/en/modules/ROOT/pages/index.adoc +++ b/docs/ca/modules/ROOT/pages/index.adoc @@ -2,6 +2,8 @@ This is the documentation site to Decidim, a participatory democracy platform created initially by Barcelona City Hall. +Decidim is a framework that allows anybody to create and configure a website platform, to be used in the form of a political network for democratic participation. The platform allows any organization (local city council, association, university, NGO, neighbourhood or cooperative) to create mass processes for strategic planning, participatory budgeting, collaborative design for regulations, urban spaces and election processes. + == New to Decidim? You’ve found the documentation for Decidim. Learn about the project at https://decidim.org[decidim.org]. @@ -14,5 +16,4 @@ If you want to make changes to the source code, we have documentation for xref:d If you are an organisation who wants to use Decidim, or a developer who is interested in collaborating on the software, please https://decidim.org/contact[get in touch]. -Decidim is a community effort, as such if you find any errors on these guides please let us know at hola [at] decidim [dot] org. Every help is welcome. If you've a GitHub user then you can even propose changes to this website with the Edit link on every page. - +Decidim is a community effort, as such if you find any errors on these guides please let us know at hola [at] decidim [dot] org. Every help is welcome. If you've a GitHub user then you can even propose changes to this website with the Edit link on every page. \ No newline at end of file diff --git a/docs/ca/modules/admin/pages/appearance.adoc b/docs/ca/modules/admin/pages/appearance.adoc new file mode 100644 index 0000000000..3b42c76416 --- /dev/null +++ b/docs/ca/modules/admin/pages/appearance.adoc @@ -0,0 +1,78 @@ += Appearance + +In this page you can configure the look and feel of your Decidim instance. + +Please mind that this would be incompatible with some of the changes that your implementers could change in your general installation. For instance if there were changes in the xref:customize:styles.adoc[Styles] this could not work. + +image::admin_appearance.png[Decidim Admin Appearance] + +--- + +NOTE: This is a legacy setting that will be removed in the next version. https://github.com/decidim/decidim/pull/6575[See PR]. + +* **Show statistics**: whether you want to show or not the statistics sections in the homepage. + +--- + +* **Description**: What's the description of this site. Used for metatags for Google and Twitter embeds. Also used by the "SubHero" ContentBlock in the Homepage. + +--- + +NOTE: These area legacy settings that will be removed in the next version. https://github.com/decidim/decidim/pull/6284[See PR]. + +* **Call To Action button path**: You can overwrite where the Call To Action button in the homepage links to. Use partial paths, not full URLs here. Accepts letters, numbers, dashes and slashes, and must start with a letter. The Call To Action button is shown in the homepage between the welcome text and the description. Example: https://meta.decidim.org/conferences/decidimfest2020/ +* **Call To Action button text**: You can overwrite the Call To Action button text in the homepage for each available language in your organization. If not set, the default value will be used. The Call To Action button is shown in the homepage between the welcome text and the description. + +--- + +NOTE: This is a legacy setting that will be removed in the next version. There's no PR yet. + +* **Highligted content banner** +** *Show the highlighted content banner* +** *Title* +** *Short description* +** *Action button title* +** *Action button subtitle* +** *Action button URL* +** *Image* + +--- + +* *Edit omnipresent banner* +** **Show omnipresent banner** +** **Title** +** **Short description** +** **URL** + +--- + +* **Edit layout appearance** + +This subsection defines the images for the layout that will be visible in almost all the pages. These are: + +** Icon +** Logo +** Official logo header +** Official logo footer +** Official organization URL + +// TODO: Add examples + +--- + +* **Organization colors**: What are the colors for your organization. Please notice that this could generate accessibility problems, for instance with people that doesn't have a good contrast notion. You can set +** Primary +** Secondary +** Success +** Warning +** Alert +** Highlight +** Highlight, alternative + +// TODO: Add examples + +--- + +* **Header snippets**: Use this field to add things to the HTML head. The most common use is to integrate third-party services that require some extra JavaScript or CSS. Also, you can use it to add extra meta tags to the HTML. Note that this will only be rendered in public pages, not in the admin section. + +// TODO: reference to HTML snippet setting \ No newline at end of file diff --git a/docs/ca/modules/admin/pages/areas.adoc b/docs/ca/modules/admin/pages/areas.adoc new file mode 100644 index 0000000000..b25b26c414 --- /dev/null +++ b/docs/ca/modules/admin/pages/areas.adoc @@ -0,0 +1,11 @@ += Areas + +include::partial$deprecated.adoc[] + +Areas are all the sectors that an Organization can have. + +They are pretty similar to xref:admin:scopes.adoc[scopes], meaning that they are a way of allowing a better navigation and filtering in the spaces and components. + +We don't recommend using them, as probably in the future they will be removed. + +You can read more information about the history of Areas in this https://github.com/decidim/decidim/issues/3540#issuecomment-427324532[GitHub comment]. \ No newline at end of file diff --git a/docs/ca/modules/admin/pages/components.adoc b/docs/ca/modules/admin/pages/components.adoc new file mode 100644 index 0000000000..602089c849 --- /dev/null +++ b/docs/ca/modules/admin/pages/components.adoc @@ -0,0 +1,5 @@ += Components + +Through components an administrator can enable and configure different participatory mechanisms. + +include::partial$components_list.adoc[] \ No newline at end of file diff --git a/docs/ca/modules/admin/pages/components/accountability.adoc b/docs/ca/modules/admin/pages/components/accountability.adoc new file mode 100644 index 0000000000..3657f8f81d --- /dev/null +++ b/docs/ca/modules/admin/pages/components/accountability.adoc @@ -0,0 +1,10 @@ += Accountability + +The Accountability component allows people to follow project implementations. It works like a project management system built into the platform. It offers the following features: + +* creating results that represent projects to be implemented +* subdividing results into projects or sub-projects +* defining and applying progress in implementation statuses (0% to 100% implemented) around their implementation +* displaying the extent of the results’ implementation grouped by categories and scopes + +Results, projects and statuses can be updated through a CVS, or manually by the administration interface. \ No newline at end of file diff --git a/docs/ca/modules/admin/pages/components/blog.adoc b/docs/ca/modules/admin/pages/components/blog.adoc new file mode 100644 index 0000000000..78febc841b --- /dev/null +++ b/docs/ca/modules/admin/pages/components/blog.adoc @@ -0,0 +1,145 @@ += Blog + +The Blog component allows people to read multiple posts ordered by date. + +Some examples of where this component was used: + +* https://meta.decidim.org/processes/roadmap/f/247/[News in Propose new functionalities for Decidim software] in https://meta.decidim.org[Metadecidim] + +image:components/blog/example01.png[Example of blog posts list] +image:components/blog/example02.png[Example of a blog post] + +To configure the Blog component: + +. Sign in as admin +. Go to admin panel +. In the main sidebar, click in the button for the space that you want to configure the component for. +For instance, it could be "Processes", "Assemblies" or "Conferences". +. Go to components +. Click on "Add component" button +. Click on "Blog" +. Fill the xref:_add_component[Add component] form + +== Add component + +image:components/blog/component.png[Add component form] + + +.Add component: Blog form +|=== +|Field |Type |Description + +|Name +|Required +|What is the title of this component. For instance, "Blogs" + +|Order position +|Optional +|Which order will it have in relation to the other blogs. Having a lower number means a higher priority. +For instance, if you have two blogs, "Blog a" with weight "10" and "Blog b" with weight "0", then "Blog b" will be first when ordering. +|=== + + +.Add component: Blog form - Global settings +|=== +|Field |Type |Description + +|Announcement +|Optional +|A general announcement that'll be visible on the general blogs landing page. + +|Comments enabled +|Optional +|Whether you want to have comments in the meetings. + +|Comments max length +|Optional +|What is the characters limit that participants will have when making comments. Leave 0 for default value. +|=== + +In the cases where the space that this component will be used has xref:admin:spaces/processes/phases.adoc[Phases], for instance, in +xref:admin:spaces/processes.adoc[Participatory Processes], then you can also define different behaviors per Step. + + +.Add component: Blogs form - Step settings +|=== +|Field |Type |Description + +|Announcement +|Optional +|A general announcement that'll be visible on the general blog landing page. + +|Comments blocked +|Optional +|Whether you want to enable comments creation for this phase. + +|Endorsements enabled +|Optional +|Whether you want to enable endorsements for this phase. + +|Endorsements blocked +|Optional +|Whether you want to disable adding new endorsements for this phase. +|=== + +== Permissions + +An administrator can choose which kind of xref:customize:authorizations.adoc[Authorizations] a participant need to have to make +certain actions in the blogs: + +* Comment +* Endorse + +== Manage posts + +image:components/blog/manage_posts.png[Manage posts table] + +=== New post form + +image:components/blog/new_post.png[New post form] + + +.New post form +|=== +|Field |Type |Description + +|Create post as +|Required +|Participant account or user group that will be the author of the post. + +|Title +|Required +|What is the title of this post. + +|Body +|Required +|What is the description of this post. +|=== + +==== Actions + + +.Actions +|=== +|Icon |Name |Definition + +|image:action_edit.png[Edit icon] +|Edit +|Edit form for this post. It's the same form as "New post". + +|image:action_folder.png[Folder icon] +|Folder +|For classifying Attachments. + +|image:action_attachments.png[Attachments icon] +|Attachments +|Documents that are related to the post. + +|image:action_permissions.png[Permissions icon] +|Permissions +|To handle the permissions of this post, depending on the verification a participant has. + +|image:action_delete.png[Delete icon] +|Delete +|To delete this post. +|=== \ No newline at end of file diff --git a/en/modules/admin/pages/components/budgets.adoc b/docs/ca/modules/admin/pages/components/budgets.adoc similarity index 98% rename from en/modules/admin/pages/components/budgets.adoc rename to docs/ca/modules/admin/pages/components/budgets.adoc index d8db3ac4df..e4e986f0b1 100644 --- a/en/modules/admin/pages/components/budgets.adoc +++ b/docs/ca/modules/admin/pages/components/budgets.adoc @@ -1,4 +1,5 @@ = Budgets + :page-toclevels: 4 The Budgets component allows people to vote by selecting projects of their choosing. Depending on the needs and normative @@ -43,6 +44,7 @@ For instance, it could be "Processes", "Assemblies" or "Conferences". image:components/budgets/component.png[Add component form] + .Add component: Budgets form |=== |Field |Type |Description @@ -55,9 +57,9 @@ image:components/budgets/component.png[Add component form] |Optional |Which order will it have in relation to the other budgets. Having a lower number means a higher priority. For instance, if you have two budgets, "Budget a" with weight "10" and "Budget b" with weight "0", then "Budget b" will be first when ordering. - |=== + .Add component: Budgets form - Global settings |=== |Field |Type |Description @@ -118,12 +120,12 @@ that participants will need to vote as a minimum and maximum. |More information modal |Optional |What message will be shown when clicking on the "More information" link. - |=== In the cases where the space that this component will be used has xref:admin:spaces/processes/phases.adoc[Phases], for instance, in xref:admin:spaces/processes.adoc[Participatory Processes], then you can also define different behaviors per Step. + .Add component: Budgets form - Step settings |=== |Field |Type |Description @@ -151,7 +153,6 @@ xref:admin:spaces/processes.adoc[Participatory Processes], then you can also def |More information modal |Optional |What message will be shown when clicking on the "More information" link. - |=== == Permissions @@ -200,6 +201,7 @@ Allows to export the projects for this budget in different formats. image:components/budgets/new_budget.png[New budget form] + .New budget form |=== |Field |Type |Description @@ -220,11 +222,11 @@ For instance, if you have two budgets, "Budget a" with weight "10" and "Budget b |Total budget |Required |What is the total amount of money that people will have for assigning. - |=== ==== Actions + .Actions |=== |Icon |Name |Definition @@ -244,7 +246,6 @@ For instance, if you have two budgets, "Budget a" with weight "10" and "Budget b |image:action_delete.png[Delete icon] |Delete |To delete this budget. Only can be done when there aren't any projects. - |=== ==== Manage projects @@ -280,6 +281,7 @@ Allows to export the projects for this budget in different formats. image:components/budgets/new_project.png[New project form for a Budget] + .New project form |=== |Field |Type |Description @@ -307,11 +309,11 @@ image:components/budgets/new_project.png[New project form for a Budget] |Add an image gallery |Optional |Add multiple images illustrating what this project is about, or where it will be implemented. - |=== ===== Actions + .Actions |=== |Icon |Name |Definition @@ -335,7 +337,6 @@ image:components/budgets/new_project.png[New project form for a Budget] |image:action_delete.png[Delete icon] |Delete |To delete this project. - |=== == Results @@ -352,5 +353,5 @@ image:components/budgets/results_select_project.png[Select a project for impleme image:components/budgets/results_selected.png[Selected projects after voting] image:components/budgets/results_selected_frontend.png[Selected projects after voting in the frontend] -We strongly recommend that after you have selected projects then you enable the xref:admin:component_accountability.adoc[Accountability] -component so participants can see the grade of impementation. +We strongly recommend that after you have selected projects then you enable the xref:components/accountability.adoc[Accountability] +component so participants can see the grade of impementation. \ No newline at end of file diff --git a/docs/ca/modules/admin/pages/components/debates.adoc b/docs/ca/modules/admin/pages/components/debates.adoc new file mode 100644 index 0000000000..6f62a9f8b5 --- /dev/null +++ b/docs/ca/modules/admin/pages/components/debates.adoc @@ -0,0 +1,230 @@ += Debate + +The Debate component allows people to have discussions, without voting nor prioritzation. It also allows to close them, +by adding conclusions or a summary of what the discussion was about. + +From this starting point, there could be other configurations, such as: + +* To allow debates creation by participants +* To have debates with a fixed started and ending date or open +* To show endorsements (public supports) or not + +Some examples of where this component was used: + +* https://meta.decidim.org/processes/roadmap/f/219/[Propose new functionalities for Decidim software in Metadecidim] + +image:components/debates/example01.png[Debates listing example] +image:components/debates/example02.png[Debate example] + +To configure the Debate component: + +. Sign in as admin +. Go to admin panel +. In the main sidebar, click in the button for the space that you want to configure the component for. +For instance, it could be "Processes", "Assemblies" or "Conferences". +. Go to components +. Click on "Add component" button +. Click on "Debate" +. Fill the xref:_add_component[Add component] form + +== Add component + +image:components/debates/component.png[Add component form] + + +.Add component: Debate form +|=== +|Field |Type |Description + +|Name +|Required +|What is the title of this component. For instance, "Debates" + +|Order position +|Optional +|Which order will it have in relation to the other debates. Having a lower number means a higher priority. +For instance, if you have two debates, "Debate a" with weight "10" and "Debate b" with weight "0", then "Debate b" will be first when ordering. +|=== + + +.Add component: Debate form - Global settings +|=== +|Field |Type |Description + +|Scopes enabled +|Optional +|Check if you want to have Scopes filtering in this component. + +|Scope +|Optional +|Which xref:admin:scopes.adoc[Scope] does this component belongs to. + +|Global scope +|Optional +| + +|Comments enabled +|Optional +|Whether you want to have comments in the meetings. + +|Comments max length +|Optional +|What is the characters limit that participants will have when making comments. Leave 0 for default value. + +|Announcement +|Optional +|A general announcement that'll be visible on the general debates landing page. +|=== + +In the cases where the space that this component will be used has xref:admin:spaces/processes/phases.adoc[Phases], for instance, in +xref:admin:spaces/processes.adoc[Participatory Processes], then you can also define different behaviors per Step. + + +.Add component: Debates form - Step settings +|=== +|Field |Type |Description + +|Endorsements enabled +|Optional +|Check if you want that participants show public support for these debates. + +|Endorsements blocked +|Optional +| + +|Debate creation by participants enabled +|Optional +|Check if you want to allow the creation of new debates by participants. + +|Comments blocked +|Optional +|Whether you want to enable comments for this phase. + +|Announcement +|Optional +|A general announcement that'll be visible on the general debate landing page. +|=== + +== Permissions + +An administrator can choose which kind of xref:customize:authorizations.adoc[Authorizations] a participant need to have to make +certain actions in the debates: + +* Create +* Endorse + +== Manage debates + +image:components/debates/manage_debates.png[Manage debates table] + +=== Export all + +Allows exporting the comments in the debates in different formats. + +* Comments as CSV +* Comments as JSON +* Comments as Excel + +=== New debate form + +image:components/debates/new_debate_backend.png[New debate backend form] + + +.New debate form +|=== +|Field |Type |Description + +|Title +|Required +|What is the title of this debate. For instance, "How can we improve this process?" + +|Description +|Required +|What is the description of this debate. + +|Instructions to participate +|Required +|Add a message for the participants. + +|Information updates +|Optional +|Add a message for the participants. + +|xref:_debate_types[Debate type] +|Required +|Choose between Finite and Open. Finite means that the debate has a starting and ending date and time, Open means that +there isn't any timeframe. + +|Starts at +|Required if the debate type is Finite +|Expected format: dd/mm/yyyy hh:ii + +|Ends at +|Required if the debate type is Finite +|Expected format: dd/mm/yyyy hh:ii + +|Category +|Optional +|Which category has the debate. Used for filtering in the debates list. +|=== + +==== Debate types + +It's possible to have two kinds of debates: + +. Finite: with a start and end date +. Open: without a start and end date + +This is shown publically in the debate list. + +image:components/debates/debates_list.png[Debates list] +image:components/debates/debate_finite.png[Finite debate] + +==== Actions + + +.Actions +|=== +|Icon |Name |Definition + +|image:action_edit.png[Edit icon] +|Edit +|Edit form for a debate. It's the same form as "New debate". + +|image:action_close.png[Close icon] +|Close +|Close form for a debate. For adding conclusions. + +|image:action_permissions.png[Permissions icon] +|Permissions +|To handle the permissions of this debate, depending on the verification a participant has. + +|image:action_delete.png[Delete icon] +|Delete +|To delete this debate. Only can be done when there aren't any projects. +|=== + +=== Close debate form + +A debate can be closed. This is useful for adding conclusions. After a debate was closed it can't be edited nor commented any more + +image:components/debates/close_debate_backend.png[Close debate backend form] + +Take in account that if the debate was created by a participant then only that +participant can close it. + +image:components/debates/close_debate_frontend.png[Close debate frontend form] + + +.Close debate form +|=== +|Field |Type |Description + +|Conclusions +|Required +|What is the conclusion for this debate. +|=== + +The conclusions are shown publicly with the close date and time. + +image:components/debates/debate_closed.png[Closed debate] \ No newline at end of file diff --git a/docs/ca/modules/admin/pages/components/elections.adoc b/docs/ca/modules/admin/pages/components/elections.adoc new file mode 100644 index 0000000000..d8d661054c --- /dev/null +++ b/docs/ca/modules/admin/pages/components/elections.adoc @@ -0,0 +1,3 @@ += Elections + +include::admin:partial$development.adoc[] \ No newline at end of file diff --git a/en/modules/admin/pages/components/meetings.adoc b/docs/ca/modules/admin/pages/components/meetings.adoc similarity index 98% rename from en/modules/admin/pages/components/meetings.adoc rename to docs/ca/modules/admin/pages/components/meetings.adoc index 7e427e0e96..96b29fa84e 100644 --- a/en/modules/admin/pages/components/meetings.adoc +++ b/docs/ca/modules/admin/pages/components/meetings.adoc @@ -45,6 +45,7 @@ For instance, it could be "Processes", "Assemblies", or "Conferences" For configuring the meeting component you have these settings: + .Add component - Meetings form |=== |Field |Type |Description @@ -57,9 +58,9 @@ For configuring the meeting component you have these settings: |Optional |Which order will it have in relation with the other components. Having a lower number means a higher priority. For instance, if you have two components, "Proposals" with weight "10" and "Meetiings" with weight "0", then "Meetings" will be first when ordering. - |=== + .Add component - Meetings form: Global settings |=== |Field |Type |Description @@ -107,9 +108,9 @@ if you have two components, "Proposals" with weight "10" and "Meetiings" with we |Maps enabled |Optional |Wheter you want to show a map in the meetings in the meeting detail. - |=== + .Add component - Meetings form: Step settings |=== |Field |Type |Description @@ -121,7 +122,6 @@ if you have two components, "Proposals" with weight "10" and "Meetiings" with we |Comments enabled |Optional |Whether you want to have comments in the meetings. - |=== == Create a new meeting @@ -130,11 +130,12 @@ if you have two components, "Proposals" with weight "10" and "Meetiings" with we Meetings can be created by participants if the setting is "Participants can create meetings" is checked. -If a participant belongs to a xref:admin:groups.adoc[user group], then she'll be able to create meetings as that group also. +If a participant belongs to a xref:admin:participants/groups.adoc[user group], then she'll be able to create meetings as that group also. image:components/meetings/new_meeting_form_frontend01.png[Create a new meeting form (frontend)] image:components/meetings/new_meeting_form_frontend02.png[Create a new meeting form (frontend)] + .Create meeting - Frontend form |=== |Field |Type |Description @@ -202,7 +203,6 @@ image:components/meetings/new_meeting_form_frontend02.png[Create a new meeting f |Create meeting as |Required if the participant belongs to a group |With which identity she wants to create this meeting: as her user or as a group that she's reprensenting? - |=== After creating the meeting, participants can also edit and xref:components/meetings/close.adoc[close] it. @@ -211,6 +211,7 @@ After creating the meeting, participants can also edit and xref:components/meeti image:components/meetings/new_meeting_form_backend.png[Create a new meeting form (backend)] + .Create meeting - Backend form |=== |Field |Type |Description @@ -288,12 +289,12 @@ participate in. Specific to "Official meetings". Specific to "Official meetings" |Required if "Customize registration email" is checked |The content of the customized email. This text will appear in the middle of the registration confirmation email. Just after the registration code. Specific to "Official meetings". - |=== You can also define *Services* inside of a Meeting. These are metadata that allows to comunicate, for instance, if there's a place for children, deaf assistance, translations, etc. You can have multiple services inside of a meeting. + .Create meeting - Services |=== |Field |Type |Description @@ -305,13 +306,13 @@ a place for children, deaf assistance, translations, etc. You can have multiple |Description |Optional |Description of the service. - |=== == Actions === Citizens meetings + .Actions - Citizens meetings |=== |Icon |Name |Definition @@ -324,11 +325,11 @@ a place for children, deaf assistance, translations, etc. You can have multiple |Permissions |To handle the permissions of this meeting, depending on the verification a participant has. Allows an admin to configure who can *Join* a meeting. - |=== === Official meetings + .Actions - Official meetings |=== |Icon |Name |Definition @@ -385,7 +386,6 @@ who can *Join* a meeting. |image:action_delete.png[Delete icon] |Delete |To delete this meeting. - |=== == Meetings features @@ -408,4 +408,4 @@ the meeting will be available a few minutes before it starts" image:components/meetings/online_meeting_available_before.png[Online meeting available before it starts] . If the "Online meeting URL" is set, and the start time of the meeting has arrived, then there'll be a message that says that "the meeting is happening right now", with a link to join the meeting. -image:components/meetings/online_meeting_happening.png[Online meeting available before it starts] +image:components/meetings/online_meeting_happening.png[Online meeting available before it starts] \ No newline at end of file diff --git a/docs/ca/modules/admin/pages/components/meetings/agenda.adoc b/docs/ca/modules/admin/pages/components/meetings/agenda.adoc new file mode 100644 index 0000000000..5ec6d771ab --- /dev/null +++ b/docs/ca/modules/admin/pages/components/meetings/agenda.adoc @@ -0,0 +1,91 @@ += Agenda + +The agenda feature allows an administrator to define the schedule for a meeting. It's possible to define agenda items and +sub-items, with every one of the topics that will be discussed in the meeting, along with a description and the duration +of every item and sub-item. + +image:components/meetings/agenda/agenda_frontend.png[Agenda in the frontend] + +== New agenda form + +To define an agenda for a meeting: + +. Sign in as admin +. Go to admin panel +. In the main sidebar, click in the button for the space that you want to configure the component for. +For instance, it could be "Processes", "Assemblies", or "Conferences" +. Click on "Meetings" +. Search the meeting that you want to add the agenda to +. Click on the "Agenda" button image:action_agenda.png[Agenda button] +. Fill the form + +image:components/meetings/agenda/new_agenda_form.png[New agenda form in the backend] + + +.New agenda form +|=== +|Field |Type |Description + +|Title +|Required +|Title for the agenda. For instance, "Schedule" + +|Visible +|Optional +|Check if you want to publish the agenda. + +|Agenda items +|Required +|List of agenda items. +|=== + +It's possible to create any number of Agenda items and sub-items. You can up or down the hierarchy of the agenda items. +It's also possible to remove and edit the agenda items. + + +.Agenda item form +|=== +|Field |Type |Description + +|Title +|Required +|Title for the agenda item + +|Duration +|Required +|How many minutes will the agenda item last. For instance, "15". + +|Description +|Optional +|Title for the agenda item + +|Agenda sub-items +|Optional +|List of agenda sub-items. +|=== + +The only limitation that agenda items and sub-items have is that they have to respect the duration of the parent. For instance, +if there's an Item that lasts 60 minutes, you can't create a sub-item that lasts 90 minutes. + +As an example, this agenda: + +image:components/meetings/agenda/agenda_frontend.png[Agenda in the frontend] + +Has the following configuration: + +* Title: "Schedule" +* Visible: true +* Agenda item #1: +** Title: Diagnosis +** Duration: 60 +* Agenda item #2: +** Title: Ideation +** Duration: 120 +** Agenda sub-item #2.1: +*** Title: Future thinking +*** Duration: 60 +*** Description: Imagining how we can solve the problem +** Agenda sub-item #2.2: +*** Title: Creating proposals +*** Duration: 60 +*** Description: In the platform \ No newline at end of file diff --git a/docs/ca/modules/admin/pages/components/meetings/close.adoc b/docs/ca/modules/admin/pages/components/meetings/close.adoc new file mode 100644 index 0000000000..f598ec1e90 --- /dev/null +++ b/docs/ca/modules/admin/pages/components/meetings/close.adoc @@ -0,0 +1,103 @@ += Close + +After a meeting has passed it's possible and recommened to close the meeting. This allows to adds the minutes, the notes +that gives a summary on what was discussed during the meeting, the agreements reached, decisions made, etc. + +This allows to bring transparency to the meeting and also serves as a record of the different meetings. + +It's also possible to add other kind of metadata to the meeting, such as what organizations has attended, how many attendees +and contributions were, and what proposals were discussed. + +image:components/meetings/close/frontend.png[Close report in the frontend] + +== Close meeting form + +=== Official meetings + +To close a meeting: + +. Sign in as admin +. Go to admin panel +. In the main sidebar, click in the button for the space that you want to configure the component for. +For instance, it could be "Processes", "Assemblies", or "Conferences" +. Click on "Meetings" +. Search the meeting that you want to close +. Click on the "Close" button image:action_close.png[Close button] +. Fill the form + +image:components/meetings/close/form_backend.png[Close meeting form in the backend] + + +.Close meeting form (backend) +|=== +|Field |Type |Description + +|Minutes +|Required +|Description of what happened in the meeting. + +|List of organizations that attended +|Optional +|Metadata that gets shown in the sidebar of the meeting. + +|Number of attendees +|Required +|Metadata that gets shown in the sidebar of the meeting. Must be a number. + +|Number of contributions +|Optional +|Metadata that gets shown in the sidebar of the meeting. Must be a number. + +|Proposals +|Optional +|Choose proposals from this space that were discussed in this meeting + +|Video URL +|Optional +|It's not used for anything. It will be removed in the future. + +|Audio URL +|Optional +|It's not used for anything. It will be removed in the future. + +|Is visible +|Optional +|Check if you want to publish the close report +|=== + +=== Citizens meetings + +Just like participants can create meetings, they can also close a meeting. They have fewer fields to fill. + +To close a a meeting: + +. Sign in as the participant that created the meeting +. Go to the meeting page +. Click on "Close". This will only be visible after the meeting has passed +. Fill the form + +image:components/meetings/close/form_frontend.png[Close meeting form in the frontend] + + +.Close meeting form (frontend) +|=== +|Field |Type |Description + +|Minutes +|Required +|Description of what happened in the meeting. + +|Number of attendees +|Required +|Metadata that gets shown in the sidebar of the meeting. Must be a number. + +|Proposals +|Optional +|Choose proposals from this space that were discussed in this meeting +|=== + +== Proposals + +If you relate a proposal to a meeting, the meeting also will be shown in the proposal. + +image:components/meetings/close/related_proposal.png[Related meeting in a proposal] \ No newline at end of file diff --git a/docs/ca/modules/admin/pages/components/meetings/polls.adoc b/docs/ca/modules/admin/pages/components/meetings/polls.adoc new file mode 100644 index 0000000000..99c7b70291 --- /dev/null +++ b/docs/ca/modules/admin/pages/components/meetings/polls.adoc @@ -0,0 +1,29 @@ += Polls + +CAUTION: this feature is still in active development and can't be used in production yet. + +Through the manage polls feature is possible to define a poll that will be displayed when an online meeting is ocurring. +This is useful to see quick feedback and make a decision inside the meeting without having to leave the meeting and use +other kind of tools (like surveys or proposals). + +With this feature an administrator can define questions and also manage when these questions and its results will be shown +to participants. + +== Enable polls for a meeting + +To enable polls for a meeting: + +. Sign in as admin +. Go to admin panel +. In the main sidebar, click in the button for the space that you want to configure the component for. +For instance, it could be "Processes", "Assemblies", or "Conferences" +. Click on "Meetings" +. Search the meeting that you want to define polls for +. Click on the "Manage polls" button image:action_list.png[Manage polls button] +. Fill the form + +The form is pretty much the Decidim form builder, with one caveat: you can only define Single and Multiple option questions. + +image:components/meetings/polls/backend.png[Backend for meeting polls] + +image:components/meetings/polls/backend_question.png[Definining a question in meeting polls] \ No newline at end of file diff --git a/en/modules/admin/pages/components/meetings/registrations.adoc b/docs/ca/modules/admin/pages/components/meetings/registrations.adoc similarity index 95% rename from en/modules/admin/pages/components/meetings/registrations.adoc rename to docs/ca/modules/admin/pages/components/meetings/registrations.adoc index 60475c5217..71f3b3adb2 100644 --- a/en/modules/admin/pages/components/meetings/registrations.adoc +++ b/docs/ca/modules/admin/pages/components/meetings/registrations.adoc @@ -40,6 +40,7 @@ For instance, it could be "Processes", "Assemblies", or "Conferences" image:components/meetings/registrations/backend.png[Registrations settings in a meeting] + .Registrations settings form |=== |Field |Type |Description @@ -63,12 +64,11 @@ image:components/meetings/registrations/backend.png[Registrations settings in a |Registration terms |Required |What terms of services participants need to accept to register or join the meeting. - |=== == Registration form -This feature allows you to define a custom form like the xref:components:surveys.adoc[Surveys] component to ask participants +This feature allows you to define a custom form like the xref:admin:components/surveys.adoc[Surveys] component to ask participants for registration information. == Export all @@ -102,4 +102,4 @@ image:components/meetings/registrations/frontend_confirmed_w_code.png[Registrati It can receive two kind of responses: * Registration code successfully validated. -* This registration code is invalid. +* This registration code is invalid. \ No newline at end of file diff --git a/docs/ca/modules/admin/pages/components/pages.adoc b/docs/ca/modules/admin/pages/components/pages.adoc new file mode 100644 index 0000000000..6739927552 --- /dev/null +++ b/docs/ca/modules/admin/pages/components/pages.adoc @@ -0,0 +1,85 @@ += Page + +The Page component allows people to get information about a space. It's similar to the general xref:admin:pages.adoc[Pages] admin section, with +the main difference is that this component allows to define pages in a space, and the general Pages admin section allows to +define pages for all the platform (for instance, help pages, terms of services, or FAQs), that aren't associated to a space. + +From this starting point, there could be other configurations, such as: + +Some examples of where this component was used: + +* https://www.decidim.barcelona/processes/PressupostosParticipatius/f/4691/[More information page in 2020 Participatory Budgeting process in Decidim Barcelona] + +image:components/page/example01.png[More information page in 2020 Participatory Budgeting process in Decidim Barcelona - Frontend] +image:components/page/example02.png[More information page in 2020 Participatory Budgeting process in Decidim Barcelona - Backend] + +To configure the Page component: + +. Sign in as admin +. Go to admin panel +. In the main sidebar, click in the button for the space that you want to configure the component for. +For instance, it could be "Processes", "Assemblies", or "Conferences" +. Go to components +. Click on "Add component" button +. Click on "Page" +. Fill the xref:_add_component[Add component] form + +== Add component + +image:components/page/component.png[Add component form] + + +.Add component: Page form +|=== +|Field |Type |Description + +|Name +|Required +|What is the title of this component. For instance, "More information". + +|Order position +|Optional +|Which order will it have in relation to the other pages. Having a lower number means a higher priority. +For instance, if you have two pages, "Page a" with weight "10" and "Page b" with weight "0", then "Page b" will be first when ordering. +|=== + + +.Add component: Page form - Global settings +|=== +|Field |Type |Description + +|Announcement +|Optional +|A general announcement that'll be visible on the general pages landing page. +|=== + +In the cases where the space that this component will be used has xref:admin:spaces/processes/phases.adoc[Phases], for instance, in +xref:admin:spaces/processes.adoc[Participatory Processes], then you can also define different behaviors per Step. + + +.Add component: Pages form - Step settings +|=== +|Field |Type |Description + +|Announcement +|Optional +|A general announcement that'll be visible on the general page landing page. +|=== + +== Permissions + +As this component doesn't allow to do anything, there are no permissions to set up. + +=== New page form + +image:components/page/new_page.png[New page form] + + +.New page form +|=== +|Field |Type |Description + +|Body +|Required +|What is the body for the page. +|=== \ No newline at end of file diff --git a/en/modules/admin/pages/components/proposals.adoc b/docs/ca/modules/admin/pages/components/proposals.adoc similarity index 98% rename from en/modules/admin/pages/components/proposals.adoc rename to docs/ca/modules/admin/pages/components/proposals.adoc index ed4e5bf88c..5d2b652324 100644 --- a/en/modules/admin/pages/components/proposals.adoc +++ b/docs/ca/modules/admin/pages/components/proposals.adoc @@ -34,6 +34,7 @@ For instance, it could be "Processes", "Assemblies", or "Conferences" image:components/proposals/component.png[Add component form] + .Add component: Proposals form |=== |Field |Type |Description @@ -46,9 +47,9 @@ image:components/proposals/component.png[Add component form] |Optional |Which order will it have in relation to the other components. Having a lower number means a higher priority. For instance, if you have two components, "Proposals" with weight "10" and "Meetings" with weight "0", then "Meetings" will be first when ordering. - |=== + .Add component: Proposals form - Global settings |=== |Field |Type |Description @@ -173,13 +174,13 @@ follow when creating new proposals. |Proposal wizard "Publish" step help text |Optional |What's the help text visible when creating new proposals in the "Publish" step. - |=== [#setting-threshold] *Example of threshold setting* image::components/proposals/setting_threshold01.png[Example of threshold setting] + image::components/proposals/setting_threshold02.png[Example of threshold setting] [#setting-card-image] @@ -197,6 +198,7 @@ image::components/proposals/setting_geocoding.png[Example of geocoding setting] In the cases where the space that this component will be used has xref:admin:spaces/processes/phases.adoc[Phases], for instance, in xref:admin:spaces/processes.adoc[Participatory Processes], then you can also define different behaviors per Step. + .Add component: Proposals form - Step settings |=== |Field |Type |Description @@ -239,7 +241,7 @@ xref:admin:spaces/processes.adoc[Participatory Processes], then you can also def |Publish proposal answers immediately |Optional -|Wheter you want that the answers of proposals are published at the same time that you're answering them. +|Wheter you want that the answers of proposals are published at the same time that you're xref:components/proposals/answers.adoc[answering] them or you want to control when to publish the answers. |Enable costs on proposal answers |Optional @@ -272,7 +274,6 @@ xref:admin:spaces/processes.adoc[Participatory Processes], then you can also def |Hashtags suggested to participants for new proposals |Optional |Suggest hashtags to participants for new proposals. Participants can select more than one hashtag. See <>. - |=== [#setting-hashtags] @@ -321,11 +322,12 @@ image:components/proposals/new_proposal_frontend.png[New proposal form] Proposals can be created by participants if the setting is "Proposal creation enabled" is checked for the active phase. -If a participant belongs to a xref:admin:groups.adoc[user group], then she'll be able to create proposals as that group also. +If a participant belongs to a xref:admin:participants/groups.adoc[user group], then she'll be able to create proposals as that group also. This form depends a lot in which settings you've enabled in this component. It can be really short (with only a Title and Body by default) or very long (Title, Body, Hashtags, Address, Scope, Category, Image and Attachment). + .New proposal form - default (by a participant) |=== |Field |Type |Description @@ -339,7 +341,6 @@ and 150 characters as maximum. Must start with a capital letter. |Optional |What is the full description for this proposal. Must have at least 15 characters as minimum and 450 characters as maximum by default but can be changed with the setting "Maximum proposal body length". - |=== To detect duplicated proposals before publishing them, the proposal creation has a wizard form with multiple steps. This also @@ -366,6 +367,7 @@ Administrators can create official proposals. There will be a filter to show onl image:components/proposals/new_proposal_backend01.png[New proposal form - default (official proposals)] + .New proposal form - default (official proposals) |=== |Field |Type |Description @@ -387,7 +389,6 @@ by default but can be changed with the setting "Maximum proposal body length". |Select a meeting |Required if the "This proposal comes from a meeting" checkbox is checked |Dropdown selector with all the meetings of this space. The author of the proposal will be the meeting. - |=== As an example of what the form could look like depending on the settings enabled, here's a screenshot of the form for a proposal @@ -398,6 +399,7 @@ image:components/proposals/new_proposal_backend02.png[New proposal form - with m ==== Actions + .Actions |=== |Icon |Name |Definition @@ -417,7 +419,6 @@ image:components/proposals/new_proposal_backend02.png[New proposal form - with m |image:action_preview.png[Preview icon] |Preview |To see how it's shown in the frontend to participants. - |=== == Origin filter @@ -441,4 +442,4 @@ There are different kind of proposals mechanisms that can be enabled in proposal * xref:admin:components/proposals/amendments.adoc[Amendments] * xref:admin:components/proposals/answers.adoc[Answers] * xref:admin:components/proposals/collaborative_drafts.adoc[Collaborative drafts] -* xref:admin:components/proposals/participatory_texts.adoc[Participatory texts] +* xref:admin:components/proposals/participatory_texts.adoc[Participatory texts] \ No newline at end of file diff --git a/en/modules/admin/pages/components/proposals/amendments.adoc b/docs/ca/modules/admin/pages/components/proposals/amendments.adoc similarity index 99% rename from en/modules/admin/pages/components/proposals/amendments.adoc rename to docs/ca/modules/admin/pages/components/proposals/amendments.adoc index ca215d0a98..be89e58eb5 100644 --- a/en/modules/admin/pages/components/proposals/amendments.adoc +++ b/docs/ca/modules/admin/pages/components/proposals/amendments.adoc @@ -58,6 +58,7 @@ image:components/proposals/amendments/proposal_amendmed_versions.png[] == Relevant component settings + .Proposals component form - Settings related to amendments |=== |Field |Type |Description @@ -85,10 +86,9 @@ image:components/proposals/amendments/proposal_amendmed_versions.png[] |Amendments visibility |Step |Choose one of "Amendments are visible to all" or "Amendments are visible only to their authors" - |=== == Promotion If a proposal is rejected and the "Amendment promotion enabled" is enabled, then the author that have made the rejected -amendment will be able to promote to a new proposal the rejected emendation. +amendment will be able to promote to a new proposal the rejected emendation. \ No newline at end of file diff --git a/en/modules/admin/pages/components/proposals/answers.adoc b/docs/ca/modules/admin/pages/components/proposals/answers.adoc similarity index 70% rename from en/modules/admin/pages/components/proposals/answers.adoc rename to docs/ca/modules/admin/pages/components/proposals/answers.adoc index 3dc00328cc..8e1d8238b1 100644 --- a/en/modules/admin/pages/components/proposals/answers.adoc +++ b/docs/ca/modules/admin/pages/components/proposals/answers.adoc @@ -40,6 +40,7 @@ Allows an administrator to answer a proposal. image:components/proposals/proposal_answer.png[Proposal answer form] + .Answer for proposal form |=== |Field |Type |Description @@ -63,7 +64,6 @@ image:components/proposals/proposal_answer.png[Proposal answer form] |Execution period |Required if "Enable costs on proposal answers" is enabled in the proposals component settings and if it's accepted |How much time the proposal will take to be executed - |=== == States @@ -87,3 +87,27 @@ image:components/proposals/proposal_answer_state_accepted.png[Proposal answer st === Rejected image:components/proposals/proposal_answer_state_rejected.png[Proposal answer state: Rejected] + +== Publication + +You can control when the answers will be published by using the "Publish proposal answers immediately" checkbox. + +For enabling automatic publication, you'll need to check it. + +On the other hand, if you want to control when to publish the answer a proposal or multiple proposals, you'll need to follow these steps: + +. Sign in as admin or valuator +. Go to admin panel +. In the main sidebar, click in the button for the space that you want to configure the component for. +For instance, it could be "Processes", "Assemblies", or "Conferences" +. Click in the "Proposals" component +. Search the proposal you want to answer +. Click in the left checkbox of the proposal that you want to publish +. Click on the "Actions" button +. Click on the "Publish answers" option +image:components/proposals/proposal_answer_publish.png[Proposal answer publication: action] +. Click on "Publish" button +image:components/proposals/proposal_answer_publish_button.png[Proposal answer publication: publish button] + +NOTE: If you have unchecked the "Publish proposal answers immediately", answered the proposals and then checked the option again, the answers will not be +published automatically. You'll still need to publish the answers manually with the "Actions" button. \ No newline at end of file diff --git a/en/modules/admin/pages/components/proposals/collaborative_drafts.adoc b/docs/ca/modules/admin/pages/components/proposals/collaborative_drafts.adoc similarity index 99% rename from en/modules/admin/pages/components/proposals/collaborative_drafts.adoc rename to docs/ca/modules/admin/pages/components/proposals/collaborative_drafts.adoc index 3a752fbd75..9c26ef25e2 100644 --- a/en/modules/admin/pages/components/proposals/collaborative_drafts.adoc +++ b/docs/ca/modules/admin/pages/components/proposals/collaborative_drafts.adoc @@ -67,4 +67,4 @@ image:components/proposals/collaborative_drafts/collaborative_draft_published.pn - Only the original author can approve or reject the collaboration requests. - Only the original author can publish the collaborative draft. - Only the original author can withdraw the collaborative draft. -- Once a collaboration request is approved, it can't be rejected. +- Once a collaboration request is approved, it can't be rejected. \ No newline at end of file diff --git a/docs/ca/modules/admin/pages/components/proposals/participatory_texts.adoc b/docs/ca/modules/admin/pages/components/proposals/participatory_texts.adoc new file mode 100644 index 0000000000..c5573a6e6d --- /dev/null +++ b/docs/ca/modules/admin/pages/components/proposals/participatory_texts.adoc @@ -0,0 +1,88 @@ += Participatory texts + +This feature allows you to navigate the proposals as text. It's useful for discussing normatives, plans, or other kinds of texts. + +Every paragraph is split into a proposal, so it's possible to discuss it in a more granular way. + +Some examples of where this feature was used are: + +* https://concertation.greenpeace.fr/processes/vision-greenpeace/f/8/[Vision Greenpeace] in https://concertation.greenpeace.fr/[Greenpeace France Concertation] +* https://www.decidim.barcelona/processes/PAM2020/f/3771/[Procés participatiu del Programa d'Actuació Municipal (PAM) 2020-2023] in https://www.decidim.barcelona/[Decidim Barcelona] + +image:components/proposals/participatory_texts/example01.png[Vision Greenpeace] + +image:components/proposals/participatory_texts/example02.png[PAM 2020-2023 in Decidim Barcelona] + +To configure the "Participatory texts" in proposals component: + +. Sign in as admin +. Go to admin panel +. In the main sidebar, click in the button for the space that you want to configure the component for. +For instance, it could be "Processes", "Assemblies", or "Conferences" +. Go to components +. Click on "Add component" button +. Click on "Proposals" +. Check the "Participatory texts enabled" setting +. Save the component +. Click in the "Participatory texts" button in the empty proposals component +image:components/proposals/participatory_texts/manage_proposals.png[Manage proposals] +. Click in the "Import document" button in the empty Preview participatory text panel +image:components/proposals/participatory_texts/preview_participatory_text_empty.png[Preview empty participatory text] +. Fill the xref:_add_document_form[Add document form] +image:components/proposals/participatory_texts/add_document_form.png[Add document form] +. xref:_preview_the_document[Preview the document] and make corrections +image:components/proposals/participatory_texts/preview_participatory_text.png[Preview participatory text] +. Click on publish the document +image:components/proposals/participatory_texts/imported_document_proposals.png[Imported document proposals] +. Publish the proposal component + +Notice that this feature could break existing proposals, so if there is any proposal it will not work. You'll see the +following message in the components settings: + +==== +Cannot interact with this setting if there are existing proposals. Please, create a new `Proposals component` if you want +to enable this feature or discard all imported proposals in the `Participatory Texts` menu if you want to disable it. +==== + +== Add document form + +Although it's possible to work with both Markdown (.MD) and ODT (.ODT) files, we recommend working with Markdown as it's +easier to see the formatting. + +link:{attachmentsdir}/participatory_text.md[Download the example participatory text]. + +image:components/proposals/participatory_texts/add_document_form.png[Add document form] + + +.Add document form +|=== +|Field |Type |Description + +|Title +|Required +|What's the title of the document? + +|Description +|Optional +|Description for the document + +|Document +|Required +|File. Add a document lesser than 2MB, each section until 3 levels deep will be parsed into proposals. Supported formats are: Markdown, ODT +|=== + +== Preview the document + +After the document is initially imported you have three options: + +. Discard +. Save draft +. Publish document + +== Frontend + +Once the document is imported and the proposals component published, you'll be able to navigate the document: + +image:components/proposals/participatory_texts/frontend.png[Frontend] +image:components/proposals/participatory_texts/frontend_hover.png[Frontend hover in proposal] +image:components/proposals/participatory_texts/frontend_proposal.png[Frontend proposal detail] \ No newline at end of file diff --git a/docs/ca/modules/admin/pages/components/skeleton.adoc b/docs/ca/modules/admin/pages/components/skeleton.adoc new file mode 100644 index 0000000000..a0bbfcdb51 --- /dev/null +++ b/docs/ca/modules/admin/pages/components/skeleton.adoc @@ -0,0 +1,167 @@ += Skeleton + +The Skeleton component allows people to XXX + +From this starting point, there could be other configurations, such as: + +* + +Some examples of where this component was used: + +* + +image:components/skeleton/example01.png[] +image:components/skeleton/example02.png[] +image:components/skeleton/example03.png[] +image:components/skeleton/example04.png[] + +To configure the Skeleton component: + +. Sign in as admin +. Go to admin panel +. In the main sidebar, click in the button for the space that you want to configure the component for. +For instance, it could be "Processes", "Assemblies" or "Conferences". +. Go to components +. Click on "Add component" button +. Click on "Skeleton" +. Fill the xref:_add_component[Add component] form + +== Add component + +image:components/skeleton/component.png[Add component form] + + +.Add component: Skeleton form +|=== +|Field |Type |Description + +|Name +|Required +|What is the title of this component. For instance, "Skeletons" + +|Order position +|Optional +|Which order will it have in relation to the other skeletons. Having a lower number means a higher priority. +For instance, if you have two skeletons, "Skeleton a" with weight "10" and "Skeleton b" with weight "0", then "Skeleton b" will be first when ordering. +|=== + + +.Add component: Skeleton form - Global settings +|=== +|Field |Type |Description + +|Scopes enabled +|Optional +|Check if you want to have Scopes filtering in this component. + +|Scope +|Optional +|Which xref:admin:scopes.adoc[Scope] does this component belongs to. + +|Global scope +|Optional +| + +|Comments enabled +|Optional +|Whether you want to have comments in the meetings. + +|Comments max length +|Optional +|What is the characters limit that participants will have when making comments. Leave 0 for default value. + +|Actions permissions can be set for each skeleton +|Optional +|Whether you want to be able to set permissions for every one of the skeletons. Most of the time you will want to leave this option disabled. + +|Announcement +|Optional +|A general announcement that'll be visible on the general skeletons landing page. +|=== + +In the cases where the space that this component will be used has xref:admin:spaces/processes/phases.adoc[Phases], for instance, in +xref:admin:spaces/processes.adoc[Participatory Processes], then you can also define different behaviors per Step. + + +.Add component: Skeletons form - Step settings +|=== +|Field |Type |Description + +|Comments blocked +|Optional +|Whether you want to enable comments for this phase. + +|Announcement +|Optional +|A general announcement that'll be visible on the general skeleton landing page. +|=== + +== Permissions + +An administrator can choose which kind of xref:customize:authorizations.adoc[Authorizations] a participant need to have to make +certain actions in the skeletons: + +* Create +* Endorse + +== Manage skeletons + +image:components/skeleton/manage_skeletons.png[Manage skeletons table] + +=== Export all + +Allows exporting the skeletons in different formats. + +* Skeletons as CSV +* Skeletons as JSON +* Skeletons as Excel +* Comments as CSV +* Comments as JSON +* Comments as Excel + +=== New skeleton form + +image:components/skeleton/new_skeleton.png[New skeleton form] + + +.New skeleton form +|=== +|Field |Type |Description + +|Title +|Required +|What is the title of this skeleton. For instance, "District A" + +|Order position +|Optional +|Which order will it have in relation to the other skeletons. Having a lower number means a higher priority. +For instance, if you have two skeletons, "Skeleton a" with weight "10" and "Skeleton b" with weight "0", then "Skeleton b" will be first when ordering. + +|Description +|Optional +|What is the description of this skeleton. +|=== + +==== Actions + + +.Actions +|=== +|Icon |Name |Definition + +|image:action_preview.png[Preview icon] +|Preview +|To see how it's shown in the frontend to participants. + +|image:action_list.png[Manage projects icon] +|xref:_manage_projects[Manage projects] +|Allows you to manage the projects of a skeleton. + +|image:action_edit.png[Edit icon] +|Edit +|Edit form for a skeleton. It's the same form as "New skeleton". + +|image:action_delete.png[Delete icon] +|Delete +|To delete this skeleton. Only can be done when there aren't any projects. +|=== \ No newline at end of file diff --git a/docs/ca/modules/admin/pages/components/sortitions.adoc b/docs/ca/modules/admin/pages/components/sortitions.adoc new file mode 100644 index 0000000000..c436fe225f --- /dev/null +++ b/docs/ca/modules/admin/pages/components/sortitions.adoc @@ -0,0 +1,3 @@ += Sortitions + +The Sortitions component allows to select a number of proposals (e.g. candidates for a jury) with random, yet reproducible, procedures that guarantees non-biased and uniform distributions. \ No newline at end of file diff --git a/docs/ca/modules/admin/pages/components/surveys.adoc b/docs/ca/modules/admin/pages/components/surveys.adoc new file mode 100644 index 0000000000..2b4fc6689a --- /dev/null +++ b/docs/ca/modules/admin/pages/components/surveys.adoc @@ -0,0 +1,256 @@ += Survey + +The Survey component allows people to answer questionnaires. This is useful when an organization wants to receive private +feedback, although it's possible to publish the answers manually as well. It allows defining a set of questions with multiple kinds of answers. + +From this starting point, there could be other configurations, such as: + +* if the answering is limited to a time period +* what answer types should have the questions, like short (one line), long (multiple lines), single or multiple options, +sorting through a list, etc. +* if there's an answer validation like how many characters as maximum should have an answer +* if there's a maximum number of options to select in multiple options questions + +Some examples of where this component was used: + +* https://consultation.quebec.ca/processes/donneesquebec/f/82/[Data Quebec: participate in its improvement! (Données Québec : participez à son amélioration!) in Québec consultations] +* https://meta.decidim.org/conferences/decidimfest2020/f/1403/?locale=en[DecidimFest2020 Assessment Survey] + +image:components/surveys/example01.png[Example of a survey] + +To configure the Survey component: + +. Sign in as admin +. Go to admin panel +. In the main sidebar, click in the button for the space that you want to configure the component for. +For instance, it could be "Processes", "Assemblies" or "Conferences". +. Go to components +. Click on "Add component" button +. Click on "Survey" +. Fill the xref:_add_component[Add component] form + +Once a survey is already answered by some users it's not possible to modify its questions, as that would affect the integrity +of the answers. If it's needed to modify the questions, then it's needed to create a new survey and unpublish the original one. + +== Add component + +image:components/surveys/component.png[Add component form] + + +.Add component: Survey form +|=== +|Field |Type |Description + +|Name +|Required +|What is the title of this component. For instance, "Surveys" + +|Order position +|Optional +|Which order will it have in relation to the other surveys. Having a lower number means a higher priority. +For instance, if you have two surveys, "Survey a" with weight "10" and "Survey b" with weight "0", then "Survey b" will be first when ordering. +|=== + + +.Add component: Survey form - Global settings +|=== +|Field |Type |Description + +|Scopes enabled +|Optional +|Check if you want to have Scopes filtering in this component. + +|Scope +|Optional +|Which xref:admin:scopes.adoc[Scope] does this component belongs to. + +|Answers accepted from +|Optional +|Start date when you want to receive answers. Leave blank for no specific date. Expected format: dd/mm/yyyy hh:ii + +|Answers accepted until +|End date when you want to stop receiving answers. Leave blank for no specific date. Expected format: dd/mm/yyyy hh:ii +|Announcement + +|Optional +|A general announcement that'll be visible on the general surveys landing page. +|Delete answers when publishing the survey +|=== + +In the cases where the space that this component will be used has xref:admin:spaces/processes/phases.adoc[Phases], for instance, in +xref:admin:spaces/processes.adoc[Participatory Processes], then you can also define different behaviors per Step. + + +.Add component: Surveys form - Step settings +|=== +|Field |Type |Description + +|Allow answers +|Optional +|Check if you want to receive answers in this survey. + +|Allow unregistered users to answer the survey +|Optional +|If active, no login will be required in order to answer the survey. This may lead to poor or unreliable data and it will +be more vulnerable to automated attacks. Use with caution! Mind that this option only allows an answer by browser session, +but participants can use the Private navigation option and make multiple answers with the same device. + +|Announcement +|Optional +|A general announcement that'll be visible on the general survey landing page. +|=== + +== Permissions + +An administrator can choose which kind of xref:customize:authorizations.adoc[Authorizations] a participant need to have to make +certain actions in the surveys: + +* Answer + +== New survey form + +When you create a new survey you'll need to fill the form with the following fields: + +image:components/surveys/edit_form.png[Edit survey form] + +NOTE: Do you have repetitive surveys? For instance the same feedback form for every process? You can have a survey that +gets copied and is used as a blueprint for so you don't have to manually configure the same survey everytime. Learn more +about xref:_templates[Templates]. + + +.New survey form +|=== +|Field |Type |Description + +|Title +|Required +|What is the title of this survey. For instance, "Feedback" + +|Description +|Optional +|What is the description of this survey. + +|Terms of service +|Required +|Legal conditions that the participants must agree to in order to answer the survey. +|=== + +In the bottom of this form there's a button that allows you to "Add question". + +image:components/surveys/add_question_button.png[] + +You can add multiple questions per survey, and reorder or delete them. It's possible to also add separators between questions. + +Every question has to have a statement and a type as a minimum. + +image:components/surveys/question_form.png[] + + +.Add question form +|=== +|Field |Type |Description + +|Statement +|Required +|The question itself. For instance, "What is your age category?" + +|Description +|Optional +|Explanation of the question being made. + +|Mandatory +|Optional +|Check if this question is required to respond to submit the answer. + +|Character limit +|Optional +|How many characters has as a maxim the answer to this question. Leave to 0 if no limit. Compatible with Short and Long answer question types. + +|Type +|Required +|One of the following: Short answer, Long answer, Single option, Multiple option, Sorting, Files, Matrix (Single option) +or Matrix (Multiple option). See xref:_question_types[Question types] for more information. +|=== + +Depending in the question type, it's possible to add validations to the answers, like if the question is mandatory (participants +would need to provide an answer in order to submit the form) or if the answer is limited to a certain number of characters as maximum in +short and long answers. + +image:components/surveys/question_form_limits_backend.png[] + +image:components/surveys/question_form_limits_frontend.png[] + +== Question types + +A survey can have multiple questions with different types, such as: + +- Short answer +- Long answer +- Single option +- Multiple option +- Sorting +- Files +- Matrix (Single option) +- Matrix (Multiple option) + + +.Question types (click to view image in detail) +|=== +|Type |Frontend |Backend |Description + +|Short answer +|image:components/surveys/type_short_answer_frontend.png[Short answer type - frontend,link=../_images/components/surveys/type_short_answer_frontend.png] +|image:components/surveys/type_short_answer_backend.png[Short answer type - backend,link=../_images/components/surveys/type_short_answer_backend.png] +|Compatible with "Character limit" validation + +|Long answer +|image:components/surveys/type_long_answer_frontend.png[Long answer type - frontend,link=../_images/components/surveys/type_long_answer_frontend.png] +|image:components/surveys/type_long_answer_backend.png[Long answer type - backend,link=../_images/components/surveys/type_long_answer_backend.png] +|Compatible with "Character limit" validation + +|Single option +|image:components/surveys/type_single_option_frontend.png[Single option type - frontend,link=../_images/components/surveys/type_single_option_frontend.png] +|image:components/surveys/type_single_option_backend.png[Single option type - backend,link=../_images/components/surveys/type_single_option_backend.png] +|Participants will have to choose a single option, with radio buttons. At least 2 options always. It's possible to define a "Free text" option, so participants can submit their own answer. + +|Multiple option +|image:components/surveys/type_multiple_option_frontend.png[Multiple option type - frontend,link=../_images/components/surveys/type_multiple_option_frontend.png] +|image:components/surveys/type_multiple_option_backend.png[Multiple option type - backend,link=../_images/components/surveys/type_multiple_option_backend.png] +|Participants will have to choose multiple options, with checkboxes. At least 2 options always. It's possible to add a validation, with the maximum number of choices. It's possible to define a "Free text" option, so participants can submit their own answer. + +|Sorting +|image:components/surveys/type_sorting_frontend.png[Sorting type - frontend,link=../_images/components/surveys/type_sorting_frontend.png] +|image:components/surveys/type_sorting_backend.png[Sorting type - backend,link=../_images/components/surveys/type_sorting_backend.png] +|At least 2 options always. Participants will click in order of preference to sort. + +|Files +|image:components/surveys/type_files_frontend.png[Files type - frontend,link=../_images/components/surveys/type_files_frontend.png] +|image:components/surveys/type_files_backend.png[Files type - backend,link=../_images/components/surveys/type_files_backend.png] +|Participants will be able to upload files. + +|Matrix (Single option) +|image:components/surveys/type_matrix_single_option_frontend.png[Matrix (Single option) type - frontend,link=../_images/components/surveys/type_matrix_single_option_frontend.png] +|image:components/surveys/type_matrix_single_option_backend.png[Matrix (Single option) type - backend,link=../_images/components/surveys/type_matrix_single_option_backend.png] +|Participants will have to choose between rows and columns of single options, with radio buttons. + +|Matrix (Multiple option) +|image:components/surveys/type_matrix_multiple_option_frontend.png[Matrix (Multiple option) type - frontend,link=../_images/components/surveys/type_matrix_multiple_option_frontend.png] +|image:components/surveys/type_matrix_multiple_option_backend.png[Matrix (Multiple option) type - backend,link=../_images/components/surveys/type_matrix_multiple_option_backend.png] +|Participants will have to choose between rows and columns of multiple options, with checkboxes. +|=== + +== Templates + +For the cases where administrators need to define multiple surveys that are mostly the same but used in different contexts, +it's possible to define a template. When there's one defined for a survey, then it'll ask to select the Template and create +the survey based on this one or in the other hand if there's no need to use a template, then it's possible to Skip the template +selection. + +image:components/surveys/edit_questionnaire.png[Choose template form] + +== Export answers + +It's possible to export the survey participant answers to different formats: CSV, JSON, XLSX (Excel) or PDF. + +Note that the platform doesn't handle the answers processing nor presenting results or summary to the users, that need to be +done externally. \ No newline at end of file diff --git a/en/modules/admin/pages/configuration.adoc b/docs/ca/modules/admin/pages/configuration.adoc similarity index 100% rename from en/modules/admin/pages/configuration.adoc rename to docs/ca/modules/admin/pages/configuration.adoc diff --git a/docs/ca/modules/admin/pages/dashboard.adoc b/docs/ca/modules/admin/pages/dashboard.adoc new file mode 100644 index 0000000000..bf2fc64564 --- /dev/null +++ b/docs/ca/modules/admin/pages/dashboard.adoc @@ -0,0 +1,23 @@ += Dashboard + +For your first time accessing to a Decidim plaform as Admin, you'll receive an invitation email so you can finish setting up your account with your nickname, name and password. + +Once you've finished and you're logged-in, you'll be able to access the Admin panel, starting with the Dashboard page. For this you'll need to click on your username, and click on "Admin dashboard". + +image::admin_dashboard_menu.png[Decidim Admin Dashboard in user menu] + +Here, you'll have a summary of the last activity of the platform. + +image::admin_dashboard.png[Decidim Admin Dashboard] + +You'll have three blocks: + +1. Activity: participants and admins that had logged in in last month, last week and last day. +1. Metrics: the graphics for the evolution of multiple things inside of Decidim: +* Participants +* Proposals +* Comments +* Meetings +* Accepted proposals +* Results +1. Admin log: last actions made by Administrator users in the platform. \ No newline at end of file diff --git a/docs/ca/modules/admin/pages/features/badges.adoc b/docs/ca/modules/admin/pages/features/badges.adoc new file mode 100644 index 0000000000..6cf9a138d3 --- /dev/null +++ b/docs/ca/modules/admin/pages/features/badges.adoc @@ -0,0 +1,76 @@ += Badges + +Badges are recognitions to participant actions and progress in the platform. As participants start discovering, participating +and interacting in the platform, they will earn different badges. Here is the list of badges and some ways participants can earn them. + +It's a https://en.wikipedia.org/wiki/Gamification[gamification] mechanism to improve the engagement of the participants in a ludic way. + +The badges a participant has are visible in her account. There's also a general explanation page with a short description of every badge. + +image:features/badges/example01.png[Example of badges in profile] + +When a participant earns a badge she receives a notification. + +image:features/badges/notification.png[Example of badges notification] + +Badges have multiple levels, depending in the number of times she has made the action. For instance, for Proposals badge +she'll receive the first level badge when arriving at 1 follower, the second level at 15 followers, the third level at 30 followers, +the fourth level at 60 and the fifth level at 100. + + +.Badges +|=== +|Image |Title |Description |How it's earned |Levels + +|image:features/badges/accepted_proposals_badge.png[Accepted proposals badge] +|Accepted proposals +|Granted when particiapnts actively participate with new proposals and these are accepted. +|The participant needs to choose the participation space of her interest with submission for proposals enabled and try to +make proposals that can be carried out. This way they are more likely to be accepted. +|1, 5, 15, 30, 50 + +|image:features/badges/attended_meetings_badge.png[Attended meetings badge] +|Attended meetings +|Granted when participants attend several face-to-face meetings. +|The participant needs to register for the meetings she want to attend +|1, 3, 5, 10, 30 + +|image:features/badges/debates_badge.png[Debates badge] +|Debates +|Granted when participants actively participate in the different debates by leaving comments. +|The participant needs to take part in debates. +|1, 5, 10, 30, 50 + +|image:features/badges/followers_badge.png[Followers badge] +|Followers +|Granted when participant reach a certain number of followers. The platform is a social and political network, so +participants ned to weave their web to communicate with other people in the platform. +|The participant needs to be be active and follow other people. That will surely make other people follow her. +|1, 15, 30, 60, 100 + +|image:features/badges/published_initiatives_badge.png[Published initiatives badge] +|Published initiatives +|Granted when a participant launch new initiatives, partnering with others to carry them out. +|The participant needs to go to the participation space of Intiatives and follow the steps to create a new initiative. +|1, 5, 15, 30, 50 + +|image:features/badges/invitations_badge.png[invitations badge] +|Invitations +|Granted when participants invite some people and they have become participants. +|The participant needs to use the “invite friends” link on her user page to invite her friends. She can customize the +message she's sending. She’ll level up by sending invitations and getting them registered. Note that this feature is disabled +and this badge is not available, so it'll be removed in the future. +|1, 5, 10, 30, 50 + +|image:features/badges/proposal_supports_badge.png[Proposal supports badge] +|Proposal supports +|Granted when participants support other people's proposals. +|The participant needs to browse and spend some time reading other people's proposals and give support to the proposals she like or find interesting. +|5, 15, 50, 100, 500 + +|image:features/badges/proposals_badge.png[Proposals badge] +|Proposals +|Granted when participants actively participate with new proposals. +|The participant needs to choose the participation space of her interest with submission for proposals enabled and create a new proposal. +|1, 5, 10, 30, 60 +|=== \ No newline at end of file diff --git a/docs/ca/modules/admin/pages/features/comments.adoc b/docs/ca/modules/admin/pages/features/comments.adoc new file mode 100644 index 0000000000..43bd35408c --- /dev/null +++ b/docs/ca/modules/admin/pages/features/comments.adoc @@ -0,0 +1,64 @@ += Comments + +Comments are public messages left to the rest of the community. It allows participants to share information or opinions +about a proposal, debate, meeting, initiative, etc. + +image:features/comments/example01.png[Comments example] + +== Create a comment + +. Sign in as a participant +. Go to the content that you want to leave a comment +. Go to the bottom of the page +. Fill the "Add comment" form + +Depending on the component settings, this feature can be disabled. + +image:features/comments/form.png[Comments form] + +=== Form + +It's possible to: + +. mention a participant or user group (like @admin). They'll receive a notification +. add a hashtag (like #Example). This will link to the general search +. make a quote of a comment (like > this is a quote) +. if an URL is entered, then it'll be linked automatically +image:features/comments/rich_text_write.png[Comments with rich text (write)] +image:features/comments/rich_text_read.png[Comments with rich text (read)] +image:features/comments/hashtag_search.png[Hashtags in comments] +. if HTML is added, it'll be escaped and not shown +image:features/comments/xss_write.png[XSS in comments (write)] +image:features/comments/xss_read.png[XSS in comments (read)] +. add emojis to comments +image:features/comments/emoji_selector.png[Emoji selector in comments] + +== Sort + +Comments can be sorted by "Best rated", "Recent", "Older" or "More discussed". + +image:features/comments/order_by.png[Order comments] + +== Actions + +After a comment is created, the author can "Reply", "Report", "Get link", "Edit" and "Delete". Other participants can "Reply", "Report" and "Get link". Some of these actions are visible in the three dots menu: + +image:features/comments/actions.png[Comments actions] + +=== Reply + +It's possible to reply to comments until the 4th anidation level. + +image:features/comments/anidation_levels.png[Anidation levels for comments] + +=== Delete + +Once a comment is deleted is not longer visible. + +image:features/comments/deleted_comment.png[Deleted comment] + +=== Edit + +Once a comment is edited then it's shown that was edited. It doesn't have a version history of the changes made. + +image:features/comments/edited_comment.png[Edited comment] \ No newline at end of file diff --git a/docs/ca/modules/admin/pages/features/conversations.adoc b/docs/ca/modules/admin/pages/features/conversations.adoc new file mode 100644 index 0000000000..4165c50e1d --- /dev/null +++ b/docs/ca/modules/admin/pages/features/conversations.adoc @@ -0,0 +1,57 @@ += Conversations + +With conversations, participants can have private messaging with each other. Only the participants who are in the +conversation can see each others messages. + +A conversation can be started with any participant or group registered on the platform. + +image:features/conversations/conversation.png[Example of a conversation] + +To start a conversations: + +. Sign in as participant +. Go to the participant profile that you want to start a conversation with +image:features/conversations/profile.png[Participant profile] +. Click on the contact icon image:icon_envelope.png[Envelope icon] +. Fill the form +image:features/conversations/start_a_conversation_form.png[Start a conversation form] + +Alternatively, you could also: + +. Sign in as participant +. Click on the conversation icon in the header image:icon_envelope_off.png[Conversations icon] +. Click on the "Start conversation" button +. Search the participant or group that you want to start a conversation with +. Fill the form + +If there are new messages in a conversation, then the participant will see the icon with a color image:icon_envelope_on.png[Conversation icon with color] + +image:features/conversations/conversations.png[Conversations list] + +== Multiple participants in a conversation + +It's possible to have multiple participants in a conversation. + +For this, you need to: + +. Sign in as participant +. Click on the conversation icon in the header image:icon_envelope_off.png[Conversations icon] +. Click on the "Start conversation" button +. Search the participants or groups that you want to start a conversation with +. Fill the form + +image:features/conversations/new_conversation_modal.png[New conversation modal] + +== Group converations + +Just like with participants, is possible to have converstaions with groups. + +image:features/conversations/group_conversations.png[Group conversations list] +image:features/conversations/conversations_group_counter.png[Conversations group counter] + +== Notes + +Some things to consider about conversations: + +* It's not possible to delete a conversation. +* It's not possible to edit a message in a conversation. \ No newline at end of file diff --git a/docs/ca/modules/admin/pages/features/embed.adoc b/docs/ca/modules/admin/pages/features/embed.adoc new file mode 100644 index 0000000000..c35bf2bca7 --- /dev/null +++ b/docs/ca/modules/admin/pages/features/embed.adoc @@ -0,0 +1,23 @@ += Embed + +Sometimes you want to embed some content to an external page. For this you can use the `Embed` feature. + +image:features/embed/example.png[A proposal card embeded in another page] + +== How to embed + +. Navigate to the content you want to embed. +. Click on the `Embed` link in the sidebar. image:features/embed/link.png[] +image:features/embed/sidebar.png[] +. Copy the code from the modal. +image:features/embed/modal.png[] +. Paste that code in the external page where you want to embed it. The CMS or platform that you're using needs to supports +changing HTML code. + +An example of this code is: + +[source,html] +---- + + +---- \ No newline at end of file diff --git a/docs/ca/modules/admin/pages/features/endorsements.adoc b/docs/ca/modules/admin/pages/features/endorsements.adoc new file mode 100644 index 0000000000..b407e0ca97 --- /dev/null +++ b/docs/ca/modules/admin/pages/features/endorsements.adoc @@ -0,0 +1,17 @@ += Endorsements + +Through endorsements, participants can publicly show that they want to support a particular content, for instance, a proposal. + +image:features/endorsements/list.png[List of endorsements] + +This is done through the button in the sidebar. Administrators can enable or disable them by step in a given participatory process, and they can also define permissions with authorizations. + +image:features/endorsements/sidebar.png[Endorsement button in sidebar] + +When a participant belongs to a verified group she can also endorse like that group by selecting the identity. + +image:features/endorsements/modal.png[Select identity modal] + +By default the endorsements list is collapsed. To see it fully visitors need too click in the "(see more)" link. + +image:features/endorsements/full_list.png[Full list of endorsements] \ No newline at end of file diff --git a/docs/ca/modules/admin/pages/features/fingerprint.adoc b/docs/ca/modules/admin/pages/features/fingerprint.adoc new file mode 100644 index 0000000000..0a4c43d309 --- /dev/null +++ b/docs/ca/modules/admin/pages/features/fingerprint.adoc @@ -0,0 +1,29 @@ += Fingerprint + +Although the platform should show the xref:admin:features/versions.adoc[Versions] for almost all of the contents, it'd be +still possible to manipulate the content by directly editing the database. + +As mitigation for this risk, the platform shows a fingerprint for some important fields, for instance, a proposal body and title. + +image:features/fingerprint/modal.png[Check fingerprint modal] + +Its goal is to provide a way to give an informal "receipt" to a participant to they can detect tampering. A fingerprint is +a hashed representation of the content. It's useful to ensure the content hasn't been tampered with, as a single modification +would result in a totally different value. It's calculated using a SHA256 hashing algorithm. In order to replicate it +yourself, you can use a http://www.md5calc.com/sha256[MD5 calculator online] and copy-paste the source data. + +== Check fingerprint + +. Go to the content that you want to check the fingerprint +. Click in the "Check fingerprint" link in the sidebar +image:features/fingerprint/sidebar.png[Check fingerprint link in sidebar] +. Follow the modal instructions + +image:features/fingerprint/md5calc.png[MD5calc.com screenshot] + +It's possible to check the fingerprint with other tools, such as the sha256sum command line tool. + +[source,bash] +---- +echo -n '{"body":{"en":"

**Is your feature request related to a problem? Please describe.**

It would be useful to set a character limit on questionnaire answers to provide guidance for users regarding how long their answers should be.


**Describe the solution you\'d like**

To have a number input field next to each question in the admin, labeled \\"Character limit\\", by default set to zero (no limit), which determines the maximum characters the user answers to those questions can have.


**Describe alternatives you\'ve considered**

Another possibility could be to define this globally for the questionnaire, setting the character limit for each type of question.


**Additional context**

-


**Could this issue impact on users private data?**

No


**Funded by**

Fundació Bosch i Guimpera

"},"title":{"en":"Maximum characters for questionnaire text answers"}}' | sha256sum +---- \ No newline at end of file diff --git a/docs/ca/modules/admin/pages/features/follows.adoc b/docs/ca/modules/admin/pages/features/follows.adoc new file mode 100644 index 0000000000..faab047d79 --- /dev/null +++ b/docs/ca/modules/admin/pages/features/follows.adoc @@ -0,0 +1,27 @@ += Follows + +Most of the contents in Decidim allows to be followed. This means that you'll receive xref:features/notifications.adoc[notifications] +of the activity being made by the thing you're following. + +You can control these notifications in the xref:features/my_account/notifications_settings.adoc[settings of your account]. + +The activity of the things that you're following is visible in your xref:features/my_public_profile/timeline.adoc[profile timeline]. + +For following a thing: + +. Navigate to whatever you want to follow. +. Click in the "Follow" button. +image:button_follow.png[Follow button] +. You'll see the "Follow" button disappear and the "Stop following" button appear. + +To unfollow a thing: + +. Navigate to whatever you want to unfollow. +. Click in the "Stop following" button. +image:button_stop_following.png[Stop following button] +. You'll see the "Stop following" button disappear and the "Follow" button appear. + +Administrators by default follow all the new spaces that are created in the Decidim platform. + +A participant can also follow another participants. This is public and it's visible in the profile sections +xref:features/my_public_profile/follows.adoc[follows] and xref:features/my_public_profile/followers.adoc[followers]. \ No newline at end of file diff --git a/docs/ca/modules/admin/pages/features/hashtags.adoc b/docs/ca/modules/admin/pages/features/hashtags.adoc new file mode 100644 index 0000000000..2d332d6537 --- /dev/null +++ b/docs/ca/modules/admin/pages/features/hashtags.adoc @@ -0,0 +1,5 @@ += Hashtags + +Hashtags are a way to categorize content globally on the platform and make it more easily searchable through these categorizations. It allows different related contents to be easily discoverable under the same topic. Similar functionality is often used in other social media platforms. + +Hashtags can be set for different records within the platform, such as participatory spaces. They can also be generated for content created by the participants to allow easier discovery of the content. Some components may also allow setting suggested hashtags or specific hashtags for all records submitted by the participants. \ No newline at end of file diff --git a/docs/ca/modules/admin/pages/features/metrics.adoc b/docs/ca/modules/admin/pages/features/metrics.adoc new file mode 100644 index 0000000000..0e98422d88 --- /dev/null +++ b/docs/ca/modules/admin/pages/features/metrics.adoc @@ -0,0 +1,15 @@ += Metrics + +NOTE: Looking for how to enable this feature technically? Go to xref:develop:metrics.adoc[Metrics in Developers guide] + +With Metrics participants can see the evolution in time of some resources, such as Proposals, Supports, Endorsements, Followers, Participants, Accepted propsoals, Comments, etc. You can see a real world example of this in https://meta.decidim.org/processes/roadmap/all-metrics[Metadecidim Roadmap process]. + +For this to work it needs to be first xref:develop:metrics.adoc[configured technically] and also enabled by the setting in the participatory space (`Show metrics` checkbox). + +Then this section will be visible in the space landing page. + +image:features/metrics/example.png[Example of metrics] + +By clicking in "Show all metrics", visitors can see other metrics and download this data in CSV format. + +image:features/metrics/page.png[Metrics page] \ No newline at end of file diff --git a/docs/ca/modules/admin/pages/features/my_account.adoc b/docs/ca/modules/admin/pages/features/my_account.adoc new file mode 100644 index 0000000000..f15dc1f51e --- /dev/null +++ b/docs/ca/modules/admin/pages/features/my_account.adoc @@ -0,0 +1,19 @@ += My account + +My account is all the pages where a participant can change her personal data that is displayed in her xref:admin:features/my_public_profile.adoc[My public profile] page, change her notifications settings, see which groups she belongs, etc. + +To go to this section: + +. Sign in as a participant +. Click in the name of the participant in the header +. Click in "My account" + +The actions that she can do are: + +* xref:admin:features/my_account/account.adoc[Account] +* xref:admin:features/my_account/notifications_settings.adoc[Notifications settings] +* xref:admin:features/my_account/authorizations.adoc[Authorizations] +* xref:admin:features/my_account/groups.adoc[Groups] +* xref:admin:features/my_account/my_interests.adoc[My interests] +* xref:admin:features/my_account/my_data.adoc[My data] +* xref:admin:features/my_account/delete_my_account.adoc[Delete my account] \ No newline at end of file diff --git a/docs/ca/modules/admin/pages/features/my_account/account.adoc b/docs/ca/modules/admin/pages/features/my_account/account.adoc new file mode 100644 index 0000000000..9eb98b406b --- /dev/null +++ b/docs/ca/modules/admin/pages/features/my_account/account.adoc @@ -0,0 +1,47 @@ += Account + +In this section is possible to make modifications that will be visible in the participants xref:features/my_public_profile.adoc[public profile] and also modify the email address or the language that the platform will use with the user. + +. Sign in as a participant +. Click in the name of the participant in the header +. Click in "My account" + +image:features/my_account/account.png[My account form] + + +.Participant settings - My account form +|=== +|Field |Type |Description + +|Avatar +|Optional +|Avatar or picture for the participant. Guidance for image: Preferrably a landscape image that does not have any text. +The service crops the image. Maximum file size: 5MB + +|Your name +|Required +|The name of the participant. + +|Nickname +|Required +|The nickname of the participant. + +|Your email +|Required +|The email of the participant, where she'll receive notifications, password recovery, etc. If it's changed it needs to be +confirmed. + +|Personal URL +|Optional +|Metadata that is displayed in the participant's profile. + +|About +|Optional +|Metadata that is displayed in the participant's profile. + +|Locale +|Required +|Choose the language you want to use to browse and receive notifications in Decidim +|=== + +From this page is possible to also modify the participant's password. \ No newline at end of file diff --git a/docs/ca/modules/admin/pages/features/my_account/authorizations.adoc b/docs/ca/modules/admin/pages/features/my_account/authorizations.adoc new file mode 100644 index 0000000000..3838e35959 --- /dev/null +++ b/docs/ca/modules/admin/pages/features/my_account/authorizations.adoc @@ -0,0 +1,23 @@ += Authorizations + +In this section participants will be able to review their Authorizations and see some metadata, like when it was granted +or the status of the authorization. + +It depends on how it's configured for the organization, as depending in the context (like normative or laws) it could work +in different ways. For more information about Authorizations see xref:admin:participants/authorizations.adoc[authorizations +in admin manual] and xref:customize:authorizations.adoc[authorizations in customize guide]. + +image:features/my_account/authorizations.png[Authorizations] + +To go to this section: + +. Sign in as a participant +. Click in the name of the participant in the header +. Click in "My account" +. Click in "Authorizations" in the sidebar + +For any given authorization, you can see the following information: + +* If it's not finished, when the authorization process started +* If it has finished and has been granted, the date when it was granted +* If the authorization provides it, some metadata, such as the scope of the authorization \ No newline at end of file diff --git a/docs/ca/modules/admin/pages/features/my_account/delete_my_account.adoc b/docs/ca/modules/admin/pages/features/my_account/delete_my_account.adoc new file mode 100644 index 0000000000..8ba403a53e --- /dev/null +++ b/docs/ca/modules/admin/pages/features/my_account/delete_my_account.adoc @@ -0,0 +1,21 @@ += Delete my account + +In this section participants will be able to delete their own accounts. This means that they will be unable to access the system anymore. This action is irreversible. All the contributions will be anonymized. + +image:features/my_account/delete_my_account.png[Delete my account form] + +To delete the account: + +. Sign in as a participant +. Click in the name of the participant in the header +. Click in "My account" +. Click in "Delete my account" in the sidebar +. Optionally, she can provide a reason for the deletion +. Click in "Delete my account" +. Click in "Yes, I want to delete my account" + +image:features/my_account/delete_my_account_confirm.png[Confirm account deletion] + +After the account has been deleted, the contributions (such as comments, proposals, etc), will be still visible but all the authorship information will be anonymized, belonging to an special kind of author called "Participant deleted": + +image:features/my_account/delete_my_account_deleted.png[Deleted participant contribution] \ No newline at end of file diff --git a/docs/ca/modules/admin/pages/features/my_account/groups.adoc b/docs/ca/modules/admin/pages/features/my_account/groups.adoc new file mode 100644 index 0000000000..5bccbd4987 --- /dev/null +++ b/docs/ca/modules/admin/pages/features/my_account/groups.adoc @@ -0,0 +1,18 @@ += Groups + +In this section participants can see which Groups they belong to. + +NOTE: Want to create a new group? Go to the xref:admin:features/my_public_profile.adoc[My public profile] page. + +image:features/my_account/groups.png[Groups] + +To go to this section: + +. Sign in as a participant +. Click in the name of the participant in the header +. Click in "My account" +. Click in "Groups" in the sidebar + +Here you can see in which date the group was created and which status does it have (`pending` or `verified`). + +Read more about xref:admin:participants/groups.adoc[Groups in admin manual]. \ No newline at end of file diff --git a/docs/ca/modules/admin/pages/features/my_account/my_data.adoc b/docs/ca/modules/admin/pages/features/my_account/my_data.adoc new file mode 100644 index 0000000000..657fe4af9b --- /dev/null +++ b/docs/ca/modules/admin/pages/features/my_account/my_data.adoc @@ -0,0 +1,29 @@ += My data + +In this section participants can request a file with all the data that they've provided to the platform. + +image:features/my_account/my_data.png[My data] + +To request the data: + +. Sign in as a participant +. Click in the name of the participant in the header +. Click in "My account" +. Click in "My data" in the sidebar +. Click in "Request data" +. Wait a couple of minutes so the files are generated. It could depend in how many proposals, comments, etc you've made +. Go to your email account and find the received email +. Click in "Download" +. Open it with a support zip software +. Enter the password that you've received in the email +. Unzip or extract the contents + +image:features/my_account/my_data_email.png[My data] + +== Zip applications + +For opening the zip file, the software that you use need to support encryption with the AES-256 algorithm. Depending on your operating system you have multiple alternatives. + +* Windows: https://www.7-zip.org/[7-Zip] +* Mac: https://www.keka.io[Keka] +* GNU/Linux: File Roller (available through your package manager) or https://peazip.github.io/[PeaZip] \ No newline at end of file diff --git a/docs/ca/modules/admin/pages/features/my_account/my_interests.adoc b/docs/ca/modules/admin/pages/features/my_account/my_interests.adoc new file mode 100644 index 0000000000..df77a4d79b --- /dev/null +++ b/docs/ca/modules/admin/pages/features/my_account/my_interests.adoc @@ -0,0 +1,15 @@ += My interests + +In this section participants can choose which interests they have to receive more information about. + +By default what they see here is a list of all the xref:admin:scopes.adoc[Scopes] of the organization. Those selections +can be used by administrators when segmenting for the xref:admin:newsletters.adoc[Newsletters]. + +image:features/my_account/my_interests.png[My interests] + +To go to this section: + +. Sign in as a participant +. Click in the name of the participant in the header +. Click in "My account" +. Click in "My interests" in the sidebar \ No newline at end of file diff --git a/docs/ca/modules/admin/pages/features/my_account/notifications_settings.adoc b/docs/ca/modules/admin/pages/features/my_account/notifications_settings.adoc new file mode 100644 index 0000000000..ff949d0ad4 --- /dev/null +++ b/docs/ca/modules/admin/pages/features/my_account/notifications_settings.adoc @@ -0,0 +1,26 @@ += Notifications + +In this section participants can choose which kind of notifications they'll receive. For instance, depending in the activity of the installation and spaces, most people would want to disable the "Everything I follow" + +image:features/my_account/notifications_settings.png[Notifications settings] + +To go to this section: + +. Sign in as a participant +. Click in the name of the participant in the header +. Click in "My account" +. Click in "Notifications settings" in the sidebar + +The options available are: + +* I want to get notifications about +** My own activity, like when someone comments in my proposal or mentions me +** Everything I follow +* Send notifications by email +** I want to receive an email every time I receive a notification +* Newsletters +** I want to receive newsletters +* Receive direct messages from anyone +** Allow anyone to send me a direct message, even if I don't follow them +* Administrators +** I want to receive an email every time something is reported for moderation \ No newline at end of file diff --git a/docs/ca/modules/admin/pages/features/my_public_profile.adoc b/docs/ca/modules/admin/pages/features/my_public_profile.adoc new file mode 100644 index 0000000000..ad704dea44 --- /dev/null +++ b/docs/ca/modules/admin/pages/features/my_public_profile.adoc @@ -0,0 +1,18 @@ += My public profile + +Every participant has a public profile that shows details about them and their activity on the website. + +To go to this section: + +. Sign in as a participant +. Click in the name of the participant in the header +. Click in "My public profile" + +The sections available under the public profile are: + +* xref:admin:features/my_public_profile/timeline.adoc[Timeline] +* xref:admin:features/my_public_profile/activity.adoc[Activity] +* xref:admin:features/badges.adoc[Badges] +* xref:admin:features/my_public_profile/follows.adoc[Follows] +* xref:admin:features/my_public_profile/followers.adoc[Followers] +* xref:admin:features/my_public_profile/groups.adoc[Groups] \ No newline at end of file diff --git a/docs/ca/modules/admin/pages/features/my_public_profile/badges.adoc b/docs/ca/modules/admin/pages/features/my_public_profile/badges.adoc new file mode 100644 index 0000000000..3d44427d06 --- /dev/null +++ b/docs/ca/modules/admin/pages/features/my_public_profile/badges.adoc @@ -0,0 +1,5 @@ += Badges + +The public profile's badges shows which badges the participant has accumulated and what their current level is for each badge. + +More information about badges is available on the xref:admin:features/badges.adoc[Badges feature page]. \ No newline at end of file diff --git a/docs/ca/modules/admin/pages/features/my_public_profile/followers.adoc b/docs/ca/modules/admin/pages/features/my_public_profile/followers.adoc new file mode 100644 index 0000000000..6c12a0f330 --- /dev/null +++ b/docs/ca/modules/admin/pages/features/my_public_profile/followers.adoc @@ -0,0 +1,3 @@ += Followers + +The followers section contains a list of participants and groups that are following the participant that the profile belongs to. \ No newline at end of file diff --git a/docs/ca/modules/admin/pages/features/my_public_profile/follows.adoc b/docs/ca/modules/admin/pages/features/my_public_profile/follows.adoc new file mode 100644 index 0000000000..c9c686c277 --- /dev/null +++ b/docs/ca/modules/admin/pages/features/my_public_profile/follows.adoc @@ -0,0 +1,3 @@ += Follows + +The follows section contains a list of participants and groups the participant is currently following. By following another participant or a group on the platform, the participant will receive notifications about the activity done by those other participants or groups on the platform. Some participants may also require that they need to be following the other participant before they can exchange private messages with each other. \ No newline at end of file diff --git a/docs/ca/modules/admin/pages/features/my_public_profile/groups.adoc b/docs/ca/modules/admin/pages/features/my_public_profile/groups.adoc new file mode 100644 index 0000000000..52885e4050 --- /dev/null +++ b/docs/ca/modules/admin/pages/features/my_public_profile/groups.adoc @@ -0,0 +1,3 @@ += Groups + +The groups section contains all the groups that the user belongs to. More information about the groups feature is available at the xref:admin:features/my_account/groups.adoc[User groups page]. \ No newline at end of file diff --git a/docs/ca/modules/admin/pages/features/my_public_profile/timeline.adoc b/docs/ca/modules/admin/pages/features/my_public_profile/timeline.adoc new file mode 100644 index 0000000000..99909163f4 --- /dev/null +++ b/docs/ca/modules/admin/pages/features/my_public_profile/timeline.adoc @@ -0,0 +1,3 @@ += Timeline + +The timeline view displays the participants activity on the website, including the activity items that should be only visible to the participant currently logged in. This section is not visible to any other user than the participant themselves because it can also contain items that should be visible only to that participant. \ No newline at end of file diff --git a/docs/ca/modules/admin/pages/features/my_public_profile/tmp_notifications.adoc b/docs/ca/modules/admin/pages/features/my_public_profile/tmp_notifications.adoc new file mode 100644 index 0000000000..2aabfc9b49 --- /dev/null +++ b/docs/ca/modules/admin/pages/features/my_public_profile/tmp_notifications.adoc @@ -0,0 +1,5 @@ += Notifications + +In this section participants can see the notifications that the system has sent to them. For instance, if the participant is followign a participatory space or a proposal, they get related notifications about the actions that happen in these sections of the platform. + +This section can be accessed through the bell icon in the header bar of the platform. The bell icon shows highlighted as active when there are notifications and dimmer when there are no new notifications for the user right now. \ No newline at end of file diff --git a/docs/ca/modules/admin/pages/features/notifications.adoc b/docs/ca/modules/admin/pages/features/notifications.adoc new file mode 100644 index 0000000000..18006f9c47 --- /dev/null +++ b/docs/ca/modules/admin/pages/features/notifications.adoc @@ -0,0 +1,16 @@ += Notifications + +Most of the actions in the platform generate notifications so particpants can know when there are new things to watch. + +This is accessible from the `Notifications` menu item (image:icon_bell.png[Notification icon]) in the header, after a participant has logged in. + +To see the notifications: + +. Sign in as participant +. Click in the notifications icon in the header + +If there are notifications, then the participant will see the icon with a color image:icon_bell_on.png[Notification icon with color] + +image:features/notifications/notifications.png[Example of notifications page when there are notifications] + +image:features/notifications/no_notifications_yet.png[Example of notifications page when there aren't notifications] \ No newline at end of file diff --git a/docs/ca/modules/admin/pages/features/search.adoc b/docs/ca/modules/admin/pages/features/search.adoc new file mode 100644 index 0000000000..c774f2e53c --- /dev/null +++ b/docs/ca/modules/admin/pages/features/search.adoc @@ -0,0 +1,3 @@ += Search engine + +*The search engine* allows participants to perform searches across all of the platform’s indexable content, both generally and specifically, by searching within a specific participatory process or inside its components (proposals, results, etc.), through advanced searches. \ No newline at end of file diff --git a/docs/ca/modules/admin/pages/features/share.adoc b/docs/ca/modules/admin/pages/features/share.adoc new file mode 100644 index 0000000000..845476edb6 --- /dev/null +++ b/docs/ca/modules/admin/pages/features/share.adoc @@ -0,0 +1,3 @@ += Share + +Different content on the platform can be easily shared through the share links available on the site. The share links allow easier sharing to different social media services that can be configured for Decidim through the configuration files. \ No newline at end of file diff --git a/docs/ca/modules/admin/pages/features/statistics.adoc b/docs/ca/modules/admin/pages/features/statistics.adoc new file mode 100644 index 0000000000..416e405100 --- /dev/null +++ b/docs/ca/modules/admin/pages/features/statistics.adoc @@ -0,0 +1,3 @@ += Statistics + +Decidim provides general statistics about the whole platform and different participatory spaces can also provide statistics related to that participatory space only. These are generic numbers that indicate the website activity and may also encourage other people to join the platform as they see it being popular. \ No newline at end of file diff --git a/docs/ca/modules/admin/pages/features/versions.adoc b/docs/ca/modules/admin/pages/features/versions.adoc new file mode 100644 index 0000000000..63b7ca2f13 --- /dev/null +++ b/docs/ca/modules/admin/pages/features/versions.adoc @@ -0,0 +1,24 @@ += Versions + +The versions feature allows a visitor to see the evolution of the different versions of resources that can be edited, +like proposals or results. + +With versions it's possible to see who made the change, when the change has been made and exactly what has changed. + +image:features/versions/side_by_side_escaped.png[Versions in resources] + +== See the versions + +. Go to the content that you want to see the version of. +. Click in the "see other versions" link in the sidebar +image:features/versions/sidebar.png[See other versions link in sidebar] +. Click in the past version that you want to see +image:features/versions/list.png[List of versions] +. From there you can change the visualiation of the version differences +image:features/versions/unified_unescaped.png[Unified unescaped view] + +It's possible to view the diffs of the versions in in two formats: side by side or unified. In case that the contents are +in HTML then it's also possible to see the diff unescaped and escaped, and see the full HTML code. + +image:features/versions/side_by_side_unescaped.png[Side by side unescaped view] +image:features/versions/unified_escaped.png[Unified escaped view] \ No newline at end of file diff --git a/en/modules/admin/pages/global_moderations.adoc b/docs/ca/modules/admin/pages/global_moderations.adoc similarity index 87% rename from en/modules/admin/pages/global_moderations.adoc rename to docs/ca/modules/admin/pages/global_moderations.adoc index 86b776bca2..bb3d553310 100644 --- a/en/modules/admin/pages/global_moderations.adoc +++ b/docs/ca/modules/admin/pages/global_moderations.adoc @@ -12,27 +12,27 @@ For instance, in the case of https://www.decidim.barcelona/[Decidim Barcelona], the https://www.decidim.barcelona/pages/terms-and-conditions[Terms of Service] says: > It is not allowed to add any illegal or unauthorized content to the site, such -as information with the following features: -> +> as information with the following features: +> > * be it false or misleading; > * to infringe any law of the City Council or any third party, such as copyright, -trademarks or other intellectual and industrial property rights or related rights; +> trademarks or other intellectual and industrial property rights or related rights; > * attacking the privacy of a third party, such as publishing personal details -of participants, such as name, address, phone number, email, photos or any other -personal information; +> of participants, such as name, address, phone number, email, photos or any other +> personal information; > * containing viruses, Trojans, robots or other programs that may harm the website -or the City Hall systems, or the website or system of any third party, or which -intend to circumvent the technical measures designed for the proper functioning -of the platform; +> or the City Hall systems, or the website or system of any third party, or which +> intend to circumvent the technical measures designed for the proper functioning +> of the platform; > * to send spam to users or overload the system; > * which has the character of message chain, pyramidal game or random game; > * for commercial purposes, such as publishing job offers or ads; > * that it is not in keeping with public decency; consequently, content must not -incite hatred, discriminate, threaten, provoke, have no sexual, violent, coarse or -offensive meaning or character; +> incite hatred, discriminate, threaten, provoke, have no sexual, violent, coarse or +> offensive meaning or character; > * to infringe the law or applicable regulation; > * to campaign by promoting mass voting for other proposals not related to the -process and the framework for discussion, and +> process and the framework for discussion, and > * to create multiple users by pretending to be different people (astroturfing). Anyone can propose a moderation in Decidim, through the "Flag" icon in the participant @@ -118,4 +118,4 @@ To see all the metadata of a report, you can see it Expanded. image:global_moderations_report01.png[Expanded moderation 01] -image:global_moderations_report02.png[Expanded moderation 02] +image:global_moderations_report02.png[Expanded moderation 02] \ No newline at end of file diff --git a/en/modules/admin/pages/help_sections.adoc b/docs/ca/modules/admin/pages/help_sections.adoc similarity index 100% rename from en/modules/admin/pages/help_sections.adoc rename to docs/ca/modules/admin/pages/help_sections.adoc diff --git a/docs/ca/modules/admin/pages/homepage.adoc b/docs/ca/modules/admin/pages/homepage.adoc new file mode 100644 index 0000000000..b5811167d9 --- /dev/null +++ b/docs/ca/modules/admin/pages/homepage.adoc @@ -0,0 +1,101 @@ += Homepage + +include::partial$under-construction.adoc[] + +You can control how it's the Homepage of your organization. To do so you have the Settings -> Homepage section through the Administration panel: + +image::admin_homepage.png[Decidim Admin Homepage] + +--- + +== How this works + +This means that every section in the Homepage is called **content block**. + +For instance, this is the *How to participate* content block: + +image::homepage_how_to_participate.png[How to participate example] + +For managing these contents you need to Drag and Drop the contents between the two columns, on the left are the Active and in the Right are the Inactive content blocks. + +As an example, here you can see how your page will look with only the *Hero image* content block: + +// TODO: add screenshot + +At the admin this is handled with: + +// TODO: add screenshot + +In your installation you could have other content blocks, as this depends on which modules you have active. Please contact your system administrator if you see something different here, like a missing content block. + +== Content blocks + +These are the different content blocks enabled with the official Decidim modules: + +=== Hero image + +image::homepage_hero_image_back.png[Hero image in Homepage backend content block] + +image::homepage_hero_image_front.png[Hero image in Homepage frontend content block] + +=== Sub hero banner + +Displays the description text of the instance. See xref:admin:appearance.adoc[Appearance]. + +image::homepage_sub_hero_banner.png[Sub hero banner in Homepage content block] + +=== Footer sub hero banner + +// TODO: I think this should be changed with an HTML text and probably removed + +image::homepage_footer_sub_hero_banner.png[Hero image in Homepage content block] + +=== How to participate + +// TODO: I think this should be changed with an HTML text and probably removed + +image::homepage_how_to_participate.png[How to participate in Homepage content block] + +=== Upcoming meetings + +image::homepage_upcoming_meetings.png[Upcoming meetings in Homepage content block] + +=== Last activity + +image::homepage_last_activity.png[Last activity in Homepage content block] + +=== HTML block + +image::homepage_html_block.png[HTML block in Homepage content block] + +=== Highlighted processes + +image::homepage_highlighted_processes.png[Highlighted processes in Homepage content block] + +=== Highlighted assemblies + +image::homepage_highlighted_assemblies.png[Highlighted assemblies in Homepage content block] + +=== Highlighted initiatives + +image::homepage_highlighted_initiatives.png[Highlighted initiatives in Homepage content block] + +=== Highlighted consultations + +image::homepage_highlighted_consultations.png[Highlighted consultations in Homepage content block] + +=== Highlighted conferences + +image::homepage_highlighted_conferences.png[Highlighted conferences in Homepage content block] + +=== Highlighted content banner + +image::homepage_highlighted_content_banner.png[Highlighted content banner in Homepage content block] + +=== Organization statistics + +image::homepage_organization_statistics.png[Organizations statistics in Homepage content block] + +=== Organization metrics + +image::homepage_organization_metrics.png[Organzation metrics in Homepage content block] \ No newline at end of file diff --git a/en/modules/admin/pages/index.adoc b/docs/ca/modules/admin/pages/index.adoc similarity index 98% rename from en/modules/admin/pages/index.adoc rename to docs/ca/modules/admin/pages/index.adoc index 3e7a4b75d8..4c3b2a0763 100644 --- a/en/modules/admin/pages/index.adoc +++ b/docs/ca/modules/admin/pages/index.adoc @@ -24,4 +24,4 @@ So, participatory spaces are configured by defining (and configuring) the compon This section provides a full description of how to configure the Decidim platform for any kind of organization and how to configure, manage and administer the various participatory processes. A description has been given in tutorial format, to help with understanding administration tasks, following Decidim’s literal fields and enclosing screenshots to facilitate their interpretation. -Managing (administering) the Decidim platform is relatively simple and intuitive and no specific IT knowledge is required. The administrators of a Decidim platform, in other words, those with the necessary authorization for managing the platform, can configure the platform in a general way (images, information pages, etc.,) and manage the various participatory processes (configuring, editing, analysing and concluding). +Managing (administering) the Decidim platform is relatively simple and intuitive and no specific IT knowledge is required. The administrators of a Decidim platform, in other words, those with the necessary authorization for managing the platform, can configure the platform in a general way (images, information pages, etc.,) and manage the various participatory processes (configuring, editing, analysing and concluding). \ No newline at end of file diff --git a/en/modules/admin/pages/information-pages.adoc b/docs/ca/modules/admin/pages/information-pages.adoc similarity index 91% rename from en/modules/admin/pages/information-pages.adoc rename to docs/ca/modules/admin/pages/information-pages.adoc index 0873674249..b92b94229d 100644 --- a/en/modules/admin/pages/information-pages.adoc +++ b/docs/ca/modules/admin/pages/information-pages.adoc @@ -8,11 +8,11 @@ Here we offer you three informative pages that you can use as a template or re-u [[t.6a4146f0a2c8ecae39afa2642bcb7f700ef842af]][[t.0]] -[width="100%",cols="100%",] +[width="100%", cols="100%"] |=== |_FAQS (EN)_ -a| -If you’d like to take part in participatory processes and have your say, register! Note that to use some of the functions of certain processes (such as voting and prioritising) you will have to verify that you are registered with #Name of the Municipality/ Organization#, by following a very simple step. + +a|If you’d like to take part in participatory processes and have your say, register! Note that to use some of the functions of certain processes (such as voting and prioritising) you will have to verify that you are registered with #Name of the Municipality/ Organization#, by following a very simple step. *What is #Name of the Municipality/ Organization?#* @@ -35,8 +35,7 @@ Take part * Offer arguments in favour or against, or your general thoughts. * Share the proposals on social media. -a| -Follow the existing proposals +a|Follow the existing proposals * Follow the existing proposals: those started on the platform and those generated by face-to-face meetings. * After the face-to-face meetings have taken place, you can follow the progress of the discussions and debates as well as the contributions generated. @@ -125,17 +124,16 @@ Click on the "Enter" link, enter your email address and password, and click on t Review the section "My residency verification doesn't work", in case the problem lies in this step; generally speaking, this is the most frequent problem. If this does not solve your problem, review the section "How to create and verify my account", to ensure that your are following the steps correctly. If the problem persists, email us at #Email#, and you will be given assistance. |=== -[[h.mqwt6we7yoz]] [[h.mkf6otb3mhlh]] == Terms and conditions of use [[t.0c2d2bc083254e4010a82a1ac81ebd7f18f135ee]][[t.1]] -[width="100%",cols="100%",] +[width="100%", cols="100%"] |=== |_Terms and conditions of use (EN)_ -a| -Legal aspects and conditions of use for the #Platformname# participatory platform at #Name of the Municipality/ Organization# City Council. + +a|Legal aspects and conditions of use for the #Platformname# participatory platform at #Name of the Municipality/ Organization# City Council. (the ones that the legal services recommend you. You can use the https://www.google.com/url?q=https://decidim.barcelona/pages/terms-and-conditions&sa=D&ust=1526042251902000[Decidim.Barcelona terms and conditions of use] as a model). |=== @@ -145,11 +143,11 @@ Legal aspects and conditions of use for the #Platformname# participatory platfo [[t.44b67a895959076674b8c3aa044e22bbd448f440]][[t.2]] -[width="100%",cols="100%",] +[width="100%", cols="100%"] |=== |_Accessibility (EN)_ -a| -This refers to the webpage's design and contents, which have to be accessible (without any visual or technological obstacles and for the largest number of users possible), and to standard regulations (WAI, Web Accessibility Initiative). + +a|This refers to the webpage's design and contents, which have to be accessible (without any visual or technological obstacles and for the largest number of users possible), and to standard regulations (WAI, Web Accessibility Initiative). Decidim.Barcelona example https://www.google.com/url?q=https://www.decidim.barcelona/pages/accessibility&sa=D&ust=1526042251903000[Accessibility]. -|=== +|=== \ No newline at end of file diff --git a/docs/ca/modules/admin/pages/initiatives_initializer.adoc b/docs/ca/modules/admin/pages/initiatives_initializer.adoc new file mode 100644 index 0000000000..80f663fc2c --- /dev/null +++ b/docs/ca/modules/admin/pages/initiatives_initializer.adoc @@ -0,0 +1,174 @@ += Initiatives Initializer + +For using the initiatives module, you'll want to review the configurations that are in the initializer. See the xref:configure:initializer.adoc[general Initializer configuration] for more information regarding this file. + +You'll need to change in the `config/initializer/decidim.rb` file. You could also create an ad-hoc file for these configurations, like `config/initializer/initiatives.rb`. + +After making changes to this file you'll need to also restart your application server. + +== Creation enabled + +Setting that defines whether creation is allowed to any validated user or not. Defaults to true. + +[source,ruby] +.... + config_accessor :creation_enabled do + true + end +.... + +== Similarity threshold + +Setting that defines the similarity minimum value to consider two +initiatives similar. Defaults to 0.25. + +[source,ruby] +.... + config_accessor :similarity_threshold do + 0.25 + end +.... + +== Similarity limit + +Setting that defines how many similar initiatives will be shown. +Defaults to 5. + +[source,ruby] +.... + config_accessor :similarity_limit do + 5 + end +.... + +== Minimum committee members + +Minimum number of committee members required to pass the initiative to +technical validation phase. Only applies to initiatives created by +individuals. + +[source,ruby] +.... + config_accessor :minimum_committee_members do + 2 + end +.... + +== Default signature time period length + +Number of days available to collect supports after an initiative has been +published. + +[source,ruby] +.... + config_accessor :default_signature_time_period_length do + 120 + end +.... + +== Default components + +Components enabled for a new initiative + +[source,ruby] +.... + config_accessor :default_components do + [:pages, :meetings] + end +.... + +== First notification percentage + +Notifies when the given percentage of supports is reached for an +initiative. + +[source,ruby] +.... + config_accessor :first_notification_percentage do + 33 + end +.... + +== Second notification percentage + +Notifies when the given percentage of supports is reached for an +initiative. + +[source,ruby] +.... + config_accessor :second_notification_percentage do + 66 + end +.... + +== Stats cache expiration time + +Sets the expiration time for the statistic data. + +[source,ruby] +.... + config_accessor :stats_cache_expiration_time do + 5.minutes + end +.... + +== Max time in validating state + +Maximum amount of time in validating state. +After this time the initiative will be moved to +discarded state. + +[source,ruby] +.... + config_accessor :max_time_in_validating_state do + 60.days + end +.... + +== Print enabled + +Print functionality enabled. Allows the user to get +a printed version of the initiative from the administration +panel. + +[source,ruby] +.... + config_accessor :print_enabled do + true + end +.... + +== Timestamp service + +Set a service to generate a timestamp on each vote. The +attribute is the name of a class whose instances are +initialized with a string containing the data to be +timestamped and respond to a timestamp method. + +[source,ruby] +.... + config_accessor :timestamp_service +.... + +== PDF signature service + +Set a service to add a signature to pdf of signatures. +The attribute is the name of a class whose instances are +initialized with the document to be signed and respond to a +signed_pdf method with the signature added. + +[source,ruby] +.... + config_accessor :pdf_signature_service +.... + +== Do no require authorization + +This flag allows creating authorizations to unauthorized users. + +[source,ruby] +.... + config_accessor :do_not_require_authorization do + false + end +.... \ No newline at end of file diff --git a/en/modules/admin/pages/newsletters.adoc b/docs/ca/modules/admin/pages/newsletters.adoc similarity index 99% rename from en/modules/admin/pages/newsletters.adoc rename to docs/ca/modules/admin/pages/newsletters.adoc index f7e8c66b33..7c3c069551 100644 --- a/en/modules/admin/pages/newsletters.adoc +++ b/docs/ca/modules/admin/pages/newsletters.adoc @@ -71,6 +71,7 @@ You can use "%\{name}" anywhere in the body or subject and it will be replaced by the recipient's name. ==== + .New Newsletter "basic (only text)" form |=== |Field |Type |Description @@ -87,8 +88,10 @@ replaced by the recipient's name. === Text, image and Call to Action button newsletter form image::newsletter_new_cta01.png[Newsletter new template text, image and CTA form 1] + image::newsletter_new_cta02.png[Newsletter new template text, image and CTA form 2] + .New Newsletter "Image, text and Call To Action button" form |=== |Field |Type |Description @@ -116,10 +119,8 @@ image::newsletter_new_cta02.png[Newsletter new template text, image and CTA form |Main image | |Guidance for image: Preferrably a landscape image that does not have any text. The service crops the image. Allowed file extensions: jpg jpeg gif png bmp ico - |=== - == 3. Preview the newsletter After you've filled the contents of the newsletter, you can preview it. Until you've @@ -160,5 +161,4 @@ sent to all the selected recipients. ==== Once a newsletter was sent it can't be undone nor edited. If you have multiple languages active, be careful with reviewing all the languages well before sending. -==== - +==== \ No newline at end of file diff --git a/en/modules/admin/pages/pages.adoc b/docs/ca/modules/admin/pages/pages.adoc similarity index 100% rename from en/modules/admin/pages/pages.adoc rename to docs/ca/modules/admin/pages/pages.adoc index 859defee13..70e77220cd 100644 --- a/en/modules/admin/pages/pages.adoc +++ b/docs/ca/modules/admin/pages/pages.adoc @@ -23,6 +23,7 @@ For creating a new page, you need to: image::pages_backend_form.png[Backend: new page form] + .New page form |=== |Field |Type |Description @@ -50,7 +51,6 @@ image::pages_backend_form.png[Backend: new page form] |Show in the footer |Optional |Wether you want to show this page in the general footer (available in every page). - |=== image::pages_frontend_footer.png[Frontend: example of a page in the footer] @@ -65,6 +65,7 @@ For creating a new topic, you need to: image::pages_backend_topic_form.png[Backend: new topic form] + .New topic form |=== |Field |Type |Description @@ -84,7 +85,6 @@ image::pages_backend_topic_form.png[Backend: new topic form] |Show in the footer |Optional |Wether you want to show this topic in the general footer (available in every page). - |=== == Special "Terms and Conditions" page diff --git a/en/modules/admin/pages/participants.adoc b/docs/ca/modules/admin/pages/participants.adoc similarity index 100% rename from en/modules/admin/pages/participants.adoc rename to docs/ca/modules/admin/pages/participants.adoc diff --git a/en/modules/admin/pages/participants/admins.adoc b/docs/ca/modules/admin/pages/participants/admins.adoc similarity index 100% rename from en/modules/admin/pages/participants/admins.adoc rename to docs/ca/modules/admin/pages/participants/admins.adoc diff --git a/en/modules/admin/pages/participants/authorizations.adoc b/docs/ca/modules/admin/pages/participants/authorizations.adoc similarity index 98% rename from en/modules/admin/pages/participants/authorizations.adoc rename to docs/ca/modules/admin/pages/participants/authorizations.adoc index 3f4cfd63ab..3937fffc92 100644 --- a/en/modules/admin/pages/participants/authorizations.adoc +++ b/docs/ca/modules/admin/pages/participants/authorizations.adoc @@ -37,4 +37,4 @@ Some of the available authorizations by default are: * xref:admin:participants/authorizations/census.adoc[Organization's census] If any of these authorizations are not useful for your needs, talk with your implementer to see other alternatives. Learn -more about xref:customize:authorizations.adoc[Authorizations in the Customize Guide section]. +more about xref:customize:authorizations.adoc[Authorizations in the Customize Guide section]. \ No newline at end of file diff --git a/en/modules/admin/pages/participants/authorizations/census.adoc b/docs/ca/modules/admin/pages/participants/authorizations/census.adoc similarity index 100% rename from en/modules/admin/pages/participants/authorizations/census.adoc rename to docs/ca/modules/admin/pages/participants/authorizations/census.adoc diff --git a/en/modules/admin/pages/participants/authorizations/code_postal_letter.adoc b/docs/ca/modules/admin/pages/participants/authorizations/code_postal_letter.adoc similarity index 99% rename from en/modules/admin/pages/participants/authorizations/code_postal_letter.adoc rename to docs/ca/modules/admin/pages/participants/authorizations/code_postal_letter.adoc index 20ff86d715..953c5c0eb0 100644 --- a/en/modules/admin/pages/participants/authorizations/code_postal_letter.adoc +++ b/docs/ca/modules/admin/pages/participants/authorizations/code_postal_letter.adoc @@ -54,4 +54,4 @@ code doesn't match ours. Please double-check the letter we sent to you." After is verified, as with other verifications, she can see it in her account settings. -image:authorizations_code_postal_letter_verified.png[Verified by code by postal letter] +image:authorizations_code_postal_letter_verified.png[Verified by code by postal letter] \ No newline at end of file diff --git a/en/modules/admin/pages/participants/authorizations/identity_documents.adoc b/docs/ca/modules/admin/pages/participants/authorizations/identity_documents.adoc similarity index 97% rename from en/modules/admin/pages/participants/authorizations/identity_documents.adoc rename to docs/ca/modules/admin/pages/participants/authorizations/identity_documents.adoc index 14e73c2f19..2502903d6a 100644 --- a/en/modules/admin/pages/participants/authorizations/identity_documents.adoc +++ b/docs/ca/modules/admin/pages/participants/authorizations/identity_documents.adoc @@ -16,9 +16,10 @@ image:authorizations_id_document_configuration.png[ID document authorization con NOTE: As you can see, this authorization is based in the original implementers reality, in this case in the Spanish identities document types. For instance, we're giving as options for document types "DNI, NIE or Passport" or we're asking for "Document number (with letter)" -You can change this by xref:customize:code.adoc[code customizing or overriding] these things. We also accept xref:ROOT:governance.adoc[Pull Request contributions] +You can change this by xref:customize:code.adoc[code customizing or overriding] these things. We also accept xref:contribute:governance.adoc[Pull Request contributions] so it's possible to configure this. + .ID Documents authorization configuration |=== |Field |Type |Description @@ -32,7 +33,6 @@ so it's possible to configure this. |Directions that participants need to follow to verify their documents when offline verification is selected. For instance, do they need to go to a specific place to show their documents? Is this place open some days of the week? Is it open for certain hours? - |=== == Online @@ -109,6 +109,7 @@ Then she'll need to fill some data provided by the participant and by reviewing image:authorizations_id_document_offline_confirm.png[ID document authorization offline confirmation form in admin] + .ID Documents authorization offline flow |=== |Field |Type |Description @@ -124,7 +125,6 @@ image:authorizations_id_document_offline_confirm.png[ID document authorization o |Document number (with letter) |Required |Document number of the participant. For instance, "12345678Z" - |=== === 3. The request is accepted or rejected @@ -138,4 +138,4 @@ user account. It's also possible to enable both of these verifications methods. In this case, the participant will be asked to choose which kind of verification she wants to do. -image:authorizations_id_document_account_choose.png[Choose ID document verification kind] +image:authorizations_id_document_account_choose.png[Choose ID document verification kind] \ No newline at end of file diff --git a/en/modules/admin/pages/participants/groups.adoc b/docs/ca/modules/admin/pages/participants/groups.adoc similarity index 98% rename from en/modules/admin/pages/participants/groups.adoc rename to docs/ca/modules/admin/pages/participants/groups.adoc index 2330cf8b74..3201f6fac9 100644 --- a/en/modules/admin/pages/participants/groups.adoc +++ b/docs/ca/modules/admin/pages/participants/groups.adoc @@ -12,6 +12,7 @@ When clicked it'll open the "New group form": image:user_group_new_form.png[New user group form] + .New group form |=== |Field |Type |Description @@ -43,10 +44,8 @@ image:user_group_new_form.png[New user group form] |Phone |Optional |Used for verifications. Do not use dashes nor spaces. - |=== - == Membership After a group has been created, it's possible to invite participants to become members of the group. After a participant has accepted to be part of this group then she can become an admin. @@ -114,4 +113,4 @@ image:user_group_endorse.png[User group: endorse] You can also have Conversations as a group. This is in the group profile page: -image:user_group_conversation.png[User group: conversations] +image:user_group_conversation.png[User group: conversations] \ No newline at end of file diff --git a/en/modules/admin/pages/participants/impersonations.adoc b/docs/ca/modules/admin/pages/participants/impersonations.adoc similarity index 98% rename from en/modules/admin/pages/participants/impersonations.adoc rename to docs/ca/modules/admin/pages/participants/impersonations.adoc index 24fc6e580b..9cd1788be5 100644 --- a/en/modules/admin/pages/participants/impersonations.adoc +++ b/docs/ca/modules/admin/pages/participants/impersonations.adoc @@ -10,7 +10,7 @@ participant without email. NOTE: At the code and the User Interface we say both *Impersonation* and *Managed Participants*. It's the same thing. -## Panel +== Panel image::participants_impersonations.png[Admin's Impersonations panel] @@ -39,4 +39,4 @@ Finally, it's also possible to Promote a participant, meaning that after a participant has been managed, an administrator can add the email and send her an Invitation: -image::participants_impersonations_promotion.png[Admin's promotion Impersonations] +image::participants_impersonations_promotion.png[Admin's promotion Impersonations] \ No newline at end of file diff --git a/en/modules/admin/pages/participants/participants.adoc b/docs/ca/modules/admin/pages/participants/participants.adoc similarity index 99% rename from en/modules/admin/pages/participants/participants.adoc rename to docs/ca/modules/admin/pages/participants/participants.adoc index e3649ae16c..e76ab358b4 100644 --- a/en/modules/admin/pages/participants/participants.adoc +++ b/docs/ca/modules/admin/pages/participants/participants.adoc @@ -87,6 +87,4 @@ After Officializing a participant you can: - Revoke the Officialization status with "Unofficialize" image:participants_officialize.png[Officialize a participant] -image:participants_participants_actions_officialize.png[Officialize a participant] - - +image:participants_participants_actions_officialize.png[Officialize a participant] \ No newline at end of file diff --git a/en/modules/admin/pages/participants/reported_users.adoc b/docs/ca/modules/admin/pages/participants/reported_users.adoc similarity index 98% rename from en/modules/admin/pages/participants/reported_users.adoc rename to docs/ca/modules/admin/pages/participants/reported_users.adoc index cfd34bf176..6616b10c2b 100644 --- a/en/modules/admin/pages/participants/reported_users.adoc +++ b/docs/ca/modules/admin/pages/participants/reported_users.adoc @@ -1,4 +1,4 @@ -# Reported users += Reported users There are cases where participants could go against the Terms of Service of the platform, so it's useful to have the option for reporting and blocking users. You @@ -30,4 +30,4 @@ Once a blocked participant tries to log-in she'll see an error message: image:participants_block_user_alert.png[Message shown to blocked user] -After a participant was blocked its name is changed to "Blocked user". +After a participant was blocked its name is changed to "Blocked user". \ No newline at end of file diff --git a/en/modules/admin/pages/participants/verifications_conflicts.adoc b/docs/ca/modules/admin/pages/participants/verifications_conflicts.adoc similarity index 97% rename from en/modules/admin/pages/participants/verifications_conflicts.adoc rename to docs/ca/modules/admin/pages/participants/verifications_conflicts.adoc index bdf1b9bf7f..1e14b977f6 100644 --- a/en/modules/admin/pages/participants/verifications_conflicts.adoc +++ b/docs/ca/modules/admin/pages/participants/verifications_conflicts.adoc @@ -21,6 +21,7 @@ Then she'll see the Transfer user form, where she can provide a reason for the t image:verifications_conflicts_transfer_user.png[] + .Transfer user form |=== |Field |Type |Description @@ -32,7 +33,6 @@ image:verifications_conflicts_transfer_user.png[] |Email |Required |The email of the user to transfer - |=== -After the user is transferred, both accounts (the original and the new one) will be merged. +After the user is transferred, both accounts (the original and the new one) will be merged. \ No newline at end of file diff --git a/en/modules/admin/pages/scopes.adoc b/docs/ca/modules/admin/pages/scopes.adoc similarity index 89% rename from en/modules/admin/pages/scopes.adoc rename to docs/ca/modules/admin/pages/scopes.adoc index c9abdc0261..e189ca92cb 100644 --- a/en/modules/admin/pages/scopes.adoc +++ b/docs/ca/modules/admin/pages/scopes.adoc @@ -16,6 +16,7 @@ If you need so, you need to first configure the Scope type. image:scopes_types_new_form.png[New scope type form] + .Admin New Scope Type form |=== |Field |Type |Description @@ -27,11 +28,11 @@ image:scopes_types_new_form.png[New scope type form] |Plural |Required |Name of the scope type in plural. - |=== image:scopes_new_form.png[New scope form] + .Admin New Scope Form |=== |Field |Type |Description @@ -47,7 +48,6 @@ image:scopes_new_form.png[New scope form] |Scope type |Required |Which type of scope it's. - |=== == Actions @@ -68,10 +68,10 @@ You have 3 possible actions in this list after a Scope is created: |image:action_delete.png[Delete icon] |Delete |To delete this scope. - |=== == Features + The main features related with scopes are: . Filtering @@ -88,8 +88,8 @@ image:scopes_filter_processes.png[Processes scopes filtering] Some examples: * With Accountability module, so it's possible to filter Results -* Assemblies and Processes can have Scopes. It's used for filtering multiple assemblies in the main listing page (/assemblies or /processes). -* Filtering in the sidebar is possible in Budgets Projects, Initiatives and Proposals. +* Assemblies and Processes can have Scopes. It's used for filtering multiple assemblies in the main listing page (/assemblies or /processes). These can be hidden by unchecking the "Enable participatory space filters" in the xref:admin:configuration.adoc[admin's configuration page]. +* Filtering in the sidebar is possible in Budgets Projects, Initiatives and Proposals. In some of these components you can control if these filters are shown with the "Scopes enabled" checkbox in the component settings. This will also enable or disable the scope selector in the resource creation form. You can also configure a participatory space so the filtering will only concern one scope and its children scopes. For example, let's imagine your organization have 3 different scopes for 3 cities, each of them having children scopes for the cities neighbourhoods. On a participatory space which concerns only one of the cities, you will be able to select only this scope and its children so that users do not see the scopes of other cities in the filter options. @@ -102,4 +102,4 @@ image:account_my_interests.png[Account: my interests] This is used by the xref:admin:newsletters.adoc[Newsletters], in the "Select recipients to deliver" step, "Filter for users having activated any selected scope in their account's My Interests settings." section. -image:newsletter_select_recipients.png[Newsletter: select recipients] +image:newsletter_select_recipients.png[Newsletter: select recipients] \ No newline at end of file diff --git a/docs/ca/modules/admin/pages/spaces.adoc b/docs/ca/modules/admin/pages/spaces.adoc new file mode 100644 index 0000000000..6e3fcfab76 --- /dev/null +++ b/docs/ca/modules/admin/pages/spaces.adoc @@ -0,0 +1,12 @@ += Spaces + +The participatory spaces are the channels that citizens can participate through when public decisions are being taken. By default +the platform is provided with participatory processes, initiatives, consultations, conferences, votings and assemblies, but +any organization can develop its own mechanisms through xref:develop:modules.adoc[Modules]. + +They are accessible through the main sidebar in the administration panel, and also through the main navigation menu in the +public interface. + +image:spaces_admin.png[Spaces in admin sidebar] + +image:spaces_visitor.png[Spaces visible in the public interface] \ No newline at end of file diff --git a/docs/ca/modules/admin/pages/spaces/assemblies.adoc b/docs/ca/modules/admin/pages/spaces/assemblies.adoc new file mode 100644 index 0000000000..82c7e1d8a0 --- /dev/null +++ b/docs/ca/modules/admin/pages/spaces/assemblies.adoc @@ -0,0 +1,308 @@ += Assemblies + +An assembly is a group of members of an organization who meet periodically to make decisions about a specific area or +scope of the organization. + +Assemblies hold meetings, some are private and some are open. If they are open, it is possible to participate in them +(for example: attending if the capacity allows it, adding points to the agenda, or commenting on the proposals and decisions taken by this organ). + +Examples: A general assembly (which meets once a year to define the organisation's main lines of action as well as its +executive bodies by vote), an equality advisory council (which meets every two months to make proposals on how to improve +gender relations in the organisation), an evaluation commission (which meets every month to monitor a process) or a guarantee +body (which collects incidents, abuses or proposals to improve decision-making procedures) are all examples of assemblies. + +The main difference between xref:admin:spaces/processes.adoc[participatory processes] and assemblies is that assemblies don't +have phases, meaning that they don't have timelines. + +You can see a real world usage of assemblies in https://www.decidim.barcelona/assemblies[Decidim Barcelona], where you +can see the different Participation Organs, that are the regular spaces where the City Council meets with citizens and organizations +to get feedback. + +In this section, we'll explain how we can configure an Assembly in Decidim. + +== List + +To configure assemblies on the Decidim platform, click on btn:[Assemblies] in the admin sidebar menu. A list +will appear with the existing assemblies if there are any: + +image:assemblies_list.png[Assemblies list] + +You can filter by the ones that are: + +* Published / Unpublished +* Public / Private + +image:assemblies_list_filter.png[Assemblies list filtered] + +You can also search by title and control how many elements are in the list. + +You have 4 possible actions in this list after an Assembly is created: + +. Export: send by email the configuration for a given assembly. Can be imported in other Decidim installation. +. Duplicate: to duplicate this assembly. +. Configure: to edit the metadata and configuration for a assembly. +. Assemblies: to manage all the children assemblies for a assembly. +. Preview: how it will look once published. + +== New assembly form + +image:assemblies_new_form.png[New assembly form] + + +.New assembly form: General information +|=== +|Field |Type |Description + +|Title +|Required +|Title of the assembly. For instance, "General Committee". + +|Subtitle +|Required +|Subtitle. For instance, "Let's decide our priorities together" + +|Order position +|Required +|Which order will it have in relation with the other assemblies. Having a lower number means a higher priority. For instance, +if you have two assemblies, "Assembly a" with weight "10" and "Assembly b" with weight "0", then "Assembly b" will be first when ordering. + +|URL slug +|Required +|URL slugs are used to generate the URLs that point to this assembly. Only accepts letters, numbers and dashes, and must +start with a letter. Example: if your domain is 'example.org' and your slug 'general-committee' then your URL will +be https://example.org/assemblies/general-committee + +|Hashtag +|Optional +|Hashtag for Twitter + +|Short description +|Required +|A short explanation of what's your participatory process about. + +|Description +|Required +|A long explanation of what's your assembly about. + +|Purpose of action +|Optional +|Internal field that doesn't get shown publicly. To be removed in a future version. + +|Composition +|Optional +|Internal field that doesn't get shown publicly. To be removed in a future version. + +|Internal organisation +|Optional +|Internal field that doesn't get shown publicly. To be removed in a future version. + +|Announcement +|Optional +|The text you enter here will be shown to the user right below the assembly information. +|=== + + +.New assembly form: Duration +|=== +|Field |Type |Description + +|Date created +|Optional +|Information that's displayed in the assembly metadata sidebar. Expected format: dd/mm/yyyy + +|Included at +|Optional +|Information that's displayed in the assembly metadata sidebar. The date when this assembly was added to Decidim. It does +not necessarily have to be the same as the creation date. Expected format: dd/mm/yyyy + +|Duration +|Optional +|Information that's displayed in the assembly metadata sidebar. If the duration of this assembly is limited, select the +end date. Otherwise, it will appear as indefinite. Expected format: dd/mm/yyyy + +|Closing date +|Optional +|Information that's displayed in the assembly metadata sidebar. When this assembly closed. Expected format: dd/mm/yyyy + +|Closing date reason +|Optional +|Information that's displayed in the assembly metadata sidebar. Why this assembly closed. +|=== + + +.New assembly form: Images +|=== +|Field |Type |Description + +|Home image +|Optional +|Image that will be used in presentation cards of this assembly. Guidance for file: Has to be an image or a document. +For images, use preferably landscape images that does not have any text, the service crops the image. Maximum file size: 10MB +Allowed file extensions: jpeg jpg png + +|Banner image +|Optional +|Image that will be used inside of the assembly. Guidance for file: Has to be an image or a document. +For images, use preferably landscape images that does not have any text, the service crops the image. Maximum file size: 10MB +Allowed file extensions: jpeg jpg png +|=== + + +.New assembly form: Filters +|=== +|Field |Type |Description + +|Scopes enabled +|Optional +|Check if you want to have Scopes filtering in this assembly. + +|Scope +|Optional +|Which xref:admin:scopes.adoc[Scope] does this assembly belongs to. + +|Area +|Optional +|Which xref:admin:areas.adoc[Area] does this assembly belongs to. +|=== + + +.New assembly form: Metadata +|=== +|Field |Type |Description + +|What is decided +|Optional +|Information that's displayed in the assembly metadata sidebar. + +|How is it decided +|Optional +|Information that's displayed in the assembly metadata sidebar. + +|Scope metadata +|Optional +|Information that's displayed in the assembly metadata sidebar. + +|Promoter group +|Optional +|Information that's displayed in the assembly metadata sidebar. + +|Organization area +|Optional +|Information that's displayed in the assembly metadata sidebar. + +|Who participates +|Optional +|Information that's displayed in the assembly metadata sidebar. +|=== + + +.New assembly form: Visibility +|=== +|Field |Type |Description + +|Parent assembly +|Optional +|What is the assembly that this assembly belongs to. For instance in Metadecidim, the https://meta.decidim.org/assemblies/coordination-committee[Coordination Committee] +has the parent assembly of the https://meta.decidim.org/assemblies/general-assembly-association[General%20Assembly%20of%20the%20Decidim%20Association]. + +|Highlighted +|Optional +|Check if you want the assembly to have more visibility in the Assemblies public list. It'll also be visible in the +Assembly Content Block in the xref:admin:homepage.adoc[Homepage] configuration. + +|Private space +|Optional +|Check if this assembly should only be accessible by xref:admin:spaces/assemblies/private_participants.adoc[Private Participants] + +|Is transparent +|Optional +|Check if this assembly is private but should be visible to all the rest of participants. This means that other participants +or visitors will see it but they won't be able to interact with it. +|=== + + +.New assembly form: Other +|=== +|Field |Type |Description + +|Created by +|Optional +|Choose one of "City Council", "Public" or "Other". If it's Other, you can specify the name of the organization that created +this assembly. + +|Assembly type +|Optional +|Which xref:_assemblies_types[assembly type] is this assembly. + +|Related processes +|Optional +|Select other participatory processes that are related to this assembly. + +|Social +|Optional +|Which social networks profile does this assembly has. Can be Twitter, Facebook, Instagram, YouTube and/or GitHub. It's +displayed in the assembly metadata sidebar. + +|Show statistics +|Optional +|Check if you want to show the Statistics section. +|=== + +After you've initially created your assembly you have a submenu where you need to keep configuring more information +about your assembly. + +image:assembly_submenu.png[Assembly submenu in admin] + +Here you can keep configuring your process: + +. Info: the same form that we explained in this page. +. xref:admin:spaces/assemblies/components.adoc[Components] +. xref:admin:spaces/assemblies/categories.adoc[Categories] +. xref:admin:spaces/assemblies/attachments.adoc[Attachments] +. xref:admin:spaces/assemblies/members.adoc[Members] +. xref:admin:spaces/assemblies/admins.adoc[Assembly admins] +. xref:admin:spaces/assemblies/private_participants.adoc[Private participants] +. xref:admin:spaces/assemblies/moderations.adoc[Moderations] + +== Assemblies types + +For clasyfing the assemblies in different kinds, you can define Assembly types. These types can be filtered in the public +assemblies page. + +image:assemblies_type_filters.png[Filter by assembly type] + +image:assemblies_new_type_form.png[New assembly type form] + + +.New assembly type form +|=== +|Field |Type |Description + +|Title +|Required +|Title of the this assembly type. For instance, "Consultative". +|=== + +== Settings + +At the moment there's only a setting for configuring the general behaviour of assemblies. + +image:assemblies_settings.png[Assemblies settings] + + +.Settings for assemblies form +|=== +|Field |Type |Description + +|Enable organization chart +|Checkbox +|Whether you want to show the organization chart in the assemblies list. +|=== + +The organization chart is shown in the bottotm of the assemblies page. + +image:assemblies_organization_chart.png[Assemblies organization chart] + +It allows a navigation in the assemblies tree, with the possibility to see the sub-assemblies that belongs to a parent assembly. + +image:assemblies_organization_chart_filtered.png[Assemblies organization chart filtered] \ No newline at end of file diff --git a/docs/ca/modules/admin/pages/spaces/assemblies/admins.adoc b/docs/ca/modules/admin/pages/spaces/assemblies/admins.adoc new file mode 100644 index 0000000000..59313271ef --- /dev/null +++ b/docs/ca/modules/admin/pages/spaces/assemblies/admins.adoc @@ -0,0 +1 @@ +include::partial$page_admins.adoc[] \ No newline at end of file diff --git a/docs/ca/modules/admin/pages/spaces/assemblies/attachments.adoc b/docs/ca/modules/admin/pages/spaces/assemblies/attachments.adoc new file mode 100644 index 0000000000..493f7dc8c8 --- /dev/null +++ b/docs/ca/modules/admin/pages/spaces/assemblies/attachments.adoc @@ -0,0 +1 @@ +include::partial$page_attachments.adoc[] \ No newline at end of file diff --git a/docs/ca/modules/admin/pages/spaces/assemblies/categories.adoc b/docs/ca/modules/admin/pages/spaces/assemblies/categories.adoc new file mode 100644 index 0000000000..3ee4fc09cc --- /dev/null +++ b/docs/ca/modules/admin/pages/spaces/assemblies/categories.adoc @@ -0,0 +1 @@ +include::partial$page_categories.adoc[] \ No newline at end of file diff --git a/docs/ca/modules/admin/pages/spaces/assemblies/components.adoc b/docs/ca/modules/admin/pages/spaces/assemblies/components.adoc new file mode 100644 index 0000000000..7a204dda0b --- /dev/null +++ b/docs/ca/modules/admin/pages/spaces/assemblies/components.adoc @@ -0,0 +1 @@ +include::partial$page_components.adoc[] \ No newline at end of file diff --git a/en/modules/admin/pages/spaces/assemblies/members.adoc b/docs/ca/modules/admin/pages/spaces/assemblies/members.adoc similarity index 99% rename from en/modules/admin/pages/spaces/assemblies/members.adoc rename to docs/ca/modules/admin/pages/spaces/assemblies/members.adoc index 2649609a99..64a7159a8f 100644 --- a/en/modules/admin/pages/spaces/assemblies/members.adoc +++ b/docs/ca/modules/admin/pages/spaces/assemblies/members.adoc @@ -21,6 +21,7 @@ For creating a new phase of a participatory process: image:assembly_members_new_form.png[Assembly members new form] + .New assembly member form |=== |Field |Type |Description @@ -68,5 +69,4 @@ image:assembly_members_new_form.png[Assembly members new form] |Birthplace |Optional |Where was this person born. - -|=== +|=== \ No newline at end of file diff --git a/docs/ca/modules/admin/pages/spaces/assemblies/moderations.adoc b/docs/ca/modules/admin/pages/spaces/assemblies/moderations.adoc new file mode 100644 index 0000000000..12d6ac0858 --- /dev/null +++ b/docs/ca/modules/admin/pages/spaces/assemblies/moderations.adoc @@ -0,0 +1 @@ +include::partial$page_moderations.adoc[] \ No newline at end of file diff --git a/docs/ca/modules/admin/pages/spaces/assemblies/private_participants.adoc b/docs/ca/modules/admin/pages/spaces/assemblies/private_participants.adoc new file mode 100644 index 0000000000..16c939dfa3 --- /dev/null +++ b/docs/ca/modules/admin/pages/spaces/assemblies/private_participants.adoc @@ -0,0 +1 @@ +include::partial$page_private_participants.adoc[] \ No newline at end of file diff --git a/docs/ca/modules/admin/pages/spaces/conferences.adoc b/docs/ca/modules/admin/pages/spaces/conferences.adoc new file mode 100644 index 0000000000..405be42fa8 --- /dev/null +++ b/docs/ca/modules/admin/pages/spaces/conferences.adoc @@ -0,0 +1,169 @@ += Conferences + +A conference is a collection of meetings arranged in a program, with a number of people invited as speakers, and other +information fields typical of large congresses or social events (registration, list of organizations that support or sponsor the +event, etc.). A conference can be a relevant event for an organization and its members, or take place as part of a participatory +process or follow a consultation. + +Examples: + +* A general assembly for an organization +* The annual meeting of a cooperative + +As a real world example you can see the anual Metadecidim conferences: + +image:spaces/conferences/example01.png[Decidim Fest 2020] + +* https://meta.decidim.org/conferences/decidimfest19[Decidim Fest 2019] +* https://meta.decidim.org/conferences/decidimfest2020[Decidim Fest 2020] +* https://meta.decidim.org/conferences/DecidimFest21[Decidim Fest 2021] + +== Create a new conference + +For adding a new conference, you need to: + +image:spaces/conferences/menu.png[Conferences menu] + +. Sign in as admin +. Go to admin panel +. In the main sidebar, click in the button "Conferences" +. Click in the button "Create a new conference" +. Configure the conference by filling the form + +image:spaces/conferences/new_conference.png[Create a new conference form] + + +.Create a new conference +|=== +|Field |Type |Description + +|Title +|Required +|What is the title of this conference. For instance "Decidim Fest 2021" + +|Slogan +|Required +|A subtitle for this conference. For instance, "Democracy, Technology and Global Justice" + +|URL slug +|Required +|URL slugs are used to generate the URLs that point to this conference. Only accepts letters, numbers, and dashes, and +must start with a letter. Example: if your domain is 'example.org' and your slug 'DecidimFest21' then your URL will be +https://example.org/conferences/DecidimFest21 + +|Hashtag +|Optional +|Hashtag for Twitter + +|Highlighted +|Optional +|Should this conference be more prominent than others? For instance, is this an ongoing or a conference that has happened years ago? + +|Short description +|Required +|A short explanation of what's your conference about. + +|Description +|Required +|A long explanation of what's your conference about. + +|Objectives +|Optional +|What are the objectives or goals for this conference? + +|Location +|Optional +|Where will this conference take place? + +|Home image +|Optional +|Preferrably a landscape image that does not have any text. The service crops +the image. Maximum file size: 10MB. Allowed file extensions: jpeg jpg png + +|Banner image +|Optional +|Preferrably a landscape image that does not have any text. The service crops +the image. Maximum file size: 10MB. Allowed file extensions: jpeg jpg png + +|Scopes enabled +|Optional +|Check if you want to have Scopes filtering in this conference + +|Scope +|Optional +|Which xref:admin:scopes.adoc[Scope] does this conference belongs to. + +|Show statistics +|Optional +|Check if you want to show the Statistics section. + +|Start date +|Required +|When will this conference start. Expected format: dd/mm/yyyy + +|End date +|Required +|When will this conference end. Expected format: dd/mm/yyyy + +|Registrations enabled +|Optional +|Check if you want to handle registrations on the platform. + +|Available slots +|Optional +|Leave it to 0 if you have unlimited slots available. + +|Registration terms +|Required if "Registrations enabled" is checked +|What are the terms of service or conditions that a participant must accept for registering in this conference? + +|Related participatory processes +|Optional +|Select the processes that are related to this conference. Use the *ctrl* function to select more than one option. + +|Related Assemblies +|Optional +|Select the assemblies that are related to this conference. Use the *ctrl* function to select more than one option. + +|Related Consultations +|Optional +|Select the consultations that are related to this conference. Use the *ctrl* function to select more than one option. +|=== + +== Creating the program + +For creating the program of the conference you need to create a new xref:components/meetings.adoc[Meeting component] with the +dates and times of the different talks, workshops, sessions, etc. After publishing the meetings, it will be visible in the landing page +and there'll be a special navigation for these meetings so they're ordered by date and time. + +image:spaces/conferences/program_frontend.png[Conferences program (frontend)] + +image:spaces/conferences/program_backend.png[Conferences program (backend)] + +Also if you they are "In person" meetings with a location then you'll have a list of the venues. + +image:spaces/conferences/program_venues_frontend.png[Conferences venues (frontend)] + +== Menu + +image:spaces/conferences/manage_conferences.png[Conferences list at admin panel] + +After you’ve initially created your conference you have a submenu where you need +to keep configuring more information about it. + +image:spaces/conferences/sidebar.png[Conferences sidebar] + +. Info: the same form that we explained in this page. +. xref:admin:spaces/conferences/components.adoc[Components] +. xref:admin:spaces/conferences/categories.adoc[Categories] +. xref:admin:spaces/conferences/attachments.adoc[Attachments] +. xref:admin:spaces/conferences/media_links.adoc[Media Links] +. xref:admin:spaces/conferences/partners.adoc[Partners] +. xref:admin:spaces/conferences/speakers.adoc[Speakers] +. xref:admin:spaces/conferences/registrations.adoc[Registrations] +.. xref:admin:spaces/conferences/registrations/types.adoc[Registration Types] +.. xref:admin:spaces/conferences/registrations/users.adoc[User Registrations] +.. xref:admin:spaces/conferences/registrations/invites.adoc[Invites] +.. xref:admin:spaces/conferences/registrations/certificates.adoc[Certificate of Attendance] +. xref:admin:spaces/conferences/admins.adoc[Conference admins] +. xref:admin:spaces/conferences/moderations.adoc[Moderations] \ No newline at end of file diff --git a/docs/ca/modules/admin/pages/spaces/conferences/admins.adoc b/docs/ca/modules/admin/pages/spaces/conferences/admins.adoc new file mode 100644 index 0000000000..59313271ef --- /dev/null +++ b/docs/ca/modules/admin/pages/spaces/conferences/admins.adoc @@ -0,0 +1 @@ +include::partial$page_admins.adoc[] \ No newline at end of file diff --git a/docs/ca/modules/admin/pages/spaces/conferences/attachments.adoc b/docs/ca/modules/admin/pages/spaces/conferences/attachments.adoc new file mode 100644 index 0000000000..d36f3e32d1 --- /dev/null +++ b/docs/ca/modules/admin/pages/spaces/conferences/attachments.adoc @@ -0,0 +1,81 @@ += Attachments + +Attachments allow an administrator to upload static files to a conference. + +When a conference is launched, it is important to provide citizens with as much information as possible about them so +that they can participate with knowledge. That is why it is helpful to add files (Attachments) with the information that +is considered relevant. + +Optionally, these documents can be grouped in *Folders*. + +They can be found on the Conference "Media and links" section: + +image:spaces/conferences/attachments.png[Conferences attachments (backend)] + +image:spaces/conferences/media_links_frontend.png[Conferences attachments (frontend)] + +Read more about this in xref:admin:spaces/conferences/media_links.adoc[Media links]. + +== Create a new attachment + +image:spaces/attachments_admin.png[View the attachments of a conference in the admin interface] + +For creating a new phase of a conference: + +. Sign in as administrator +. Go to the conference section in the sidebar +. Click on the conference Edit action +. Click on the Attachments link in the sidebar +. Click on the "New attachment" button + +image:spaces/attachments_new_form.png[Create a new attachment form] + + +.Create attachment +|=== +|Field |Type |Description + +|Attachment or image name +|Required +|What is the title for this attachment. + +|Weight +|Optional +|Which order will it have in relation to the other attachments. Having a lower number means a higher priority. For instance, if you have two categories, "Attachment a" with weight "10" and "Attachment b" with weight "0", then "Attachment b" will be first when ordering. + +|Description +|Required +|A long description explaining what this file is about. + +|Folder +|Optional +|Which folder this attachment belongs to. + +|File +|Required +|Upload the file. Guidance for file: Has to be an image or a document. For images, use preferrably landscape images, the +service crops the image. For CSV files, the separator between columns must be a comma (","). Maximum file size: 10MB. Allowed +file extensions depends in your server configuration. +|=== + +== Create a new folder + +image:spaces/attachments_new_folder_form.png[Create a new folder for attachments form] + + +.Create folder +|=== +|Field |Type |Description + +|Name +|Required +|Name of the folder + +|Weight +|Optional +|Which order will it have in relation to the other folders. Having a lower number means a higher priority. For instance, if you have two folders, "Folder a" with weight "10" and "Folder b" with weight "0", then "Folder b" will be first when ordering. + +|Description +|Required +|A long description explaining what this folder is about. +|=== \ No newline at end of file diff --git a/docs/ca/modules/admin/pages/spaces/conferences/categories.adoc b/docs/ca/modules/admin/pages/spaces/conferences/categories.adoc new file mode 100644 index 0000000000..3ee4fc09cc --- /dev/null +++ b/docs/ca/modules/admin/pages/spaces/conferences/categories.adoc @@ -0,0 +1 @@ +include::partial$page_categories.adoc[] \ No newline at end of file diff --git a/docs/ca/modules/admin/pages/spaces/conferences/components.adoc b/docs/ca/modules/admin/pages/spaces/conferences/components.adoc new file mode 100644 index 0000000000..7a204dda0b --- /dev/null +++ b/docs/ca/modules/admin/pages/spaces/conferences/components.adoc @@ -0,0 +1 @@ +include::partial$page_components.adoc[] \ No newline at end of file diff --git a/docs/ca/modules/admin/pages/spaces/conferences/media_links.adoc b/docs/ca/modules/admin/pages/spaces/conferences/media_links.adoc new file mode 100644 index 0000000000..d39ad23e1d --- /dev/null +++ b/docs/ca/modules/admin/pages/spaces/conferences/media_links.adoc @@ -0,0 +1,45 @@ += Media links + +Conferences can have a section called "Media and links". It shows a list of media files and links that are associated to the conference. + +The media files are the files from the xref:admin:spaces/conferences/attachments.adoc[attachments] sections. +The media links are defined in a section in the admin panel of the conference. + +image:spaces/conferences/media_links_frontend.png[Conferences media links (frontend)] + +== Create a new media link + +image:spaces/conferences/media_links_backend.png[Conferences media links] + +For creating a new media link of a conference: + +. Sign in as administrator +. Go to the conferences section in the sidebar +. Click on the conference Edit action +. Click on the "Media links" link in the sidebar +. Click on the "New Media Link" button +. Fill the form + +image:spaces/conferences/new_media_link.png[Create a new conferences media link] + + +.New media link form +|=== +|Field |Type |Description + +|Title +|Required +|The title of the link + +|Link +|Required +|URL of the link + +|Date +|Required +|Published date of the link + +|Weight +|Optional +|Which order will it have in relation to the other links. Having a lower number means a higher priority. For instance, if you have two links, "Link a" with weight "10" and "Link b" with weight "0", then "Link b" will be first when ordering. +|=== \ No newline at end of file diff --git a/docs/ca/modules/admin/pages/spaces/conferences/moderations.adoc b/docs/ca/modules/admin/pages/spaces/conferences/moderations.adoc new file mode 100644 index 0000000000..12d6ac0858 --- /dev/null +++ b/docs/ca/modules/admin/pages/spaces/conferences/moderations.adoc @@ -0,0 +1 @@ +include::partial$page_moderations.adoc[] \ No newline at end of file diff --git a/docs/ca/modules/admin/pages/spaces/conferences/partners.adoc b/docs/ca/modules/admin/pages/spaces/conferences/partners.adoc new file mode 100644 index 0000000000..e9d5fd13d6 --- /dev/null +++ b/docs/ca/modules/admin/pages/spaces/conferences/partners.adoc @@ -0,0 +1,47 @@ += Partners + +The partners are the sponsors or supporters of a conference. They are listed on the Conference landing page. + +image:spaces/conferences/partners_frontend.png[Conferences partners (frontend)] + +== Create a new partner + +image:spaces/conferences/partners.png[Conferences partners] + +For creating a new partner of a conference: + +. Sign in as administrator +. Go to the conferences section in the sidebar +. Click on the conference Edit action +. Click on the Partners link in the sidebar +. Click on the "New partner" button +. Fill the form + +image:spaces/conferences/new_partner.png[Conferences partners form] + + +.New partner form +|=== +|Field |Type |Description + +|Name +|Required +|What is the name of this partner. + +|Partner type +|Required +|Choose one of these options: Main promotor or Collaborator + +|Weight +|Optional +|Which order will it have in relation to the other partners. Having a lower number means a higher priority. For instance, if you have two partners, "Partner a" with weight "10" and "Partner b" with weight "0", then "Partner b" will be first when ordering. + +|Link +| +| + +|Logo +|Required +|Guidance for image: Preferably a landscape image that does not have any text. The service crops the image. Maximum file size: 5MB +Allowed file extensions: jpg jpeg gif png bmp ico +|=== \ No newline at end of file diff --git a/docs/ca/modules/admin/pages/spaces/conferences/registrations.adoc b/docs/ca/modules/admin/pages/spaces/conferences/registrations.adoc new file mode 100644 index 0000000000..0aa2935425 --- /dev/null +++ b/docs/ca/modules/admin/pages/spaces/conferences/registrations.adoc @@ -0,0 +1,12 @@ += Registrations + +As an administrator of a conference you can manage the registrations for the conference from the platform. + +For doing so, you have these admin sections: + +. xref:admin:spaces/conferences/registrations/types.adoc[**Registrations Types**] allows you to define which ways of registering participants +will have. For instance if there are a number of prices depending if the attendees are students or workers. +. xref:admin:spaces/conferences/registrations/users.adoc[**User Registrations**] allows you to confirm the requests for attending the conference. +. xref:admin:spaces/conferences/registrations/invites.adoc[**Invites**] allows you to invite participants to the conference. +. xref:admin:spaces/conferences/registrations/certificates.adoc[**Certificates of Attendance**] allows you to configure and send certificates +of attendance in PDF format to people that has gone to the conference. \ No newline at end of file diff --git a/docs/ca/modules/admin/pages/spaces/conferences/registrations/certificates.adoc b/docs/ca/modules/admin/pages/spaces/conferences/registrations/certificates.adoc new file mode 100644 index 0000000000..2e526c32a2 --- /dev/null +++ b/docs/ca/modules/admin/pages/spaces/conferences/registrations/certificates.adoc @@ -0,0 +1,39 @@ += Certificates of Attendance + +Administrators can create Certificates of Attendance to participants. + +image:spaces/conferences/certificates_of_attendance.png[Conferences Certificate of Attendance (backend)] + + +.Certificate of Attendance form +|=== +|Field |Type |Description + +|Main logo +|Required +|Logo of the conference of the organization that makes the certificate of attendance. + +|Signature +|Required +|Image of the person that signs the certificate. + +|Sign date +|Required +|Date of the signature. Expected format: dd/mm/yyyy + +|Signature name +|Required +|Name of the person that signs the certificate. +|=== + +After the form is filled then there's a button to "Send certificates of attendance" to all the confirmed xref:admin:spaces/conferences/registrations/users.adoc[registrations] of the conference. + +image:spaces/conferences/certificates_of_attendance_button.png[Conferences Certificate of Attendance send button] + +Once it's sent it can't be resent. + +image:spaces/conferences/certificates_of_attendance_button_disabled.png[Conferences Certificate of Attendance send disabled button] + +The certificates of attendance are sent to the participants by email in PDF format. + +image:spaces/conferences/certificates_of_attendance_pdf.png[Conferences Certificate of Attendance (frontend)] \ No newline at end of file diff --git a/en/modules/admin/pages/spaces/conferences/registrations/invites.adoc b/docs/ca/modules/admin/pages/spaces/conferences/registrations/invites.adoc similarity index 97% rename from en/modules/admin/pages/spaces/conferences/registrations/invites.adoc rename to docs/ca/modules/admin/pages/spaces/conferences/registrations/invites.adoc index 18de0c306e..bd02c5da95 100644 --- a/en/modules/admin/pages/spaces/conferences/registrations/invites.adoc +++ b/docs/ca/modules/admin/pages/spaces/conferences/registrations/invites.adoc @@ -1,16 +1,17 @@ -# Invites += Invites Administrators can invite participants to join the conference. image:spaces/conferences/invites.png[Conferences user invites (backend)] -## Flow +== Flow . An administrator sends an invitation to join the conference to a non-existing or existing participant . The participant accepts the invitation image:spaces/conferences/invite_participant_form.png[Invite a participant form] + .Invite participant form |=== |Field |Type |Description @@ -34,5 +35,4 @@ image:spaces/conferences/invite_participant_form.png[Invite a participant form] |xref:admin:spaces/conferences/registrations/types.adoc[Registration type] |Required |What xref:admin:spaces/conferences/registrations/types.adoc[registration type] does this participant will have. - -|=== +|=== \ No newline at end of file diff --git a/docs/ca/modules/admin/pages/spaces/conferences/registrations/types.adoc b/docs/ca/modules/admin/pages/spaces/conferences/registrations/types.adoc new file mode 100644 index 0000000000..1625887826 --- /dev/null +++ b/docs/ca/modules/admin/pages/spaces/conferences/registrations/types.adoc @@ -0,0 +1,56 @@ += Registration types + +You can enable registrations in conferences, so it's easier to register to the whole conference, or by days, rather than +going meeting by meeting to enable registration for that particular event. + +After enabling registrations participants will have a button to register to the conference in the landing and the conference's header. + +image:spaces/conferences/registration_landing01.png[Registration button on landing page] + +image:spaces/conferences/registration_landing02.png[Registration button on landing page] + +If you want to enable registration you'll need to define and publish at least one registration type. + +image:spaces/conferences/registration_types_frontend_wo_user.png[Select registration type without a user account] + +== Create a new registration type + +For adding a new registration type, you need to: + +. Sign in as administrator +. Go to the conferences section in the sidebar +. Click on the conference Edit action +. Click on the "Registration types" link in the sidebar +. Click on the "New Registration type" button +. Fill the form +. Publish the registration type + +image:spaces/conferences/new_registration_type.png[Create a new registration type form] + +image:spaces/conferences/registration_types_backend.png[Manage registration types] + + +.Create a new registration type +|=== +|Field |Type |Description + +|Title +|Required +|What is the title of this registration type. + +|Weight +|Which order will it have in relation to the other types. Having a lower number means a higher priority. For instance, if you have two types, "Day 1" with weight "10" and "Day 2" with weight "0", then "Day 2" will be first when ordering. +|Description + +|Required +|Description for this registration type +|Price + +|Optional +|Define a price for this registration type. If you don't define a price, the price will be "Free". +|Select conference meetings +|=== + +If the participant is already logged in then she'll see her username and email in the registration page. + +image:spaces/conferences/registration_types_frontend_w_user.png[Select registration type with user account] \ No newline at end of file diff --git a/en/modules/admin/pages/spaces/conferences/registrations/users.adoc b/docs/ca/modules/admin/pages/spaces/conferences/registrations/users.adoc similarity index 93% rename from en/modules/admin/pages/spaces/conferences/registrations/users.adoc rename to docs/ca/modules/admin/pages/spaces/conferences/registrations/users.adoc index dfc1e486bc..33dc8d6b46 100644 --- a/en/modules/admin/pages/spaces/conferences/registrations/users.adoc +++ b/docs/ca/modules/admin/pages/spaces/conferences/registrations/users.adoc @@ -1,4 +1,4 @@ -# User registrations += User registrations After participants have registered, they will appear in this section. @@ -9,11 +9,11 @@ As an administrator, you can: * Export the registrations * Confirm a registration -## Export +== Export It's possible to export the registrations in multiple formats: CSV, JSON, and XLSX (Excel). -## Flow +== Flow . A participant registers to the conference . She receives a pending registration notification @@ -24,4 +24,4 @@ image:spaces/conferences/user_registration_pending_email.png[Email for pending u . The participant receives a confirmed registration notification image:spaces/conferences/user_registration_confirmed_notification.png[Notification for confirmed user registration] . She receives a confirmed registration email with an calendar file (.ICS). -image:spaces/conferences/user_registration_confirmed_email.png[Email for confirmed user registration] +image:spaces/conferences/user_registration_confirmed_email.png[Email for confirmed user registration] \ No newline at end of file diff --git a/docs/ca/modules/admin/pages/spaces/conferences/speakers.adoc b/docs/ca/modules/admin/pages/spaces/conferences/speakers.adoc new file mode 100644 index 0000000000..f62160a3e8 --- /dev/null +++ b/docs/ca/modules/admin/pages/spaces/conferences/speakers.adoc @@ -0,0 +1,68 @@ += Speakers + +The speakers are people that are going to talk at the conference. + +image:spaces/conferences/speakers_frontend.png[Conferences speakers (frontend)] + +== Create a new speaker + +image:spaces/conferences/speakers.png[Conferences speakers] + +For creating a new speaker of a conference: + +. Sign in as administrator +. Go to the conferences section in the sidebar +. Click on the conference Edit action +. Click on the Speakers link in the sidebar +. Click on the "New Conference Speaker" button +. Fill the form + +image:spaces/conferences/new_speaker.png[Conferences speakers] + + +.New conference speaker form +|=== +|Field |Type |Description + +|Participant type +|Required +|Wheter this speaker is a non-participant or existing participant. Does she already have an account created on the platform? + +|Full name +|Required if it's non-participant. +|Name of the speaker. + +|User or group +|Required if it's an existing participant. +|Type at least three characters to search. + +|Related meetings +|Optional +|Which meetings does this speaker attend and participates actively? + +|Position +|Required +|Metadata for showing extra information about the speaker. + +|Affiliation +|Required +|Metadata for showing extra information about the speaker. + +|Short Bio +|Optional +|Metadata for showing extra information about the speaker. + +|Twitter handle +|Optional +|Metadata for showing extra information about the speaker. + +|Personal URL +|Optional +|Metadata for showing extra information about the speaker. + +|Avatar +|Optional +|Metadata for showing extra information about the speaker. + +Default image +|=== \ No newline at end of file diff --git a/docs/ca/modules/admin/pages/spaces/consultations.adoc b/docs/ca/modules/admin/pages/spaces/consultations.adoc new file mode 100644 index 0000000000..452763a87f --- /dev/null +++ b/docs/ca/modules/admin/pages/spaces/consultations.adoc @@ -0,0 +1,3 @@ += Consultations + +include::partial$deprecated.adoc[] \ No newline at end of file diff --git a/en/modules/admin/pages/spaces/initiatives.adoc b/docs/ca/modules/admin/pages/spaces/initiatives.adoc similarity index 99% rename from en/modules/admin/pages/spaces/initiatives.adoc rename to docs/ca/modules/admin/pages/spaces/initiatives.adoc index 0c9b7eb3c7..7abb57a326 100644 --- a/en/modules/admin/pages/spaces/initiatives.adoc +++ b/docs/ca/modules/admin/pages/spaces/initiatives.adoc @@ -29,6 +29,7 @@ Some real examples from the city of Barcelona are: image:admin_initiative_type.png[New initiative type form] + .Admin new initiative type form: General information |=== |Field |Type |Description @@ -44,9 +45,9 @@ image:admin_initiative_type.png[New initiative type form] |Banner image |Required |An image for this initiative type. NOTE: At the moment this is not used. - |=== + .Admin new initiative type form: Options |=== |Field |Type |Description @@ -94,9 +95,9 @@ image:admin_initiative_type.png[New initiative type form] |Legal information about the collection of personal data |Depends on whether the option "Collect participant personal data on the signature" is checked |Privacy notice and terms of use for the participant personal data during the signature process. - |=== + .Admin new initiative type form: Authorization settings |=== |Field |Type |Description @@ -108,7 +109,6 @@ image:admin_initiative_type.png[New initiative type form] |Add SMS code validation step to the signature process | |During the signature process, will it ask for SMS validation? See xref:services:sms.adoc[configuration of SMS service]. - |=== === New initiative type scope form @@ -117,6 +117,7 @@ An initiative type can also have scopes associated. For Initiatives it needs at image:admin_initiative_type_scope.png[New initiative type form] + .Admin new initiative type scope form |=== |Field |Type |Description @@ -128,7 +129,6 @@ image:admin_initiative_type_scope.png[New initiative type form] |Signatures required |Required |Number of signatures the initiative need to have before the end period so it can be accepted. - |=== == 1. Create an initiative @@ -139,7 +139,6 @@ image:initiative_list.png[Initiatives list] For creating an initiative, a participant must click in the "New initiative" button. Then she'll have a wizard with multiple steps: - === 1.1 Choose the initiative type image:initiative_new_step1.png[Initiative creation: step 1] @@ -255,7 +254,6 @@ image:initiative_admin_list_actions.png[Initiative admin list actions] |image:action_print.png[Print icon] |Print |Allows to print. - |=== === Components @@ -293,7 +291,6 @@ image:initiative_admin_show_published_detail.png[Admin initiative show after it image:initiative_show_signed.png[Initiative show after it was signed] - == 5. Export signatures This action is done by **an administrator**. After the initiative has started to get signatures, there's an option for exporting a PDF of the signatures: @@ -339,9 +336,7 @@ For better understanding all the status, this is a summary: |The period for signature recollection has ended and there were enough signatures. |=== - [plantuml] -.... @startuml :Created; :Technical validation; @@ -364,12 +359,10 @@ else (yes) endif; endif @enduml -.... Finally, these are all the relevant settings in every moment in the initiatives life cicle: [plantuml] -.... @startuml (*) --> "Create a new initiative" if "Has only one type?" then @@ -412,5 +405,4 @@ partition Published { endIf } --> (*) -@enduml -.... +@enduml \ No newline at end of file diff --git a/docs/ca/modules/admin/pages/spaces/processes.adoc b/docs/ca/modules/admin/pages/spaces/processes.adoc new file mode 100644 index 0000000000..f833ec1522 --- /dev/null +++ b/docs/ca/modules/admin/pages/spaces/processes.adoc @@ -0,0 +1,242 @@ += Processes + +A participatory process is a sequence of participatory activities (e.g. first filling out a survey, then making proposals, +discussing them in face-to-face or virtual meetings, and finally prioritizing them) with the aim of defining and making a decision on a specific topic. + +Examples of participatory processes are: a process of electing committee members (where candidatures are first presented, +then debated and finally a candidacy is chosen), participatory budgets (where proposals are made, valued economically, +and voted on with the money available), a strategic planning process, the collaborative drafting of a regulation or norm, +the design of an urban space or the production of a public policy plan. + +A really important concept for making good use of Decidim is to understand the relationship between Phases and Components +in a participatory process in Decidim: + +image::process_steps_components.png[Relation between Steps and Components in a Process in Decidim] + +What this diagram is showing is that for a participatory process you can have 7 phases: + +. Configuration & Presentation +. Diagnostic +. Proposal Creation +. Proposal Selection +. Results +. Evaluation +. Monitoring + +Inside of every one of these Phases, there are some components (like Blog, Meetings, Survey, Debates, Proposals, Results). +Some of these Components allow some features depending on the Phase that we are. + +In this section, we'll explain how we can configure a Participatory Process in Decidim. + +== List + +To configure participatory processes on the Decidim platform, click on btn:[Processes] in the admin sidebar menu. A list +will appear with the existing processes if there are any: + +image::processes_list.png[Participatory processes list] + +You can filter by the ones that are: + +* Published / Unpublished +* Public / Private + +image::processes_list_filter.png[Participatory processes list filtered] + +You can also search by title and control how many elements are in the list. + +You have 4 possible actions in this list after a Participatory Process is created: + +1. Export: send by email the configuration for a given process. Can be imported in other Decidim installation. +1. Duplicate: to duplicate this process. +1. Configure: to edit the metadata and configuration for a process. +1. Preview: how it will look once published. + +== New process form + +image::processes_new_form.png[New participatory process form] + + +.New participatory process form: General information +|=== +|Field |Type |Description + +|Title +|Required +|Title of the participatory process. For instance, "Participatory Budgeting 2020". + +|Subtitle +|Required +|Subtitle. For instance, "Let's decide our priorities together" + +|URL slug +|Required +|URL slugs are used to generate the URLs that point to this process. Only accepts letters, numbers and dashes, and must +start with a letter. Example: if your domain is 'example.org' and your slug 'participatory-budget-2020' then your URL will +be https://example.org/processes/participatory-budget-2020 + +|Hashtag +|Optional +|Hashtag for Twitter + +|Short description +|Required +|A short explanation of what's your participatory process about. + +|Description +|Required +|A long explanation of what's your participatory process about. + +|Announcement +|Optional +|The text you enter here will be shown to the user right below the process information. +|=== + + +.New participatory process form: Duration +|=== +|Field |Type |Description + +|Start date +|Optional +|When this process start. You have a calendar widget to choose the day. Expected format: dd/mm/yyyy + +|End date +|Optional +|When this process start. You have a calendar widget to choose the day. Expected format: dd/mm/yyyy +|=== + + +.New participatory process form: Images +|=== +|Field |Type |Description + +|Home image +|Optional +|Image that will be used in presentation cards of this process. Guidance for file: Has to be an image or a document. +For images, use preferably landscape images, the service crops the image. Maximum file size: 10MB + +|Banner image +|Optional +|Image that will be used inside of the process. Guidance for file: Has to be an image or a document. +For images, use preferably landscape images, the service crops the image. Maximum file size: 10MB +|=== + + +.New participatory process form: Metadata +|=== +|Field |Type |Description + +|Promoter group +|Optional +|Information that's displayed in the process metadata sidebar. + +|Organization area +|Optional +|Information that's displayed in the process metadata sidebar. + +|Scope metadata +|Optional +|Information that's displayed in the process metadata sidebar. + +|Who participates +|Optional +|Information that's displayed in the process metadata sidebar. + +|What is decided +|Optional +|Information that's displayed in the process metadata sidebar. + +|How is it decided +|Optional +|Information that's displayed in the process metadata sidebar. +|=== + +image::process_frontend_metadata.png[Process frontend metadata] + +image::process_backend_metadata.png[Process backend metadata] + + +.New participatory process form: Filters +|=== +|Field |Type |Description + +|Scopes enabled +|Optional +|Check if you want to have Scopes filtering in this process. + +|Scope +|Optional +|Which xref:admin:scopes.adoc[Scope] does this process belongs to. + +|Scope filter depth +|Optional +|Restrict the scope filter depth; The filter will show from general to the selected scope type. This is only relevant if +you have complex relations in Scopes children (like a Russian Doll). For instance if you have a Grandmother -> Mother -> +Child, this setting allows you to choose the Mother, so the participants can only choose the Child. This would be the +case for instance if you have Provinces -> Cities -> Districts, and the process is about a particular City. + +|Area +|Optional +|Which xref:admin:areas.adoc[Area] does this process belongs to. +|=== + + +.New participatory process form: Visibility +|=== +|Field |Type |Description + +|Processes group +|Optional +|Enables to make groups of multiple participatory processes. Ideally for processes that are related between them, for +instance multiple squares in a City or multiple documents using the same participatory rules. + +|Private space +|Optional +|Check if this process should only be accessible by xref:admin:spaces/processes/private_participants.adoc[Private Participants] + +|Promoted +|Optional +|Check if you want the process to have more visibility in the Process public list. It'll also be visible in the +Participatory Process Content Block in the xref:admin:homepage.adoc[Homepage] configuration. This is accessible in the +btn:[Edit] action in a Process. +|=== + + +.New participatory process form: Filters +|=== +|Field |Type |Description + +|Related processes +|Optional +|Select other participatory processes that are related to this one. +|=== + + +.New participatory process form: Filters +|=== +|Field |Type |Description + +|Show statistics +|Optional +|Check if you want to show the Statistics section. + +|Show metrics +|Optional +|Check if you want to show the Metrics section. +|=== + +After you've initially created your process you have a submenu where you need to keep configuring more information +about your participatory process. + +image::process_submenu.png[Process submenu in admin] + +Here you can keep configuring your process: + +. Info: the same form that we explained in this page. +. xref:admin:spaces/processes/phases.adoc[Phases] +. xref:admin:spaces/processes/components.adoc[Components] +. xref:admin:spaces/processes/categories.adoc[Categories] +. xref:admin:spaces/processes/attachments.adoc[Attachments] +. xref:admin:spaces/processes/admins.adoc[Process admins] +. xref:admin:spaces/processes/private_participants.adoc[Private participants] +. xref:admin:spaces/processes/moderations.adoc[Moderations] \ No newline at end of file diff --git a/docs/ca/modules/admin/pages/spaces/processes/admins.adoc b/docs/ca/modules/admin/pages/spaces/processes/admins.adoc new file mode 100644 index 0000000000..59313271ef --- /dev/null +++ b/docs/ca/modules/admin/pages/spaces/processes/admins.adoc @@ -0,0 +1 @@ +include::partial$page_admins.adoc[] \ No newline at end of file diff --git a/docs/ca/modules/admin/pages/spaces/processes/attachments.adoc b/docs/ca/modules/admin/pages/spaces/processes/attachments.adoc new file mode 100644 index 0000000000..493f7dc8c8 --- /dev/null +++ b/docs/ca/modules/admin/pages/spaces/processes/attachments.adoc @@ -0,0 +1 @@ +include::partial$page_attachments.adoc[] \ No newline at end of file diff --git a/docs/ca/modules/admin/pages/spaces/processes/categories.adoc b/docs/ca/modules/admin/pages/spaces/processes/categories.adoc new file mode 100644 index 0000000000..3ee4fc09cc --- /dev/null +++ b/docs/ca/modules/admin/pages/spaces/processes/categories.adoc @@ -0,0 +1 @@ +include::partial$page_categories.adoc[] \ No newline at end of file diff --git a/docs/ca/modules/admin/pages/spaces/processes/components.adoc b/docs/ca/modules/admin/pages/spaces/processes/components.adoc new file mode 100644 index 0000000000..7a204dda0b --- /dev/null +++ b/docs/ca/modules/admin/pages/spaces/processes/components.adoc @@ -0,0 +1 @@ +include::partial$page_components.adoc[] \ No newline at end of file diff --git a/en/modules/admin/pages/spaces/processes/groups.adoc b/docs/ca/modules/admin/pages/spaces/processes/groups.adoc similarity index 99% rename from en/modules/admin/pages/spaces/processes/groups.adoc rename to docs/ca/modules/admin/pages/spaces/processes/groups.adoc index 0eefbf21ca..315bedeaa7 100644 --- a/en/modules/admin/pages/spaces/processes/groups.adoc +++ b/docs/ca/modules/admin/pages/spaces/processes/groups.adoc @@ -22,6 +22,7 @@ image::processes_group_list.png[Participatory process groups list] image::processes_group_new_form.png[New participatory process group form] + .New participatory process group form: General information |=== |Field |Type |Description @@ -45,9 +46,9 @@ need to use the *ctrl* function. |Image that will be used in presentation cards of this process group. Guidance for image: Preferably a landscape image that does not have any text. The service crops the image. Maximum file size: 10MB. Allowed file extensions: jpeg jpg png - |=== + .New participatory process group form: Metadata |=== |Field |Type |Description @@ -78,9 +79,9 @@ Website |How is it decided |Optional |Information that's displayed in the process metadata content block. - |=== + .New participatory process group form: Visibility |=== |Field |Type |Description @@ -89,7 +90,6 @@ Website |Optional |Check if you want the process to have more visibility in the Process public list. It'll also be visible in the ParticpipatoryProcess Content Block in the xref:admin:homepage.adoc[Homepage] configuration. This is accessible in the btn:[Edit] action in a Process. - |=== == Landing page @@ -110,4 +110,4 @@ image::processes_group_landing.png[Participatory process group landing page] * Participatory processes * First HTML block * Second HTML block -* Third HTML block +* Third HTML block \ No newline at end of file diff --git a/docs/ca/modules/admin/pages/spaces/processes/moderations.adoc b/docs/ca/modules/admin/pages/spaces/processes/moderations.adoc new file mode 100644 index 0000000000..12d6ac0858 --- /dev/null +++ b/docs/ca/modules/admin/pages/spaces/processes/moderations.adoc @@ -0,0 +1 @@ +include::partial$page_moderations.adoc[] \ No newline at end of file diff --git a/docs/ca/modules/admin/pages/spaces/processes/phases.adoc b/docs/ca/modules/admin/pages/spaces/processes/phases.adoc new file mode 100644 index 0000000000..c9c58c5173 --- /dev/null +++ b/docs/ca/modules/admin/pages/spaces/processes/phases.adoc @@ -0,0 +1,89 @@ += Phases + +A participatory process is a sequence of phases ordered in time. Depending on which phase of the process timeline you +are, then you can enable or disable some features. + +Ideally, the Phases of a Participatory Process are always the same and are not changed, so participants can know what are +the rules and timeframe and can organize their lives to know when it'd be best for them to participate in this process. + +As a guideline, the standard structure of a participatory process may be as follows: + +. Presentation +. Diagnosis +. Proposal creation and debate +. Proposals prioritization +. Proposals evaluation +. Monitoring + +Participants can find the link to different phases of a participatory process in the header of the participatory process, +in the link "Process phases". Here they can see the full description and explanation of the phases. The active phase +will be highlighted. + +image:process_phases_header.png[Header with processes phases link] + +image:process_phases.png[Process phases explanation] + +== Create a new phase + +image:process_phases_list.png[Phases of a participatory process] + +For creating a new phase of a participatory process: + +. Sign in as administrator +. Go to the participatory process section in the sidebar +. Click on the participatory process Edit action +. Click on the Phases link in the sidebar +. Click on the "New phase" button + +image:process_phases_new_form.png[Create a new participatory process phase form] + + +.Create meeting +|=== +|Field |Type |Description + +|Title +|Required +|What is the title for this phase. + +|Description +| +|A long description explaining what's this phase for. + +|Start date +| +|Which day this phase will start. Expected format: dd/mm/yyyy + +|End date +| +|Which day this phase will end. Expected format: dd/mm/yyyy + +|Call to Action path +| +|Where will the button link to. For instance, it could point to the new proposal creation form. Use partial paths, not full +URLs here. Accepts letters, numbers, dashes, and, slashes, and must start with a letter. If not set, the button will not be shown. + +|Call to Action text +| +|What will the button say. For instance, it could be "Create a proposal". If not set, the button will not be shown. +|=== + +== Actions + +After a phase was created you have these actions: + +|=== +|Icon |Name |Definition + +|image:action_activate.png[Activate icon] +|Activate +|To make this phase the active one. + +|image:action_edit.png[Edit icon] +|Edit +|To edit this phase. + +|image:action_delete.png[Delete icon] +|Delete +|To delete this phase. +|=== \ No newline at end of file diff --git a/docs/ca/modules/admin/pages/spaces/processes/private_participants.adoc b/docs/ca/modules/admin/pages/spaces/processes/private_participants.adoc new file mode 100644 index 0000000000..16c939dfa3 --- /dev/null +++ b/docs/ca/modules/admin/pages/spaces/processes/private_participants.adoc @@ -0,0 +1 @@ +include::partial$page_private_participants.adoc[] \ No newline at end of file diff --git a/docs/ca/modules/admin/pages/spaces/votings.adoc b/docs/ca/modules/admin/pages/spaces/votings.adoc new file mode 100644 index 0000000000..4ee78af415 --- /dev/null +++ b/docs/ca/modules/admin/pages/spaces/votings.adoc @@ -0,0 +1,3 @@ += Votings + +include::admin:partial$development.adoc[] \ No newline at end of file diff --git a/en/modules/admin/pages/system.adoc b/docs/ca/modules/admin/pages/system.adoc similarity index 84% rename from en/modules/admin/pages/system.adoc rename to docs/ca/modules/admin/pages/system.adoc index a8ba1b9520..da7be84a79 100644 --- a/en/modules/admin/pages/system.adoc +++ b/docs/ca/modules/admin/pages/system.adoc @@ -1,4 +1,4 @@ -= System += System Every Decidim is multi-tenant by default. That means that you can have multiple organizations inside of your same installation. This is being used for instance for the Barcelona and Girona Provincials Governments, for offering Decidim installations to many small cities, or by the City of Barcelona, for giving service to lots of organizations (NGOs, cooperatives, etc). @@ -10,35 +10,18 @@ image::system-log_in.png[system panel log in] == 1. Create an admin account -For accessing in this dashboard, you'll need to create a system admin account with the Rails console, as the instructions that you have in your `README.md` file: +For logging in to this dashboard, you'll need to create a system admin account from your terminal: -Open a console: [source, console] .... -bin/rails console +bin/rails decidim_system:create_admin .... -Then create the systems' admin: - -[source, ruby] -.... -user = Decidim::System::Admin.new(email: , password: , password_confirmation: ) -user.save! -.... - -So for example, if your email is `system@decidim.org` and your password `decidim123456` that'd be: - -[source, ruby] -.... -user = Decidim::System::Admin.new(email: 'system@decidim.org', password: 'decidim123456', password_confirmation: 'decidim123456') -user.save! -.... - -IMPORTANT: Please don't use this password, is really insecure! +You'll be asked for an email and a password. For security, the password will not get displayed back at you and you'll need to confirm it. == 2. Access the Dashboard -After you've logged in, you'll see an empty dashboard: +With the email and password that you've added in the past step, you'll be able to log in. After you've logged in, you'll see an empty dashboard: image::system-dashboard.png[system empty dashboard] @@ -48,6 +31,7 @@ Inside of the system panel, you need to create your Organization through the for TIP: Please mind that some of these fields can't change through the System Form, as changing them could potentially leave your database in a broken state. You can change it through the console, but you'll be on your own. + .System New Organization form |=== |Field |Type |Description @@ -60,7 +44,6 @@ TIP: Please mind that some of these fields can't change through the System Form, |Required |The reference prefix is used to uniquely identify resources across all organizations. It's for identifying different resources inside of Decidim. For instance, "BCN". You can change how it's created this reference through xref:configure:initializer.adoc[Decidim's initializer] (see **Custom resource reference**). - |Host |Required |Fully qualified domain name. For instance, "example.org" or "decidim.barcelona". @@ -120,5 +103,4 @@ In the case where you have an external provider configured (like the `Omniauth s Finally, you can also Edit an organization, although some fields can not be changed as some contents in the database depends on them. -For accessing your newly created Organization, you can do it going to the domain or subdomain that you've configured in `Host`. - +For accessing your newly created Organization, you can do it going to the domain or subdomain that you've configured in `Host`. \ No newline at end of file diff --git a/en/modules/admin/partials/components_list.adoc b/docs/ca/modules/admin/partials/components_list.adoc similarity index 98% rename from en/modules/admin/partials/components_list.adoc rename to docs/ca/modules/admin/partials/components_list.adoc index 521e07edb6..f410a9f6b6 100644 --- a/en/modules/admin/partials/components_list.adoc +++ b/docs/ca/modules/admin/partials/components_list.adoc @@ -1,4 +1,3 @@ - The platform currently have the following official components: * xref:admin:components/accountability.adoc[*Accountability*]: allows to keep track of the results execution of a space. @@ -16,4 +15,4 @@ external system as xref:admin:spaces/votings.adoc[Votings] space. For instance the proposals could be candidates who form part of a group (such as a committee). * xref:admin:components/surveys.adoc[*Survey*]: for conducting surveys with different kinds of questions. -In the cases where your needs are not covered by one of the above components, you can create your own component through a xref:develop:modules.adoc[Module]. +In the cases where your needs are not covered by one of the above components, you can create your own component through a xref:develop:modules.adoc[Module]. \ No newline at end of file diff --git a/en/modules/admin/partials/deprecated.adoc b/docs/ca/modules/admin/partials/deprecated.adoc similarity index 100% rename from en/modules/admin/partials/deprecated.adoc rename to docs/ca/modules/admin/partials/deprecated.adoc diff --git a/docs/ca/modules/admin/partials/development.adoc b/docs/ca/modules/admin/partials/development.adoc new file mode 100644 index 0000000000..1309f6aa16 --- /dev/null +++ b/docs/ca/modules/admin/partials/development.adoc @@ -0,0 +1,4 @@ +[CAUTION] +==== +This feature is in active development. It is not ready for production use. +==== \ No newline at end of file diff --git a/en/modules/admin/partials/legacy.adoc b/docs/ca/modules/admin/partials/legacy.adoc similarity index 100% rename from en/modules/admin/partials/legacy.adoc rename to docs/ca/modules/admin/partials/legacy.adoc diff --git a/en/modules/admin/partials/page_admins.adoc b/docs/ca/modules/admin/partials/page_admins.adoc similarity index 97% rename from en/modules/admin/partials/page_admins.adoc rename to docs/ca/modules/admin/partials/page_admins.adoc index ff19a4d5b4..e4527970ba 100644 --- a/en/modules/admin/partials/page_admins.adoc +++ b/docs/ca/modules/admin/partials/page_admins.adoc @@ -17,6 +17,7 @@ that you're, for instance for participatory processes it'd be *Process admins* a image:spaces/admins_form.png[New space admin form] + .New space admin form |=== |Field |Type |Description @@ -63,4 +64,4 @@ A space valuator can review the proposals of the space. She can: * change the status of the proposals, by accepting or rejecting them * add a monetary value to the proposals, so they can be voted with the budget component. -image:spaces/admins_role_valuator.png[Process valuators view] +image:spaces/admins_role_valuator.png[Process valuators view] \ No newline at end of file diff --git a/en/modules/admin/partials/page_attachments.adoc b/docs/ca/modules/admin/partials/page_attachments.adoc similarity index 99% rename from en/modules/admin/partials/page_attachments.adoc rename to docs/ca/modules/admin/partials/page_attachments.adoc index f152f8fe8e..0b7fab6042 100644 --- a/en/modules/admin/partials/page_attachments.adoc +++ b/docs/ca/modules/admin/partials/page_attachments.adoc @@ -26,6 +26,7 @@ For creating a new attachment of a space: image:spaces/attachments_new_form.png[Create a new attachment form] + .Create attachment |=== |Field |Type |Description @@ -57,6 +58,7 @@ file extensions depends in your server configuration. image:spaces/attachments_new_folder_form.png[Create a new folder for attachments form] + .Create folder |=== |Field |Type |Description @@ -72,4 +74,4 @@ image:spaces/attachments_new_folder_form.png[Create a new folder for attachments |Description |Required |A long description explaining what this folder is about. -|=== +|=== \ No newline at end of file diff --git a/en/modules/admin/partials/page_categories.adoc b/docs/ca/modules/admin/partials/page_categories.adoc similarity index 96% rename from en/modules/admin/partials/page_categories.adoc rename to docs/ca/modules/admin/partials/page_categories.adoc index 84f556186b..8314cf9ab6 100644 --- a/en/modules/admin/partials/page_categories.adoc +++ b/docs/ca/modules/admin/partials/page_categories.adoc @@ -1,6 +1,5 @@ = Categories - Categories (and subcategories) are used for classifying resources inside of a space. An administrator can define them, can be assigned to when creating resources, and then participants can filter the @@ -18,7 +17,7 @@ image:spaces/categories_form.png[Select a category when creating a proposal] NOTE: Once a category is in use it cannot be removed, as there are resources that are using it. -Decidim has other ways to classify resources, for instance xref:admin:scopes.adoc[Scopes] and xref:admin:hashtags.adoc[Hashtags]. +Decidim has other ways to classify resources, for instance xref:admin:scopes.adoc[Scopes] and xref:admin:features/hashtags.adoc[Hashtags]. The main difference is that Categories can be defined in a given space, Scopes are global for all the platform, and Hashtags are defined by the participants. @@ -34,6 +33,7 @@ Then click in "Add category" and fill the form. image:spaces/categories_new_form.png[Create a new category form] + .Create category |=== |Field |Type |Description @@ -53,5 +53,4 @@ image:spaces/categories_new_form.png[Create a new category form] |Parent |Optional |What is the parent category. -|=== - +|=== \ No newline at end of file diff --git a/en/modules/admin/partials/page_components.adoc b/docs/ca/modules/admin/partials/page_components.adoc similarity index 99% rename from en/modules/admin/partials/page_components.adoc rename to docs/ca/modules/admin/partials/page_components.adoc index 79243f09e2..5544cc7a1e 100644 --- a/en/modules/admin/partials/page_components.adoc +++ b/docs/ca/modules/admin/partials/page_components.adoc @@ -49,4 +49,4 @@ to give supports. |Delete |To delete this component. If there are contents most of the components will not let you delete them so it doesn't break relations with other resources. In those cases it's recommended to just unpublish the component. -|=== +|=== \ No newline at end of file diff --git a/en/modules/admin/partials/page_moderations.adoc b/docs/ca/modules/admin/partials/page_moderations.adoc similarity index 99% rename from en/modules/admin/partials/page_moderations.adoc rename to docs/ca/modules/admin/partials/page_moderations.adoc index c89ad5e71b..aeed3aac33 100644 --- a/en/modules/admin/partials/page_moderations.adoc +++ b/docs/ca/modules/admin/partials/page_moderations.adoc @@ -6,4 +6,4 @@ The main difference is that if you want so you can invite Moderators of this spe space and they will only have access to the reports made for contents of this space. -Moderators are a kind of space admins. See it for instance for xref:spaces/processes/admins.adoc[participatory processes admins]. +Moderators are a kind of space admins. See it for instance for xref:spaces/processes/admins.adoc[participatory processes admins]. \ No newline at end of file diff --git a/en/modules/admin/partials/page_private_participants.adoc b/docs/ca/modules/admin/partials/page_private_participants.adoc similarity index 98% rename from en/modules/admin/partials/page_private_participants.adoc rename to docs/ca/modules/admin/partials/page_private_participants.adoc index 265233da9c..90580396be 100644 --- a/en/modules/admin/partials/page_private_participants.adoc +++ b/docs/ca/modules/admin/partials/page_private_participants.adoc @@ -18,6 +18,7 @@ For inviting private participants of a space: image:spaces/private_participants_new_form.png[New private participant form] + .New participatory space private user form |=== |Field |Type |Description @@ -29,7 +30,6 @@ image:spaces/private_participants_new_form.png[New private participant form] |Email |Required |What is the email of the new participant. - |=== == Import via CSV @@ -61,7 +61,6 @@ image:spaces/private_participants_actions.png[Private participants actions] |image:action_delete.png[Delete invitation] |Delete invitation |Revoke the invitation sent to the user - |=== == Invitation @@ -73,4 +72,4 @@ image:spaces/private_participants_email_invite.png[Email invitation of a private After clicking in this email, she'll have to fill a form for setting her password, accepting the Terms of Service and giving her consent if she wants to receive newsletters. -image:spaces/private_participants_user_registration_form.png[User registration form of a private participant] +image:spaces/private_participants_user_registration_form.png[User registration form of a private participant] \ No newline at end of file diff --git a/docs/ca/modules/admin/partials/under-construction.adoc b/docs/ca/modules/admin/partials/under-construction.adoc new file mode 100644 index 0000000000..8af7720c26 --- /dev/null +++ b/docs/ca/modules/admin/partials/under-construction.adoc @@ -0,0 +1,4 @@ +[NOTE] +==== +This section hasn't been written yet. You can collaborate to improving the Documentation, please put in touch with us at hola [at] decidim [dot] org +==== \ No newline at end of file diff --git a/docs/ca/modules/contribute/pages/documentation.adoc b/docs/ca/modules/contribute/pages/documentation.adoc new file mode 100644 index 0000000000..ba8b6938b5 --- /dev/null +++ b/docs/ca/modules/contribute/pages/documentation.adoc @@ -0,0 +1,19 @@ += Documentation + +To contribute to the documentation (for instance, this same page that you're reading), you can do it through two ways: editing on GitHub directly or editing locally. + +== Edit on GitHub + +This is the recomended way if you just want to make a quick fix (for instance, a typo or some clarification on a single page). For doing this you'll need to click in the "Edit this page" link in the top of every page. + +image::documentation-edit.png[Edit this page link] + +It'll open the page for editing in GitHub interface and after you've finished it'll guide you to make a Pull Request so maintainers can review your contribution. + +== Edit locally + +If you want to propose lots of changes in the documentation, or if you want to review your changes locally before sending them because you want to review things like formatting, you can install the environment for having the documentation site locally. + +Then you'll need to fork the repository, make a branch and propose your changes as a Pull Request so maintainers can review it. As you see this can be a hassle if you want to make small changes, so the prefered way would be to do it initially with the "Edit this page" link mehod. + +Read the full instructions on how to install this documentation website locally in the https://github.com/decidim/documentation/[Decidim Documentation GitHub repository]. \ No newline at end of file diff --git a/en/modules/ROOT/pages/governance.adoc b/docs/ca/modules/contribute/pages/governance.adoc similarity index 80% rename from en/modules/ROOT/pages/governance.adoc rename to docs/ca/modules/contribute/pages/governance.adoc index c82ecd839f..c1617e40e9 100644 --- a/en/modules/ROOT/pages/governance.adoc +++ b/docs/ca/modules/contribute/pages/governance.adoc @@ -9,7 +9,7 @@ If you want to add a new feature or a change on the codebase, the process is: . Suggest your change in https://meta.decidim.barcelona/processes/roadmap[Metadecidim] . Wait until Product Team reviews and accept the feature, as it's important to be consistent with the rest of the software, comply with the Social Contract, etc. . Then you can make the Pull Request. -. The PR will get reviewed by: +. The PR will get reviewed by: .. Product Team: will review the functionality .. Mantainers: will review the code quality @@ -17,7 +17,7 @@ image::workflow-features.png[new feature workflow process] Some things that you need to take in account about this process: -* If you make the PR without Product Team approval then you could get rejected (after investing lots of time on developing). +* If you make the PR without Product Team approval then you could get rejected (after investing lots of time on developing). * Proposals can receive endorsements, although these are not decisive for a proposal to be included on the roadmap. The endorsements serve as indicators of the interest of the proposal or the need it covers. The comments to the proposals are also enabled, to collectively elaborate the initial idea and bring it to a productive result. * Every Thursday the Product team reviews all new proposals that have been published the previous week * If no funding is available it is included in the backlog of the corresponding component or module. @@ -30,7 +30,7 @@ Since our first version in 2017 we've detected that it's necessary for the susta Making this kind of open source software from the public institutions and through public contracting law is really difficult and one other issue that we want to tackle with this new organization is about having resources for contracting in-house developers. -With all this on mind, we started with the https://meta.decidim.org/processes/decidim-gov[Metadecidim Governance participatory process] starting in November 2017: +With all this on mind, we started with the https://meta.decidim.org/processes/decidim-gov[Metadecidim Governance participatory process] starting in November 2017: **** A process open to the entire Community regarding the decision-making and representative bodies that we must equip ourselves with in order to build an autonomous, transparent and democratic organisation for the Decidim Project. @@ -40,4 +40,6 @@ The objective is to define an organizational and representation system (internal The Decidim project needs a system of its own governance that allows it to enjoy sufficient autonomy to continue growing in a sustainable manner, which is why it has to be provided with decision-making and conflict resolution bodies. **** -After this, on February 2019 the Decidim Association was created and from that date is signing agreements with the city of Barcelona and other public institutions to get funding and in-house developers. You can read more about the https://meta.decidim.org/assemblies/general-assembly-association[General Assembly of the Decidim Association]. +As a result of this participatory process, on February 2019 the Decidim Free Software Association (_Associació de Software Lliure Decidim_ in catalan) was created. You can read more about the https://meta.decidim.org/assemblies/general-assembly-association[General Assembly of the Decidim Association]. + +On 2021, the Decidim Association https://decidim.org/blog/2021-02-09-the-government-of-catalonia-barcelona-city-council-and-the-free-software-association-decidim-sign-a-collaboration-agreement-to-promote-democratic-participation-with-free-and-open-technologies/[has signed a collaboration agreement with the Government of Catalonia and Barcelona City Council to promote the development of the platform]. \ No newline at end of file diff --git a/docs/ca/modules/contribute/pages/index.adoc b/docs/ca/modules/contribute/pages/index.adoc new file mode 100644 index 0000000000..d16f3f107a --- /dev/null +++ b/docs/ca/modules/contribute/pages/index.adoc @@ -0,0 +1,9 @@ += Contribute + +You don't need to know how to code to contribute to Decidim, just having available time and attitude. + +Learn more about https://github.com/decidim/decidim/blob/develop/CONTRIBUTING.adoc[How to contribute to Decidim] in GitHub. + +* xref:contribute:governance.adoc[Governance] +* xref:contribute:translations.adoc[Translations] +* xref:contribute:documentation.adoc[Documentation] \ No newline at end of file diff --git a/docs/ca/modules/contribute/pages/translations.adoc b/docs/ca/modules/contribute/pages/translations.adoc new file mode 100644 index 0000000000..a06acc9fb4 --- /dev/null +++ b/docs/ca/modules/contribute/pages/translations.adoc @@ -0,0 +1,55 @@ += Translations + +For translating Decidim we use a web platform called Crowdin, accesible in https://translate.decidim.org/ + +At the moment is translated in more than 18 languages: Catalan, Czech, Dutch, Finnish, French, German, Greek, Hungarian, +Italian, Japanese, Latvian, Norwegian, Polish, Portuguese, Romanian, Slovak, Spanish and Swedish. + +As Decidim is a living and in constant development process is necessary to maintain, improve and specially update the translations when there's a new release. For doing so: + +== Existing language + +You can ask for permission in the language of your choosing, for instance for Esperanto: + +image::translation-join-01.png[Join to Decidim Translations] + +image::translation-join-02.png[Message in Join Decidim Translations] + +== New language + +If your language isn't created yet, then we need to do it as it's necessary to make some adjustments. You need to contact us by the https://decidim.org/contact[contact form]. + +== How it works + +If you're curios, in the technical level we have a bot (the great decidim-bot) that periodically makes a PR to the relevant branches (last releases and develop). + +image::translation-bot.png[Decidim Bot in GitHub] + +If you want to try a new translation before it gets released, then you can do so by pointing to the xref:install:update.adoc#_from_git_repositories[relevant branch], for instance `chore/l10n/develop`. + +=== Checking locales + +You can make sure new translations are complete for all languages in your application with: + +[source,console] +---- +bin/rails decidim:check_locales +---- + +By default this will check against develop branch. If you're pointing to other branch in your Gemfile, then you can use the TARGET_BRANCH environment variable: + +[source,console] +---- +TARGET_BRANCH=release/0.22-stable bin/rails decidim:check_locales +---- + +Be aware that this task might not be able to detect everything, so make sure you also manually check your application before upgrading. + +If you have 100% in your Crowdin language then you can be pretty sure that everything is translated. + +== Rules + +* All the translations always start from English. If you want to propose changes to the English language then you need to do it in the Ruby on Rails translations files directly (like `decidim-core/config/locales/en.yml`) +* For every language (except English), you can't do changes in the Ruby on Rails translations files directly (for instance `decidim-core/config/locales/es.yml`) as these translations could get invalidated by decidim-bot in the future. See "How it works" section. +* We try to speak of Participants instead of Users when it's possible +* On Spanish and Catalan we follow https://en.wikipedia.org/wiki/Gender_neutrality_in_Spanish[Gender Neutrality] \ No newline at end of file diff --git a/docs/ca/modules/features/pages/components.adoc b/docs/ca/modules/features/pages/components.adoc new file mode 100644 index 0000000000..2e847c7acf --- /dev/null +++ b/docs/ca/modules/features/pages/components.adoc @@ -0,0 +1,183 @@ += Components + +:page-partial: + +*Components* are participatory mechanisms that allow interactions among the platform Participants within each of the Participatory Spaces. + +== Proposals + +*Proposals* are Decidim's most important component. They can be defined as the minimum decision unit. + +Proposals can be made by any of the following *types of creators*: + +* by the *official organisation* managing the platform +* by registered *individual participants* +* by a *group* of registered participants +* from a *meeting* as a result of a discussion or collective deliberation + +Once a proposal has been published, it can be *moderated*, *amended* or *withdrawn* by its author(s). + +Proposals can be *accepted*, *rejected* or kept in an *evaluating* state. Proposals can also be imported to a new phase, so they can be re-written or elaborated in different stages. + +Other features associated with proposals include: + +* *Proposal creation wizard*: While a proposal is being created, the participant is accompanied through the process, which is divided into different steps, with contextual help and previews before the proposal is published. +* *Modification and withdrawal of proposals*: a proposal’s author can modify and/or withdraw it before the support stage opens. +* *Version control*: this makes it possible to keep a record of all the changes made to a proposal, as well as code-generation to verify the proposal’s integrity. +* *Detecting similarities*: This allows anyone making a new proposal to find similar ones previously made on the platform, thereby avoiding duplications. +* *Connections between proposals*: proposals made can be connected to one another using links in the comments section, showing related proposals as cards and giving notifications on the existence of a new connection. +* *Endorsement of proposals*: participants and collectives can endorse proposals and such public endorsement will be shown within the proposal. Followers of the endorsers will be notified that the followed endorsed the proposal. +* *Amendments*: any participant can edit a proposal’s text and a sub-proposal will be created in Amendment Mode (as Pull Request in Github). This sub-proposal can gather endorsements and supports. Besides, the proposal’s author can accept or reject the amendment (or sub-proposal). Where a sub-proposal is rejected, its author can convert it into an official proposal. +* *Collaborative draft for proposals*: Decidim permits collaboration and co-creation over proposals. It incorporates the following features: +** Creating rough drafts with numerous authors. +** Listing of collaborative drafts +** Comments in drafts +** Asking for help from and accepting the help of other collaborators + +== Endorsements + +include::admin:partial$development.adoc[] + +Participants can endorse proposals. Such endorsements can be interpreted as votes, signatures or any other format that demonstrates a positive agreement in accordance with the political will itself. +Participants can issue a single endorsement for each proposal they wish. The number of endorsements can be limited for each participant. +There is no limit to the number of proposals that can be endorsed. + +If the endorsement is a vote, it is possible to configure from the administration panel the *display settings for the voting results*, either during or solely after the voting period. + +There is a *special form used to vote for participatory budgets* which allows participants to vote by "spending" an amount equivalent to the budget in question among the proposed projects. The number of votes is limited here by the selected projects’ accumulated spending amount. + +== Results + +The *results* component is used to turn proposals into results and give official responses to them. +It is possible to merge various proposals into a single result or to create different results related to the same original proposal. + +Results gather information about the original proposal(s), like the meetings where they were created, discussed and debated and the endorsements received. + +== Debates + +Discussions and debates can be opened on questions and specific issues established by administrators or participants. + +== Surveys + +The *surveys* component can be used to design and publish surveys and to display and download their results. + +* *Survey configuration tool*: allows administrators to create questions and answers (open, test types, multiple selection etc.) and launch the survey, as well as download the responses in CSV format. +* *Survey interface for participants*: allows participants to respond to survey questions. + +== Sortitions + +The *sortition* component allows to select a number of proposals (e.g. candidates for a jury) with random, yet reproducible, procedures that guarantees non-biased and uniform distributions. + +== Informative pages + +The *pages* component is used to create informative pages with rich text formatting, embedded pictures and videos. + +== Blogs + +The *blog* component makes possible the creation of posts or news associated with a participatory space, and to navigate them chronologically. + +*Comments associated* with blog entries will be treated like the platform’s other comments, as described below. + +== Newsletter + +The *newsletter* component makes possible to send emails to everyone registered in the platform or, more selectively, to those who participate in a specific space who have agreed, under the terms and conditions of use, to receive this information newsletter email. Personalised emails are sent out addressed directly to the name of the user in the language chosen by the user by default. + +Participants will automatically and directly be able to *unsubscribe* through the email itself by clicking on a link in it and it will also be possible to *track the number of visits* generated by the newsletter. + +== Meetings + +The *meeting* component offers organizations and participants the opportunity to: + +* convene meetings, defining its structure and content +* *categorise* the meeting within a space. +* create *proposals associated with meetings* +* *publish* minutes +* upload *photos* of the meeting + +Meetings relating to a participatory space (a specific process or an assembly) can be shown on a *map* and be *ordered by date or category*. Besides, all the meetings can be shown in *calendar mode*, with the possibility of exporting them to a mobile phone calendar or other apps. + +Some of the meeting component’s advanced features include: + +* *Registration and attendance system*: +** This allows to manage the *type of registration* (open and automatic, closed and accessible only to certain types of participants, etc.), to establish the **number of places **available for attendees, to reserve a place, to do *manual registrations*, sent out *Invitations*, to define the *conditions* that need to be accepted in order to be able to attend the meeting (e.g. image rights release), and *registering the attendance* of participants. +** It allows participants *to register* for a meeting, request *a family reconciliation service* (playroom, childcare space) and to obtain an *accreditation code* for attending at a meeting. +** Those registered who have attended a meeting will have *special access* enabling them to evaluate the meeting or make comments, etc. +** Participants or administrators will be able to receive *notifications* on registration-period openings, the number of places remaining for registrations, reminders of meetings, and the publication of minutes. +* *Managing agendas*: allows to define the duration of meetings, to create agenda’s items and sub-items, title, content, and estimated duration. Participants can propose agenda items. +* System for *drafting, publishing and validating meeting minutes* [IMPORTANT NOTE:This is currently implemented differently]: +** Minutes can be uploaded in video, audio or text format. +** Minutes in text mode are associated with a *collaborative writing board* integrated into Decidim. +** Minutes go through 4 *stages of preparation*: 1. Collaborative writing during the meeting; 2. Preparing the official draft of the minutes; 3. Draft-amendment stage; 4. Publication and final validation of the minutes. +** Minutes can be *commented on* using the comments component. +** *Accompanying documents* may also be added to the minutes. +* *Auto-convening*: verified participants will be able to convene meetings directly through the platform , with support from a certain number of other participants, the meeting will be publicly activated and convening participants will have access to the administration panel [IMPORTANT: not implemented yet] +* *Displaying and exporting meetings*: meetings can be displayed in map mode (for spaces or generally on the platform) or in calendar mode, and can be exported to agenda and calendar managers (in iCalendar format). + +== Search engine + +*The search engine* allows participants to perform searches across all of the platform’s indexable content, both generally and specifically, by searching within a specific participatory process or inside its components (proposals, results, etc.), through advanced searches. + +== Secondary components + +There are other components that only exist on top of basic components are. These components are: + +=== Comments + +The *comments* component enables participants to take part on a deliberative process on an issue or proposal. +Participants can respond to them, endorse them and receive notifications about responses. +Comments can be *ranked* in chronological order or by number of votes in favour. + +=== Participatory texts + +Participatory texts are defined as an ordered collection of proposals that make up a document with complete text. Participation in the text stems from interaction with the proposals that form it. This component basically allows three operations: + +* *Breaking down a text document into ordered proposals* from a document in ODT, XDOC, MarkDown and HTML formats. If the text is structured in sections and subsections, ordered proposals will be created from the lower level subsection; if the text is not structured, a proposal will be created for each paragraph of text. The interface allows proposals to be re-edited, merged, separated, given titles, etc. +* *Composition of proposals in a unified text*: based on a series of proposals, these may be ordered and generate a unified and downloadable text. +* *Viewing and interacting* with documents composed of proposals: A collection of proposals will be shown as a unified text and may be amended or comments can be added in the margin. + +=== Accountability + +The *accountability* component works like a project management system built into the platform. . It offers the possibility of: + +* subdividing results into projects or sub-projects +* defining and applying progress in implementation statuses (0% to 100% implemented) around their implementation +* displaying the extent of the results’ implementation grouped by categories and scopes + +Results, projects and statuses can be updated through a CVS, or manually by the administration interface. + +=== Conferences + +The *conference* component allows an organization to join up a series predefined meetings (chats, workshops etc.) related to a participatory space. + +Configuration settings include: + +* Conference-page generator, which enables the creation of an *internal website* with information about the event. +* The option to generate an *interactive and downloadable programme* on the event (where there are guest speakers, it will include their name, position, organisation, a small biography and links to other websites). +* Email *invitations*. +* Registration system +* *Automatic diploma and certificates of attendance creation* for those who request it, through a support panel that an administrator can verify. +* Links to the event *video and materials* platforms in the programme and documents. +* Automatic links to digital-media websites covering the event. +* The ability to following events through *social networks* (e.g. by incorporating a Twitter feed). + +== Participatory Spaces and Components + +*Participatory Spaces* and *Components* can be combined in different ways. +For example, the various phases of a Participatory Budgeting Process (Participatory Space) can combine *Components* like this: + +1. At an early phase public *Meetings* can be opened for citizens to analyze different needs classified by districts. +1. In turn these *Meetings* can lead to the design of a *Survey*. +1. The *Survey* results can then be used to define a set of categories for projects to be proposed. +1. The *Proposal* component can then be activated for Participants to create and publish their projects as solutions to the identified needs. +1. These *Proposals* can then be commented and, after two weeks of deliberation, *voting* can be activated to select among the projects with a budget-expenditure system. +1. Participants can then be called to a public *Meeting* to evaluate the results. +1. An assessment *Survey* can be launched afterwards for those who could not attend the *Meeting*. +1. Finally, the *Accountability* component may be activated to monitor the degree of execution of the selected projects, and people can comment on it. + +== Displaying components: Cards + +Component items have their individual page but are also displayed as *cards* throughout the platform. + +[#card-anatomy-fig] +._Decidim's proposal card anatomy._ +image::card-anatomy.png[] \ No newline at end of file diff --git a/en/modules/features/pages/general-description.adoc b/docs/ca/modules/features/pages/general-description.adoc similarity index 99% rename from en/modules/features/pages/general-description.adoc rename to docs/ca/modules/features/pages/general-description.adoc index 2e865ae0db..c54b27a835 100644 --- a/en/modules/features/pages/general-description.adoc +++ b/docs/ca/modules/features/pages/general-description.adoc @@ -60,4 +60,4 @@ The *home page* of the platform is fully customizable: it can display different The content of the platform can be classified by different criteria. A participatory space and its contents (e.g. a participatory process or the proposals within) can be (independently) assigned a *scope*. Scopes are defined for the whole platform, and they can be thematic or territorial (for example, an assembly can be assigned to a specific theme or subject, like "ecology", and to a specific territory, like a district within a city). Content within a space-instance can be assigned to a *category* or sub-category (e.g. topics) that are specific for such a space-instance. For example, the categories "sport facilities", "parks" and "schools" can be created for a participatory budgeting process, and proposals will be assigned to these categories. *Hashtags* can also be freely created and introduced in the body text almost anywhere in the platform (proposals, debates, comments, process description, etc), both by participants and administrators, to classify content and make it searchable. -Unlike other existing platforms, Decidim’s architecture is *modular*, *scalable*, easy to *configure*, and *integrated* with other tools or apps (data analysis, maps, SMS, mail, social networks, etc.). The platform has been designed in such a way that processes, assemblies and mechanisms can be set up easily and deployed from an administration panel. No knowledge of programming is required to install, configure and activate it. The participatory spaces and components can be developed, activated and deactivated independently. +Unlike other existing platforms, Decidim’s architecture is *modular*, *scalable*, easy to *configure*, and *integrated* with other tools or apps (data analysis, maps, SMS, mail, social networks, etc.). The platform has been designed in such a way that processes, assemblies and mechanisms can be set up easily and deployed from an administration panel. No knowledge of programming is required to install, configure and activate it. The participatory spaces and components can be developed, activated and deactivated independently. \ No newline at end of file diff --git a/docs/ca/modules/features/pages/general-features.adoc b/docs/ca/modules/features/pages/general-features.adoc new file mode 100644 index 0000000000..176164832f --- /dev/null +++ b/docs/ca/modules/features/pages/general-features.adoc @@ -0,0 +1,77 @@ += General features + +:page-partial: + +Below, we will outline a series of the platform’s general features and characteristics which do not appear in the spaces or components, or in the features directly associated with participants. + +== Installation and settings + +Decidim **can be easily installed **using the command prompt in any GNU/Linux server with the following installed services: PostgreSQL 9.4+, Ruby 2.4.1, NodeJS with yarn (JavaScript dependency manage), ImageMagick and PhantomJS. An automatic installation script allows you to deploy the whole dependency system, libraries, databases and other automatically required services in Heroku or Docker [feature expected for 2018Q4]. + +The portal’s *settings* are **customisable **in the following fields that are filled out on a form from the administration panel: Name of the portal, social network profiles (Twitter, Facebook, Instagram, YouTube, Github); brief description; welcome text; default language; home image; the organisation’s logo; favicon; reference prefix (unique identifier that will apply to the portal’s elements) and the organisation’s URL. + +== Integration with other services and compatibility/creation of additional services + +Decidim can be easily integrated with the following services that can be installed or configured with Decidim: + +* *OpenStreetMap*: to show events and proposals with geo-location +* *Piwik*: website traffic analysis +* *Pad*: collaborative real-time writing boards (technology to be determined) +* *Digital identity and signature*: integration with OAuth2 digital-identity management system, systems based on blockchain and recognised institutional digital identity and signature management systems. +* *Distributed filing system*: Disseminating or copying proposals or other elements from the platform in a distributed filing system (blockchain or IPFS type) [Missing feature]. +* *Microblogging*: integration/compatibility with a standardised and open microblogging protocol/service such as GNU Social or StatusNet type for participants’ activities (proposals, observations and messages) [Missing feature]. + +Decidim automatically generates the following services besides the ones that can be browsed on the website or accessed through an API: + +* *SMTP*: sending emails. +* *Calendar*: integration and compatibility with calendar-management systems and automatic creation and updating of events calendars, etc. + +== Multitenancy + +The multitenancy of the platform can be used on the basis of a single installation. In other words, a single instance of Decidim software allows to deploy as many portals (tenants) as you want under specific settings for each of the tenants. That way an organisation can create participatory portals for its sub-organisations or various organisations can share a server and reduce the maintenance costs of its portals. + +== Multi-language + +Decidim is a *multi-language* platform. Its available languages will be configured during its installation. Menus, administrative forms and, generally, the platform's fixed texts are available in several languages (Spanish, Catalan, Basque, Italian, French, Dutch and Finnish). A **collaborative translation **system in https://crowdin.com/project/decidim enables new languages to be incorporated into the platform. + +As for content, once the official languages of the instance have been set during the installation, all the content that is created from the administration panel has the option of being generated in these languages. The administration panel allows *content to be managed in several languages* through tabs. The content generated by users is displayed on the platform in a single language (the one chosen by the participant through the language selector in the upper part of the menus or automatically through its browser's language settings). + +== Statistics, open data and downloads + +Besides the application programming interface (API) which automatically provides access to public data, Decidim’s home page features a *general statistics table* with the following fields: number of participants, processes, proposals, results, meetings, observations and votes. + +Another *statistics table for each participatory process* shows the number of meetings, proposals, votes and results of a specific process. + +The administration panel lets you **export the proposals, results and observations **of a participatory process in CSV and JSON format and responses to surveys for processing and/or integration with other management systems. Participants can **download the results of a participatory process and the extent of its implementation **through a CSV file. + +Decidim also has a **data-display component **at its disposal on the platform’s general level and on a specific level (showing data from a specific Participatory Space) [Feature expected for 2018Q2-3, AjB-Lote2Mod4]. The following are included among the graphics that are displayed: + +* **Interactive graphics **in the form of a time line showing the development of the various components’ counters. +* *Heat map* of all the meetings, proposals or other content with geo-location tags. +* **Interactive diagrams **(bar or pie charts) with the results of a process (amounts of each of the participatory budget projects, filter by category and status of the proposals - whether selected or not, etc.) + +All of these displays are accompanied by an **option for downloading data **in CSV format [Feature expected for 2018Q2-3, AjB-Lote2Mod4]. + +== API, adaptable website design and mobile app + +Decidim has an application programming interface or API which is a series of independent service calls and data from Decidim's website interface. This allows third parties to develop services on the platform, automatically release data or develop new interfaces, or integrate other services with decidim. + +The API comes with *documentation* and a *formal participatory ontology* [Not completed] + +Decidim's website *design* is completely *adaptable* (_responsive_), using _mobile-first_ design philosophy (designed first for mobiles and later extended to desktop systems and tablets). + +Both the website's design and the API enable the development of mobile apps for Decidim, and a *Mobile App* is expected to be developed soon. + +== Content-classification systems + +As for content classification, the following to be distinguished and adjusted in Decidim: fields, categories and labels (or tags). + +*Scopes* are generic throughout the platform and divided up into *territorial* and **topic **types. Territorial areas, once defined, allow the spaces’ elements to be classified by territory (e.g. if a process or a body or an initiative affects a district or two, the entire city, a region or country, depending on the organisation). Topic areas are likewise defined for the entire platform and allow classification of the various elements of the participatory spaces. + +*Categories and subcategories* are used for classifying content within the various spaces and are defined for each of the levels of the spaces. So, for example, a participatory process may include several categories and subcategories (the process administrator defines them) whereas the process’ meetings, surveys, proposals and other components can be classed under these categories. + +In contrast to fields and categories, *labels* or tags are cross-cutting and freely defined by participants and can apply to any level or component. Labels can be created, embedded and defined in the administration panel. A label-suggestion system allows the people taking part to choose labels similar to the ones that are they are suggesting for labelling any of the platform's elements. Elements can be browsed by labels and the most popular labels displayed. + +== Contextual help system, usability and evaluation tests + +Decidim includes *editable contextual help* for guiding individual and administrative participants in using the platform. It also includes a **automatic evaluation surveys** to be conducted on participants for the purposes of identifying usability and participatory-procedure errors and improving the democratic quality experience of the software . \ No newline at end of file diff --git a/docs/ca/modules/features/pages/participants.adoc b/docs/ca/modules/features/pages/participants.adoc new file mode 100644 index 0000000000..305e9fafeb --- /dev/null +++ b/docs/ca/modules/features/pages/participants.adoc @@ -0,0 +1,53 @@ += Participants + +:page-partial: + +*Participants* of Decidim can be grouped into three different categories: + +* *Visitors* have access to all of the platform's content without having to sign up or provide any information. +* *Registered* participants can submit proposals and comments, sign-up for meetings, endorse content, follow other Participants and receive notifications, mentions and private messages. +Users may register *directly* on the platform or through gateways of other *social networks* (Facebook, Twitter or Google+). To register directly, users will need to associate a email account and a password to the user-account. + Registered participants can also have their account officialized (meaning their username is accompanied by a special symbol indicating they really are who they claim they are on their profile). +* *Verified* participants can make decisions. Decidim offers different ways to carry out this verification. + +Administrators can *manage permissions* for *Registered* users and *Verified* users selectively. For example, _proposal creation_ can be activated for both Registered and Verified users but _supports to proposals_ only for Verified users. + +== Public registration of administrative activity + +The manual verification of participants, as well as other administrative actions can create vulnerability or may enable the administrators to use the platform in an abusive manner. To avoid it, Decidim includes a *public register of administrative activities* so these actions can be publicly and transparently audited. + +== User profile and personal settings + +There is a **user-profile page **where participants can make **changes to their data **(such as email account, password etc.), upload and enable an *avatar* image, set notifications or delete their account. + +The user-profile page also allows participants to add *additional information* to include interests and skills, voluntarily and by selecting the level of visibility of that information. This allows personal notifications to be sent and participants can be matched with others for collaborations. + +== Monitoring and notifications + +Participants receive *automated notifications* regarding the content they have created: responses to comments and comments on their proposals, as well as the results of their proposals (whether accepted or rejected). + +Besides automated notifications, participants can decide to **follow any element** of the system (other proposals, results, processes, assemblies, initiatives, groups or users etc.), and receive notifications. + +== Communication among participants + +**Instant messages **can be sent to participants through the platform, who will receive an email notification. + +*Mentions* can also be added (in the comments section) to any registered user and a notification will be automatically sent. + +== User groups + +Participants can register with the platform as members of one or several organisations/collectives. Once the organisation and membership status have been verified, participants can carry out actions (make proposals or submit comments, etc.), with their user or with the organisation name. + +User groups can also manage user permissions and administration roles assigned to groups, as well as private debate spaces or share information among group users, for example, who attended an in-person meeting. [Feature currently missing] + +== Engagement + +Decidim has a series of features geared to _gamifying_ the platform, to *attract and keep a growing number of participants interested*, as well as to promote practices that boost democratic quality and collective intelligence in participation [the gamification system is expected for 2018Q2-3, AjB-Lote1]. + +The gamification system includes two modes, one centred on users and the other on proposals. + +* The **user-centred **mode incorporates a *points system* based on several criteria (degree of detail of its user profile, number of invitations to others on the platform, number of proposals made and commented on, number of comments, number of endorsements obtained, number of followers, etc.) + +The combination of these and other indicators is used for generating gamification routes for each user and defining threads such as: most participatory person in the district, leadership in discussions and debates, etc. + +* Gamification *centred on proposals/initiatives* allows promoters, signatories and followers to boost interaction with them by incorporating several *metrics* (number of times that the proposal is shared in social networks, degree of controversy (number of positive and negative comments), quality of deliberation (depth of observation tree), number of hits received, etc. \ No newline at end of file diff --git a/docs/ca/modules/features/pages/participatory-spaces.adoc b/docs/ca/modules/features/pages/participatory-spaces.adoc new file mode 100644 index 0000000000..69a8dcab3e --- /dev/null +++ b/docs/ca/modules/features/pages/participatory-spaces.adoc @@ -0,0 +1,66 @@ += Participatory spaces + +:page-partial: + +Participatory spaces define the main participatory channels. They are displayed in the platform's main upper menu. + +The basic logic behind Decidim's structure is that *components work together in the participatory spaces*. There are different types of spaces (initiatives, processes, consultations and assemblies) and various instances within each type (a process for an election and another for participatory budgets, council body for neighbourhoods and another for workers, an initiative to call for a change in legislation and another for something to be included in a plenary meeting agenda, etc.). + +== Processes + +Participatory processes require a general *configuration* form with the following fields: Title or name of the process; short name for URL; hash tag (used as a reference for communications on social networks); short description; long description; home page image; banner image; date of start and finish; field; promoter group (responsible for the participatory process on a political level, may be the local authority or a group made up of the authority’s experts/politicians and associations and other organisations); who it is aimed at; goal of the participatory process and participatory structure. The participatory process allows *accompanying documents* to be added. + +Participatory processes are divided into *stages* (e.g. 1. Information and convening stage; 2. diagnostics stage; 3. proposals stage; 4. prioritisation stage; 5. decision stage; 6. evaluation stage and 7. results-monitoring stage). Each stage includes the following configuration fields: title, description, start date, end date. + +*Highlights of announcements or texts* may also be displayed in the processes, both on the home page and in the heading of each component (proposals, discussions and debates, etc.) Different messages can be configured depending on the particular stage of a process. + +A *participatory process configuration tool* enables the simple activation and deactivation of stages and their components. Decidim's process configuration tool is one of its most powerful features, enabling total flexibility in designing participatory processes according to the various realities and forms of citizen participation. + +The feature of **process groups **enables various processes to be grouped, such as by the Participatory Budgets of different districts or neighbourhoods. + +Participatory processes may have one of the following *process statuses*: 0) published or unpublished; 1) open (started); 2) closed (the participatory process has ended but its results are still under way; 3) finished (both the process and its results phase are complete) and 4) future (has not yet started). + +A process can be **highlighted** (which increases its visibility on the homepage). + +There is also the possibility to **copy participatory processes** from the administration panel. This feature enables process models to be designed and copied so that certain details can be configured within the new processes, avoiding the need to create them from scratch. + +== Assemblies + +Decidim allows the **creation and configuration** of participatory or government *assemblies* (government or participatory bodies; councils; work groups, etc.) defined as structured participant groups which, whether on an individual or representative level, meet up periodically, with the authority to make proposals and decisions. + +The *assemblies section* allows you to see a full list of all of the assemblies that are activated and configured from the administration panel. The basic *settings* require the following fields to be completed for each body: name; image; scope (global, territorial or sectoral); body’s function (purpose of action); type of body (government, executive, consultative / advisory, participatory, work group, commission etc.); creation date; created on the initiative of (City Council, citizens or others); duration (indefinite or fixed, in the latter case, finishing date); date of inclusion in Decidim; date of closure and reason; how it is organised (functions, powers etc.); composition; if it can be joined and how to do that; method of choosing members; type/ function of members within the body; composition of internal work groups as monitoring or advisory committees; characteristics of the body; the body's social networks (name of social network and link) and the body’s next meetings. + +* *Convening meetings*: enables to send automatic meeting invitations, collaboratively create agendas, and register attendance. For a complete list of features see the "meetings" component. +* *Assembly’s characteristics*: open, public, transparent and other characteristics regarding the level of participation that the assembly allows. +* *Composition:* This enables the composition of the body to be defined in greater detail, using the profiles of participants associated with the body as well as other characteristics. A display of the body’s structure is automatically generated based on the composition of participating members: +** *Types of members*: Chair, deputy chair, secretaries, others +** *Membership origin*: by draw; direct election; representation from another assembly; government representation etc. +** *Internal work groups*: for the creation of sub-assemblies. Work groups will be able to relate to the body they belong to +** *Characteristics*: Open/closed; transparent; with various access permits. +* *Display*: allows us to view internal data about each body as well as the associations between assemblies +** *Composition*: the structure of a body is shown in the form of a circle diagram +** *Organisation charts*: allow us to view the hierarchy or network of assemblies and their associations. +* *Map and calendar*: allow us to view the location of all the assemblies on a map and calendar +* *Involvement with other spaces and components* +** *Involvement with processes*: assemblies can be promoter groups, start a process or make proposals within a process. A body’s composition may be the result of a process (for electing posts) +** *Proposals and results*: a body can generate its own proposals or results. +*** It shows how the proposal was agreed on (by consensus, majority, number of votes etc.). +** *Meetings*: assemblies will have a list of associated meetings, but some features may jump from one meeting to another, such as citizen initiatives to include an item in an agenda. Likewise, it must be possible to view minutes separately from the meeting, as they are associated directly with the body . + +== Initiatives + +*Initiatives*. This participatory space allows citizens to make proposals and collect the *requisite number of signatures and/or endorsements* depending on type (the various types are set out in the municipal regulations), giving rise to the start of the administrative procedure for its processing and citizen monitoring. + +Initiatives operate as follows: + +* Any person or citizen association can make a citizen-initiative proposal. There are *several types of initiatives* with various numbers of endorsements/signatures required for their processing (these are all configurable). From the initiative-creation page, a description of each of the methods, the number of signatures required and examples (e.g. explanatory videos) can be viewed. +* To avoid duplicates, once an initiative has been created, the system will present suggestions for **similar initiatives** before continuing with the following step. Once similar proposals have been ruled out, the specific form will be shown for each type of initiative, along with the minimum number of endorsements required. The creator then has an URL at their disposal which can be used to invite others to join in and endorse the initiative. A map is also displayed showing the locations of meeting points to collect signatures should there be any. +* Once the the initiative has been created, the initiative will move to a **technical moderation and validation** stage, where the City Council’s staff can respond in various ways (by approving it, rejecting it or suggesting amendments). +* Initiatives can be monitored and **notifications received on updated** statuses, in addition to which their individual promoter or group can periodically send information newsletters to other uses of the platform who have opted to follow the initiative. +* On reaching the specified end date, an initiative can have two possible states: +** *Rejected*: where it fails to reach the minimum number of signatures, a message will be shown stating "does not meet the number of signatures required" and the initiative's creator will be notified. +** *Accepted*: where it has achieved a sufficient number of signatures or endorsements it will be accepted and the corresponding procedure will start. + +== Consultations + +Consultations (a voting procedure where all of the organisation’s participants are called to vote on specific questions), allows participants **to find out about current or prospective consultations**, *discuss and debate* the consultation’s subject area and *monitor* the results. It also provides a *gateway to an e-voting system* which is external to Decidim but integrated in the interface in order to manage and verify identities. \ No newline at end of file diff --git a/docs/ca/modules/publications/pages/catalan.adoc b/docs/ca/modules/publications/pages/catalan.adoc new file mode 100644 index 0000000000..129537fc69 --- /dev/null +++ b/docs/ca/modules/publications/pages/catalan.adoc @@ -0,0 +1,5 @@ += Catalan Publications + +== Media + +* Barandiaran, X. E., Monterde, A., & Pin, G. (2016). Decidim.barcelona: autonomía, participación y software libre - Software libre. In Xarxaip (Ed.), _Programari lliure i de codi obert-Societat lliure i govern obert._ (pp. 31–32). http://softwarelibre.xarxaip.cat/18.html \ No newline at end of file diff --git a/docs/ca/modules/publications/pages/english.adoc b/docs/ca/modules/publications/pages/english.adoc new file mode 100644 index 0000000000..15df7cacb3 --- /dev/null +++ b/docs/ca/modules/publications/pages/english.adoc @@ -0,0 +1,19 @@ += English Publications + +IMPORTANT: Barandiaran, X., Calleja-López, A. & Monterde, A. (2018). Decidim: political and technopolitical +networks for participatory democracy. __Decidim’s project white paper__. (You can http://ajbcn-meta-decidim.s3.amazonaws.com/uploads/decidim/attachment/file/2005/White_Paper.pdf[download an alpha version of the document here]) + +== Academic + +* Borge, R., Balcells, J. , Padró-Solanet, A. (2019) "A model for the analysis of online citizen deliberation: Barcelona case study", International Journal of Communication. 13, pp. 5671–5695. https://ijoc.org/index.php/ijoc/article/view/10805/2873 + +== Media + +* Preville, P. (2019, November 13) _How Barcelona is leading a new era of digital democracy_ https://medium.com/sidewalk-talk/how-barcelona-is-leading-a-new-era-of-digital-democracy-4a033a98cf32 +* Graham, T. (2018, May 18) - _Barcelona is leading the fightback against smart city surveillance_ https://www.wired.co.uk/article/barcelona-decidim-ada-colau-francesca-bria-decode +* Barandiaran, X. E., & iaran. (2018, April 24). _What is Decidim?_ https://xabier.barandiaran.net/2018/04/24/what-is-decidim/ + +pass:[
][.biblio-abstract-label]#Abstract.# Many people ask what is this project called “Decidim” to which I have devoted my last two year of work with complete dedication. I wanted to share a brief summary here. This text is the…pass:[
] +* Stark, K. (2017, May 9). _Barcelona’s Decidim Offers Open-Source Platform for Participatory Democracy Projects_. https://www.shareable.net/blog/barcelonas-decidim-offers-open-source-platform-for-participatory-democracy-projects + +pass:[
][.biblio-abstract-label]#Abstract.# The word Decidim translated from Catalan means we decide, and it’s the name of Barcelona’s digital infrastructure for participatory democracy. One part functional database and one part political statement, organizers say Decidim is key to a broad digital transformation that is taking place in Barcelona — its institutions, markets, and economy.pass:[
] +* _Decidim: Free Open-Source participatory democracy for cities and organizations | Hacker News_. (n.d.). Retrieved January 21, 2019, from https://news.ycombinator.com/item?id=18952328 +* Oikos Denktank. (n.d.). _(W)E-Democracy - speaker 5 (1) - E-democratic cities - Arnau Monterde and Xabier E. Barandiaran_. Retrieved August 30, 2017, from https://www.youtube.com/watch?v=qrQ8ij4Ekag \ No newline at end of file diff --git a/docs/ca/modules/publications/pages/french.adoc b/docs/ca/modules/publications/pages/french.adoc new file mode 100644 index 0000000000..6d095bf12a --- /dev/null +++ b/docs/ca/modules/publications/pages/french.adoc @@ -0,0 +1,8 @@ += French Publications + +== Media + +* Politics, O. S. (2018a, March 7). _Decidim, la plateforme de participation citoyenne d’envergure européenne_. https://medium.com/open-source-politics/decidim-la-plateforme-de-participation-citoyenne-denvergure-europ%C3%A9enne-9b3cb92681e5 + +pass:[
][.biblio-abstract-label]#Abstract.# Cet article est basé sur une série de conversations que nous avons eues avec Pablo Aragon, Xabier Barandiaran, Josep Jaume[1] et de…pass:[
] +* Politics, O. S. (2018b, March 7). _Le Contrat Social de Decidim, un texte fondateur_. https://medium.com/open-source-politics/le-contrat-social-de-decidim-un-texte-fondateur-7a8916213270 + +pass:[
][.biblio-abstract-label]#Abstract.# Nous reproduisons ici, pour la première fois en français, le « Contrat Social » de la plateforme Decidim, traduit du catalan en passant…pass:[
] \ No newline at end of file diff --git a/docs/ca/modules/publications/pages/german.adoc b/docs/ca/modules/publications/pages/german.adoc new file mode 100644 index 0000000000..14d09475be --- /dev/null +++ b/docs/ca/modules/publications/pages/german.adoc @@ -0,0 +1,10 @@ += German Publications + +== Media + +* Macher, J. (2020, March 4), _Barcelonas Erfolg mit der Plattform Decidim. Deutschlandfunk_ https://www.deutschlandfunk.de/wenn-buerger-politik-gestalten-barcelonas-erfolg-mit-der.795.de.html?dram:article_id=471680 +* Huber, P. (2019, May 29), _In Barcelona schreiben die Bürger das Regierungsprogramm selbst – und machen ihre Stadt sozialer_ https://kontrast.at/barcelona-smart-city-wirtschaft/ +* _Wie Barcelona eine offene “Smart City” im Dienste des Gemeinwohls plant_. (2018, September 9). https://netzpolitik.org/2018/freie-software-als-oeffentliches-gut-und-was-rathaeuser-dafuer-tun-koennen/ + +pass:[
][.biblio-abstract-label]#Abstract.# Im Interview spricht Francesca Bria, Barcelonas Chief Technology and Digital Innovation Officer, über “Digitale Soziale Innovation” und passende Strategien um die lokale Wirtschaft, Privatsphäre und die demokratische Teilhabe der Bürger*innen auch in einer “Smart City” langfristig zu sichern und zupass:[
] +* Macher, J. (n.d.). _Digital und demokratisch (neues deutschland)_. Retrieved December 7, 2019, from https://www.neues-deutschland.de/artikel/1129769.smart-city-digital-und-demokratisch.html + +pass:[
][.biblio-abstract-label]#Abstract.# In Barcelona bedeutet »Smart City«: Mehr Mitsprache für die Menschen. Andere Städte sind dem Beispiel gefolgt.pass:[
] \ No newline at end of file diff --git a/docs/ca/modules/publications/pages/italian.adoc b/docs/ca/modules/publications/pages/italian.adoc new file mode 100644 index 0000000000..4c85f3200d --- /dev/null +++ b/docs/ca/modules/publications/pages/italian.adoc @@ -0,0 +1,6 @@ += Italian Publications + +== Media + +* _Perché Barcelona Smart City è un modello per il mondo. Intervista a Francesca Bria_. (2018, August 13). http://www.designatlarge.it/barcelona-smart-city-francesca-bria/ + +pass:[
][.biblio-abstract-label]#Abstract.# La sovranità tecnologica ai cittadini. Ecco come Barcelona Smart City è diventata un modello per il mondo. Intervista alla CTO Francesca Briapass:[
] \ No newline at end of file diff --git a/docs/ca/modules/publications/pages/spanish.adoc b/docs/ca/modules/publications/pages/spanish.adoc new file mode 100644 index 0000000000..165abbb338 --- /dev/null +++ b/docs/ca/modules/publications/pages/spanish.adoc @@ -0,0 +1,34 @@ += Spanish Publications + +== Academic + +* Barandiaran, X. E., Calleja, A., Monterde, A., Aragón, P., Linares, J., Romero, C., & Pereira, A. (2017). Decidim: Redes políticas y tecnopolíticas para la democracia participativa. __Recerca__. Revista de pensament i anàlisi., 21, 137-150. https://doi.org/10.6035/Recerca.2017.21.8 +* Barandiaran, X. E. (2019). Tecnopolítica, municipalismo y radicalización democrática. In L. Roth, A. Monterde, & A. Calleja-López (Eds.), _Ciudades Democráticas. La revuelta municipalista en el ciclo post-15M_ (pp. 173–207). Icaria. http://ciudadesdemocraticas.tecnopolitica.net/ +* Borge, R., Balcells, J., Padró-Solanet, A., Batlle, A., Orte, A., & Serra, R. (2018) La participación política a través de la plataforma Decidim: análisis de 11 municipios catalanes. Paper presentado en el IX Congreso Internacional en Gobierno, Administración y Políticas Públicas GIGAPP. Madrid, 24-27 Septiembre. https://dryfta-assets.s3-accelerate.amazonaws.com/assets/congreso2018/abstractfiles/1536574598Laparticipacion_politica_a_traves_de_la_plataforma_Decidim.pdf +* Solà, J. (2018). _How are decisions made in Decidim.barcelona_ [Master Thesis, Pompeu Fabra]. https://repositori.upf.edu/handle/10230/36105 +* Barandiaran, X. E., Monterde, A., & Pin, G. (2016a). Decidim.barcelona: autonomia, participació i programari lliure. In Xarxaip (Ed.), _Programari lliure i de codi obert-Societat lliure i govern obert._ (pp. 31–32). +* Barandiaran, X. E., Monterde, A., & Pin, G. (2016b). Decidim.barcelona: autonomía, participación y software libre - Software libre. In Xarxaip (Ed.), _Programari lliure i de codi obert-Societat lliure i govern obert._ (pp. 31–32). http://softwarelibre.xarxaip.cat/18.html +* Aragón, P., Kaltenbrunner, A., Calleja-López, A., Pereira, A., Monterde, A., Barandiaran, X. E., & Gómez, V. (2017). Deliberative Platform Design: The Case Study of the Online Discussions in Decidim Barcelona. _Social Informatics_, 277–287. https://doi.org/10.1007/978-3-319-67256-4_22 + +pass:[
][.biblio-abstract-label]#Abstract.# With the irruption of ICTs and the crisis of political representation, many online platforms have been developed with the aim of improving participatory democratic processes. However, regarding platforms for online petitioning, previous research has not found examples of how to effectively introduce discussions, a crucial feature to promote deliberation. In this study we focus on the case of Decidim Barcelona, the online participatory-democracy platform launched by the City Council of Barcelona in which proposals can be discussed with an interface that combines threaded discussions and comment alignment with the proposal. This innovative approach allows to examine whether neutral, positive or negative comments are more likely to generate discussion cascades. The results reveal that, with this interface, comments marked as negatively aligned with the proposal were more likely to engage users in online discussions and, therefore, helped to promote deliberative decision making.pass:[
] + +== Media + +* Calleja-López, A., Monterde, A., & Barandiaran, X. E. (2017, October 18). _De las redes sociales a las redes (tecno)políticas: redes de tercera generación para la democracia del siglo XXI_ [Text]. http://tecnopolitica.net/content/de-las-redes-sociales-las-redes-tecnopol%C3%ADticas-redes-de-tercera-generaci%C3%B3n-para-la + +pass:[
][.biblio-abstract-label]#Abstract.# La sociedad deviene (en) red.pass:[
] +* _TIPS - Cultura digital - La democracia 2.0_. (2017, February 2). http://www.rtve.es/alacarta/videos/tips/tips-cultura-digital-democracia-20/3896837/ + +pass:[
][.biblio-abstract-label]#Abstract.# TIPS - Cultura digital - La democracia 2.0, Tips online, completo y gratis en RTVE.es A la Carta. Todos los programas de Tips online en RTVE.es A la Cartapass:[
] + +[[ref-4881969-FWFFK8LS]] +* Bravo, E. (2016, July 20). _Cómo mejorar Barcelona con la participación de sus ciudadanos_ [Magazzine]. http://www.yorokobu.es/barcelona-participacion/ + +pass:[
][.biblio-abstract-label]#Abstract.# El cricket es un deporte muy curioso. Los partidos pueden durar días y, entre sus reglas, está la de parar el juego para tomar el té. Una de las potencias en este deporte es Paquistán, país del que procede parte de la población inmigrante de Barcelona. Muchos de los miembros de esa comunidad llevan años […]pass:[
] +* Barandiaran, X. E., Pereira, A., Monterde, A., & Calleja-López, A. (2016). _Plan de desarrollo Decidim Barcelona_. Ajuntament de Barcelona City Council. https://decidim-barcelona.s3.amazonaws.com/uploads/decidim/attachment/file/54/Plan_desarrollo_decidim.pdf + +pass:[
][.biblio-abstract-label]#Abstract.# Este documento detalla el futuro desarrollo de la plataforma digital de participación de l´Ajuntament de Barcelona, decidim.barcelona (disponible en URL https://decidim.barcelona). Los principales objetivos de la plataforma son articular, estandarizar, visualizar y comunicar todos los procesos de participación del Ajuntament de Barcelona y de la ciudad ofreciendo un servicio de infraestructura digital para la democracia directa y participativa a todas las escalas territoriales y asociativas de Barcelona. El documento detalla los objetivos de la plataforma, el flujo de desarrollo, las funcionalidades previstas, y un código ético-político.pass:[
] +* Participa Pamplona. (2017a, July 18). _Decidim Barcelona (Xabier Barandiaran)_. https://www.youtube.com/watch?v=zQYvdwGsg8M + +pass:[
][.biblio-abstract-label]#Abstract.# 1a Jornada de tecnología y democracia (24/05/2017). Infraestructuras digitales para la democracia. Decidim Barcelona Xabier Barandiaran. Coordinador del proyecto Decidim, asesor de la Regiduría de Participación del Ayuntamiento de Barcelona. Teknologia eta demokraziari buruzko 1. jardunaldia (24/05/2017). Demokrazia partizipatiborako azpiegitura digitalak Decidim Barcelona Xabier Barandiaran. Decidim proiektuaren koordinatzailea eta Bartzelonako Udaleko Partaidetza zinegotziaren aholkulariapass:[
] +* Participa Pamplona. (2017b, July 18). _Hacia una democracia participativa inteligente y democrática (Asier Gallastegui y Asier Amezaga)_. https://www.youtube.com/watch?v=z4FTUt8wnRs + +pass:[
][.biblio-abstract-label]#Abstract.# 1a Jornada de tecnología y democracia (24/05/2017). Infraestructuras digitales para la democracia. Decidim Barcelona Xabier Barandiaran. Coordinador del proyecto Decidim, asesor de la Regiduría de Participación del Ayuntamiento de Barcelona. Teknologia eta demokraziari buruzko 1. jardunaldia (24/05/2017). Demokrazia partizipatiborako azpiegitura digitalak Decidim Barcelona Xabier Barandiaran. Decidim proiektuaren koordinatzailea eta Bartzelonako Udaleko Partaidetza zinegotziaren aholkulariapass:[
] +* Participa Pamplona. (2017c, July 18). _Metadecidim. Diseño participativo de la plataforma Decidim Barcelona (Andrés Pereira de Lucena)_. https://www.youtube.com/watch?v=I31yY4ip3rk + +pass:[
][.biblio-abstract-label]#Abstract.# 1a Jornada de tecnología y democracia (24/05/2017). Infraestructuras digitales para la democracia. Andrés Pereira de Lucena. Presidente de la asociación aLabs, coordinador técnico y arquitecto técnico de Decidim. Teknologia eta demokraziari buruzko 1. jardunaldia (24/05/2017). Demokrazia partizipatiborako azpiegitura digitalak Andrés Pereira de Lucena. aLabs elkarteko lehendakaria eta Dicidimen koordinatzaile teknikoa eta arkitekto teknikoa.pass:[
] +* Barandiaran, X. E., & Romero, C. (2018, May 17). _Presentació Decidim Ada Lovelace_. https://www.youtube.com/watch?v=-3eh_v339Cg +* Barcelona Activa. (n.d.). _Fòrum d’Economies Col·laboratives Procomuns 2017. Activitat paral·lela 3_. Retrieved January 13, 2018, from https://www.youtube.com/watch?v=IvDsgJcNxnQ +* Govern Digital. (n.d.). _CGDL2018 - Participació ciutadana: com fer de la política quelcom més proper_. Retrieved April 9, 2018, from https://www.youtube.com/watch?v=7LH6OItIrRU \ No newline at end of file diff --git a/en/modules/releases/pages/index.adoc b/docs/ca/modules/releases/pages/index.adoc similarity index 87% rename from en/modules/releases/pages/index.adoc rename to docs/ca/modules/releases/pages/index.adoc index ea86e9f030..c9f9bc7423 100644 --- a/en/modules/releases/pages/index.adoc +++ b/docs/ca/modules/releases/pages/index.adoc @@ -6,6 +6,9 @@ You can find all the releases (with minor and patches) at https://rubygems.org/gems/decidim/versions[RubyGems.org] and https://github.com/decidim/decidim/releases[GitHub]. +* https://decidim.org/blog/2021-10-07-new-version-0-25-0/[Version 0.25 (2021-10-07)] +** xref:develop:guide_migrate_webpacker_module.adoc[Migrate to Webpacker a module] +** xref:develop:guide_migrate_webpacker_app.adoc[Migrate to Webpacker an instance app] * https://decidim.org/blog/2021-03-26-new-version-0-24-0/[Version 0.24 (2021-03-26)] * https://decidim.org/blog/2020-11-12-new-version-0-23-0/[Version 0.23 (2020-11-12)] * https://decidim.org/blog/2020-09-02-new-version-0-22-0/[Version 0.22 (2020-09-02)] @@ -26,4 +29,4 @@ https://github.com/decidim/decidim/releases[GitHub]. * https://decidim.org/blog/2017-11-21-release-0-7-0/[Version 0.7 (2017-11-21)] * https://decidim.org/blog/2017-09-21-release-0-6-0/[Version 0.6 (2017-09-21)] * https://decidim.org/blog/2017-08-29-release-0-5-0/[Version 0.5 (2017-08-29)] -* https://decidim.org/blog/2017-07-17-release-0-4-0/[Version 0.4 (2017-07-17)] +* https://decidim.org/blog/2017-07-17-release-0-4-0/[Version 0.4 (2017-07-17)] \ No newline at end of file diff --git a/docs/ca/modules/understand/pages/about.adoc b/docs/ca/modules/understand/pages/about.adoc new file mode 100644 index 0000000000..70b7e66f46 --- /dev/null +++ b/docs/ca/modules/understand/pages/about.adoc @@ -0,0 +1,90 @@ += About + +:experimental: +:icons: font +:page-partial: +:source-highlighter: highlightjs + +Decidim is a technopolitical project. A digital citizen-participation platform for a democratic city, made openly and collaboratively using free software.. It is a public commons infrastructure. Public because it enjoys a clear institutional impetus and commons because the code is open and free, in other words, anyone can see it, use it, copy it or amend it. It is a platform designed for coordinating citizen-participation processes and spaces, aimed at extending and facilitating access to citizen participation, opening new spaces for deliberation and collaboration in co-designing and co-producing public policies and new spaces for direct participation and democracy, thereby enabling disintermediation and cooperation between citizens, institutions and organisations of civil society. + +[#decidim.barcelona-fig] +._decidim.barcelona_. +image::decidim_barcelona_homepage.png[decidim.barcelona homepage] + +== Principles + +The Decidim platform has been designed and developed on the basis of a series of principles that promote further exploration and democratic innovation in the digital era as well as possibilities for improving, opening and developing citizen-participation policies and democratic forms of government at various levels, with special emphasis on the municipal scale. These principles are listed below: + +=== Technopolitical hybridisation + +This is key to preventing what we could define as “digital reductionism" (Calleja-López, 2017), a variant of technocentrism that puts the emphasis mainly or exclusively on the new participatory forms’ digital aspects and infrastructures, without dealing with the necessary powerful innovations in participatory practices, processes and culture that result from the hybridisation of face-to-face and digital participation. The hybrid approach attempts to connect spaces and activities taking place in decidim.barcelona with face-to-face spaces and activities and to consider the multiple variants that may arise for the purposes of boosting new forms of collective action. + +=== Enhanced and multi-modal participation + +The result of digital reductionism is to foster "click-participation" (Calleja-López, 2017), where participation becomes a definite phenomenon, first and foremost for its digital aspect, and, more specifically, for its convenience, speed and non-interference with other players and ideas. There is therefore a need to boost enriched forms of interaction between people in decidim.barcelona, ​​and between them, the platform’s contents and the hybrid participatory processes in a broader sense. This implies, on the one hand, enriching participatory processes with functions that go beyond voting (information and data displaying, deliberation etc.,) and, on the other, designing hybrid processes (e.g. Face-to-face meetings connected to the platform), which turn participation into an enhanced, comprehensive and multimodal participation, rather than reduced and “clicked”. + +=== Transparency and traceability + +With the exception of data that can affect user privacy, details of activities in participatory processes in digital media need to be absolutely traceable and public, if a new level of transparency in participation is to be fostered. Transparent participation and traceability are necessary conditions for confidence in these new processes. + +=== Opening/ releasing + +The principles of releasing and opening refer firstly to the platform’s code and functions, secondly to the processes’ data and contents and thirdly and more generically, to the processes themselves. This implies, in the first two cases, using the most exacting share-alike licenses and standards (e.g. Affero GPLv3 for code, CreativeCommons for content, Open Access Database Licences for data). Decidim needs to be a free-software platform that allows anyone to see, amend and reuse the code it is based on. In the case of processes, these principles connect to several others that we mention in this list, such as transparency and accessibility, and aim to make these processes as participatory and reappropriable as possible on multiple levels. + +=== Cross-cutting participation + +Dealing with many of the keys of success for recent initiatives such as 15M, decidim.barcelona's deployment and communication strategies and media processes need to be geared towards achieving legitimacy first and then participation, within reach of as many social and political groups as possible. + +=== Knowledge, technoscience and collective intelligence + +The new forms of participation should benefit from the possibilities that are offered by both popular and expert knowledge from citizens and data science (data occasionally from the participatory processes themselves) to improve decision-taking and participation. An informed and expert participation, capable of catalysing social knowledge. + +=== Collective and networked participation + +One of the central challenges to achieiving an “enhanced”, digitally mediated, participation, is boosting its collective dimension in the face of atomising tendencies, often resulting from remote-participation conditions. This implies using functions that boost interactions between users in collective processes, whether on a platform or face to face. Digital or face-to-face discussion and deliberation spaces are necessary for coordinating better participation. + +=== Public-commons orientation, reappropriation and recursive participation + +Democracy’s new digital infrastructures have to be a space belonging to, by and for the commons. If democracy is to be promoted, infrastructures themselves have to be radically democratic. This implies consideration of an innovative and alternative model to the one for privatising the public sphere. To this end, Decidim needs to be a digital infrastructure of public-commons construction, ownership and use. In other words, what we define as "technopolitical commons", technology open to participation from everyone and anyone in its design and management, governed through distribution and with collective-production and share-alike models. Compared to the closed and exclusive platforms controlled by big corporations, Decidim is a democratic infrastructure for democracy. + +=== Technopolitical accessibility and training + +It also needs to be a public service, which is why it is essential to ensure citizens have access and training for taking part and exploiting all its potential. Promoting its grassroots-empowered use and use by excluded social groups is a key challenge. Both decidim.barcelona and digital participatory processes have to be governed by more demanding accessibility standards (e.g. Those of the Web Accessibility Initiative, WAI). + +=== Independence, empowerment and affiliation + +If social movements have demonstrated something over the last few years it is the central role played by self-organised collective action in kick-starting and guiding processes of change. In this regard decidim.barcelona and the processes using the platform need to boost social independence and self-organisation. In addition, political affiliation has to be a requisite feature in many of the platform’s processes, given that it is a key element of the platform’s medium- and long-term public and operative legitimacy. In other words, both independent social processes and bottom-up processes that are affiliated to public institutions. + +== Brief history + +During its public presentation in September 2015, Decide Madrid, a digital participatory platform launched by Madrid City Council and based on Consul software, began to experiment with various participatory processes, such as public debates and citizen proposals. Launched by Barcelona City Council, the Decidim Barcelona project, which was also based on Consul but with major changes and adapted to new needs, was presented in February 2016. ​​Its original goal was to coordinate the participatory process for drafting the Municipal Action Plan (PAM) as well as other participatory processes in the city in the future. Some 25,000 people signed up to it in under two months, 10,860 proposals were submitted, 410 meetings held and over 160,000 votes in favour collected. In this way a collaboration and deliberation space opened up between citizens, social organisations and Barcelona City Council. + +A great deal of interest was expressed in many municipalities in going ahead with similar processes, taking advantage of the technology used, given its success and the fact it was free and reusable. To be more specific: Coruña City Council, through its A Porta Aberta platform for Participatory Budget processes; Oviedo City Council, through its Consulta Oviedo, with a space for citizen proposals, and Valencia City Council, through decidimVLC, for preparing participatory budgets. There were also numerous cases of local authorities and other institutions showing great interest in the decidim.barcelona project and its implementation, such as the city councils of Hospitalet, Badalona, ​​Terrassa and Gavà, as well as Barcelona Provincial Council and the Localret Consortium. + +This series of changes and adaptations led in turn to a new technological need involving the adaptation of technology dealing with local-authority diversity, independence and the medium-term sustainability of the platform. Hence the establishment of a scalable and decentralised (or modular) development strategy enabling the entire project to be flexible and grow over time as well as generate a development, functional design and support community, which is sustained at both municipal and (more importantly) inter-municipal levels. + +This led Barcelona City Council to thoroughly reconsider the platform’s architecture and carry out a complete rewrite of the software based on the above-mentioned principles and needs. This rewrite gave rise to the Decidim project, a generic,participatory democratic framework based on Ruby on Rails, whereby any group, organisation or institution that wanted to use it could do so with minimum technical requirements. + +== Open development and free software + +The Decidim platform project has been developed with free software (both at its initial stage, based on Consul, and after the code's complete rewrite) and all its development has been open, enabling its entire development to be traceable and followed right from the very beginning. + +Its creation from free software refers to the fact that the platform's source code has a AGPL v3 Licence or GNU Affero General Public Licence,footnote:[https://github.com/decidim/decidim/blob/develop/LICENSE-AGPLv3.txt] which means the code has to allow for the possibility of its being consulted, copied, amended and reused, so long as the same licence is kept in any work or product derived from it. This is one of the licences that provides most freedom and is copyleft footnote:[Copyleft stands for a whole range of licences that can be applied to IT, artistic and other creations. Copyleft's supporters see copyright as a way of restricting people's right to make and redistribute copies of a work.[2] A copyleft licence, in fact, uses actual copyright legislation to ensure that everyone who receives a copy or derived work can use, amend and even distribute both the work and any derivative versions. In a strictly non-legal sense, then, copyleft is the opposite of copyright. (Wikipedia, 2017).]. In this regard, it makes sense for public authorities to make a clear commitment to this type of software, given that it is through such licences that we can receive social return on our public investments. + +The fact that the software has been openly developed means that the entire development process is transparent and accessible, in other words, that anyone can see, right from the start of the software's development, every change, contribution, community of developers involved etc. By the same token, transparency is becoming a fundamental principle not just in citizen participation but in software development too. + +All this has been done on a platform designed for open collaboration in software development known as GitHub.footnote:[https://github.com/] This platform enables access to codes and monitoring of the software's development. GitHub is designed to host Git repositories, though there are other alternatives to GitHub such as GitLab. + +== Decidim Barcelona + +Decidim Barcelona is the first instance of Decidim and the origin of the project. Decidim Barcelona came about from Barcelona City Council’s need to open up a technologically mediated citizen-participation process around the Municipal Action Plan (PAM), with three major goals: making a process that is transparent and traceable, expanding participation through the digital platform and integrating face-to-face and digital participation. + +This process received over 10,000 proposals and more than 160,000 votes in favour, with a final balance of 71% of citizen proposals accepted and included in PAM through over 1,600 initiatives. Decidim was originally designed exclusively for hosting this process though the need for extending it to other participation processes was quickly spotted. + +It was here that the idea for today's Decidim came about. A participatory platform that enables as many processes as people want, divided up into stages and with the possibility of setting several functions at each stage. The possibility was accordingly left open for designing new functions that could be integrated into the processes (surveys, collaborative-text drafting, result monitoring and so on), as well as the integration of new participatory spaces such as citizen initiatives and participation councils. + +Decidim Barcelona is currently (July 2017) hosting 12 participatory processes and already has some 26,600 participants, almost 12,000 collected proposals, 1,700 results, 670 face-to-face meetings and 185,000 votes in favour collected. The platform’s good results in Barcelona led to its extension to other municipalities, including Hospitalet de Llobregat, Sabadell, Badalona, Terrassa, Gavà, Sant Cugat, Mataró and Vilanova i la Geltrú. + +== Decidim Municipis + +Decidim is a multitenant platform, that is, a platform where as many instances can be used as needed, with a single installation. There are numerous successful examples of multitenant architectures in the world of software, such as the Wordpress free software for blogs project. It is especially useful for institutions that wish to provide Decidim as a third-party service. The Provincial Council's case is especially important as it can be used with a single installation - maintained, updated and sustained by a single entity - for as many local authorities as desired, thereby reducing installation and maintenance costs and providing technological solutions for improving citizen participation in medium-sized and small local authorities that would otherwise have much less access to such resources. \ No newline at end of file diff --git a/docs/ca/modules/understand/pages/background.adoc b/docs/ca/modules/understand/pages/background.adoc new file mode 100644 index 0000000000..d2b4cce858 --- /dev/null +++ b/docs/ca/modules/understand/pages/background.adoc @@ -0,0 +1,29 @@ += Background + +:experimental: +:icons: font +:page-partial: +:source-highlighter: highlightjs + +== Citizen participation in the Network Society + +Becoming a network(ed) society. Information and communication technologies (henceforth, ICTs) and their associated practices are bringing about irreversible changes to the social and political landscape. From the smallest residents’ association to the most intensive electoral campaign, from a neighbourhood organisation or social movement to the European Union, political relations are being increasingly determined by the use of digital devices and technologies. It seems that the future of democratic participation and collective action will be through the development of digital platforms and hybrid processes, which renovate traditional practices and combine them with digital ones (Fuchs, 2007). + +This transition coincides with the decline of representative systems over the last few decades (Norris, 1999; Pharr & Putnam, 2000; Tormey, 2015), which has contributed to the questioning of the legitimacy and sense of democracy itself, reduced and often identified with this system (Crouch, 2004; Keane, 2009; Streeck, 2016). Several authors have used the terms “post-representation" to refer to the emptying of power and meaning of the representative institutions that go from globalisation to disaffection and divestment of citizens (Brito Vieira and Runciman, 2008; Keane, 2009; Rosanvallon , 2011; Tormey, 2015). The various attempts to boost participation have proved unequal to the task of reversing these trends (Keane, 2011; Tormey, 2015). + +This long-running political crisis comes on the back of the financial and economic crisis of 2008, and is directly linked to this earlier crisis. Even so, millions of people mobilised in the face of the crisis, intent not only on demanding but also on experimenting and building a real democracy. The key development here was the 15M network-movement. It is in the context of technological hypermediation that information and communication technologies, used in the 1980s and 1990s to accelerate financial flows and globalisation (Castells, 1996), became crucial spaces and devices for a multitudinous re-appropriation of policy, as well as democratic experimentation (Martinet Ros et al., 2015). + +After four years of numerous successes and failures, new political citizen initiatives in May 2015 managed to take power in Spain’s main cities, including Barcelona. In this respect they were riding on the tide of countries such as Iceland, where the economic crisis had led to a period of citizen re-appropriation of the institutions and fertile democratic innovation, based on an intense and creative use of ICTs. + +Since 15M, most of the experiments aimed at introducing new forms of participatory and deliberative democracy (Barber, 1984; Habermas, 1994, 1996; Della Porta 2013) have been technologically mediated. As can be seen from the case of Iceland (as well as others, such as Finland), the democratising processes of citizen mobilisation and empowerment require technopolitical coordination (Rodotà 1997; Martinet Ros et al., 2015) to achieve their maximum richness and capacity. Technopolitics stems from the politicisation of technologies and technological re-assemblage of politics as well as the co-development and co-production of politics and technologies. As for forms of technopolitical participation and deliberation, digital and face-to-face practices, spaces and processes connect to and feed back from one another, acquiring a multi-layered dimension. These participatory devices are geared towards increasing the number, variety and parity of players that "take part" in the city’s common government, expanding and enriching the areas, forms and periods in which it takes place and helping to boost a collective intelligence (Levy, 1997) capable of taking on the complexity of contemporary urban life. Technopolitics needs to tackle the numerous limits of what has been called “digital democracy" (Hindman, 2008) starting by freeing itself from the technocentric and technooptimistic narratives around digitally mediated participation. + +New participatory processes are being built within a context full of opportunities and fraught with risks. The 2015 government programme and Municipal Action Programme (PAM) for 2016-2019 drawn up for the city of Barcelona gives centre stage to participation and, more specifically, innovation and the development of new democratic participatory models. PAM, ​​the development of which involved thousands of people, meets a clear social demand that calls for ​​a thorough redesign of the democratic system and its participatory mechanisms. This, however, is occurring in a context defined by: a) large politically, economically and socially excluded population sectors; b) increasing difficulty accessing participation as a result of the economic-crisis situation; c) a crisis over the legitimacy and operability of the representative democratic system and public authorities; d) an enormous technological dependency on private corporate infrastructures and services; e) a legal and political context adverse to direct democracy, social independence and territorial sovereignty; f) an abysmal institutional disadvantage in understanding social complexities through techniques analysing social-behaviour data and models that big technological companies and digitally coordinated services possess. + +[[h.2et92p0]] +== Data Control and digital infrastructures for democracy + +In the context of new configurations of informational capitalism (Castells, 1996), so-called “data capitalism" (Lohr, 2015; Morozov, 2015) or "surveillance capitalism" (Zuboff, 2015), the new digital infrastructures of democracy run the risk of contributing to dynamics contrary to such principles as privacy and technological sovereignty. Exclusive, closed and opaque platforms geared towards exploiting social activities for corporate profit are operating as non-democratic spaces occupying more and more areas of social life. This model is particularly dangerous in relation to the new infrastructures and processes of democracy that we are talking about. + +Compared to the exclusive and corporate infrastructural model, the public commons model, which we believe decidim.barcelona’s development needs to be inspired by, ​​is geared towards developing platforms where design, ownership and management are free, open and participatory, shared between public workers and citizens (organised or not). Under this model, not only the platform's code but also the data that are generated in it are processed and appropriated according to the logic of public and common management. The opening-up of everything and anything to participation, the hallmark of the commons as a political principle (as opposed to the private and even state-public sphere --- Laval & Dardot, 2015), seems to be a basic condition for participatory infrastructures to be fully functional. Participation has to be recursive here: it needs to help to define and establish the infrastructural conditions of its own existence and to affect the design, development and management of digital participatory platforms as well as the processes and results (e.g. data) that are generated in them. + +Put in the hands of large digital-service corporations, the algorithmic organisation of social life and the area we are concerned with, political participation, poses a risk to democracy and technological sovereignty that only a public commons effort in digital infrastructures can reverse. Only platforms based on free, open, transparent, secure and public-commons management software offer guarantees when it comes to building democracies of greater quality. The democracy of the future has to be built, then, on democratic infrastructures. \ No newline at end of file diff --git a/docs/ca/modules/understand/pages/social-contract-ca.adoc b/docs/ca/modules/understand/pages/social-contract-ca.adoc new file mode 100644 index 0000000000..cedfaf7ea8 --- /dev/null +++ b/docs/ca/modules/understand/pages/social-contract-ca.adoc @@ -0,0 +1,63 @@ += Contracte Social de Decidim + +[NOTE] +==== +Pots llegir el Contracte Social de Decidim en altres idiomes: xref:understand:social-contract-es.adoc[Castellano] - xref:understand:social-contract.adoc[English] + +Si vols traduïr-ho al teu idioma sisplau https://decidim.org/contact[contacta amb nosaltres]. +==== + +Codi de garanties democràtiques i de col·laboració oberta + +Aquest és el contracte social que tots el membres del projecte Decidim es comprometen a seguir. + +La utilització de la plataforma Decidim per part de qualsevol ajuntament o qualsevol altre ens municipal o supramunicipal, així com altres organitzacions, comporta l'assumpció total i íntegra d'aquest codi. + +== Programari lliure i continguts oberts + +El codi de la plataforma, així com els mòduls, llibreries o qualsevol altre codi que es desenvolupi per al seu funcionament, serà sempre programari lliure amb llicència https://www.gnu.org/licenses/agpl-3.0.en.html[Affero GPLv3 o posterior] en el cas dels nous desenvolupaments, i de llicències compatibles amb aquesta en el cas de reutilització d’altres codis. + +Així mateix, els continguts, dades, APIS i/o interfícies que el Decidim faci servir per interactuar amb qualsevol tipus d’usuari, compliran amb estàndards oberts i interoperables (ex. OpenID, RSS, OStatus, etc.), tendint sempre al màxim nivell d’integració amb els estàndards oberts més estesos. + +De cara a maximitzar la transparència i la col·laboració ciutadana en els processos, òrgans i mecanismes de participació, el contingut de textos, gràfiques, fonts tipogràfiques, àudio, vídeo o altres elements de disseny, es farà públic amb una llicència https://creativecommons.org/licenses/by-sa/4.0/legalcode[Creative Commons By-Sa]. + +Igualment les dades de la plataforma, especialment totes aquelles que es puguin recollir de manera sistemàtica a través de scrappers o altres tècniques de consulta massiva, seran publicades amb llicències http://opendatacommons.org/licenses/odbl[Open Data Commons Open Database License], en formats estandarditzats i accessibles (tipus CSV, JSON, etc.) i, sempre que sigui possible, amb eines que facilitin l’anàlisi i visualizació d’aquestes dades. + +== Transparència, traçabilitat i integritat + +La plataforma, així com la seva configuració, desenvolupament, implementació i ús actual o futur han de garantir i maximitzar en tot moment la transparència, la traçabilitat i la integritat dels diagnòstics, propostes, debats, decisions, o qualsevol altre objecte, mecanisme o procés de participació. + +Per transparència entenem que totes les dades relacionades amb aquests mecanismes i processos estiguin disponibles per a baixar, analitzar i tractar, seguint els formats i estàndards de compartició més exigents (accessibilitat, multi-format, etc.). + +La transparència serà una condició necessària pel seguiment dels processos i mecanismes de participació, però mai, i en cap cas, pel tractament de dades personals que vagin contra la defensa de la privacitat de la persona participant en la plataforma. + +Entenem per traçabilitat de les propostes la possibilitat de realitzar un seguiment complet, cap enrere (passat) i cap endavant (futur), de tot el que ha passat amb les propostes, plans, reglaments o qualsevol altre tipus d'objecte de decisió o participació inclòs en un procés o mecanisme. La plataforma ha de mostrar en tot moment com, per què, per qui i amb quin tipus de garanties un determinat objecte d'un procés de participació va ser descartat, aprovat o bloquejat. + +Entenem per integritat l'autenticitat d'un determinat contingut, i la garantia que aquest no ha estat manipulat o modificat sense que aquesta modificació quedi clarament registrada i sigui visiblement verificable i contrastable, amb l'objecte d'evitar la manipulació de les propostes o resultats dels processos o mecanismes de participació. + +== Igualtat d’oportunitats i indicadors de qualitat + +Al costat de les garanties anteriorment definides, la plataforma es compromet a garantir la igualtat d'oportunitats per a totes les persones, així com les seves propostes o altres contribucions que pugui acollir. La plataforma oferirà les mateixes oportunitats de partida a tots els objectes participatius (propostes, debats, etc.) perquè siguin vistos, discutits, comentats, valorats o tractats, sense discriminació de cap tipus. En aquest sentit la identitat digital de les persones usuàries de la plataforma serà sempre personal i intransferible, la verificació que otorgui drets de decisió a la plataforma ha de ser a més única, i serà l’ens responsable l’encarregat de garantir la no-suplantació d’una persona física o jurídica. + +Amb l’objectiu de garantir la qualitat democràtica de la plataforma es fomentarà l’ús d’indicadors de qualitat a partir dels processos i mecanismes de participació, així com l’activitat de les persones usuàries de la plataforma. També es fomentarà la compartició de la configuració dels diferents components així com de les dades obertes per a la definició d’aquests indicadors. + +La igualtat en la participació política de la ciutadania és un dels principis fonamentals del sistema democràtic i la plataforma, no només ha de garantir la igualtat d’oportunitats pel que fa als usos i funcionalitats, sinó també el dret d’accés. En aquest sentit cada ens promotor de la plataforma es compromet a impulsar aquelles accions que avancin en la direcció de facilitar i acompanyar l’accés a la plataforma a tota la ciutadania per igual de manera universal, propocionant les eines i els recursos adients per a que la plataforma estigui a l’abast de qualsevol persona que en vulgui fer ús. + +== Confidencialitat de les dades + +Es garanteix la confidencialitat i la privacitat de les dades personals que els ciutadans aporten per a participar en qualsevol de les funcionalitats i/o possibilitats de participació que ofereixi la plataforma DECIDIM en tot moment. En cap cas es cediran aquestes dades personals a tercers. Tampoc es farà un ús de les mateixes que vagi més enllà de l'estrictament necessari per a la gestió del registre d'usuaris o millores de la usabilitat de la plataforma. Sempre que la tecnologia de la plataforma ho permeti les expressions de preferències polítiques en els processos de decisió romandran inaccessible fins i tot per l’ administrador/a de la plataforma o els servidors. + +== Rendiment de comptes i responsabilitat + +S’adopta un compromís davant la ciutadania de respondre totes les aportacions i consultes en el mínim temps possible. També s’adopta el compromís de donar seguiment als resultats dels processos de participació, així com de donar resposta a aquelles demandes que específicament ho sol·licitin. Finalment s’assumeix el compromís d’estudiar la incorporació d’indicadors de seguiment dels processos de participació un cop estiguin finalitzats, per tal de poder avaluar de manera sistemàtica el seu desplegament. + +== Millora contínua i col·laboració interinstitucional + +S’adoptaran mecanismes de revisió i avaluació periòdica per facilitar la millora contínua de la plataforma. + +Es prioritzarà la col·laboració i l’intercanvi d’experiències entre institucions involucrades en el projecte, amb l’objectiu de millorar, corregir i generar nous desenvolupaments que ajudin a la millora contínua de la plataforma. + +En aquest sentit es facilitaran les condicions i entorns de col·laboració a l’hora de tirar endavant millores que apuntin a un benefici comú del conjunt de la plataforma, habilitant mecanismes de coordinació interinstitucional quan sigui necessari. +Condicions d’ús + +Totes els punts d’aquest codi han de quedar reflectits en les condicions d’ús que cada ens redacti per a la seva plataforma i mai entraran en contradicció. \ No newline at end of file diff --git a/docs/ca/modules/understand/pages/social-contract-es.adoc b/docs/ca/modules/understand/pages/social-contract-es.adoc new file mode 100644 index 0000000000..9f15eeba3b --- /dev/null +++ b/docs/ca/modules/understand/pages/social-contract-es.adoc @@ -0,0 +1,63 @@ += Contrato social de Decidim + +[NOTE] +==== +Puedes leer el Contrato Social de Decidim en otros idiomas: xref:understand:social-contract-ca.adoc[Català] - xref:understand:social-contract.adoc[English] + +Si lo quieres traducir a tu idioma por favor https://decidim.org/contact[contáctanos]. +==== + +Código de garantías democráticas y colaboración democrática + +Este es el contrato social que todos los miembros del proyecto Decidim se comprometen a seguir. + +El uso y desarrollo de la plataforma Decidim por parte de una institución o grupo social de cualquier tipo implica la aceptación total e integral del presente contrato social y su compromiso con el mismo. + +== Software libre y contenido abierto + +El código de la plataforma, junto con los módulos, las bibliotecas o cualquier otro código que se desarrolle para su funcionamiento y utilización, será siempre un software de código abierto libre con una licencia de https://www.gnu.org/licenses/agpl-3.0.en.html[Affero GPLv3 o versiones posteriores], siempre que el código se cree de nuevo y con licencias que sean compatibles con el anterior código cuando este se reutilice. + +Del mismo modo, el contenido, los datos, las API o cualesquiera otras interfaces que se utilicen para interactuar con cualquier tipo de usuario debe seguir estándares abiertos e interoperables (OpenID, RSS, OStatus, etcétera), procurando siempre maximizar su integración con los estándares abiertos de uso más amplio. + +Con el fin de maximizar la transparencia y la colaboración ciudadana en procesos, órganos y mecanismos participativos, el contenido, así como texto, gráficos, fuentes, audio, vídeo u otros elementos de diseño se publicarán bajo una licencia https://creativecommons.org/licenses/by-sa/4.0/legalcode[Creative Commons By-SA]. + +Los datos disponibles en la plataforma, especialmente todos los datos que se pueden recopilar de manera sistemática a través de scrappers u otras técnicas de consulta masiva, se publicarán bajo licencia http://opendatacommons.org/licenses/odbl[Open Data Commons Open Database], en formatos estandarizados y accesibles (CSV, JSON, etcétera) y, siempre que sea posible, con herramientas que faciliten el análisis y la visualización de datos. + +== Transparencia, trazabilidad e integridad + +La plataforma y su configuración, desarrollo, implementación y uso actuales o futuros deben asegurar y maximizar en todo momento la transparencia, trazabilidad e integridad de documentos, propuestas, debates, decisiones o cualquier otro objeto, mecanismo o proceso participativo. + +Por transparencia entendemos que todos los datos relacionados con todos estos mecanismos y procesos participativos están disponibles para su descarga, análisis y tratamiento, siguiendo los estándares y formatos más exigentes para compartir información (accesibilidad, multiformato, etcétera). + +La transparencia es una condición necesaria para el seguimiento de los procesos y mecanismos participativos, pero en ningún caso debe aplicarse al tratamiento de los datos personales o contra la defensa de la privacidad de las personas que participan en la plataforma. + +Entendemos por trazabilidad la capacidad de hacer un seguimiento completo de propuestas, planes, regulaciones o cualquier otro objeto de participación o decisión, tanto pasados como futuros, incluidos en un proceso o mecanismo. La plataforma debe mostrar en todo momento cómo, por qué, a través de quién y con qué garantías se desestimó, se aprobó o se bloqueó un determinado tipo de objeto de un proceso participativo. + +Entendemos por integridad la autenticidad de un contenido específico, con la seguridad de que no ha sido manipulado o alterado sin que esta modificación esté claramente registrada y sea visiblemente verificable y auditable. El objetivo de la integridad es evitar la manipulación de propuestas o resultados de procesos o mecanismos participativos. + +== Igualdad de oportunidades e indicadores de calidad + +Junto con las garantías previamente definidas, la plataforma promete garantizar la igualdad de oportunidades para todas las personas, así como para sus propuestas u otras contribuciones que la plataforma pueda albergar. La plataforma ofrecerá iguales oportunidades de inicio a todos los objetos participativos (propuestas, debates, etcétera) para que se puedan conocer, debatir, comentar, evaluar o tratar sin que exista discriminación de ningún tipo. En este sentido, la identidad digital de los usuarios de la plataforma será siempre personal y no transferible, la verificación que confiere derechos de decisión sobre la plataforma también debe ser única y la responsable de asegurar la no representación de una persona o entidad será la entidad administrativa responsable de la plataforma. + +La plataforma debe promover, con el objetivo de garantizar su calidad democrática, el uso de indicadores de calidad desarrollados a partir de los datos obtenidos de los procesos participativos y los mecanismos y la actividad de los usuarios. Se promoverá que se comparta la configuración de los diferentes componentes, así como datos abiertos, para la definición de estos indicadores. + +La igualdad en la participación política de la ciudadanía es uno de los principios fundamentales de cualquier sistema democrático, y la plataforma no solo debe garantizar la igualdad de oportunidades con respecto a los usos y las funciones, sino también el derecho de acceso. En ese sentido, la entidad a cargo de la plataforma asume el compromiso de promover acciones enfocadas a proporcionar acceso y apoyo a la plataforma para todos los ciudadanos por igual de manera universal. Las herramientas y los recursos apropiados a la plataforma están disponibles para cualquiera que los quiera usar. + +== Confidencialidad de los datos + +Se garantizará en todo momento la confidencialidad y privacidad de los datos personales que las personas puedan proporcionar para participar en cualquiera de las funcionalidades o posibilidades de participación que la plataforma proporcione. Los datos personales no se transferirán, en ningún caso, a terceros. Tampoco se utilizarán más allá de lo estrictamente necesario para el registro de usuarios y mejoras en la usabilidad de la plataforma. Siempre que la tecnología de la plataforma lo permita, la expresión de las preferencias políticas o la voluntad en los procesos de toma de decisiones seguirá siendo inaccesible incluso para el administrador de la plataforma o el servidor o servidores que la alojan. + +== Compromiso y responsabilidad + +Se establecerá un compromiso con los ciudadanos para responder a todas las consultas y contribuciones en el menor tiempo posible. También se adoptará un compromiso para dar seguimiento a los resultados de los procesos participativos y responder a esas demandas específicamente. Por último, se adoptará el compromiso de estudiar la incorporación de indicadores para el seguimiento de los procesos de participación una vez finalizados con el fin de evaluar sistemáticamente su implementación. + +== Mejora continua y colaboración interinstitucional + +Se estipularán mecanismos de revisión y evaluación periódica para facilitar la mejora continua de la plataforma. + +Se dará prioridad a la colaboración y al intercambio de experiencias entre las instituciones involucradas en el proyecto con el objetivo de mejorar, fijar y construir nuevos desarrollos para la mejora continua de la plataforma. + +En este sentido, se facilitarán las condiciones y los entornos de colaboración cuando se avance en mejoras que apunten a un beneficio común de toda la plataforma, y se permitirán mecanismos de coordinación interinstitucionales cuando sea necesario. +Términos de uso + +Todos los puntos de este código deben reflejarse en el acuerdo de licencia de usuario final (EULA, por sus siglas en inglés), documento que cada organización que presta servicios utilizando Decidim establece con los usuarios y que nunca deberá ser contradicho. \ No newline at end of file diff --git a/docs/ca/modules/understand/pages/social-contract.adoc b/docs/ca/modules/understand/pages/social-contract.adoc new file mode 100644 index 0000000000..240f49069d --- /dev/null +++ b/docs/ca/modules/understand/pages/social-contract.adoc @@ -0,0 +1,60 @@ += Decidim's Social Contract + +[NOTE] +==== +You can also read Decidim's Social Contract in other languages: xref:understand:social-contract-ca.adoc[Català] - xref:understand:social-contract-es.adoc[Castellano] + +If you want to translate it to your own language please https://decidim.org/contact[contact us]. +==== + +Code for democratic guarantees and open collaboration + +This is the social contract that all members of the Decidim community are committed to follow. + +By signing this Social Contract, any individual, institution or social group of any kind, commits to fulfill the principles established here when using, developing and participating in the community of Decidim. + +== Free software and open content + +The code of the platform, along with the modules, libraries or any other code that is developed for its functioning and deployment, will always be Free Open Source Software with an https://www.gnu.org/licenses/agpl-3.0.en.html[Affero GPLv3 license or later versions] whenever the code is newly developed and with licenses that are compatible with the above one when code re-used. + +Likewise, the content, data, APIs and/or any other interfaces that are deployed to interact with any type of user must follow open and interoperable standards (ex. OpenID, RSS, OStatus, etc.), always tending to maximize their integration with the most widely used open standards. + +In order to maximize transparency and citizen collaboration in participatory processes, organs and mechanisms, the content, text, graphics, fonts, audio, video or other design elements will be published under a https://creativecommons.org/licenses/by-sa/4.0/legalcode[Creative Commons By-SA]. + +The data available through the platform, especially all data that can be collected in a systematic way through scrappers or other techniques of massive consultation, will be published and licensed under http://opendatacommons.org/licenses/odbl[Open Data Commons Open Database License], published under standardized and accessible formats (such as CSV, JSON, etc.) and, whenever possible, with tools that facilitate the analysis and visualization of data. + +== Transparency, traceability and integrity + +The platform, and its current or future configuration, development, deployment and use must ensure and maximize, at all times, the transparency, traceability and integrity of documents, proposals, debates, decisions, or any other object, mechanism or participatory process. + +By _transparency_ we understand that all data related to all such participatory mechanisms and processes are available for download, analysis and treatment, following the most demanding standards and formats to share information (accessibility, multi-format, etc.). + +Transparency is a necessary condition for monitoring of participatory processes and mechanisms, but should never, in any case, be applied for the treatment of personal data or against the defense of the privacy of the people participating in the platform. + +We understand by _traceability_ the ability to fully track backward (past) and forward (future) what happened to the proposals, plans, regulations, or any other object of participation or decision included in a process or mechanism. The platform must at all times show how, why, by whom and with what guarantees a certain type of object of a participatory process was dismissed, approved or blocked. + +We understand by _integrity_ the authenticity of a specific content, and ensuring that it has not been tampered with or altered without this modification being clearly recorded and visibly verifiable and auditable. The goal of integrity is to avoid manipulation of proposals or results of participatory processes or mechanisms. + +== Equal opportunities and quality indicators + +Alongside the guarantees previously defined, the platform promises to ensure equal opportunities for all people, as well as for their proposals or other contributions the platform might host. The platform will offer equal starting opportunities to all participatory objects (proposals, debates, etc.) for them to be viewed, discussed, commented, evaluated or treated without discrimination of any kind. In this sense, the digital identity of the users of the platform will always be personal and not transferable, the verification that confers decision rights on the platform should also be unique, and it is the administrative entity in charge of the platform who should be responsible for ensuring non-impersonation of a person or entity. + +The platform should promote, with the aim of ensuring its democratic quality, the use of quality indicators developed on the basis of the data obtained from participatory processes, mechanism and user activity. Sharing of the setting of the different components as well as open data will be promoted for the definition of these indicators + +Equality in political participation of citizens is one of the fundamental principles of any democratic system and the platform, not only has to ensure equal opportunities with respect to the uses and functions, but also the access right. In this sense the entity in charge of the platform assumes the commitment to promote actions that advance in the direction of providing access and support to the platform for all citizens alike universally Giving tools and resources appropriate to the platform is available to anyone who wants to use. + +== Data confidentiality + +The confidentiality and privacy of the personal data that people might provide to participate in any of the functionalities and/or possibilities of participation that the platform provides shall be guaranteed at all times. In no case shall personal data be transferred to third parties. Personal data will not be used beyond what is strictly necessary for the purposes of user registration and improvements on the usability of the platform. Whenever platform technology makes it possible, the expression of political preferences or will in decision-making processes shall remain inaccessible even for the administrator of the platform or the server/s that host it. + +== Accountability and responsibility + +A commitment to citizens shall be taken to respond to all queries and contributions in the shortest time possible. A commitment shall also be adopted to follow-up the results of participatory processes and to respond to those demands which specifically request it. Finally, a commitment shall be taken to study the incorporation of indicators to monitor the participation processes once they are finalized, in order to systematically evaluate its implementation. + +== Continuous improvement and inter-institutional collaboration + +Mechanisms for periodic review and evaluation will be provided in order to facilitate the continuous improvement of the platform. + +Priority will be given to the collaboration and the exchange of experiences between the institutions involved in the project, with the aim to improve, fix and build new developments for the continuous improvement of the platform. + +In this sense, collaborative conditions and environments will be facilitated when moving forward improvements that point to a common benefit of the entire platform, enabling inter-agency coordination mechanisms when necessary. \ No newline at end of file diff --git a/docs/ca/modules/whitepaper/pages/decidim-a-brief-overview.adoc b/docs/ca/modules/whitepaper/pages/decidim-a-brief-overview.adoc new file mode 100644 index 0000000000..886e8bd9f5 --- /dev/null +++ b/docs/ca/modules/whitepaper/pages/decidim-a-brief-overview.adoc @@ -0,0 +1,16 @@ += Decidim: a brief overview +:experimental: +:icons: font +:page-partial: +:source-highlighter: highlightjs + +IMPORTANT: The content of this section is a fragment of Barandiaran, X., Calleja-López, A. & Monterde, A. (2018). Decidim: political and technopolitical +networks for participatory democracy. __Decidim’s project white paper__, pp. 7-26. (You can http://ajbcn-meta-decidim.s3.amazonaws.com/uploads/decidim/attachment/file/2005/White_Paper.pdf[download an alpha version of the document here]) + +*We have been busy building Decidim, it is now time to explain it*. The goal of this white paperfootnote:[A white paper is document that expresses the principles, vision, technical details and insights of a project with the goal of explaining, detailedly and contextually, its value, to help others understand, join and support the project.] is to explain in detail the nature of the Decidim project. The paper comes to fill a long lasting gap and outlines what the project is really about, why it is relevant, and how we (the Metadecidim community) have made it possible and developed it so far. It presents the Decidim platform, its features and design principles, but also other dimensions of the project, from the political to the technical. It also outlines the theoretical and political vision, as well as the practical and organizational work behind the project. This document also situates Decidim in a historical context defined by political struggle. Furthermore, it discusses some of the sociopolitical problems it tries to address and the possibilities it opens up looking forward. Authorship of this document entails not more, not less, than putting together, making explicit and elaborating a set of theoretical and practical principles and guidelines that have been developed by a multitude of participants in our community. + +*How to read this white paper and make it yours*. Readers might be interested on different dimensions of the project and we encourage you to find the chapter or section that best matches your interests. The introduction however is worth reading for any of you. We start with a brief explanation of what is Decidim, a definition of the project, how the platform works, the social contract that binds the project together, a description of the community and ecosystem behind it, the model of democracy that it embodies and the three dimensions of the project: the political, the technopolitical and the technical. We next move into the context in which Decidim has been developed to explain why we thought it was necessary to initiate or join this project, why it is relevant today both in the context of a crisis of democracy as we knew it and the context of an increasing control of social digital infraestructures by a few corporations. The rest of the paper is structured along the three planes or dimensions of the project: the political plane explains the model of democracy that Decidim embodies and makes possible, contrasting it with different limitations and models of contemporary democracy (representative democracy and party politics, technocracy and neoliberal models of governance, etc.) highlighting how Decidim makes possible to strengthen new and old forms of participatory democracy, collective intelligence and multitudinous political identities in public institutions and social organizations alike. The technopolitical planefootnote:[In short, by technopolitics we mean the intersection and hybridization of technology and politics. This is a conception of politics that focuses on the technical articulation of power, its structure and exercise, highlighting and intervening on devices, interfaces, codes, protocols, networks and methods in contrast with conceptions of politics that focuses on ideas, discourses, symbols and reasons. It is a conception of technology that focuses on its political dimensions, its mutability and its construction, highlighting and intervening in the power relationships, ideologies and logics in contrasts to views that understand it as value neutral and objective matters.] explains how this is made possible through the platform, its design principles, best configuration practices and the technological articulation of the project’s internal politics through the platform: the Metadecidim community. Finally, we extend into the details of the technical articulation of the project: how the software is produced, its architectural details, organizing protocols, legal licenses, collaborative practices, training programs, etc. + +include::what-is-decidim.adoc[leveloffset=+1] + +include::why-decidim.adoc[leveloffset=+1] \ No newline at end of file diff --git a/docs/ca/modules/whitepaper/pages/what-is-decidim.adoc b/docs/ca/modules/whitepaper/pages/what-is-decidim.adoc new file mode 100644 index 0000000000..e6c4a8d64a --- /dev/null +++ b/docs/ca/modules/whitepaper/pages/what-is-decidim.adoc @@ -0,0 +1,51 @@ += What is Decidim? +:experimental: +:icons: font +:page-partial: +:source-highlighter: highlightjs + +.Video: https://youtu.be/f6JMgJAQ2tc[Decidim: Free Open-Source participatory democracy for cities and organizations]. +video::f6JMgJAQ2tc[youtube, width=720, height=390] + +Decidim [http://decidim.org[http://decidim.org]], from the Catalan "let's decide" or “we decide”, is a digital platform for participatory democracy. +More specifically, Decidim is a web environment (a _framework_) produced in _Ruby on Rails_ (a programming language) that allows anybody to create and configure a website to be used in the form of a political network for democratic participation. It is built entirely and collaboratively as https://en.wikipedia.org/wiki/Free_software[free software]. + +The platform allows any organization (local city council, association, university, NGO, neighbourhood or cooperative) to create mass processes for strategic planning, participatory budgeting, public consultation, collaborative design, etc. It also makes possible to connect traditional in-person democratic meetings with the digital world: sending meeting invites, managing registrations, facilitating the publication of minutes, etc. +In addition, Decidim enables the structuring of government bodies or assemblies (councils, boards, working groups), the convening of consultations, referendums or channelling citizen or member initiatives to trigger different decision-making processes. Yet, the Decidim project is much more than that. + +*Definition*: _Decidim is a public-common’s, free and open, digital infrastructure for participatory democracy_. + +- By “participatory democracy” we mean that form of “government of the people, for the people and by the people” in which people take part as equals or peers (from latin _pars_, part, and _capere_, to take). By taking part we mean that, under the current political model, people take the part _of_ the sovereign power that belongs to them. And this should be an equal part for each. Moreover, we also mean, under an alternative model, to take part _in_ the autonomy of the social and political life, in the construction of collective potency: the capacity to coordinate and commit to collective action. +- The term “digital infrastructure” makes reference to a set of tools, resources, data-sets, documents, codes (legal, computer, etc.), interfaces and services that are digitalized or made accessible by digital means. This infrastructure is primarily a software platform for participatory democracy. ++ + Participants can create proposals, sign and support them, comment, receive notifications, attend public meetings or receive the minutes of the session. Administrators can design participatory processes, define the structure of democratic organs (like councils or committees), configure types of initiatives or set up consultations. The infrastructure also includes documentation, design (icons, images, logos, etc.), legal documents, datasets or training resources, among others. All these make possible to deploy a participatory democratic system in any organization (be it a municipality, a cooperative, an association, a union or a community). +- By “free and open” we mean that the project’s goods (the assets of the infrastructure) do no fall under the form of private property that excludes others from accessing, using, copying, modifying and re-publishing or reusing these resources but, instead, displays all the legal, technical and social means necessary to share them and open them to collaboration. +- Finally, the term “public-commons” indicates that the project is mostly financed and made possible by public institutions and is managed and designed by an open community constituted by public-servants, members of different associations, university researchers and students, activists and staff from foundations, workers from different companies or simply volunteers that commit to the principles of the project. For this infrastructure to be a common’s it is important that these partners organize democratically in relation to the project. In this sense, Decidim is a reflexive infrastructure that uses the very infrastructure to democratize itself through the MetaDecidim community. + +*Platform features and functional architecture*. Since the digital platform displays and embodies both the means of project organization and its democratic principles, it is important to explain how the platform works. Users of the platform (participants) interact through participatory mechanisms known as _components_ within different participatory _spaces_ that channel their democratic power to specific results. Participatory spaces are the frameworks that define how participation will be carried out, the _channels_ or means through which citizens or members of an organization can process requests or coordinate proposals and make decisions. _Initiatives_, _Processes_, _Assemblies_ and _Consultations_ are all participatory spaces. Specific examples of each of these include: a citizen initiative for directly changing a regulation (_Initiative_); a general assembly or workers’ council (_Assembly_); a participatory budgeting, strategic planning, or electoral process (_Processes_); a referendum or call to vote “Yes” or “No” to change the name of an organization (_Consultation_). The more notable components that are combined into spaces to deliver participatory mechanisms include in-person _meetings_, _proposals_, _blogs, debates, static information pages, surveys_, _results_ and _comments_. So, for example, the various phases of a participatory budgeting process (where members of an organization are called to decide how to spend a budget) can combine components in the following way: at an early phase, public meetings can be opened for citizens to analyze different needs classified by districts. In turn these meetings can lead to the design of a survey. The survey results can next be used to define a set of categories for projects to be proposed. The proposal component might then be activated for participants to create and publish their projects as solutions to the identified needs. These proposals can be commented on. After a period of deliberation, the voting component can be activated to select among the projects using a budget-expenditure system. Participants can then be called to a public meeting to evaluate the results and an assessment survey can then be launched for those who could not attend the meeting. Finally, the accountability component can be activated to monitor the degree of execution of the selected projects and people can comment on it. This is but one example of how components are combined in a space, but there are many other combinatorial possibilities. What makes Decidim particularly powerful is this combination of components within spaces, which provides an organization with a complete toolkit to easily design and deploy a democratic system adapted to its needs. + +*The social contract*: All members and partners of the Decidim project must endorse and follow a “https://decidim.org/contract[social contract]” that defines a set of guiding principles. The social contract can be summarized as follows: 1. _Free software and open content_: Decidim will always remain free and open to collaboration, without legal or technical obstacles for the use, copy and modification. To ensure this we use a set of licenses: https://www.gnu.org/licenses/agpl-3.0.html[Affero GPLv3] for the code, https://creativecommons.org/licenses/by-sa/4.0/[CreativeCommons By-SA] for the content (text, images, design, etc.) and https://opendatacommons.org/licenses/odbl/1-0/[Open Access Database License] for data. This means that Decidim will always remain auditable, collaborable, transparent, appropriable and trustworthy, all of which is fundamental for a democratic infrastructure. 2. _Transparency, traceability and integrity_: the content of participation will always remain transparent, traceable and integral. This means that all the content must be accessible and downloadable, it should always be known what happens with each proposal, its origin, where it was incorporated or why it was rejected, and the content needs to be displayed without been manipulated, any modification (if required) must be registered and be accessible and auditable. 3. _Equal opportunities, democratic quality and inclusiveness_: the platform must guarantee the democratic quality, the non-discrimination and equal opportunities for each participant and proposals, including objective indicators. The platform must comply with accessibility standards, its use must favour the integration of online and offline participation and organizations must deploy the means for mediation and training of participants. 4. _Privacy with verification_: participants must retain privacy of their personal data combined with verification. Personal data should never be displayed, nor sold or transferred to third parties while, at the same time, the unicity and democratic rights of participants must be preserved (meaning there cannot be two verified users corresponding to the same individual with democratic rights and all participants with such rights must be verifiable). 5. _Democratic commitment, responsibility and collaboration_: institutions using Decidim must commit to respond on time, be accountable for decisions taken through the platform, and to openly collaborate on its improvement. + +*Instances*. The best known and intensively used instance of Decidim, as a digital platform for participatory democracy, is https://decidim.barcelona[www.decidim.barcelona], with (as of December 2018) more than 30,000 registered participants, more than 1.5 million page views, over 300,000 visitors, 35 participatory processes, 1,141 public meetings channelled through the platform and 13,297 proposals, out of which over 9,196 have already become public policies grouped into 5,485 results whose implementation level can be monitored by citizens. The instance that actively explores more functionalities is http://meta.decidim.org[meta.decidim.org], the community portal that designs and supports the project. There is also a demo site with the latest version available for exploration and a training instance open to anybody to learn how to configure, administrate and use the platform. There are currently more than 70 instances of Decidim for organizations of different sorts ranging from municipalities such as https://osallistu.hel.fi/[Helsinki] or https://erabaki.pamplona.es/[Pamplona], to regional governments like the https://participa.castillalamancha.es/[Junta de Castilla la Mancha] or the https://participa.gencat.cat/[Generalitat de Catalunya], national governments like the https://monopinion.belgium.be[Belgium Federal State], NGO networks such as https://assembly.fundaction.eu[Fundaction] or https://participa.quorumglobal.org/[QuorumGlobal], cooperatives like https://participa.somenergia.coop/[Som Energia], or the https://participons.debatpublic.fr/[National Commission for Public Debate] (_Commission Nationale du Débat Public_) in France. We have an https://decidim-monitor.herokuapp.com[online monitoring tool] that captures the relevant public data of known Decidim instances around the world. + +*A sustainable ecosystem*. Developed at Barcelona’s http://ajuntament.barcelona.cat/innovaciodemocratica/en[Laboratory for Democratic Innovation], Decidim is the result of the joint effort of a network of collaborating entities and multiple participants leaded by Barcelona’s City Council. Apart from the organizations that use the platform and whose participants and administrators report bugs and suggest improvements, there is a network of 17 different collaborating entities, from software companies to institutional consortia, from research institutions to civil associations. The https://meta.decidim.barcelona/[Metadecidim] community uses an instance of the Decidim platform to organize the different dimensions of the project. As of August 7th 2018 it has 379 registered participants, it hosts minutes of 126 public meetings, details of eight assemblies or working groups, four participatory processes (welcome process, bug reporting, feature proposals, and training workshop process) together with various initiatives and two consultations aimed at defining the roadmap and software design of the platform, bug reporting, community and project governance, research and development. Official documentation and code are developed on https://github.com/decidim[Github] where the project hosts more than 20 repositories with over 50 contributors. They all together generate a sustainable ecosystem that governs, produces and provides services over the platform (deployment, adaptation, configuration, training, consultancy, administration, etc.). + +*Democracy and social empowerment*: Decidim was born in an institutional environment (that of Barcelona City Council during Ada Colau’s mandate 2015-2019 and under the impulse of Gala Pin councillor for participatory democracy), directly aiming at improving and enhancing the political and administrative impact of participatory democracy in the state (municipalities, local governments, etc.). But it also aims at empowering social processes as _a platform for massive social coordination for collective action_ independently of public administrations. Anybody can copy, modify and install Decidim for its own needs, so Decidim is by no means reduced to public institutions. There are different ways in which participatory democracy infrastructures can boost social, economic and political self-organization. Decidim is starting to be used for these purposes: for the internal organization of consumer and producer cooperatives for example, it is also helping movements organize and to design strategic planning, and it might soon be used to coordinate massive strikes or other forms of social action. The modular nature of its architecture is also enabling these organizations to develop their own components and improvements (such as crowdfunding, membership management, etc.) and to plug them back into Decidim, expanding its potential. Decidim comes to fill the gap of public and common’s platforms, providing an alternative to the way in which private platforms coordinate social action (mostly with profit-driven, data extraction and market-oriented goals). Ultimately, Decidim aims to present an alternative to the existing model of digital economy sponsored by corporate digital platforms (Amazon, AirBnB, Uber, etc). + +*The political, the technical and the technopolitical*. As we have repeatedly stressed, Decidim is more than a technological platform. It has required to assemble a variety of codes, realities and dimensions that go beyond programming code. We define it as a “technopolitical project” where legal, political, institutional, practical, social, educational, communicative, economic and epistemic codes merge together. Ultimately, Decidim is in itself a sort of crossroad of the various dimensions of networked democracy and society, a detailed practical map of their complexities and conflicts. We distinguish three general planes or dimensions of the project: the _political_ (focused on the democratic model that Decidim promotes and its impact on public policies and organizations), the _technopolitical_ (focused on how the platform is designed, the mechanisms it embodies, and the way in which it is itself democratically designed), and the _technical_ (focused on the conditions of production, operation and success of the project: the digital factory, collaborative mechanisms, licenses, etc.). The political plane is best illustrated by the use of Decidim in a city or organization, the type of democratic processes and decisions that are made through it. In other words, it covers what kind of politics can be done using Decidim: what kind of governance, conflict and power relationships can be channelled through it, thus, the kind of democracy it is capable to produce. Its model instance is decidim.barcelona, what happens within, how it alters the political space of the city. The second plane, the technopolitical, includes matters concerning the digital architectural design of Decidim: its interfaces, features, design principles, data policies, user experience, etc. It is a primarily a reflexive space of how technologies structure political processes. It is embodied in the Metadecidim platform and the community that surrounds it. Finally, the technical plane encompasses issues concerning primarily the programming and legal codes (information and legal infrastructures), but is also includes issues of education and knowledge (epistemic infrastructures), spatial and working organization. All three dimensions are part of the project. + +.Systematization footnote:[We have chosen Barcelona here as a scale of reference, but it could be the EU, or any other political territory or democratic organization. The term “scale” does not refer here to territorial extension, but to the number of agents and organizational complexity: the political involves more complexity, more agents, more conflict, more diversity and width of decision to be made, the technopolitical is a smaller community scale, the technical is a laboratory or factory that covers a subset of this community.] of various aspects of the Decidim project in the political, technopolitical and technical planes with the city of Barcelona as a reference. +[cols="\"", ,, ,", options="header"] +|=== +|Plane +|Relation +|Platform +|Mode +|Scale + +|Political |Superstructure |decidim.barcelona |Co-decision |City + +|Technopolitical |Structure |Metadecidim |Co-design |Community + +|Technical |Infrastructure |github.com/decidim |Co-production |Laboratory +|=== \ No newline at end of file diff --git a/docs/ca/modules/whitepaper/pages/why-decidim.adoc b/docs/ca/modules/whitepaper/pages/why-decidim.adoc new file mode 100644 index 0000000000..97722615c2 --- /dev/null +++ b/docs/ca/modules/whitepaper/pages/why-decidim.adoc @@ -0,0 +1,55 @@ += Why Decidim? + +:experimental: +:icons: font +:page-partial: +:source-highlighter: highlightjs + +The context that has given birth to Decidim is defined by two interconnected phenomena, each of which displays two poles. On the one hand, the last decades have witnessed a crisis of representative democracy (weakening of the Welfare State, subordination to market forces, inability to deal with global problems such as climate change, etc.) as well as the essay with some alternatives, such as grassroots organizations, new parties and institutional forms. On the other, the rise of cognitive capitalism, a system where the exploitation of information, knowledge, affects, and social relations has become core to the generation of economic value, is opposed by the emergence of free software, knowledge and culture. Both phenomena are deeply intertwined, and Decidim is born right at their very intersection, responding to the challenges and opportunities that they open for democracy. In this section, we briefly analyze these two phenomena, with a special focus on the way they impact contemporary democracy. + +== The contemporary crisis of democracy and its alternatives + +*Success and decline of liberal, representative democracies*. The basic structures of representative democracy have barely been updated in the last two centuries. The last three decades have seen both their success (with the multiplication of liberal democratic states all over the world) and their declinefootnote:[The decline has been ongoing for the last two decades, at least (Rosanvallon, 2008), and has been noticed across the “ideological and methodological spectrum” (Tormey 2015: 15). So much so that the crisis of liberal representative democracy has been identified with the crisis of democracy itself (Keane 2009; DellaPorta 2013). Different authors have denounced the technocratic tendencies and the neoliberal hegemony in this same period as heralding a stage of post-democracy (Crouch, 2004) or post-politics (Zizek, 1999; Rancière, 2001), while others, in a more limited way, have used the term "post-representation" to refer to the emptying of power and meaning of representative institutions by dynamics ranging from globalization and the dismantling of the welfare state to dis-affection and dis-empowerment (Brito Vieira and Runciman, 2008; Keane, 2009; Rosanvallon, 2011; Tormey, 2015). The meanings of “post-representation” are multiple, though, connected with different political readings of the crisis and the potential ways out of it, from those that give conjunctural interpretations to those that tie it to the transformations of modernity, its subjectivities and modes of sociality (Tormey, 2015).] (as diagnosed in a wide literature ranging from Pharr & Putnam, 1999 to Tormey, 2015). The decline has been expressed in various forms; we will mention two: practically, in the inability of contemporary democracies to deal with problems such as rising inequality (Piketty, 2014) or climate change (Klein, 2015); politically, in the decline of participation and trust in political parties and political representatives, as well as other political institutions (Mair, 2006; Castells, 2017). + +*Structural limits of representative democracy*: the triple challenge of complexity.footnote:[This section is a theoretical reconstruction of aspects that are historically embedded and power-laden.] The structure of modern democracies is based on representation (and, more specifically, electoral representation, Manin 1997, Van Reybrouck 2016), that is, on a series of mechanisms by which a few actors (political and administrative) are elected to manage public issues in the name of the whole of the citizenry, and are in principle accountable to it. Representation had its roots in medieval institutions, as a mechanism for nobles and knights to push their demands in exchange for consenting taxation (Pitkin, 1967). But it has proven its limits in coping with complexity and conflict: the complexity and conflictuality of society, of reality, and of organization. + +1. In social terms, it had to face the growth of the franchise, incorporating an ever more diverse constituency, and, in the last decades of the XXth century, the rise in cultural diversity, consumerism and the ideology of consumer choice in Western democracies (Laclau & Mouffe, 1985; Sennett, 1977, 1998) that generated an ever-growing variety of desires and perspectives to be listened to and articulated in government action. Furthermore, representation has proven open to systemic practices of nepotism or corruption, usually by powerful economic interests (Buchanan & Tullock, 1962; Peltzmann, 1976). In this context, representative mechanisms have ended up imposing the will of the few over the complex and conflictual wills of the people in public policy. +1. The second key challenge of complexity had to do with the reality. As the technoscientific transformation of reality accelerated, the responsibility and complexity of the problems facing public policy (f.i.: climate change) has only increased; and yet many of the systems for detecting social problems and mobilizing social knowledge to address them have remained oligarchic. The attack Friedrich Hayek (1944, 1945) launched on socialist planning can be launched against representative democracy too: reality is too complex for a centralized decision-making system. +1. The third challenge of complexity fed back into the previous two: it is the challenge (or meta-challenge) of communication and organization. Mobilizing and organizing the will, the knowledge, and the collective action of society into public policy faced numerous socio-technological limits: the millions of members composing a given social group could not express their will nor contribute their knowledge and effort to address their matters of concernfootnote:[Organization or knowledge may be insufficient to solve the problems facing democracy today. However, we there are reasons to believe they can contribute to do so.]. Still in the XXth century, the infrastructure required to bring an expression of will or knowledge of people distributed geographically or socioeconomically (f.i.: laborally) into a common problem or decision seemed out of reach. Even if they wanted, people could not gather in assemblies or other political processes: people were too many, lived far from each other, had their work schedules, and no free time at all. + +Representative democracy, where the many elect a few every four years, became a raw and oversimplified articulation of the will and knowledge of the many, in terms of the management by the few. So raw and simplified that it couldn’t solve the problems of society and became one of them: the people’s will was not represented or properly constructed but captured, the real problems were not solved by public representatives, but externalized to the market to be solved, and the problems generated by the market too often remained unsolved. + +*Social limits of representative democracy: the challenge of economic powers and the rise of neoliberalism*. The problems of representative democracy today are not of complexity only, though. They have as much to do with issues of social power. Many of the ailments of representative democracy in the last three decades can be rooted in three key shifts of power (DellaPorta, 2013: 23; Offe, 2011: 457): a shift of power from parties and parliaments to executive powers, reducing the meaning of parliamentary and party politics; from State to Market, with processes ranging from externalization and privatization of public services to the introduction of competition logics in public administration ( the process of “emptying out the State”, specially, the Welfare State, Rhodes, 1994), as well as the rise in power of global corporations; and from nation-states to international governmental organizations such as the EU, the IMF or the World Bank, frequently aligned with such corporations, emptying both States and democracies of much of their legitimacy and power (Laval & Dardot, 2017; Crouch, 2011; Sánchez Cuenca, 2014). Political parties have suffered particularly: from the mid XIXth to the mid XXth century, the mass party model was guided by clear programs and rooted in a thick social structure connected to grassroots spaces and organizations, unions, media, and so on. The catch all party model rising in the 80s, however, had pragmatic, variable programs and supported itself primarily in mass media (in particular, tv) and polls. A fragmentation of socioeconomic composition and the discourses around it, no more easily divisible into “capitalist and proletarians” (Laclau & Mouffe, 1985), as well as the rise of a mass-mediatized consumer society based on an exaggerated and depoliticising individualism (Sennett 1977, 1998) paved the way for such party transformations. The traditional mass party saw a steady decline of its grassroots in Western democracies until today. This emptying out of representative democracy was tied to the rise of neoliberalism[multiblock footnote omitted], and has brought a crisis of legitimacy and meaning of democracy itself, frequently identified with representation (Crouch, 2004; Streeck, 2016). The Great Regression of 2008 (Eichengreen & O’Rourke, 2009) and the austerity politics that followed it (Blyth, 2013) seemed to confirm this shift and its implications, with States first going into debt to save the financial sector and then applying (or being applied) austerity policies without or against citizen consultation, guaranteeing the sustenance of capital accumulation while losing more and more capacity for social provision (Jessop, 2015). + +*The alter-globalization challenge to the shift of power away from democracy*. These processes haven’t gone unchallenged. The last two decades have been a period of democratic movements of resistance. At the turn of the century, the alter-globalization movement called for an alternative to the rising neoliberal globalization, an alternative globalization tied to a radicalization of democracy, social justice, human rights, as well as economical and ecological sustainability (Klein, 1999; Stiglitz, 2002; DellaPorta & Tarrow, 2005). This “movement of movements” had socio-technical networks as a key part of its organization. It generated a “cultural politics of networking” where networks operated not only as technologies, but also as models for the definition of social norms and political forms (Juris, 2008): features such as free association and information, non-hierarchical and flexible organizations, globally distributed but synchronized, locally rooted action, or autonomous networked media were among its key features. + +*The crisis of legitimacy of the neoliberal-democracy narrative*. Beyond the work of these movements, it was the 2008 Great Regression what brought about a crisis of legitimacy of the neoliberal narrative. It opened a period of crisis of neoliberalism (Dumezil & Lévy, 2011), not so much in economics but, specially, in political and social terms (in economic terms the crisis lasted less, followed by a deepening of accumulation processes, Jessop, 2015): the discredit of narratives praising free trade, privatization, international economic institutions, and global markets, otherwise, the discredit of the ideological practice preeminent since the 80s, spread along with new social and political movements, from the progressive to the reactionary. This crisis of neoliberalism fed into the crisis of representation mentioned earlier, with a peak of distrust towards official institutions, from politicians and governments to banks. The result has been a crisis of the existing model of neoliberal representative democracy (Castells, 2012, 2017; DellaPorta, 2013; Gerbaudo, 2012, 2017). + +*The 2011 wave of networked movements of the squares*. 2011 is a key year in political terms. Progressive social movements swept the world, from the Arab Springs in the North of Africa to Occupy Wall Street in North America: they challenged the political and economic status quo and the rising inequality, while reclaiming a more radical democracy (Postill, 2017; Gerbaudo, 2012; DellaPorta, 2013, Flesher Fominaya, 2014). The 15M movement was among the key referents of this wave of networked movements of the squares, which intensively used digital networks. In Spain, 15M was at the upshot of a cycle of contention that saw the emergence of new forms of collective organization (from the networked squares of 2011 to the direct action tactics of the Platform of People Affected by Mortgages Romanos, 2014), new political parties (from Podemos to Barcelona en Comú), and the victories in dozens of cities by citizen initiatives in the Spring of 2015 (Cádiz, Barcelona, Madrid, A Coruña, etc.) (Feenstra et. al, 2017; Calleja-López & Toret, 2019). The use of digital platforms were crucial in all of these undertakings, oriented to increase the depth of participation of anyone and everyone into the political field (Aragón et al., 2017; Calleja-López, 2017; Monterde, 2016; Toret et al., 2015). Digital networks seemed to provide spaces where the disaggregating forces of neoliberal society were partially and temporarily countered and redirected to nurture collective action both online and offline. The upward extractivism of global finance and corporations was answered with democratic, locally rooted and globally connected initiatives. In the case of Spain, the struggle around the city, from the squares of 2011 to city halls in 2015, has become ever more relevant in this trajectory, in the form of municipalism (Rubio-Pueyo, 2017; Junqué & Shea, 2018; Roth, Monterde & Calleja-López, 2019). + +*The rise of right-wing populism*. But these achievements have showed limits and perils, too. At the international scale, the wave of movements tended to fizzle out. In countries such as Spain and Tunisia, the movements left new parties or constitutions, even though the general political and economic landscape remained gloomy (Castells, 2017); countries such as the US or Egypt (or Spain itself), has seen the advent of increasingly authoritarian governments. Moreover, right wing movements spread across Europe and North America (Castells, 2017). The final result has been defined as the end of the neoliberal era and the advent of a populist moment (Gerbaudo, 2017; Rodrik 2017), in which the basis of the _status quo_ loses its compelling power and is challenged by actors invoking the common people, from left and right, with recent successes for the latter such as the rise of Donald Trump to the presidency of the US or the Brexit. The various negative effects of neoliberalism, particularly accelerated after the Great Regression, such as increasing inequality, the normalized connivance between economic and political power, the dismantling of welfare structures along with rising public debt, social and political disempowerment in the face of transnational corporate and financial powers, the eclipse of the public sphere resulting from phenomena such as a rising individualism or closed multiculturalism (Sennet 1977, 1998), have generated a suspicion towards the status quo in which right wing and nationalist positions are gaining ground. In many cases, such rise was facilitated by social networks such as Facebook and Twitter, used by corporations (such as Cambridge Analytica), or political actors (such as the Trump or the Brexit communication teams). We analyze the various edges of this phenomenon in the following chapter. Resuming, in the political plane, the last decades have witnessed the tension between processes showing the limits or undermining democracy and others trying either to stop such undermining, or even calling to radicalize democracy. Decidim is firmly rooted in this last trend. + +== The rise of the network society, cognitive capitalism and knowledge commons + +*First generation digital networks: informational networks.* A similar opposition between conservative tendencies and progressive ones can be found on the moving field of the so-called digital economy. The 90s saw the rise of the Internet and the WWW to the status of phenomena of global proportions. The initial hopes for the cyberspace envisioned by figures such as John Perry Barlow (in this Declaration of Independence of Cyberspace) anticipated a time where many of the old social structures would be superseded by a new dawn of human creativity and freedom from old governments and social constraints (bodies, sexes, races, etc.). Since its origin, the construction of the internet resulted from the conflicting interests, visions, and practices of various actors (Abate, 1999; Rasmussen, 2007), specially, military and research actors. The idea of a distributed (and thereby resilient) information network was tied to the threat of possible high scale attacks to information centers by the Soviet Union (Baran, 1964), but even more so to practices and narratives of information and knowledge circulation and freedom among university researchers (Leiner et al., 1997). Already in the 1990s, a first generation of worldwide digital networks, informational networks, paradigmatically exemplified by the World Wide Web, allowed free the flow of information and users between websites. + +*Old and new communication powers: from mass communication to mass self-communication.* This seemed to be the dawn of a “networked public sphere” (Benkler, 2006), where earlier mediators of social communication receded from view. The XXth century protagonism of capital-intensive media such as radio, newspapers or TV, with their olygocratic editorial teams, seemed to give way to an explosion of uncensored digital media such as websites and blogs. Social communication was said to be in its way to de-intermediation, its power to be more equally distributed (Rushkoff, 2002; S Republic of Letters in XVIIth and XVIIIth centuries), had been shaken in the XIXth and XXth centuries by technologies that afforded one-to-many circulation of informhirky, 2009). Early modern communication ecologies, based in one-to-one interactions, either face to face or via letters (which still generated complex systems such as theation such as newspapers, radio or TV: this was the model of broadcasting, which potentiated a centralization of social communication, mass communication, where a the majority of the public played a passive role. The Internet and social media afforded new versions of these earlier communication models, and combined it with a new model, that of many-to-many communication, in which many emissors were able to generate (and react to) messages reaching many others, without having to pass through any mediating center (Kellner, 1999). This was giving way to “mass self-communication” , a model in which mass communication is “self-directed in the elaboration and sending of the message, self-selected in the reception of the message, and self-defined in terms of the formation of the communication space” (Castells, 2009). This did not imply an equal redistribution of communication power in society but rather its re-structuration, with new actors, including networked social movements, having an opportunity to play a role in a media sphere earlier controlled by big corporations. The fourth power of mass media journalism gave way to a fifth power: digital networks (or perhaps to a complex, more decentralized form of the fourth, a “hybrid media system”, Chadwick, 2008). + +*The rise of informational and cognitive capitalism.* The Internet and digital networks did not only affect the public sphere in a potentially democratizing tendency, they also greatly contributed to push globalization forward as a historical process, beginning with the acceleration of global finance (Castells, 1996). At the core of the economy behind neoliberal globalization were information and other immaterial assets, such as knowledge, affects, human relations, etc. The result was a new form of capitalism: informational and cognitive capitalism (Castells, 1996; Fumagalli, 2007; Moulier-Boutang, 2007; Vercellone, 2006). Differently from industrial capitalism, where the transformation of material resources into commodities was at the core of the process of capital accumulation, now it was information, knowledge, affects, and social relations what became key in the generation of economic value. Intellectual property is a key legal mechanism under this new paradigm, used to privately appropriate social knowledge and natural information, e.g.: strong copyrights on books and music, patents on technoscientific innovations, traditional medicines and techniques, or animal and plants DNA (Fumagalli, 2007). This in spite of the fact that information and knowledge are non-rival goods, with zero marginal cost, meaning that they can be reproduced and used without depletion. Furthermore, in most cases their value increases with use: the bigger the spread of trademark the higher its value, the more a song is listened to the higher its value. While digital networks provide the means to freely reproduce and re-distribute this kind of goods, artificial scarcity is generated via legal and technological mechanisms. This appropriation has not only the form of a “theft”, but is rather based on structures and processes (from education to entrepreneurship policies) that orient, transform and produce new personal and collective practices, desires, affects and relations sustaining the neoliberal system (Laval & Dardot, 2014). + +*From cognitive capitalism to platform & surveillance capitalism*. In time, the digital element in these processes has only gained prominence. The so called web 1.0 (O’Reilly, 2005) exhibited various limits to users’ interactions with both digital contents and other users. Differently, web 2.0 was all about interaction: the web as a platform. This exponentially increased the quantity and quality of information that could be extracted. By the late 2000s the emancipatory hopes tied to social networks were heavily in dispute (Morozov, 2011), and by the late 2010s the situation seems to be rather the opposite of the anticipated. From Amazon to Tinder, technological platforms are a way for a few corporations to extract data (going from activity, to opinions, to metadata), while leaving users with a little a say on what is gathered, how it is used or how the resulting benefits are distributed; this institutes a regime of “data extractivism” (as suggested by Evgeny Morozov). These corporations have access to more details of the lives of millions of people than any State or corporation to date. Combined with the development of new techniques of big data analysis and the always increasing rate of computing power, the infrastructural conditions were there for a socioeconomic mutation. Corporations such as Google or Facebook were heralding a specific form of informational and cognitive capitalism, which has been variously qualified as “platform”, “data” or “surveillance” capitalism. These three names speak of three connected elements: digital infrastructures, data, and social control. Digital platforms have become the basic means of production and management of a valuable resource (data) out of its source, human activities (Srnicek, 2017). Data, considered as the new “oil” (The Economist, 2017), “infrastructure” (Kawalek & Bayat, 2017; Prospect, 2017), “labor” (Arrieta et al., 2017), etc. is processed using data science methods and business intelligence (from modern statistics to Artificial Intelligence). Then, it is used in various ways in social processes of data-driven politics, science and economics (Lohr, 2015). This process of extraction, processing, and use is radically oligarchic. Corporations such as Alphabet (which includes Google), Microsoft, Amazon or Facebook have earned a monopolistic positionfootnote:[Alphabet, Microsoft (a giant from the early days of cognitive capitalism) and Amazon occupy three of the four top positions of the rankings by market capitalization. Facebook occupies the 8th place, but remains the third most visited web, with Google and Youtube (both owned by Alphabet) being the first and the second, according to Alexa and SimilarWeb, as of March 2018.]. A few actors have become the owners of both platforms and data and can thereby surveil social life in order to experiment with it: surveilling thereby appears as a first step to what we may define as “surwilling”, or willing and shaping the will of others from above; otherwise, platform corporations move from unveiling social life to orienting (or “willing”) it from above. If surveillance intrudes into privacy, into the negative freedom of people (to use Isaiah Berlin’s), into their freedom-from, surwilling shapes their positive freedom, their freedom-for. Platforms crucially influence the information people get about others and about the world, be it from friends, social actors, mass media, advertising corporations or beyond. The result is the emergence of new forms of knowing and influencing the actions of millions of people, a new techno-political power in the hands of States (such as NSA programs), corporations, or political actors (such as the Trump or the Brexit communication teams). This surveillance (Zuboff, 2015) and surwilling capitalism brings ever closer to a Big Brotherhood dystopia. + +*Towards technopolitical heteronomy? From mass self-communication to mass capture.* Social networks such as Facebook or Twitter have grown to user bases in the billions in only a decade. This has turned them into new intermediaries of social communication, if not of social life as such. Mass self-communication has risen hand in hand with mass capture, the capture of masses of data, human actions and interactions. These platforms feed from, and feed on, some dynamics already diagnosed by Guy Débord (1967) around the society of the spectacle, heralding a society of hypervisibility and exhibition tied to capitalism. Exhibition and self-exhibition (from the intimate everyday life to political opinions and actions, passed through a variety of fiction filters), are stimulated and situated at the center of the functioning of these platforms (Crogan & Kinsley, 2012; Goodwin et al., 2016), which are in turn at the center of an economy of attention. Furthermore, in social networks, surveillance and control is not only top-down but also bottom-bottom. There are two axes of surveillance, vertical and horizontal. While the first tends to be unidirectional, the second is frequently (though not always, as platform privacy settings are variable) horizontal and multidirectional: users can and do surveil each other, with playful or predatory (Albrechtslund, 2008; Tokunaga, 2011) purposes. The monopolistic concentration of power around social network corporations becomes daunting: Facebook, for instance, also owns Instagram and Whatsapp. Key rules of social relations are not produced in and decided by processes, actors or conflicts spread in space and time, but rather are increasingly decided and designed by a reduced number of people and specific interests (geostrategic, economic, etcetera). The power of social networks moves from selling advertisement (a concrete type of content) to a deeper shaping of social attention and affects (Grizzioti, 2016), and thereby, behavior. The social anomie resulting from several decades of neoliberalism had given way to a landscape in which the autonomy resulting from new forms of multitudinous self-organization in networked social movements was underlied and exposed to new forms of corporate influence via technologies, that is to say, technopolitical heteronomy. + +*How datacracy is dissolving democracy.* Democracy became exposed to datacracy, namely, to the strategic use of big data and digital platforms to gain and exercise political and cultural power (Cancellato, 2017; Gambetta, 2018). The rise of Barack Obama in 2008 and Donald Trump in 2016 to United States presidency are examples of how social networks and big data operations have a growing impact on electoral processes, affecting the networked public sphere. Trump invested 94 million dollars in expert consultants and Facebook’s paid advertising services (The Guardian, 2017). More importantly, the campaign included numerous examples of political automation: the use of chatbots, posting bots, false profiles and the automated inflation of metrics and followers (Bessi & Ferrara, 2016). These were frequently tied to the diffusion of _fake news_: biased, incomplete or spurious media stories with exaggerated and emotional adjectivation (Graves, 2018). This fed back with the activity in platforms such as 4chan, Omegle, Reddit and Tumblr, where Trump's followers formed an irregular community, self-appointed as _Alt-Right_ (Nagle, 2017a; 2017b), which showed clear manifestations of sexism, xenophobia, islamophobia, anti-feminism, intolerance and white supremacy, openly or in the form of satirical jokes and memes (Mendoza-Denton, 2018, Van-Zuylen Wood et al, 2018; Pollard, 2018). He may also has been supported by Russian espionage and communication experts, who received large financial incentives, showing the geopolitical character of these technopolitical struggles (The Guardian, 2018a). Finally, there was the hiring of London consulting company Cambridge Analytica, which extracted personal data from 87 million Facebook profiles between 2014 and 2016 to analyze their political preferences (De Llano, 2018), using a Facebook application disguised as a “personality test” (Cadwalladr, 2018; The Guardian, 2018b). This is not exceptional, though. Cambridge Analytica intervened in the last presidential campaigns of Argentina, Mexico, Brazil, Sri Lanka, Malaysia, China, Australia and South Africa, as well as the referendum that caused the separation of Britain from the European Union, known as _Brexit_ (The Guardian, 2018b). These cases have drawn public attention to issues such as the vulnerability of online personal data, the power of corporations and States that can access these databases (either legally or illegally) and use these platforms for influencing and shaping public discourse and action (Mottram, 2018; Tufekci, 2018). In words of Facebook's founder and president, Mark Zuckerberg, the platform has no affinity with any political party, and any client can access its services (Price, 2018). However, Facebook algorithms keep working as “black boxes”. Zuckerberg's company has never shared details of its technical operation or data processing software or policies besides the content of Facebook's terms of use, which still remain general, abstract, and non-negotiable. This opacity becomes ever more problematic as the role of platform algorithms, political automation and Artificial Intelligence (including machine and deep learning) systems grow (Trevathan, 2006; Manovich, 2013; Zysman & Kenney, 2015, 2016). Datacracy will pervade more aspects of people’s lives to the extent that the increasing pervasiveness of digital platforms grows and follows the current corporate and technocratic logics. + +*Free software, knowledge, culture, and internet.* However, in continuous struggle and contact with these dynamics there has also been a proliferation of actors, movements, practices and projects oriented by principles such as democracy, freedom, social justice, or commonality. For instance, as an alternative to commercial social networks, also in the second half of the 2000s, there emerged alternative social networks, from Diaspora (with more than one million users) to n-1, a platform widely used during the 15M movement, together with a self-managed network of blogs (wordpress), voice-call rooms (mumble) and collaborative real-time writing pads (etherpad). They followed in the steps of a tradition dating back, at least, to the 1980s and 1990s: the WWW and free software such as the GNU/Linux operating system, have provided free digital services (free as in “freedom” and not only as in “free beer”, as Richard Stallman put itfootnote:[The four basic freedoms are the freedom to run the program for any purpose; to access its source code, study how it works, and change it; to redistribute copies; to distribute copies of modified versions. They can be retrieved at https://www.gnu.org/philosophy/free-sw.en.html[https://www.gnu.org/philosophy/free-sw.en.html].]) to millions of people over world. Furthermore, the GNU license was a legal tool to produce and reproduce such free digital infrastructures. The Creative Commons license expanded its possibilities to cultural works. First, free software licenses and, later (as the principles and practices of free software spread to other fields, Kelty, 2008) creative commons licenses helped to outline an alternative paradigm of collective appropriation of informational and cognitive wealth. Projects such as Wikipedia brought the free software culture into knowledge. This neatly fitted with the discourse of scientific knowledge (Merton, 1942), traditionally self-proclaimed universalism, communalism, and disinterestedness, specially up to the 1980s and landmarks such as the Bay-Dohle Act, that put science into a path of closure, privatization, and corporate interestedness. By putting the classic Encyclopedia Britannica and Microsoft’s Encarta out of business Wikipedia became an example of and alternative “open knowledge” regime, from its production to its appropriation. Softer forms of this regime, such as “open access”, have gained solid ground in time. Under this alternative paradigm, platforms for digital collaboration became key in the collective production of information and knowledge out of the proprietary logics of informational and cognitive capitalism. The broad category of “digital commons” has served to encompass a variety free software, knowledge and culture products. More broadly, the term FLOK (Free/Libre Open Knowledge) includes also non-digital forms of knowledge that generate common practices and democratic communities out of the proprietary form: from education to hardware, from engineering to culture, from biology to software (Villa-Viñas & Barandiaran 2015). More recently, struggles around Net Neutrality (have brought to the front the centrality of the control of concrete aspects of a common such as the Internet (in this case, the discrimination a types of data traffic on the network by service providers and governments) for the flourishing of other basic rights such as freedom of speech or equality in the network societyfootnote:[Various reports and a history of the battle around Net Neutrality can be found at https://www.laquadrature.net/en/Net_neutrality[https://www.laquadrature.net/en/Net_neutrality].]. + +*Hacker culture, digital communities and knowledge commons*. Free/Libre and Open Knowledge does not stand simply as a commodity or a good that is accessible by means of legal and technical devices. It is followed and often preceded by certain forms of social relation, modes of production and the collaborative culture that is necessary to produce and sustain it. The hacker culture, often associated with an ethics of fun, openness and sharing (Himanen, 2003), is even so with concrete practices (Kelty, 2008) and forms of politics (Barandiaran 2003; Maxigas, 2012); crucially, it involves the attitude to transform the way in which artifacts (in its broader sense: from institutions to modems) are given to us in order to open them up to new possibilities: a practical believe on the capacity (both individual and collective) to challenge existing limits and to collaboratively explore how to break, re-assemble and build upon what is available. In doing so communities are created around technical challenges, common infrastructures, collective resources and struggles. In turn, these communities are faced with a myriad of governing problems and these are solved by a combination of recursive tools and democratic/collaborative procedures: from the mechanisms to solve disputes in Wikipedia, to the voting procedures of the Debian community, from Forks (the duplication of the content and resources of a project to create a new one, something that is made possible by the non-proprietary form of knowledge and technologies involved) to version control systems in software development. Added to the unlimited reproductive capacity of digital goods, all this provides the sphere of Free/Libre Open Knowledge with a productive power and collective management capacity that results on a knowledge commons that often parallels that of profit-driven corporations and has been the object of extensive study (Hess & Ostrom, 2007; Benkler, 2006). + +*Decidim in context.* As we have shown, democracies in the network society face the double challenge of the crisis of representative democracy and the rise of platform capitalism. The first phenomenon is tied to neoliberalism (and its periodic crises) as well as to the emergence of progressive and reactionary networked politics. The second phenomenon underlies new social conditions as well as those very forms of networked politics, while it is opposed by commons-oriented forms of production. The following image can help to understand the role of Decidim in this context. + +.Decidim model for a democratic society. +image::decidim-in-context.svg[Image, width=90%] + +Under platform capitalism, corporations extract social data in huge quantities and turn it into wealth and power over people and institutions (this is what, in the image below, we label “algorithmic governance”), challenging democracy as we know it. New forms of distributed platform capitalism (airbnb, uber, deliveroo, etc.) herald forms of capilar exploitation of social wealth. However, non-corporate, collaborative forms of digital production exist, and they make possible to find alternatives. Decidim is one such alternative. It is conceived as a commons’ digital infrastructure for participatory democracy that is publicly supported and democratically designed, using itself for such purpose. The value of Decidim stands out in a context in which democratic collective intelligence faces the challenge of corporate artificial intelligence and datacracy, where the democratic impulse of networked social movements, from alter-globalization to 15M, faces reactions by market, State and right wing forces, and where public and commons’ institutions require democratic innovative infrastructures to overtake market-driven innovation in solving the complex social challenges of our times. Whereas a dominant trend pushes the governing of infrastructures and services to the top-right of the picture, towards increasing privatization and centralization in the hands of big corporations, the socio-technical potential exists to shift this trend towards the bottom-left corner: towards decentralized and public-common’s ecosystems of services, infrastructures and goods. Decidim contributes to this transition by boosting democratic participation into the governing of public bodies, social organization, the cooperative economy as well as the joint circulation among the three. So far, public emphasis has been put into regulating consumer markets, corporate governance and economy as a means to slow down privatizing trends and its negative consequences; meanwhile, corporate interests keep exerting their lobbying influence into the public and state institutions. Instead, Decidim contributes to the strengthening of innovative forms of commons-oriented economy and participatory democracy. The next section deals with “how” this strengthening operates, explaining how Decidim explores the potential of participation at various scales. \ No newline at end of file diff --git a/en/antora.yml b/docs/en/antora.yml similarity index 86% rename from en/antora.yml rename to docs/en/antora.yml index 621d4b23a0..ea26257c2b 100644 --- a/en/antora.yml +++ b/docs/en/antora.yml @@ -1,6 +1,6 @@ name: en title: "Decidim Documentation" -version: master +version: develop asciidoc: attributes: page-lang: en@ diff --git a/en/modules/ROOT/assets/images/workflow-features.svg b/docs/en/modules/ROOT/assets/images/workflow-features.svg similarity index 100% rename from en/modules/ROOT/assets/images/workflow-features.svg rename to docs/en/modules/ROOT/assets/images/workflow-features.svg diff --git a/docs/en/modules/ROOT/nav.adoc b/docs/en/modules/ROOT/nav.adoc new file mode 100644 index 0000000000..49ddf1bdec --- /dev/null +++ b/docs/en/modules/ROOT/nav.adoc @@ -0,0 +1,226 @@ + +* xref:install:index.adoc[Getting started] +** xref:install:manual.adoc[Manual Installation] +** xref:install:checklist.adoc[Checklist] +** xref:install:update.adoc[Update] + +* xref:configure:index.adoc[Configure] +** xref:configure:environment_variables.adoc[Environment Variables] +** xref:configure:initializer.adoc[Initializer] +** xref:customize:index.adoc[Customize] +*** xref:customize:authorizations.adoc[Authorizations] +*** xref:customize:code.adoc[Code] +*** xref:customize:data_consent.adoc[Data consent] +*** xref:customize:gemfile.adoc[Gemfile] +*** xref:customize:images.adoc[Images] +*** xref:customize:javascript.adoc[Javascript] +*** xref:customize:logic.adoc[Logic] +*** xref:customize:menu.adoc[Menu] +*** xref:customize:oauth.adoc[OAuth] +*** xref:customize:styles.adoc[Styles] +*** xref:customize:texts.adoc[Texts] +*** xref:customize:users_registration_mode.adoc[User registration mode] +*** xref:customize:views.adoc[Views] +** xref:services:index.adoc[Services] +*** xref:services:activejob.adoc[Active Job] +*** xref:services:activestorage.adoc[Active Storage] +*** xref:services:etherpad.adoc[Etherpad] +*** xref:services:maps.adoc[Maps] +*** xref:services:sms.adoc[SMS] +*** xref:services:smtp.adoc[SMTP] +*** xref:services:social_providers.adoc[Social Providers] + +* xref:admin:index.adoc[Admin] +** xref:admin:first_steps.adoc[First steps in Decidim] +** Settings +*** xref:admin:configuration.adoc[Configuration] +*** xref:admin:appearance.adoc[Appearance] +*** xref:admin:homepage.adoc[Homepage] +*** xref:admin:scopes.adoc[Scopes] +*** xref:admin:areas.adoc[Areas] +*** xref:admin:help_sections.adoc[Help sections] +** xref:admin:pages.adoc[Pages and Topics] +*** xref:admin:pages/pages.adoc[Pages] +*** xref:admin:pages/topics.adoc[Topics] +** xref:admin:participants.adoc[Participants] +*** xref:admin:participants/admins.adoc[Admins] +*** xref:admin:participants/groups.adoc[Groups] +*** xref:admin:participants/participants.adoc[Participants] +*** xref:admin:participants/impersonations.adoc[Impersonations] +**** xref:admin:participants/verifications_conflicts.adoc[Verifications conflicts] +*** xref:admin:participants/authorizations.adoc[Authorizations] +**** xref:admin:participants/authorizations/identity_documents.adoc[Identity documents] +**** xref:admin:participants/authorizations/code_postal_letter.adoc[Code by postal letter] +**** xref:admin:participants/authorizations/census.adoc[Organization's census] +** xref:admin:spaces.adoc[Spaces] +*** xref:admin:spaces/processes.adoc[Participatory Processes] +**** xref:admin:spaces/processes/phases.adoc[Phases] +**** xref:admin:spaces/processes/components.adoc[Components] +**** xref:admin:spaces/processes/categories.adoc[Categories] +**** xref:admin:spaces/processes/attachments.adoc[Attachments] +**** xref:admin:spaces/processes/admins.adoc[Process admins] +**** xref:admin:spaces/processes/private_participants.adoc[Private participants] +**** xref:admin:spaces/processes/moderations.adoc[Moderations] +**** xref:admin:spaces/processes/groups.adoc[Process Groups] +**** xref:admin:spaces/processes/types.adoc[Process Types] +*** xref:admin:spaces/assemblies.adoc[Assemblies] +**** xref:admin:spaces/assemblies/components.adoc[Components] +**** xref:admin:spaces/assemblies/categories.adoc[Categories] +**** xref:admin:spaces/assemblies/attachments.adoc[Attachments] +**** xref:admin:spaces/assemblies/members.adoc[Members] +**** xref:admin:spaces/assemblies/admins.adoc[Assembly admins] +**** xref:admin:spaces/assemblies/private_participants.adoc[Private participants] +**** xref:admin:spaces/assemblies/moderations.adoc[Moderations] +*** xref:admin:spaces/initiatives.adoc[Initiatives] +*** xref:admin:spaces/conferences.adoc[Conferences] +**** xref:admin:spaces/conferences/components.adoc[Components] +**** xref:admin:spaces/conferences/categories.adoc[Categories] +**** xref:admin:spaces/conferences/attachments.adoc[Attachments] +**** xref:admin:spaces/conferences/media_links.adoc[Media Links] +**** xref:admin:spaces/conferences/partners.adoc[Partners] +**** xref:admin:spaces/conferences/speakers.adoc[Speakers] +**** xref:admin:spaces/conferences/registrations.adoc[Registrations] +***** xref:admin:spaces/conferences/registrations/types.adoc[Registration Types] +***** xref:admin:spaces/conferences/registrations/users.adoc[User Registrations] +***** xref:admin:spaces/conferences/registrations/invites.adoc[Invites] +***** xref:admin:spaces/conferences/registrations/certificates.adoc[Certificate of Attendance] +**** xref:admin:spaces/conferences/admins.adoc[Conference admins] +**** xref:admin:spaces/conferences/moderations.adoc[Moderations] +** xref:admin:components.adoc[Components] +*** xref:admin:components/accountability.adoc[Accountability] +*** xref:admin:components/blog.adoc[Blog] +*** xref:admin:components/budgets.adoc[Budgets] +*** xref:admin:components/debates.adoc[Debates] +*** xref:admin:components/meetings.adoc[Meetings] +**** xref:admin:components/meetings/registrations.adoc[Registrations] +**** xref:admin:components/meetings/agenda.adoc[Agenda] +**** xref:admin:components/meetings/polls.adoc[Polls] +**** xref:admin:components/meetings/close.adoc[Close] +*** xref:admin:components/pages.adoc[Pages] +*** xref:admin:components/proposals.adoc[Proposals] +**** xref:admin:components/proposals/amendments.adoc[Amendments] +**** xref:admin:components/proposals/answers.adoc[Answers] +**** xref:admin:components/proposals/collaborative_drafts.adoc[Collaborative drafts] +**** xref:admin:components/proposals/participatory_texts.adoc[Participatory texts] +*** xref:admin:components/sortitions.adoc[Sortitions] +*** xref:admin:components/surveys.adoc[Surveys] +** xref:admin:features.adoc[Features] +*** xref:admin:features/search.adoc[Search] +*** xref:admin:features/social_features.adoc[Social features] +**** xref:admin:features/social_features/newsletters.adoc[Newsletters] +**** xref:admin:features/social_features/badges.adoc[Badges] +**** xref:admin:features/social_features/comments.adoc[Comments] +**** xref:admin:features/social_features/conversations.adoc[Conversations] +**** xref:admin:features/social_features/endorsements.adoc[Endorsements] +**** xref:admin:features/social_features/follows.adoc[Follows] +**** xref:admin:features/social_features/share.adoc[Share] +**** xref:admin:features/social_features/hashtags.adoc[Hashtags] +*** xref:admin:features/transparency_features.adoc[Transparency features] +**** xref:admin:features/transparency/statistics.adoc[Statistics] +**** xref:admin:features/transparency/versions.adoc[Versions] +**** xref:admin:features/transparency/fingerprint.adoc[Fingerprint] +*** xref:admin:features/participants_actions.adoc[Participant account and actions] +**** xref:admin:features/participant_actions/notifications.adoc[Notifications] +**** xref:admin:features/participant_actions/my_account.adoc[My account] +**** xref:admin:features/participant_actions/my_public_profile.adoc[My public profile] +**** xref:admin:features/participant_actions/group_profile.adoc[Group profiles] +** xref:admin:global_moderations.adoc[Global moderations] +*** xref:admin:moderations/reported_content.adoc[Reported content] +*** xref:admin:moderations/reported_users.adoc[Reported users] +** xref:admin:templates.adoc[Templates] +*** xref:admin:templates/questionnaires.adoc[Questionnaires templates] +*** xref:admin:templates/block_users.adoc[Block user messages] +*** xref:admin:templates/proposal_answers.adoc[Proposal answers] + +* xref:contribute:index.adoc[Contribute] +** xref:contribute:governance.adoc[Governance] +** xref:contribute:translations.adoc[Translations] +** xref:contribute:documentation.adoc[Documentation] + +* xref:develop:index.adoc[Develop] +** xref:develop:guide.adoc[Guide] +*** xref:develop:guide_example_apps.adoc[1. Example Applications] +*** xref:develop:guide_development_app.adoc[2. Development App] +*** xref:develop:guide_commands.adoc[3. Commands] +*** xref:develop:guide_conventions.adoc[4. Conventions] +*** xref:develop:guide_architecture.adoc[5. Architecture] +** xref:develop:security.adoc[Security] +** Advanced +*** Creating custom classes +**** xref:develop:classes/cells.adoc[Cells] +**** xref:develop:classes/commands.adoc[Commands] +**** xref:develop:classes/controllers.adoc[Controllers] +**** xref:develop:classes/events.adoc[Events] +**** xref:develop:classes/forms.adoc[Forms] +**** xref:develop:classes/jobs.adoc[Jobs] +**** xref:develop:classes/mailers.adoc[Mailers] +**** xref:develop:classes/models.adoc[Models] +**** xref:develop:classes/permissions.adoc[Permissions] +**** xref:develop:classes/presenters.adoc[Presenters] +**** xref:develop:classes/queries.adoc[Queries] +*** Concerns +**** xref:develop:authorable.adoc[Authorable] +**** xref:develop:embeddable.adoc[Embeddable] +**** xref:develop:endorsable.adoc[Endorsable] +**** xref:develop:followable.adoc[Followable] +**** xref:develop:reportable.adoc[Reportable] +**** xref:develop:traceable.adoc[Traceable] +**** xref:develop:machine_translations.adoc[TranslatableResource aka Machine Translations] +**** xref:develop:share_tokens.adoc[Shareable with Tokens] +*** xref:develop:api.adoc[API] +*** xref:develop:components.adoc[Components] +*** xref:develop:content_processors.adoc[Content Processors] +*** xref:develop:custom_seed_data.adoc[Custom Seed Data] +*** xref:develop:deploy.adoc[Deploy] +*** xref:develop:docker.adoc[Docker] +*** xref:develop:fixing_locales.adoc[Fixing locales] +*** xref:develop:maps.adoc[Maps] +*** xref:develop:managing_translations_i18n.adoc[i18n] +*** Maintainers +**** xref:develop:backports.adoc[Backports] +**** xref:develop:guide_github_projects.adoc[GitHub Projects Workflow] +**** xref:develop:maintainers/releases.adoc[Releasing new versionss] +**** xref:develop:maintainers/security.adoc[Security procedures] +*** xref:develop:metrics.adoc[Metrics] +*** xref:develop:modules.adoc[Modules] +*** xref:develop:notifications.adoc[Notifications] +*** xref:develop:open-data.adoc[Open Data] +*** xref:develop:permissions.adoc[Permissions] +*** xref:develop:profiling.adoc[Profiling] +*** xref:develop:reminders.adoc[Reminders] +*** xref:develop:templates.adoc[Templates] +*** xref:develop:testing.adoc[Testing] +*** xref:develop:guide_development_with_localhost_ssl.adoc[Testing SSL and Tenants in Development] +*** xref:develop:turbolinks.adoc[Turbolinks] +*** Views +**** xref:develop:content_blocks.adoc[Content Blocks] +**** xref:develop:newsletter_templates.adoc[Newsletter Templates] +**** xref:develop:view_hooks.adoc[View Hooks] +**** xref:develop:view_models_aka_cells.adoc[View Models (Cells)] + +* Understand +** xref:understand:about.adoc[About] +** xref:understand:background.adoc[Background] +** xref:features:general-description.adoc[Features] +*** xref:features:participatory-spaces.adoc[Participatory spaces] +*** xref:features:components.adoc[Components] +*** xref:features:participants.adoc[Participants] +*** xref:features:general-features.adoc[General features] +// ** xref:understand:governance.adoc[Project governance] +// ** xref:understand:history.adoc[History of the project] +// ** xref:understand:research.adoc[Research] +** xref:understand:social-contract.adoc[Social Contract] +*** xref:understand:social-contract-ca.adoc[Català] +*** xref:understand:social-contract-es.adoc[Castellano] +** Publications +*** xref:publications:catalan.adoc[Catalan] +*** xref:publications:english.adoc[English] +*** xref:publications:french.adoc[French] +*** xref:publications:german.adoc[German] +*** xref:publications:italian.adoc[Italian] +*** xref:publications:spanish.adoc[Spanish] +** Whitepaper +*** xref:whitepaper:decidim-a-brief-overview.adoc[Decidim: a brief overview] + +* xref:releases:index.adoc[Release notes] + diff --git a/docs/en/modules/ROOT/pages/index.adoc b/docs/en/modules/ROOT/pages/index.adoc new file mode 100644 index 0000000000..f1e19a8256 --- /dev/null +++ b/docs/en/modules/ROOT/pages/index.adoc @@ -0,0 +1,24 @@ += Welcome to Decidim Documentation + +This is the documentation site to Decidim, a participatory democracy platform created initially by Barcelona City Hall. + +Decidim is a framework that allows anybody to create and configure a website platform, to be used in the form of a political network for democratic participation. The platform allows any organization (local city council, association, university, NGO, neighbourhood or cooperative) to create mass processes for strategic planning, participatory budgeting, collaborative design for regulations, urban spaces and election processes. + +== New to Decidim? + +You’ve found the documentation for Decidim. Learn about the project at https://decidim.org[decidim.org]. + +[NOTE] +==== +This is the documentation for the `develop` branch. You can see this same documentation site for other versions: xref:v0.29@ROOT:index.adoc[v0.29], xref:v0.28@ROOT:index.adoc[v0.28] and xref:v0.27@ROOT:index.adoc[v0.27] +==== + +// * Read the xref:ROOT:getting-started.adoc[Getting Started guide] + +The documentation covers xref:install:index.adoc[installing], xref:configure:index.adoc[configuring], and xref:admin:index.adoc[running] your own Decidim site. + +If you want to make changes to the source code, we have documentation for xref:develop:guide.adoc[developers] too. + +If you are an organisation who wants to use Decidim, or a developer who is interested in collaborating on the software, please https://decidim.org/contact[get in touch]. + +Decidim is a community effort, as such if you find any errors on these guides please let us know at hola [at] decidim [dot] org. Every help is welcome. If you've a GitHub user then you can even propose changes to this website with the Edit link on every page. diff --git a/en/modules/features/assets/images/.gitkeep b/docs/en/modules/admin/assets/attachments/.gitkeep similarity index 100% rename from en/modules/features/assets/images/.gitkeep rename to docs/en/modules/admin/assets/attachments/.gitkeep diff --git a/en/modules/admin/assets/attachments/participatory_text.md b/docs/en/modules/admin/assets/attachments/participatory_text.md similarity index 100% rename from en/modules/admin/assets/attachments/participatory_text.md rename to docs/en/modules/admin/assets/attachments/participatory_text.md diff --git a/docs/en/modules/admin/assets/images/.gitkeep b/docs/en/modules/admin/assets/images/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/en/modules/admin/assets/images/account_my_interests.png b/docs/en/modules/admin/assets/images/account_my_interests.png similarity index 100% rename from en/modules/admin/assets/images/account_my_interests.png rename to docs/en/modules/admin/assets/images/account_my_interests.png diff --git a/en/modules/admin/assets/images/action_activate.png b/docs/en/modules/admin/assets/images/action_activate.png similarity index 100% rename from en/modules/admin/assets/images/action_activate.png rename to docs/en/modules/admin/assets/images/action_activate.png diff --git a/en/modules/admin/assets/images/action_agenda.png b/docs/en/modules/admin/assets/images/action_agenda.png similarity index 100% rename from en/modules/admin/assets/images/action_agenda.png rename to docs/en/modules/admin/assets/images/action_agenda.png diff --git a/en/modules/admin/assets/images/action_answer.png b/docs/en/modules/admin/assets/images/action_answer.png similarity index 100% rename from en/modules/admin/assets/images/action_answer.png rename to docs/en/modules/admin/assets/images/action_answer.png diff --git a/en/modules/admin/assets/images/action_attachments.png b/docs/en/modules/admin/assets/images/action_attachments.png similarity index 100% rename from en/modules/admin/assets/images/action_attachments.png rename to docs/en/modules/admin/assets/images/action_attachments.png diff --git a/en/modules/admin/assets/images/action_block.png b/docs/en/modules/admin/assets/images/action_block.png similarity index 100% rename from en/modules/admin/assets/images/action_block.png rename to docs/en/modules/admin/assets/images/action_block.png diff --git a/en/modules/admin/assets/images/action_browse.png b/docs/en/modules/admin/assets/images/action_browse.png similarity index 100% rename from en/modules/admin/assets/images/action_browse.png rename to docs/en/modules/admin/assets/images/action_browse.png diff --git a/en/modules/admin/assets/images/action_check.png b/docs/en/modules/admin/assets/images/action_check.png similarity index 100% rename from en/modules/admin/assets/images/action_check.png rename to docs/en/modules/admin/assets/images/action_check.png diff --git a/en/modules/admin/assets/images/action_clock.png b/docs/en/modules/admin/assets/images/action_clock.png similarity index 100% rename from en/modules/admin/assets/images/action_clock.png rename to docs/en/modules/admin/assets/images/action_clock.png diff --git a/en/modules/admin/assets/images/action_close.png b/docs/en/modules/admin/assets/images/action_close.png similarity index 100% rename from en/modules/admin/assets/images/action_close.png rename to docs/en/modules/admin/assets/images/action_close.png diff --git a/en/modules/admin/assets/images/action_configure.png b/docs/en/modules/admin/assets/images/action_configure.png similarity index 100% rename from en/modules/admin/assets/images/action_configure.png rename to docs/en/modules/admin/assets/images/action_configure.png diff --git a/en/modules/admin/assets/images/action_contact.png b/docs/en/modules/admin/assets/images/action_contact.png similarity index 100% rename from en/modules/admin/assets/images/action_contact.png rename to docs/en/modules/admin/assets/images/action_contact.png diff --git a/en/modules/admin/assets/images/action_delete.png b/docs/en/modules/admin/assets/images/action_delete.png similarity index 100% rename from en/modules/admin/assets/images/action_delete.png rename to docs/en/modules/admin/assets/images/action_delete.png diff --git a/en/modules/admin/assets/images/action_duplicate.png b/docs/en/modules/admin/assets/images/action_duplicate.png similarity index 100% rename from en/modules/admin/assets/images/action_duplicate.png rename to docs/en/modules/admin/assets/images/action_duplicate.png diff --git a/en/modules/admin/assets/images/action_edit.png b/docs/en/modules/admin/assets/images/action_edit.png similarity index 100% rename from en/modules/admin/assets/images/action_edit.png rename to docs/en/modules/admin/assets/images/action_edit.png diff --git a/en/modules/admin/assets/images/action_expand.png b/docs/en/modules/admin/assets/images/action_expand.png similarity index 100% rename from en/modules/admin/assets/images/action_expand.png rename to docs/en/modules/admin/assets/images/action_expand.png diff --git a/en/modules/admin/assets/images/action_folder.png b/docs/en/modules/admin/assets/images/action_folder.png similarity index 100% rename from en/modules/admin/assets/images/action_folder.png rename to docs/en/modules/admin/assets/images/action_folder.png diff --git a/en/modules/admin/assets/images/action_hide.png b/docs/en/modules/admin/assets/images/action_hide.png similarity index 100% rename from en/modules/admin/assets/images/action_hide.png rename to docs/en/modules/admin/assets/images/action_hide.png diff --git a/en/modules/admin/assets/images/action_list.png b/docs/en/modules/admin/assets/images/action_list.png similarity index 100% rename from en/modules/admin/assets/images/action_list.png rename to docs/en/modules/admin/assets/images/action_list.png diff --git a/en/modules/admin/assets/images/action_manage.png b/docs/en/modules/admin/assets/images/action_manage.png similarity index 100% rename from en/modules/admin/assets/images/action_manage.png rename to docs/en/modules/admin/assets/images/action_manage.png diff --git a/en/modules/admin/assets/images/action_mark_as_sent.png b/docs/en/modules/admin/assets/images/action_mark_as_sent.png similarity index 100% rename from en/modules/admin/assets/images/action_mark_as_sent.png rename to docs/en/modules/admin/assets/images/action_mark_as_sent.png diff --git a/en/modules/admin/assets/images/action_minutes.png b/docs/en/modules/admin/assets/images/action_minutes.png similarity index 100% rename from en/modules/admin/assets/images/action_minutes.png rename to docs/en/modules/admin/assets/images/action_minutes.png diff --git a/en/modules/admin/assets/images/action_officialize.png b/docs/en/modules/admin/assets/images/action_officialize.png similarity index 100% rename from en/modules/admin/assets/images/action_officialize.png rename to docs/en/modules/admin/assets/images/action_officialize.png diff --git a/en/modules/admin/assets/images/action_permissions.png b/docs/en/modules/admin/assets/images/action_permissions.png similarity index 100% rename from en/modules/admin/assets/images/action_permissions.png rename to docs/en/modules/admin/assets/images/action_permissions.png diff --git a/en/modules/admin/assets/images/action_plus.png b/docs/en/modules/admin/assets/images/action_plus.png similarity index 100% rename from en/modules/admin/assets/images/action_plus.png rename to docs/en/modules/admin/assets/images/action_plus.png diff --git a/en/modules/admin/assets/images/action_preview.png b/docs/en/modules/admin/assets/images/action_preview.png similarity index 100% rename from en/modules/admin/assets/images/action_preview.png rename to docs/en/modules/admin/assets/images/action_preview.png diff --git a/en/modules/admin/assets/images/action_print.png b/docs/en/modules/admin/assets/images/action_print.png similarity index 100% rename from en/modules/admin/assets/images/action_print.png rename to docs/en/modules/admin/assets/images/action_print.png diff --git a/en/modules/admin/assets/images/action_publish.png b/docs/en/modules/admin/assets/images/action_publish.png similarity index 100% rename from en/modules/admin/assets/images/action_publish.png rename to docs/en/modules/admin/assets/images/action_publish.png diff --git a/en/modules/admin/assets/images/action_registrations.png b/docs/en/modules/admin/assets/images/action_registrations.png similarity index 100% rename from en/modules/admin/assets/images/action_registrations.png rename to docs/en/modules/admin/assets/images/action_registrations.png diff --git a/en/modules/admin/assets/images/action_reofficialize.png b/docs/en/modules/admin/assets/images/action_reofficialize.png similarity index 100% rename from en/modules/admin/assets/images/action_reofficialize.png rename to docs/en/modules/admin/assets/images/action_reofficialize.png diff --git a/en/modules/admin/assets/images/action_resend_invitation.png b/docs/en/modules/admin/assets/images/action_resend_invitation.png similarity index 100% rename from en/modules/admin/assets/images/action_resend_invitation.png rename to docs/en/modules/admin/assets/images/action_resend_invitation.png diff --git a/en/modules/admin/assets/images/action_share.png b/docs/en/modules/admin/assets/images/action_share.png similarity index 100% rename from en/modules/admin/assets/images/action_share.png rename to docs/en/modules/admin/assets/images/action_share.png diff --git a/en/modules/admin/assets/images/action_show_email.png b/docs/en/modules/admin/assets/images/action_show_email.png similarity index 100% rename from en/modules/admin/assets/images/action_show_email.png rename to docs/en/modules/admin/assets/images/action_show_email.png diff --git a/en/modules/admin/assets/images/action_transfer_user.png b/docs/en/modules/admin/assets/images/action_transfer_user.png similarity index 100% rename from en/modules/admin/assets/images/action_transfer_user.png rename to docs/en/modules/admin/assets/images/action_transfer_user.png diff --git a/en/modules/admin/assets/images/action_unhide.png b/docs/en/modules/admin/assets/images/action_unhide.png similarity index 100% rename from en/modules/admin/assets/images/action_unhide.png rename to docs/en/modules/admin/assets/images/action_unhide.png diff --git a/en/modules/admin/assets/images/action_unofficialize.png b/docs/en/modules/admin/assets/images/action_unofficialize.png similarity index 100% rename from en/modules/admin/assets/images/action_unofficialize.png rename to docs/en/modules/admin/assets/images/action_unofficialize.png diff --git a/en/modules/admin/assets/images/action_unpublish.png b/docs/en/modules/admin/assets/images/action_unpublish.png similarity index 100% rename from en/modules/admin/assets/images/action_unpublish.png rename to docs/en/modules/admin/assets/images/action_unpublish.png diff --git a/en/modules/admin/assets/images/action_unreport.png b/docs/en/modules/admin/assets/images/action_unreport.png similarity index 100% rename from en/modules/admin/assets/images/action_unreport.png rename to docs/en/modules/admin/assets/images/action_unreport.png diff --git a/en/modules/admin/assets/images/admin_appearance.png b/docs/en/modules/admin/assets/images/admin_appearance.png similarity index 100% rename from en/modules/admin/assets/images/admin_appearance.png rename to docs/en/modules/admin/assets/images/admin_appearance.png diff --git a/en/modules/admin/assets/images/admin_areas.png b/docs/en/modules/admin/assets/images/admin_areas.png similarity index 100% rename from en/modules/admin/assets/images/admin_areas.png rename to docs/en/modules/admin/assets/images/admin_areas.png diff --git a/en/modules/admin/assets/images/admin_configuration.png b/docs/en/modules/admin/assets/images/admin_configuration.png similarity index 100% rename from en/modules/admin/assets/images/admin_configuration.png rename to docs/en/modules/admin/assets/images/admin_configuration.png diff --git a/docs/en/modules/admin/assets/images/admin_dashboard.png b/docs/en/modules/admin/assets/images/admin_dashboard.png new file mode 100644 index 0000000000..6b622ecc94 Binary files /dev/null and b/docs/en/modules/admin/assets/images/admin_dashboard.png differ diff --git a/docs/en/modules/admin/assets/images/admin_dashboard_menu.png b/docs/en/modules/admin/assets/images/admin_dashboard_menu.png new file mode 100644 index 0000000000..fae842cfdf Binary files /dev/null and b/docs/en/modules/admin/assets/images/admin_dashboard_menu.png differ diff --git a/en/modules/admin/assets/images/admin_help_sections.png b/docs/en/modules/admin/assets/images/admin_help_sections.png similarity index 100% rename from en/modules/admin/assets/images/admin_help_sections.png rename to docs/en/modules/admin/assets/images/admin_help_sections.png diff --git a/en/modules/admin/assets/images/admin_homepage.png b/docs/en/modules/admin/assets/images/admin_homepage.png similarity index 100% rename from en/modules/admin/assets/images/admin_homepage.png rename to docs/en/modules/admin/assets/images/admin_homepage.png diff --git a/en/modules/admin/assets/images/admin_initiative_type.png b/docs/en/modules/admin/assets/images/admin_initiative_type.png similarity index 100% rename from en/modules/admin/assets/images/admin_initiative_type.png rename to docs/en/modules/admin/assets/images/admin_initiative_type.png diff --git a/en/modules/admin/assets/images/admin_initiative_type_scope.png b/docs/en/modules/admin/assets/images/admin_initiative_type_scope.png similarity index 100% rename from en/modules/admin/assets/images/admin_initiative_type_scope.png rename to docs/en/modules/admin/assets/images/admin_initiative_type_scope.png diff --git a/en/modules/admin/assets/images/admin_scope_types.png b/docs/en/modules/admin/assets/images/admin_scope_types.png similarity index 100% rename from en/modules/admin/assets/images/admin_scope_types.png rename to docs/en/modules/admin/assets/images/admin_scope_types.png diff --git a/en/modules/admin/assets/images/admin_scopes.png b/docs/en/modules/admin/assets/images/admin_scopes.png similarity index 100% rename from en/modules/admin/assets/images/admin_scopes.png rename to docs/en/modules/admin/assets/images/admin_scopes.png diff --git a/docs/en/modules/admin/assets/images/admin_tos_pending.png b/docs/en/modules/admin/assets/images/admin_tos_pending.png new file mode 100644 index 0000000000..f451db257c Binary files /dev/null and b/docs/en/modules/admin/assets/images/admin_tos_pending.png differ diff --git a/en/modules/admin/assets/images/assemblies_list.png b/docs/en/modules/admin/assets/images/assemblies_list.png similarity index 100% rename from en/modules/admin/assets/images/assemblies_list.png rename to docs/en/modules/admin/assets/images/assemblies_list.png diff --git a/en/modules/admin/assets/images/assemblies_list_filter.png b/docs/en/modules/admin/assets/images/assemblies_list_filter.png similarity index 100% rename from en/modules/admin/assets/images/assemblies_list_filter.png rename to docs/en/modules/admin/assets/images/assemblies_list_filter.png diff --git a/en/modules/admin/assets/images/assemblies_new_form.png b/docs/en/modules/admin/assets/images/assemblies_new_form.png similarity index 100% rename from en/modules/admin/assets/images/assemblies_new_form.png rename to docs/en/modules/admin/assets/images/assemblies_new_form.png diff --git a/en/modules/admin/assets/images/assemblies_new_type_form.png b/docs/en/modules/admin/assets/images/assemblies_new_type_form.png similarity index 100% rename from en/modules/admin/assets/images/assemblies_new_type_form.png rename to docs/en/modules/admin/assets/images/assemblies_new_type_form.png diff --git a/en/modules/admin/assets/images/assemblies_organization_chart.png b/docs/en/modules/admin/assets/images/assemblies_organization_chart.png similarity index 100% rename from en/modules/admin/assets/images/assemblies_organization_chart.png rename to docs/en/modules/admin/assets/images/assemblies_organization_chart.png diff --git a/en/modules/admin/assets/images/assemblies_organization_chart_filtered.png b/docs/en/modules/admin/assets/images/assemblies_organization_chart_filtered.png similarity index 100% rename from en/modules/admin/assets/images/assemblies_organization_chart_filtered.png rename to docs/en/modules/admin/assets/images/assemblies_organization_chart_filtered.png diff --git a/en/modules/admin/assets/images/assemblies_settings.png b/docs/en/modules/admin/assets/images/assemblies_settings.png similarity index 100% rename from en/modules/admin/assets/images/assemblies_settings.png rename to docs/en/modules/admin/assets/images/assemblies_settings.png diff --git a/en/modules/admin/assets/images/assemblies_type_filters.png b/docs/en/modules/admin/assets/images/assemblies_type_filters.png similarity index 100% rename from en/modules/admin/assets/images/assemblies_type_filters.png rename to docs/en/modules/admin/assets/images/assemblies_type_filters.png diff --git a/en/modules/admin/assets/images/assembly_members.png b/docs/en/modules/admin/assets/images/assembly_members.png similarity index 100% rename from en/modules/admin/assets/images/assembly_members.png rename to docs/en/modules/admin/assets/images/assembly_members.png diff --git a/en/modules/admin/assets/images/assembly_members_list.png b/docs/en/modules/admin/assets/images/assembly_members_list.png similarity index 100% rename from en/modules/admin/assets/images/assembly_members_list.png rename to docs/en/modules/admin/assets/images/assembly_members_list.png diff --git a/en/modules/admin/assets/images/assembly_members_new_form.png b/docs/en/modules/admin/assets/images/assembly_members_new_form.png similarity index 100% rename from en/modules/admin/assets/images/assembly_members_new_form.png rename to docs/en/modules/admin/assets/images/assembly_members_new_form.png diff --git a/en/modules/admin/assets/images/assembly_submenu.png b/docs/en/modules/admin/assets/images/assembly_submenu.png similarity index 100% rename from en/modules/admin/assets/images/assembly_submenu.png rename to docs/en/modules/admin/assets/images/assembly_submenu.png diff --git a/en/modules/admin/assets/images/components/accountability/component.png b/docs/en/modules/admin/assets/images/components/accountability/component.png similarity index 100% rename from en/modules/admin/assets/images/components/accountability/component.png rename to docs/en/modules/admin/assets/images/components/accountability/component.png diff --git a/en/modules/admin/assets/images/components/accountability/example_landing.png b/docs/en/modules/admin/assets/images/components/accountability/example_landing.png similarity index 100% rename from en/modules/admin/assets/images/components/accountability/example_landing.png rename to docs/en/modules/admin/assets/images/components/accountability/example_landing.png diff --git a/en/modules/admin/assets/images/components/accountability/example_result.png b/docs/en/modules/admin/assets/images/components/accountability/example_result.png similarity index 100% rename from en/modules/admin/assets/images/components/accountability/example_result.png rename to docs/en/modules/admin/assets/images/components/accountability/example_result.png diff --git a/en/modules/admin/assets/images/components/accountability/import_csv.png b/docs/en/modules/admin/assets/images/components/accountability/import_csv.png similarity index 100% rename from en/modules/admin/assets/images/components/accountability/import_csv.png rename to docs/en/modules/admin/assets/images/components/accountability/import_csv.png diff --git a/en/modules/admin/assets/images/components/accountability/new_entry.png b/docs/en/modules/admin/assets/images/components/accountability/new_entry.png similarity index 100% rename from en/modules/admin/assets/images/components/accountability/new_entry.png rename to docs/en/modules/admin/assets/images/components/accountability/new_entry.png diff --git a/en/modules/admin/assets/images/components/accountability/new_result.png b/docs/en/modules/admin/assets/images/components/accountability/new_result.png similarity index 100% rename from en/modules/admin/assets/images/components/accountability/new_result.png rename to docs/en/modules/admin/assets/images/components/accountability/new_result.png diff --git a/en/modules/admin/assets/images/components/accountability/new_status.png b/docs/en/modules/admin/assets/images/components/accountability/new_status.png similarity index 100% rename from en/modules/admin/assets/images/components/accountability/new_status.png rename to docs/en/modules/admin/assets/images/components/accountability/new_status.png diff --git a/en/modules/admin/assets/images/components/blog/component.png b/docs/en/modules/admin/assets/images/components/blog/component.png similarity index 100% rename from en/modules/admin/assets/images/components/blog/component.png rename to docs/en/modules/admin/assets/images/components/blog/component.png diff --git a/en/modules/admin/assets/images/components/blog/example01.png b/docs/en/modules/admin/assets/images/components/blog/example01.png similarity index 100% rename from en/modules/admin/assets/images/components/blog/example01.png rename to docs/en/modules/admin/assets/images/components/blog/example01.png diff --git a/en/modules/admin/assets/images/components/blog/example02.png b/docs/en/modules/admin/assets/images/components/blog/example02.png similarity index 100% rename from en/modules/admin/assets/images/components/blog/example02.png rename to docs/en/modules/admin/assets/images/components/blog/example02.png diff --git a/en/modules/admin/assets/images/components/blog/manage_posts.png b/docs/en/modules/admin/assets/images/components/blog/manage_posts.png similarity index 100% rename from en/modules/admin/assets/images/components/blog/manage_posts.png rename to docs/en/modules/admin/assets/images/components/blog/manage_posts.png diff --git a/en/modules/admin/assets/images/components/blog/new_post.png b/docs/en/modules/admin/assets/images/components/blog/new_post.png similarity index 100% rename from en/modules/admin/assets/images/components/blog/new_post.png rename to docs/en/modules/admin/assets/images/components/blog/new_post.png diff --git a/en/modules/admin/assets/images/components/budgets/component.png b/docs/en/modules/admin/assets/images/components/budgets/component.png similarity index 100% rename from en/modules/admin/assets/images/components/budgets/component.png rename to docs/en/modules/admin/assets/images/components/budgets/component.png diff --git a/en/modules/admin/assets/images/components/budgets/example01.png b/docs/en/modules/admin/assets/images/components/budgets/example01.png similarity index 100% rename from en/modules/admin/assets/images/components/budgets/example01.png rename to docs/en/modules/admin/assets/images/components/budgets/example01.png diff --git a/en/modules/admin/assets/images/components/budgets/example02.png b/docs/en/modules/admin/assets/images/components/budgets/example02.png similarity index 100% rename from en/modules/admin/assets/images/components/budgets/example02.png rename to docs/en/modules/admin/assets/images/components/budgets/example02.png diff --git a/en/modules/admin/assets/images/components/budgets/example03.png b/docs/en/modules/admin/assets/images/components/budgets/example03.png similarity index 100% rename from en/modules/admin/assets/images/components/budgets/example03.png rename to docs/en/modules/admin/assets/images/components/budgets/example03.png diff --git a/en/modules/admin/assets/images/components/budgets/example04.png b/docs/en/modules/admin/assets/images/components/budgets/example04.png similarity index 100% rename from en/modules/admin/assets/images/components/budgets/example04.png rename to docs/en/modules/admin/assets/images/components/budgets/example04.png diff --git a/en/modules/admin/assets/images/components/budgets/import_proposals.png b/docs/en/modules/admin/assets/images/components/budgets/import_proposals.png similarity index 100% rename from en/modules/admin/assets/images/components/budgets/import_proposals.png rename to docs/en/modules/admin/assets/images/components/budgets/import_proposals.png diff --git a/en/modules/admin/assets/images/components/budgets/manage_budgets.png b/docs/en/modules/admin/assets/images/components/budgets/manage_budgets.png similarity index 100% rename from en/modules/admin/assets/images/components/budgets/manage_budgets.png rename to docs/en/modules/admin/assets/images/components/budgets/manage_budgets.png diff --git a/en/modules/admin/assets/images/components/budgets/new_budget.png b/docs/en/modules/admin/assets/images/components/budgets/new_budget.png similarity index 100% rename from en/modules/admin/assets/images/components/budgets/new_budget.png rename to docs/en/modules/admin/assets/images/components/budgets/new_budget.png diff --git a/en/modules/admin/assets/images/components/budgets/new_project.png b/docs/en/modules/admin/assets/images/components/budgets/new_project.png similarity index 100% rename from en/modules/admin/assets/images/components/budgets/new_project.png rename to docs/en/modules/admin/assets/images/components/budgets/new_project.png diff --git a/en/modules/admin/assets/images/components/budgets/results_select_project.png b/docs/en/modules/admin/assets/images/components/budgets/results_select_project.png similarity index 100% rename from en/modules/admin/assets/images/components/budgets/results_select_project.png rename to docs/en/modules/admin/assets/images/components/budgets/results_select_project.png diff --git a/en/modules/admin/assets/images/components/budgets/results_selected.png b/docs/en/modules/admin/assets/images/components/budgets/results_selected.png similarity index 100% rename from en/modules/admin/assets/images/components/budgets/results_selected.png rename to docs/en/modules/admin/assets/images/components/budgets/results_selected.png diff --git a/en/modules/admin/assets/images/components/budgets/results_selected_frontend.png b/docs/en/modules/admin/assets/images/components/budgets/results_selected_frontend.png similarity index 100% rename from en/modules/admin/assets/images/components/budgets/results_selected_frontend.png rename to docs/en/modules/admin/assets/images/components/budgets/results_selected_frontend.png diff --git a/en/modules/admin/assets/images/components/budgets/results_unselected.png b/docs/en/modules/admin/assets/images/components/budgets/results_unselected.png similarity index 100% rename from en/modules/admin/assets/images/components/budgets/results_unselected.png rename to docs/en/modules/admin/assets/images/components/budgets/results_unselected.png diff --git a/en/modules/admin/assets/images/components/debates/close_debate_backend.png b/docs/en/modules/admin/assets/images/components/debates/close_debate_backend.png similarity index 100% rename from en/modules/admin/assets/images/components/debates/close_debate_backend.png rename to docs/en/modules/admin/assets/images/components/debates/close_debate_backend.png diff --git a/en/modules/admin/assets/images/components/debates/close_debate_frontend.png b/docs/en/modules/admin/assets/images/components/debates/close_debate_frontend.png similarity index 100% rename from en/modules/admin/assets/images/components/debates/close_debate_frontend.png rename to docs/en/modules/admin/assets/images/components/debates/close_debate_frontend.png diff --git a/en/modules/admin/assets/images/components/debates/component.png b/docs/en/modules/admin/assets/images/components/debates/component.png similarity index 100% rename from en/modules/admin/assets/images/components/debates/component.png rename to docs/en/modules/admin/assets/images/components/debates/component.png diff --git a/en/modules/admin/assets/images/components/debates/debate_closed.png b/docs/en/modules/admin/assets/images/components/debates/debate_closed.png similarity index 100% rename from en/modules/admin/assets/images/components/debates/debate_closed.png rename to docs/en/modules/admin/assets/images/components/debates/debate_closed.png diff --git a/en/modules/admin/assets/images/components/debates/debate_finite.png b/docs/en/modules/admin/assets/images/components/debates/debate_finite.png similarity index 100% rename from en/modules/admin/assets/images/components/debates/debate_finite.png rename to docs/en/modules/admin/assets/images/components/debates/debate_finite.png diff --git a/en/modules/admin/assets/images/components/debates/debates_list.png b/docs/en/modules/admin/assets/images/components/debates/debates_list.png similarity index 100% rename from en/modules/admin/assets/images/components/debates/debates_list.png rename to docs/en/modules/admin/assets/images/components/debates/debates_list.png diff --git a/en/modules/admin/assets/images/components/debates/example01.png b/docs/en/modules/admin/assets/images/components/debates/example01.png similarity index 100% rename from en/modules/admin/assets/images/components/debates/example01.png rename to docs/en/modules/admin/assets/images/components/debates/example01.png diff --git a/en/modules/admin/assets/images/components/debates/example02.png b/docs/en/modules/admin/assets/images/components/debates/example02.png similarity index 100% rename from en/modules/admin/assets/images/components/debates/example02.png rename to docs/en/modules/admin/assets/images/components/debates/example02.png diff --git a/en/modules/admin/assets/images/components/debates/manage_debates.png b/docs/en/modules/admin/assets/images/components/debates/manage_debates.png similarity index 100% rename from en/modules/admin/assets/images/components/debates/manage_debates.png rename to docs/en/modules/admin/assets/images/components/debates/manage_debates.png diff --git a/en/modules/admin/assets/images/components/debates/new_debate_backend.png b/docs/en/modules/admin/assets/images/components/debates/new_debate_backend.png similarity index 100% rename from en/modules/admin/assets/images/components/debates/new_debate_backend.png rename to docs/en/modules/admin/assets/images/components/debates/new_debate_backend.png diff --git a/en/modules/admin/assets/images/components/meetings/agenda/agenda_frontend.png b/docs/en/modules/admin/assets/images/components/meetings/agenda/agenda_frontend.png similarity index 100% rename from en/modules/admin/assets/images/components/meetings/agenda/agenda_frontend.png rename to docs/en/modules/admin/assets/images/components/meetings/agenda/agenda_frontend.png diff --git a/en/modules/admin/assets/images/components/meetings/agenda/new_agenda_form.png b/docs/en/modules/admin/assets/images/components/meetings/agenda/new_agenda_form.png similarity index 100% rename from en/modules/admin/assets/images/components/meetings/agenda/new_agenda_form.png rename to docs/en/modules/admin/assets/images/components/meetings/agenda/new_agenda_form.png diff --git a/en/modules/admin/assets/images/components/meetings/close/form_backend.png b/docs/en/modules/admin/assets/images/components/meetings/close/form_backend.png similarity index 100% rename from en/modules/admin/assets/images/components/meetings/close/form_backend.png rename to docs/en/modules/admin/assets/images/components/meetings/close/form_backend.png diff --git a/en/modules/admin/assets/images/components/meetings/close/form_frontend.png b/docs/en/modules/admin/assets/images/components/meetings/close/form_frontend.png similarity index 100% rename from en/modules/admin/assets/images/components/meetings/close/form_frontend.png rename to docs/en/modules/admin/assets/images/components/meetings/close/form_frontend.png diff --git a/en/modules/admin/assets/images/components/meetings/close/frontend.png b/docs/en/modules/admin/assets/images/components/meetings/close/frontend.png similarity index 100% rename from en/modules/admin/assets/images/components/meetings/close/frontend.png rename to docs/en/modules/admin/assets/images/components/meetings/close/frontend.png diff --git a/en/modules/admin/assets/images/components/meetings/close/related_proposal.png b/docs/en/modules/admin/assets/images/components/meetings/close/related_proposal.png similarity index 100% rename from en/modules/admin/assets/images/components/meetings/close/related_proposal.png rename to docs/en/modules/admin/assets/images/components/meetings/close/related_proposal.png diff --git a/en/modules/admin/assets/images/components/meetings/component.png b/docs/en/modules/admin/assets/images/components/meetings/component.png similarity index 100% rename from en/modules/admin/assets/images/components/meetings/component.png rename to docs/en/modules/admin/assets/images/components/meetings/component.png diff --git a/en/modules/admin/assets/images/components/meetings/example01.png b/docs/en/modules/admin/assets/images/components/meetings/example01.png similarity index 100% rename from en/modules/admin/assets/images/components/meetings/example01.png rename to docs/en/modules/admin/assets/images/components/meetings/example01.png diff --git a/en/modules/admin/assets/images/components/meetings/example02.png b/docs/en/modules/admin/assets/images/components/meetings/example02.png similarity index 100% rename from en/modules/admin/assets/images/components/meetings/example02.png rename to docs/en/modules/admin/assets/images/components/meetings/example02.png diff --git a/en/modules/admin/assets/images/components/meetings/example03.png b/docs/en/modules/admin/assets/images/components/meetings/example03.png similarity index 100% rename from en/modules/admin/assets/images/components/meetings/example03.png rename to docs/en/modules/admin/assets/images/components/meetings/example03.png diff --git a/en/modules/admin/assets/images/components/meetings/example04.png b/docs/en/modules/admin/assets/images/components/meetings/example04.png similarity index 100% rename from en/modules/admin/assets/images/components/meetings/example04.png rename to docs/en/modules/admin/assets/images/components/meetings/example04.png diff --git a/en/modules/admin/assets/images/components/meetings/new_meeting_form_backend.png b/docs/en/modules/admin/assets/images/components/meetings/new_meeting_form_backend.png similarity index 100% rename from en/modules/admin/assets/images/components/meetings/new_meeting_form_backend.png rename to docs/en/modules/admin/assets/images/components/meetings/new_meeting_form_backend.png diff --git a/en/modules/admin/assets/images/components/meetings/new_meeting_form_frontend01.png b/docs/en/modules/admin/assets/images/components/meetings/new_meeting_form_frontend01.png similarity index 100% rename from en/modules/admin/assets/images/components/meetings/new_meeting_form_frontend01.png rename to docs/en/modules/admin/assets/images/components/meetings/new_meeting_form_frontend01.png diff --git a/en/modules/admin/assets/images/components/meetings/new_meeting_form_frontend02.png b/docs/en/modules/admin/assets/images/components/meetings/new_meeting_form_frontend02.png similarity index 100% rename from en/modules/admin/assets/images/components/meetings/new_meeting_form_frontend02.png rename to docs/en/modules/admin/assets/images/components/meetings/new_meeting_form_frontend02.png diff --git a/en/modules/admin/assets/images/components/meetings/online_meeting_available_before.png b/docs/en/modules/admin/assets/images/components/meetings/online_meeting_available_before.png similarity index 100% rename from en/modules/admin/assets/images/components/meetings/online_meeting_available_before.png rename to docs/en/modules/admin/assets/images/components/meetings/online_meeting_available_before.png diff --git a/en/modules/admin/assets/images/components/meetings/online_meeting_available_soon.png b/docs/en/modules/admin/assets/images/components/meetings/online_meeting_available_soon.png similarity index 100% rename from en/modules/admin/assets/images/components/meetings/online_meeting_available_soon.png rename to docs/en/modules/admin/assets/images/components/meetings/online_meeting_available_soon.png diff --git a/en/modules/admin/assets/images/components/meetings/online_meeting_happening.png b/docs/en/modules/admin/assets/images/components/meetings/online_meeting_happening.png similarity index 100% rename from en/modules/admin/assets/images/components/meetings/online_meeting_happening.png rename to docs/en/modules/admin/assets/images/components/meetings/online_meeting_happening.png diff --git a/en/modules/admin/assets/images/components/meetings/polls/backend.png b/docs/en/modules/admin/assets/images/components/meetings/polls/backend.png similarity index 100% rename from en/modules/admin/assets/images/components/meetings/polls/backend.png rename to docs/en/modules/admin/assets/images/components/meetings/polls/backend.png diff --git a/en/modules/admin/assets/images/components/meetings/polls/backend_question.png b/docs/en/modules/admin/assets/images/components/meetings/polls/backend_question.png similarity index 100% rename from en/modules/admin/assets/images/components/meetings/polls/backend_question.png rename to docs/en/modules/admin/assets/images/components/meetings/polls/backend_question.png diff --git a/en/modules/admin/assets/images/components/meetings/registrations/backend.png b/docs/en/modules/admin/assets/images/components/meetings/registrations/backend.png similarity index 100% rename from en/modules/admin/assets/images/components/meetings/registrations/backend.png rename to docs/en/modules/admin/assets/images/components/meetings/registrations/backend.png diff --git a/en/modules/admin/assets/images/components/meetings/registrations/backend_w_registration_code.png b/docs/en/modules/admin/assets/images/components/meetings/registrations/backend_w_registration_code.png similarity index 100% rename from en/modules/admin/assets/images/components/meetings/registrations/backend_w_registration_code.png rename to docs/en/modules/admin/assets/images/components/meetings/registrations/backend_w_registration_code.png diff --git a/en/modules/admin/assets/images/components/meetings/registrations/frontend_confirm.png b/docs/en/modules/admin/assets/images/components/meetings/registrations/frontend_confirm.png similarity index 100% rename from en/modules/admin/assets/images/components/meetings/registrations/frontend_confirm.png rename to docs/en/modules/admin/assets/images/components/meetings/registrations/frontend_confirm.png diff --git a/en/modules/admin/assets/images/components/meetings/registrations/frontend_confirmed_w_code.png b/docs/en/modules/admin/assets/images/components/meetings/registrations/frontend_confirmed_w_code.png similarity index 100% rename from en/modules/admin/assets/images/components/meetings/registrations/frontend_confirmed_w_code.png rename to docs/en/modules/admin/assets/images/components/meetings/registrations/frontend_confirmed_w_code.png diff --git a/en/modules/admin/assets/images/components/meetings/registrations/frontend_join_meeting.png b/docs/en/modules/admin/assets/images/components/meetings/registrations/frontend_join_meeting.png similarity index 100% rename from en/modules/admin/assets/images/components/meetings/registrations/frontend_join_meeting.png rename to docs/en/modules/admin/assets/images/components/meetings/registrations/frontend_join_meeting.png diff --git a/en/modules/admin/assets/images/components/meetings/registrations/invite_attendee.png b/docs/en/modules/admin/assets/images/components/meetings/registrations/invite_attendee.png similarity index 100% rename from en/modules/admin/assets/images/components/meetings/registrations/invite_attendee.png rename to docs/en/modules/admin/assets/images/components/meetings/registrations/invite_attendee.png diff --git a/en/modules/admin/assets/images/components/page/component.png b/docs/en/modules/admin/assets/images/components/page/component.png similarity index 100% rename from en/modules/admin/assets/images/components/page/component.png rename to docs/en/modules/admin/assets/images/components/page/component.png diff --git a/en/modules/admin/assets/images/components/page/example01.png b/docs/en/modules/admin/assets/images/components/page/example01.png similarity index 100% rename from en/modules/admin/assets/images/components/page/example01.png rename to docs/en/modules/admin/assets/images/components/page/example01.png diff --git a/en/modules/admin/assets/images/components/page/example02.png b/docs/en/modules/admin/assets/images/components/page/example02.png similarity index 100% rename from en/modules/admin/assets/images/components/page/example02.png rename to docs/en/modules/admin/assets/images/components/page/example02.png diff --git a/en/modules/admin/assets/images/components/page/new_page.png b/docs/en/modules/admin/assets/images/components/page/new_page.png similarity index 100% rename from en/modules/admin/assets/images/components/page/new_page.png rename to docs/en/modules/admin/assets/images/components/page/new_page.png diff --git a/en/modules/admin/assets/images/components/proposals/amendments/amendment.png b/docs/en/modules/admin/assets/images/components/proposals/amendments/amendment.png similarity index 100% rename from en/modules/admin/assets/images/components/proposals/amendments/amendment.png rename to docs/en/modules/admin/assets/images/components/proposals/amendments/amendment.png diff --git a/en/modules/admin/assets/images/components/proposals/amendments/amendment_list.png b/docs/en/modules/admin/assets/images/components/proposals/amendments/amendment_list.png similarity index 100% rename from en/modules/admin/assets/images/components/proposals/amendments/amendment_list.png rename to docs/en/modules/admin/assets/images/components/proposals/amendments/amendment_list.png diff --git a/en/modules/admin/assets/images/components/proposals/amendments/amendment_list_filter.png b/docs/en/modules/admin/assets/images/components/proposals/amendments/amendment_list_filter.png similarity index 100% rename from en/modules/admin/assets/images/components/proposals/amendments/amendment_list_filter.png rename to docs/en/modules/admin/assets/images/components/proposals/amendments/amendment_list_filter.png diff --git a/en/modules/admin/assets/images/components/proposals/amendments/amendment_view_side_by_side.png b/docs/en/modules/admin/assets/images/components/proposals/amendments/amendment_view_side_by_side.png similarity index 100% rename from en/modules/admin/assets/images/components/proposals/amendments/amendment_view_side_by_side.png rename to docs/en/modules/admin/assets/images/components/proposals/amendments/amendment_view_side_by_side.png diff --git a/en/modules/admin/assets/images/components/proposals/amendments/create_amendment_draft.png b/docs/en/modules/admin/assets/images/components/proposals/amendments/create_amendment_draft.png similarity index 100% rename from en/modules/admin/assets/images/components/proposals/amendments/create_amendment_draft.png rename to docs/en/modules/admin/assets/images/components/proposals/amendments/create_amendment_draft.png diff --git a/en/modules/admin/assets/images/components/proposals/amendments/edit_amendment_draft.png b/docs/en/modules/admin/assets/images/components/proposals/amendments/edit_amendment_draft.png similarity index 100% rename from en/modules/admin/assets/images/components/proposals/amendments/edit_amendment_draft.png rename to docs/en/modules/admin/assets/images/components/proposals/amendments/edit_amendment_draft.png diff --git a/en/modules/admin/assets/images/components/proposals/amendments/proposal_amendmed.png b/docs/en/modules/admin/assets/images/components/proposals/amendments/proposal_amendmed.png similarity index 100% rename from en/modules/admin/assets/images/components/proposals/amendments/proposal_amendmed.png rename to docs/en/modules/admin/assets/images/components/proposals/amendments/proposal_amendmed.png diff --git a/en/modules/admin/assets/images/components/proposals/amendments/proposal_amendmed_accepted.png b/docs/en/modules/admin/assets/images/components/proposals/amendments/proposal_amendmed_accepted.png similarity index 100% rename from en/modules/admin/assets/images/components/proposals/amendments/proposal_amendmed_accepted.png rename to docs/en/modules/admin/assets/images/components/proposals/amendments/proposal_amendmed_accepted.png diff --git a/en/modules/admin/assets/images/components/proposals/amendments/proposal_amendmed_amendment_list.png b/docs/en/modules/admin/assets/images/components/proposals/amendments/proposal_amendmed_amendment_list.png similarity index 100% rename from en/modules/admin/assets/images/components/proposals/amendments/proposal_amendmed_amendment_list.png rename to docs/en/modules/admin/assets/images/components/proposals/amendments/proposal_amendmed_amendment_list.png diff --git a/en/modules/admin/assets/images/components/proposals/amendments/proposal_amendmed_final.png b/docs/en/modules/admin/assets/images/components/proposals/amendments/proposal_amendmed_final.png similarity index 100% rename from en/modules/admin/assets/images/components/proposals/amendments/proposal_amendmed_final.png rename to docs/en/modules/admin/assets/images/components/proposals/amendments/proposal_amendmed_final.png diff --git a/en/modules/admin/assets/images/components/proposals/amendments/proposal_amendmed_notification.png b/docs/en/modules/admin/assets/images/components/proposals/amendments/proposal_amendmed_notification.png similarity index 100% rename from en/modules/admin/assets/images/components/proposals/amendments/proposal_amendmed_notification.png rename to docs/en/modules/admin/assets/images/components/proposals/amendments/proposal_amendmed_notification.png diff --git a/en/modules/admin/assets/images/components/proposals/amendments/proposal_amendmed_review.png b/docs/en/modules/admin/assets/images/components/proposals/amendments/proposal_amendmed_review.png similarity index 100% rename from en/modules/admin/assets/images/components/proposals/amendments/proposal_amendmed_review.png rename to docs/en/modules/admin/assets/images/components/proposals/amendments/proposal_amendmed_review.png diff --git a/en/modules/admin/assets/images/components/proposals/amendments/proposal_amendmed_to_review.png b/docs/en/modules/admin/assets/images/components/proposals/amendments/proposal_amendmed_to_review.png similarity index 100% rename from en/modules/admin/assets/images/components/proposals/amendments/proposal_amendmed_to_review.png rename to docs/en/modules/admin/assets/images/components/proposals/amendments/proposal_amendmed_to_review.png diff --git a/en/modules/admin/assets/images/components/proposals/amendments/proposal_amendmed_versions.png b/docs/en/modules/admin/assets/images/components/proposals/amendments/proposal_amendmed_versions.png similarity index 100% rename from en/modules/admin/assets/images/components/proposals/amendments/proposal_amendmed_versions.png rename to docs/en/modules/admin/assets/images/components/proposals/amendments/proposal_amendmed_versions.png diff --git a/en/modules/admin/assets/images/components/proposals/amendments/proposal_to_amend.png b/docs/en/modules/admin/assets/images/components/proposals/amendments/proposal_to_amend.png similarity index 100% rename from en/modules/admin/assets/images/components/proposals/amendments/proposal_to_amend.png rename to docs/en/modules/admin/assets/images/components/proposals/amendments/proposal_to_amend.png diff --git a/en/modules/admin/assets/images/components/proposals/amendments/publish_amendment_draft.png b/docs/en/modules/admin/assets/images/components/proposals/amendments/publish_amendment_draft.png similarity index 100% rename from en/modules/admin/assets/images/components/proposals/amendments/publish_amendment_draft.png rename to docs/en/modules/admin/assets/images/components/proposals/amendments/publish_amendment_draft.png diff --git a/en/modules/admin/assets/images/components/proposals/answer_button_header.png b/docs/en/modules/admin/assets/images/components/proposals/answer_button_header.png similarity index 100% rename from en/modules/admin/assets/images/components/proposals/answer_button_header.png rename to docs/en/modules/admin/assets/images/components/proposals/answer_button_header.png diff --git a/en/modules/admin/assets/images/components/proposals/collaborative_drafts/access_requested.png b/docs/en/modules/admin/assets/images/components/proposals/collaborative_drafts/access_requested.png similarity index 100% rename from en/modules/admin/assets/images/components/proposals/collaborative_drafts/access_requested.png rename to docs/en/modules/admin/assets/images/components/proposals/collaborative_drafts/access_requested.png diff --git a/en/modules/admin/assets/images/components/proposals/collaborative_drafts/author_sidebar.png b/docs/en/modules/admin/assets/images/components/proposals/collaborative_drafts/author_sidebar.png similarity index 100% rename from en/modules/admin/assets/images/components/proposals/collaborative_drafts/author_sidebar.png rename to docs/en/modules/admin/assets/images/components/proposals/collaborative_drafts/author_sidebar.png diff --git a/en/modules/admin/assets/images/components/proposals/collaborative_drafts/collaborative_draft.png b/docs/en/modules/admin/assets/images/components/proposals/collaborative_drafts/collaborative_draft.png similarity index 100% rename from en/modules/admin/assets/images/components/proposals/collaborative_drafts/collaborative_draft.png rename to docs/en/modules/admin/assets/images/components/proposals/collaborative_drafts/collaborative_draft.png diff --git a/en/modules/admin/assets/images/components/proposals/collaborative_drafts/collaborative_draft_edited.png b/docs/en/modules/admin/assets/images/components/proposals/collaborative_drafts/collaborative_draft_edited.png similarity index 100% rename from en/modules/admin/assets/images/components/proposals/collaborative_drafts/collaborative_draft_edited.png rename to docs/en/modules/admin/assets/images/components/proposals/collaborative_drafts/collaborative_draft_edited.png diff --git a/en/modules/admin/assets/images/components/proposals/collaborative_drafts/collaborative_draft_edited_versions.png b/docs/en/modules/admin/assets/images/components/proposals/collaborative_drafts/collaborative_draft_edited_versions.png similarity index 100% rename from en/modules/admin/assets/images/components/proposals/collaborative_drafts/collaborative_draft_edited_versions.png rename to docs/en/modules/admin/assets/images/components/proposals/collaborative_drafts/collaborative_draft_edited_versions.png diff --git a/en/modules/admin/assets/images/components/proposals/collaborative_drafts/collaborative_draft_edited_versions_show_v2_01.png b/docs/en/modules/admin/assets/images/components/proposals/collaborative_drafts/collaborative_draft_edited_versions_show_v2_01.png similarity index 100% rename from en/modules/admin/assets/images/components/proposals/collaborative_drafts/collaborative_draft_edited_versions_show_v2_01.png rename to docs/en/modules/admin/assets/images/components/proposals/collaborative_drafts/collaborative_draft_edited_versions_show_v2_01.png diff --git a/en/modules/admin/assets/images/components/proposals/collaborative_drafts/collaborative_draft_edited_versions_show_v2_02.png b/docs/en/modules/admin/assets/images/components/proposals/collaborative_drafts/collaborative_draft_edited_versions_show_v2_02.png similarity index 100% rename from en/modules/admin/assets/images/components/proposals/collaborative_drafts/collaborative_draft_edited_versions_show_v2_02.png rename to docs/en/modules/admin/assets/images/components/proposals/collaborative_drafts/collaborative_draft_edited_versions_show_v2_02.png diff --git a/en/modules/admin/assets/images/components/proposals/collaborative_drafts/collaborative_draft_published.png b/docs/en/modules/admin/assets/images/components/proposals/collaborative_drafts/collaborative_draft_published.png similarity index 100% rename from en/modules/admin/assets/images/components/proposals/collaborative_drafts/collaborative_draft_published.png rename to docs/en/modules/admin/assets/images/components/proposals/collaborative_drafts/collaborative_draft_published.png diff --git a/en/modules/admin/assets/images/components/proposals/collaborative_drafts/collaborative_draft_request_access.png b/docs/en/modules/admin/assets/images/components/proposals/collaborative_drafts/collaborative_draft_request_access.png similarity index 100% rename from en/modules/admin/assets/images/components/proposals/collaborative_drafts/collaborative_draft_request_access.png rename to docs/en/modules/admin/assets/images/components/proposals/collaborative_drafts/collaborative_draft_request_access.png diff --git a/en/modules/admin/assets/images/components/proposals/collaborative_drafts/create_form.png b/docs/en/modules/admin/assets/images/components/proposals/collaborative_drafts/create_form.png similarity index 100% rename from en/modules/admin/assets/images/components/proposals/collaborative_drafts/create_form.png rename to docs/en/modules/admin/assets/images/components/proposals/collaborative_drafts/create_form.png diff --git a/en/modules/admin/assets/images/components/proposals/collaborative_drafts/edit_collaborative_draft.png b/docs/en/modules/admin/assets/images/components/proposals/collaborative_drafts/edit_collaborative_draft.png similarity index 100% rename from en/modules/admin/assets/images/components/proposals/collaborative_drafts/edit_collaborative_draft.png rename to docs/en/modules/admin/assets/images/components/proposals/collaborative_drafts/edit_collaborative_draft.png diff --git a/en/modules/admin/assets/images/components/proposals/collaborative_drafts/edit_form.png b/docs/en/modules/admin/assets/images/components/proposals/collaborative_drafts/edit_form.png similarity index 100% rename from en/modules/admin/assets/images/components/proposals/collaborative_drafts/edit_form.png rename to docs/en/modules/admin/assets/images/components/proposals/collaborative_drafts/edit_form.png diff --git a/en/modules/admin/assets/images/components/proposals/collaborative_drafts/list_empty.png b/docs/en/modules/admin/assets/images/components/proposals/collaborative_drafts/list_empty.png similarity index 100% rename from en/modules/admin/assets/images/components/proposals/collaborative_drafts/list_empty.png rename to docs/en/modules/admin/assets/images/components/proposals/collaborative_drafts/list_empty.png diff --git a/en/modules/admin/assets/images/components/proposals/collaborative_drafts/multiple_authors.png b/docs/en/modules/admin/assets/images/components/proposals/collaborative_drafts/multiple_authors.png similarity index 100% rename from en/modules/admin/assets/images/components/proposals/collaborative_drafts/multiple_authors.png rename to docs/en/modules/admin/assets/images/components/proposals/collaborative_drafts/multiple_authors.png diff --git a/en/modules/admin/assets/images/components/proposals/collaborative_drafts/notification.png b/docs/en/modules/admin/assets/images/components/proposals/collaborative_drafts/notification.png similarity index 100% rename from en/modules/admin/assets/images/components/proposals/collaborative_drafts/notification.png rename to docs/en/modules/admin/assets/images/components/proposals/collaborative_drafts/notification.png diff --git a/en/modules/admin/assets/images/components/proposals/collaborative_drafts/proposal.png b/docs/en/modules/admin/assets/images/components/proposals/collaborative_drafts/proposal.png similarity index 100% rename from en/modules/admin/assets/images/components/proposals/collaborative_drafts/proposal.png rename to docs/en/modules/admin/assets/images/components/proposals/collaborative_drafts/proposal.png diff --git a/en/modules/admin/assets/images/components/proposals/collaborative_drafts/proposals_list01.png b/docs/en/modules/admin/assets/images/components/proposals/collaborative_drafts/proposals_list01.png similarity index 100% rename from en/modules/admin/assets/images/components/proposals/collaborative_drafts/proposals_list01.png rename to docs/en/modules/admin/assets/images/components/proposals/collaborative_drafts/proposals_list01.png diff --git a/en/modules/admin/assets/images/components/proposals/collaborative_drafts/proposals_list02.png b/docs/en/modules/admin/assets/images/components/proposals/collaborative_drafts/proposals_list02.png similarity index 100% rename from en/modules/admin/assets/images/components/proposals/collaborative_drafts/proposals_list02.png rename to docs/en/modules/admin/assets/images/components/proposals/collaborative_drafts/proposals_list02.png diff --git a/en/modules/admin/assets/images/components/proposals/collaborative_drafts/publish_modal.png b/docs/en/modules/admin/assets/images/components/proposals/collaborative_drafts/publish_modal.png similarity index 100% rename from en/modules/admin/assets/images/components/proposals/collaborative_drafts/publish_modal.png rename to docs/en/modules/admin/assets/images/components/proposals/collaborative_drafts/publish_modal.png diff --git a/en/modules/admin/assets/images/components/proposals/component.png b/docs/en/modules/admin/assets/images/components/proposals/component.png similarity index 100% rename from en/modules/admin/assets/images/components/proposals/component.png rename to docs/en/modules/admin/assets/images/components/proposals/component.png diff --git a/en/modules/admin/assets/images/components/proposals/example01.png b/docs/en/modules/admin/assets/images/components/proposals/example01.png similarity index 100% rename from en/modules/admin/assets/images/components/proposals/example01.png rename to docs/en/modules/admin/assets/images/components/proposals/example01.png diff --git a/en/modules/admin/assets/images/components/proposals/example02.png b/docs/en/modules/admin/assets/images/components/proposals/example02.png similarity index 100% rename from en/modules/admin/assets/images/components/proposals/example02.png rename to docs/en/modules/admin/assets/images/components/proposals/example02.png diff --git a/en/modules/admin/assets/images/components/proposals/example03.png b/docs/en/modules/admin/assets/images/components/proposals/example03.png similarity index 100% rename from en/modules/admin/assets/images/components/proposals/example03.png rename to docs/en/modules/admin/assets/images/components/proposals/example03.png diff --git a/en/modules/admin/assets/images/components/proposals/manage_proposals.png b/docs/en/modules/admin/assets/images/components/proposals/manage_proposals.png similarity index 100% rename from en/modules/admin/assets/images/components/proposals/manage_proposals.png rename to docs/en/modules/admin/assets/images/components/proposals/manage_proposals.png diff --git a/en/modules/admin/assets/images/components/proposals/new_proposal_backend01.png b/docs/en/modules/admin/assets/images/components/proposals/new_proposal_backend01.png similarity index 100% rename from en/modules/admin/assets/images/components/proposals/new_proposal_backend01.png rename to docs/en/modules/admin/assets/images/components/proposals/new_proposal_backend01.png diff --git a/en/modules/admin/assets/images/components/proposals/new_proposal_backend02.png b/docs/en/modules/admin/assets/images/components/proposals/new_proposal_backend02.png similarity index 100% rename from en/modules/admin/assets/images/components/proposals/new_proposal_backend02.png rename to docs/en/modules/admin/assets/images/components/proposals/new_proposal_backend02.png diff --git a/en/modules/admin/assets/images/components/proposals/new_proposal_frontend.png b/docs/en/modules/admin/assets/images/components/proposals/new_proposal_frontend.png similarity index 100% rename from en/modules/admin/assets/images/components/proposals/new_proposal_frontend.png rename to docs/en/modules/admin/assets/images/components/proposals/new_proposal_frontend.png diff --git a/en/modules/admin/assets/images/components/proposals/new_proposal_frontend_compare.png b/docs/en/modules/admin/assets/images/components/proposals/new_proposal_frontend_compare.png similarity index 100% rename from en/modules/admin/assets/images/components/proposals/new_proposal_frontend_compare.png rename to docs/en/modules/admin/assets/images/components/proposals/new_proposal_frontend_compare.png diff --git a/en/modules/admin/assets/images/components/proposals/new_proposal_frontend_complete.png b/docs/en/modules/admin/assets/images/components/proposals/new_proposal_frontend_complete.png similarity index 100% rename from en/modules/admin/assets/images/components/proposals/new_proposal_frontend_complete.png rename to docs/en/modules/admin/assets/images/components/proposals/new_proposal_frontend_complete.png diff --git a/en/modules/admin/assets/images/components/proposals/new_proposal_frontend_publish.png b/docs/en/modules/admin/assets/images/components/proposals/new_proposal_frontend_publish.png similarity index 100% rename from en/modules/admin/assets/images/components/proposals/new_proposal_frontend_publish.png rename to docs/en/modules/admin/assets/images/components/proposals/new_proposal_frontend_publish.png diff --git a/en/modules/admin/assets/images/components/proposals/new_proposal_frontend_published.png b/docs/en/modules/admin/assets/images/components/proposals/new_proposal_frontend_published.png similarity index 100% rename from en/modules/admin/assets/images/components/proposals/new_proposal_frontend_published.png rename to docs/en/modules/admin/assets/images/components/proposals/new_proposal_frontend_published.png diff --git a/en/modules/admin/assets/images/components/proposals/origin_filter.png b/docs/en/modules/admin/assets/images/components/proposals/origin_filter.png similarity index 100% rename from en/modules/admin/assets/images/components/proposals/origin_filter.png rename to docs/en/modules/admin/assets/images/components/proposals/origin_filter.png diff --git a/en/modules/admin/assets/images/components/proposals/participatory_texts/add_document_form.png b/docs/en/modules/admin/assets/images/components/proposals/participatory_texts/add_document_form.png similarity index 100% rename from en/modules/admin/assets/images/components/proposals/participatory_texts/add_document_form.png rename to docs/en/modules/admin/assets/images/components/proposals/participatory_texts/add_document_form.png diff --git a/en/modules/admin/assets/images/components/proposals/participatory_texts/example01.png b/docs/en/modules/admin/assets/images/components/proposals/participatory_texts/example01.png similarity index 100% rename from en/modules/admin/assets/images/components/proposals/participatory_texts/example01.png rename to docs/en/modules/admin/assets/images/components/proposals/participatory_texts/example01.png diff --git a/en/modules/admin/assets/images/components/proposals/participatory_texts/example02.png b/docs/en/modules/admin/assets/images/components/proposals/participatory_texts/example02.png similarity index 100% rename from en/modules/admin/assets/images/components/proposals/participatory_texts/example02.png rename to docs/en/modules/admin/assets/images/components/proposals/participatory_texts/example02.png diff --git a/en/modules/admin/assets/images/components/proposals/participatory_texts/frontend.png b/docs/en/modules/admin/assets/images/components/proposals/participatory_texts/frontend.png similarity index 100% rename from en/modules/admin/assets/images/components/proposals/participatory_texts/frontend.png rename to docs/en/modules/admin/assets/images/components/proposals/participatory_texts/frontend.png diff --git a/en/modules/admin/assets/images/components/proposals/participatory_texts/frontend_hover.png b/docs/en/modules/admin/assets/images/components/proposals/participatory_texts/frontend_hover.png similarity index 100% rename from en/modules/admin/assets/images/components/proposals/participatory_texts/frontend_hover.png rename to docs/en/modules/admin/assets/images/components/proposals/participatory_texts/frontend_hover.png diff --git a/en/modules/admin/assets/images/components/proposals/participatory_texts/frontend_proposal.png b/docs/en/modules/admin/assets/images/components/proposals/participatory_texts/frontend_proposal.png similarity index 100% rename from en/modules/admin/assets/images/components/proposals/participatory_texts/frontend_proposal.png rename to docs/en/modules/admin/assets/images/components/proposals/participatory_texts/frontend_proposal.png diff --git a/en/modules/admin/assets/images/components/proposals/participatory_texts/imported_document_proposals.png b/docs/en/modules/admin/assets/images/components/proposals/participatory_texts/imported_document_proposals.png similarity index 100% rename from en/modules/admin/assets/images/components/proposals/participatory_texts/imported_document_proposals.png rename to docs/en/modules/admin/assets/images/components/proposals/participatory_texts/imported_document_proposals.png diff --git a/en/modules/admin/assets/images/components/proposals/participatory_texts/manage_proposals.png b/docs/en/modules/admin/assets/images/components/proposals/participatory_texts/manage_proposals.png similarity index 100% rename from en/modules/admin/assets/images/components/proposals/participatory_texts/manage_proposals.png rename to docs/en/modules/admin/assets/images/components/proposals/participatory_texts/manage_proposals.png diff --git a/en/modules/admin/assets/images/components/proposals/participatory_texts/preview_participatory_text.png b/docs/en/modules/admin/assets/images/components/proposals/participatory_texts/preview_participatory_text.png similarity index 100% rename from en/modules/admin/assets/images/components/proposals/participatory_texts/preview_participatory_text.png rename to docs/en/modules/admin/assets/images/components/proposals/participatory_texts/preview_participatory_text.png diff --git a/en/modules/admin/assets/images/components/proposals/participatory_texts/preview_participatory_text_empty.png b/docs/en/modules/admin/assets/images/components/proposals/participatory_texts/preview_participatory_text_empty.png similarity index 100% rename from en/modules/admin/assets/images/components/proposals/participatory_texts/preview_participatory_text_empty.png rename to docs/en/modules/admin/assets/images/components/proposals/participatory_texts/preview_participatory_text_empty.png diff --git a/en/modules/admin/assets/images/components/proposals/proposal_answer.png b/docs/en/modules/admin/assets/images/components/proposals/proposal_answer.png similarity index 100% rename from en/modules/admin/assets/images/components/proposals/proposal_answer.png rename to docs/en/modules/admin/assets/images/components/proposals/proposal_answer.png diff --git a/docs/en/modules/admin/assets/images/components/proposals/proposal_answer_publish.png b/docs/en/modules/admin/assets/images/components/proposals/proposal_answer_publish.png new file mode 100644 index 0000000000..b83dae9b45 Binary files /dev/null and b/docs/en/modules/admin/assets/images/components/proposals/proposal_answer_publish.png differ diff --git a/docs/en/modules/admin/assets/images/components/proposals/proposal_answer_publish_button.png b/docs/en/modules/admin/assets/images/components/proposals/proposal_answer_publish_button.png new file mode 100644 index 0000000000..2ff7dce1bf Binary files /dev/null and b/docs/en/modules/admin/assets/images/components/proposals/proposal_answer_publish_button.png differ diff --git a/en/modules/admin/assets/images/components/proposals/proposal_answer_state_accepted.png b/docs/en/modules/admin/assets/images/components/proposals/proposal_answer_state_accepted.png similarity index 100% rename from en/modules/admin/assets/images/components/proposals/proposal_answer_state_accepted.png rename to docs/en/modules/admin/assets/images/components/proposals/proposal_answer_state_accepted.png diff --git a/en/modules/admin/assets/images/components/proposals/proposal_answer_state_accepted_card.png b/docs/en/modules/admin/assets/images/components/proposals/proposal_answer_state_accepted_card.png similarity index 100% rename from en/modules/admin/assets/images/components/proposals/proposal_answer_state_accepted_card.png rename to docs/en/modules/admin/assets/images/components/proposals/proposal_answer_state_accepted_card.png diff --git a/en/modules/admin/assets/images/components/proposals/proposal_answer_state_evaluating.png b/docs/en/modules/admin/assets/images/components/proposals/proposal_answer_state_evaluating.png similarity index 100% rename from en/modules/admin/assets/images/components/proposals/proposal_answer_state_evaluating.png rename to docs/en/modules/admin/assets/images/components/proposals/proposal_answer_state_evaluating.png diff --git a/en/modules/admin/assets/images/components/proposals/proposal_answer_state_rejected.png b/docs/en/modules/admin/assets/images/components/proposals/proposal_answer_state_rejected.png similarity index 100% rename from en/modules/admin/assets/images/components/proposals/proposal_answer_state_rejected.png rename to docs/en/modules/admin/assets/images/components/proposals/proposal_answer_state_rejected.png diff --git a/en/modules/admin/assets/images/components/proposals/setting_card_image.png b/docs/en/modules/admin/assets/images/components/proposals/setting_card_image.png similarity index 100% rename from en/modules/admin/assets/images/components/proposals/setting_card_image.png rename to docs/en/modules/admin/assets/images/components/proposals/setting_card_image.png diff --git a/en/modules/admin/assets/images/components/proposals/setting_geocoding.png b/docs/en/modules/admin/assets/images/components/proposals/setting_geocoding.png similarity index 100% rename from en/modules/admin/assets/images/components/proposals/setting_geocoding.png rename to docs/en/modules/admin/assets/images/components/proposals/setting_geocoding.png diff --git a/en/modules/admin/assets/images/components/proposals/setting_hashtag.png b/docs/en/modules/admin/assets/images/components/proposals/setting_hashtag.png similarity index 100% rename from en/modules/admin/assets/images/components/proposals/setting_hashtag.png rename to docs/en/modules/admin/assets/images/components/proposals/setting_hashtag.png diff --git a/en/modules/admin/assets/images/components/proposals/setting_threshold01.png b/docs/en/modules/admin/assets/images/components/proposals/setting_threshold01.png similarity index 100% rename from en/modules/admin/assets/images/components/proposals/setting_threshold01.png rename to docs/en/modules/admin/assets/images/components/proposals/setting_threshold01.png diff --git a/en/modules/admin/assets/images/components/proposals/setting_threshold02.png b/docs/en/modules/admin/assets/images/components/proposals/setting_threshold02.png similarity index 100% rename from en/modules/admin/assets/images/components/proposals/setting_threshold02.png rename to docs/en/modules/admin/assets/images/components/proposals/setting_threshold02.png diff --git a/docs/en/modules/admin/assets/images/components/skeleton/component.png b/docs/en/modules/admin/assets/images/components/skeleton/component.png new file mode 100644 index 0000000000..ffadc4250d Binary files /dev/null and b/docs/en/modules/admin/assets/images/components/skeleton/component.png differ diff --git a/docs/en/modules/admin/assets/images/components/skeleton/example01.png b/docs/en/modules/admin/assets/images/components/skeleton/example01.png new file mode 100644 index 0000000000..ffadc4250d Binary files /dev/null and b/docs/en/modules/admin/assets/images/components/skeleton/example01.png differ diff --git a/docs/en/modules/admin/assets/images/components/skeleton/example02.png b/docs/en/modules/admin/assets/images/components/skeleton/example02.png new file mode 100644 index 0000000000..ffadc4250d Binary files /dev/null and b/docs/en/modules/admin/assets/images/components/skeleton/example02.png differ diff --git a/docs/en/modules/admin/assets/images/components/skeleton/example03.png b/docs/en/modules/admin/assets/images/components/skeleton/example03.png new file mode 100644 index 0000000000..ffadc4250d Binary files /dev/null and b/docs/en/modules/admin/assets/images/components/skeleton/example03.png differ diff --git a/docs/en/modules/admin/assets/images/components/skeleton/example04.png b/docs/en/modules/admin/assets/images/components/skeleton/example04.png new file mode 100644 index 0000000000..ffadc4250d Binary files /dev/null and b/docs/en/modules/admin/assets/images/components/skeleton/example04.png differ diff --git a/docs/en/modules/admin/assets/images/components/skeleton/manage_skeletons.png b/docs/en/modules/admin/assets/images/components/skeleton/manage_skeletons.png new file mode 100644 index 0000000000..ffadc4250d Binary files /dev/null and b/docs/en/modules/admin/assets/images/components/skeleton/manage_skeletons.png differ diff --git a/docs/en/modules/admin/assets/images/components/skeleton/new_skeleton.png b/docs/en/modules/admin/assets/images/components/skeleton/new_skeleton.png new file mode 100644 index 0000000000..ffadc4250d Binary files /dev/null and b/docs/en/modules/admin/assets/images/components/skeleton/new_skeleton.png differ diff --git a/en/modules/admin/assets/images/components/surveys/add_question_button.png b/docs/en/modules/admin/assets/images/components/surveys/add_question_button.png similarity index 100% rename from en/modules/admin/assets/images/components/surveys/add_question_button.png rename to docs/en/modules/admin/assets/images/components/surveys/add_question_button.png diff --git a/en/modules/admin/assets/images/components/surveys/component.png b/docs/en/modules/admin/assets/images/components/surveys/component.png similarity index 100% rename from en/modules/admin/assets/images/components/surveys/component.png rename to docs/en/modules/admin/assets/images/components/surveys/component.png diff --git a/en/modules/admin/assets/images/components/surveys/edit_form.png b/docs/en/modules/admin/assets/images/components/surveys/edit_form.png similarity index 100% rename from en/modules/admin/assets/images/components/surveys/edit_form.png rename to docs/en/modules/admin/assets/images/components/surveys/edit_form.png diff --git a/en/modules/admin/assets/images/components/surveys/edit_questionnaire.png b/docs/en/modules/admin/assets/images/components/surveys/edit_questionnaire.png similarity index 100% rename from en/modules/admin/assets/images/components/surveys/edit_questionnaire.png rename to docs/en/modules/admin/assets/images/components/surveys/edit_questionnaire.png diff --git a/en/modules/admin/assets/images/components/surveys/example01.png b/docs/en/modules/admin/assets/images/components/surveys/example01.png similarity index 100% rename from en/modules/admin/assets/images/components/surveys/example01.png rename to docs/en/modules/admin/assets/images/components/surveys/example01.png diff --git a/en/modules/admin/assets/images/components/surveys/question_form.png b/docs/en/modules/admin/assets/images/components/surveys/question_form.png similarity index 100% rename from en/modules/admin/assets/images/components/surveys/question_form.png rename to docs/en/modules/admin/assets/images/components/surveys/question_form.png diff --git a/en/modules/admin/assets/images/components/surveys/question_form_limits_backend.png b/docs/en/modules/admin/assets/images/components/surveys/question_form_limits_backend.png similarity index 100% rename from en/modules/admin/assets/images/components/surveys/question_form_limits_backend.png rename to docs/en/modules/admin/assets/images/components/surveys/question_form_limits_backend.png diff --git a/en/modules/admin/assets/images/components/surveys/question_form_limits_frontend.png b/docs/en/modules/admin/assets/images/components/surveys/question_form_limits_frontend.png similarity index 100% rename from en/modules/admin/assets/images/components/surveys/question_form_limits_frontend.png rename to docs/en/modules/admin/assets/images/components/surveys/question_form_limits_frontend.png diff --git a/en/modules/admin/assets/images/components/surveys/type_files_backend.png b/docs/en/modules/admin/assets/images/components/surveys/type_files_backend.png similarity index 100% rename from en/modules/admin/assets/images/components/surveys/type_files_backend.png rename to docs/en/modules/admin/assets/images/components/surveys/type_files_backend.png diff --git a/en/modules/admin/assets/images/components/surveys/type_files_frontend.png b/docs/en/modules/admin/assets/images/components/surveys/type_files_frontend.png similarity index 100% rename from en/modules/admin/assets/images/components/surveys/type_files_frontend.png rename to docs/en/modules/admin/assets/images/components/surveys/type_files_frontend.png diff --git a/en/modules/admin/assets/images/components/surveys/type_long_answer_backend.png b/docs/en/modules/admin/assets/images/components/surveys/type_long_answer_backend.png similarity index 100% rename from en/modules/admin/assets/images/components/surveys/type_long_answer_backend.png rename to docs/en/modules/admin/assets/images/components/surveys/type_long_answer_backend.png diff --git a/en/modules/admin/assets/images/components/surveys/type_long_answer_frontend.png b/docs/en/modules/admin/assets/images/components/surveys/type_long_answer_frontend.png similarity index 100% rename from en/modules/admin/assets/images/components/surveys/type_long_answer_frontend.png rename to docs/en/modules/admin/assets/images/components/surveys/type_long_answer_frontend.png diff --git a/en/modules/admin/assets/images/components/surveys/type_matrix_multiple_option_backend.png b/docs/en/modules/admin/assets/images/components/surveys/type_matrix_multiple_option_backend.png similarity index 100% rename from en/modules/admin/assets/images/components/surveys/type_matrix_multiple_option_backend.png rename to docs/en/modules/admin/assets/images/components/surveys/type_matrix_multiple_option_backend.png diff --git a/en/modules/admin/assets/images/components/surveys/type_matrix_multiple_option_frontend.png b/docs/en/modules/admin/assets/images/components/surveys/type_matrix_multiple_option_frontend.png similarity index 100% rename from en/modules/admin/assets/images/components/surveys/type_matrix_multiple_option_frontend.png rename to docs/en/modules/admin/assets/images/components/surveys/type_matrix_multiple_option_frontend.png diff --git a/en/modules/admin/assets/images/components/surveys/type_matrix_single_option_backend.png b/docs/en/modules/admin/assets/images/components/surveys/type_matrix_single_option_backend.png similarity index 100% rename from en/modules/admin/assets/images/components/surveys/type_matrix_single_option_backend.png rename to docs/en/modules/admin/assets/images/components/surveys/type_matrix_single_option_backend.png diff --git a/en/modules/admin/assets/images/components/surveys/type_matrix_single_option_frontend.png b/docs/en/modules/admin/assets/images/components/surveys/type_matrix_single_option_frontend.png similarity index 100% rename from en/modules/admin/assets/images/components/surveys/type_matrix_single_option_frontend.png rename to docs/en/modules/admin/assets/images/components/surveys/type_matrix_single_option_frontend.png diff --git a/en/modules/admin/assets/images/components/surveys/type_multiple_option_backend.png b/docs/en/modules/admin/assets/images/components/surveys/type_multiple_option_backend.png similarity index 100% rename from en/modules/admin/assets/images/components/surveys/type_multiple_option_backend.png rename to docs/en/modules/admin/assets/images/components/surveys/type_multiple_option_backend.png diff --git a/en/modules/admin/assets/images/components/surveys/type_multiple_option_frontend.png b/docs/en/modules/admin/assets/images/components/surveys/type_multiple_option_frontend.png similarity index 100% rename from en/modules/admin/assets/images/components/surveys/type_multiple_option_frontend.png rename to docs/en/modules/admin/assets/images/components/surveys/type_multiple_option_frontend.png diff --git a/en/modules/admin/assets/images/components/surveys/type_short_answer_backend.png b/docs/en/modules/admin/assets/images/components/surveys/type_short_answer_backend.png similarity index 100% rename from en/modules/admin/assets/images/components/surveys/type_short_answer_backend.png rename to docs/en/modules/admin/assets/images/components/surveys/type_short_answer_backend.png diff --git a/en/modules/admin/assets/images/components/surveys/type_short_answer_frontend.png b/docs/en/modules/admin/assets/images/components/surveys/type_short_answer_frontend.png similarity index 100% rename from en/modules/admin/assets/images/components/surveys/type_short_answer_frontend.png rename to docs/en/modules/admin/assets/images/components/surveys/type_short_answer_frontend.png diff --git a/en/modules/admin/assets/images/components/surveys/type_single_option_backend.png b/docs/en/modules/admin/assets/images/components/surveys/type_single_option_backend.png similarity index 100% rename from en/modules/admin/assets/images/components/surveys/type_single_option_backend.png rename to docs/en/modules/admin/assets/images/components/surveys/type_single_option_backend.png diff --git a/en/modules/admin/assets/images/components/surveys/type_single_option_frontend.png b/docs/en/modules/admin/assets/images/components/surveys/type_single_option_frontend.png similarity index 100% rename from en/modules/admin/assets/images/components/surveys/type_single_option_frontend.png rename to docs/en/modules/admin/assets/images/components/surveys/type_single_option_frontend.png diff --git a/en/modules/admin/assets/images/components/surveys/type_sorting_backend.png b/docs/en/modules/admin/assets/images/components/surveys/type_sorting_backend.png similarity index 100% rename from en/modules/admin/assets/images/components/surveys/type_sorting_backend.png rename to docs/en/modules/admin/assets/images/components/surveys/type_sorting_backend.png diff --git a/en/modules/admin/assets/images/components/surveys/type_sorting_frontend.png b/docs/en/modules/admin/assets/images/components/surveys/type_sorting_frontend.png similarity index 100% rename from en/modules/admin/assets/images/components/surveys/type_sorting_frontend.png rename to docs/en/modules/admin/assets/images/components/surveys/type_sorting_frontend.png diff --git a/docs/en/modules/admin/assets/images/features/badges/accepted_proposals_badge.png b/docs/en/modules/admin/assets/images/features/badges/accepted_proposals_badge.png new file mode 100644 index 0000000000..b58a5127fc Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/badges/accepted_proposals_badge.png differ diff --git a/docs/en/modules/admin/assets/images/features/badges/attended_meetings_badge.png b/docs/en/modules/admin/assets/images/features/badges/attended_meetings_badge.png new file mode 100644 index 0000000000..48dc88b79f Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/badges/attended_meetings_badge.png differ diff --git a/docs/en/modules/admin/assets/images/features/badges/badges_page.png b/docs/en/modules/admin/assets/images/features/badges/badges_page.png new file mode 100644 index 0000000000..7dad7e04be Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/badges/badges_page.png differ diff --git a/docs/en/modules/admin/assets/images/features/badges/debates_badge.png b/docs/en/modules/admin/assets/images/features/badges/debates_badge.png new file mode 100644 index 0000000000..66b93ed15b Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/badges/debates_badge.png differ diff --git a/docs/en/modules/admin/assets/images/features/badges/followers_badge.png b/docs/en/modules/admin/assets/images/features/badges/followers_badge.png new file mode 100644 index 0000000000..0484cca348 Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/badges/followers_badge.png differ diff --git a/docs/en/modules/admin/assets/images/features/badges/notification.png b/docs/en/modules/admin/assets/images/features/badges/notification.png new file mode 100644 index 0000000000..8e0d6733e9 Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/badges/notification.png differ diff --git a/docs/en/modules/admin/assets/images/features/badges/profile_badges.png b/docs/en/modules/admin/assets/images/features/badges/profile_badges.png new file mode 100644 index 0000000000..4c04ebcf04 Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/badges/profile_badges.png differ diff --git a/docs/en/modules/admin/assets/images/features/badges/proposal_supports_badge.png b/docs/en/modules/admin/assets/images/features/badges/proposal_supports_badge.png new file mode 100644 index 0000000000..edd934fcc5 Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/badges/proposal_supports_badge.png differ diff --git a/docs/en/modules/admin/assets/images/features/badges/proposals_badge.png b/docs/en/modules/admin/assets/images/features/badges/proposals_badge.png new file mode 100644 index 0000000000..5271887415 Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/badges/proposals_badge.png differ diff --git a/docs/en/modules/admin/assets/images/features/badges/published_initiatives_badge.png b/docs/en/modules/admin/assets/images/features/badges/published_initiatives_badge.png new file mode 100644 index 0000000000..eb8dc3868c Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/badges/published_initiatives_badge.png differ diff --git a/docs/en/modules/admin/assets/images/features/comments/actions.png b/docs/en/modules/admin/assets/images/features/comments/actions.png new file mode 100644 index 0000000000..a78e056f09 Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/comments/actions.png differ diff --git a/docs/en/modules/admin/assets/images/features/comments/anidation_levels.png b/docs/en/modules/admin/assets/images/features/comments/anidation_levels.png new file mode 100644 index 0000000000..6f1bb55de9 Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/comments/anidation_levels.png differ diff --git a/docs/en/modules/admin/assets/images/features/comments/deleted_comment.png b/docs/en/modules/admin/assets/images/features/comments/deleted_comment.png new file mode 100644 index 0000000000..73e9677a93 Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/comments/deleted_comment.png differ diff --git a/docs/en/modules/admin/assets/images/features/comments/edited_comment.png b/docs/en/modules/admin/assets/images/features/comments/edited_comment.png new file mode 100644 index 0000000000..22f83b6561 Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/comments/edited_comment.png differ diff --git a/docs/en/modules/admin/assets/images/features/comments/form.png b/docs/en/modules/admin/assets/images/features/comments/form.png new file mode 100644 index 0000000000..507ccce049 Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/comments/form.png differ diff --git a/docs/en/modules/admin/assets/images/features/comments/hashtag_search.png b/docs/en/modules/admin/assets/images/features/comments/hashtag_search.png new file mode 100644 index 0000000000..770fbaf0c3 Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/comments/hashtag_search.png differ diff --git a/docs/en/modules/admin/assets/images/features/comments/nested_comment.png b/docs/en/modules/admin/assets/images/features/comments/nested_comment.png new file mode 100644 index 0000000000..b3f178e6aa Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/comments/nested_comment.png differ diff --git a/docs/en/modules/admin/assets/images/features/comments/order_by.png b/docs/en/modules/admin/assets/images/features/comments/order_by.png new file mode 100644 index 0000000000..f01fde76b9 Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/comments/order_by.png differ diff --git a/docs/en/modules/admin/assets/images/features/comments/rich_text_read.png b/docs/en/modules/admin/assets/images/features/comments/rich_text_read.png new file mode 100644 index 0000000000..734b6e9547 Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/comments/rich_text_read.png differ diff --git a/docs/en/modules/admin/assets/images/features/comments/rich_text_write.png b/docs/en/modules/admin/assets/images/features/comments/rich_text_write.png new file mode 100644 index 0000000000..79732cb107 Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/comments/rich_text_write.png differ diff --git a/docs/en/modules/admin/assets/images/features/comments/single_comment.png b/docs/en/modules/admin/assets/images/features/comments/single_comment.png new file mode 100644 index 0000000000..996d42729a Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/comments/single_comment.png differ diff --git a/docs/en/modules/admin/assets/images/features/comments/xss_read.png b/docs/en/modules/admin/assets/images/features/comments/xss_read.png new file mode 100644 index 0000000000..868bc09eb8 Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/comments/xss_read.png differ diff --git a/docs/en/modules/admin/assets/images/features/comments/xss_write.png b/docs/en/modules/admin/assets/images/features/comments/xss_write.png new file mode 100644 index 0000000000..fff9aa1452 Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/comments/xss_write.png differ diff --git a/docs/en/modules/admin/assets/images/features/conversations/conversation.png b/docs/en/modules/admin/assets/images/features/conversations/conversation.png new file mode 100644 index 0000000000..3f7472a560 Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/conversations/conversation.png differ diff --git a/docs/en/modules/admin/assets/images/features/conversations/conversations.png b/docs/en/modules/admin/assets/images/features/conversations/conversations.png new file mode 100644 index 0000000000..e740e03e2e Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/conversations/conversations.png differ diff --git a/docs/en/modules/admin/assets/images/features/conversations/conversations_dropdown.png b/docs/en/modules/admin/assets/images/features/conversations/conversations_dropdown.png new file mode 100644 index 0000000000..216e5b7ff8 Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/conversations/conversations_dropdown.png differ diff --git a/docs/en/modules/admin/assets/images/features/conversations/group_conversations.png b/docs/en/modules/admin/assets/images/features/conversations/group_conversations.png new file mode 100644 index 0000000000..9de859423d Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/conversations/group_conversations.png differ diff --git a/docs/en/modules/admin/assets/images/features/conversations/new_conversation_modal.png b/docs/en/modules/admin/assets/images/features/conversations/new_conversation_modal.png new file mode 100644 index 0000000000..6f3f1ea43b Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/conversations/new_conversation_modal.png differ diff --git a/docs/en/modules/admin/assets/images/features/conversations/profile.png b/docs/en/modules/admin/assets/images/features/conversations/profile.png new file mode 100644 index 0000000000..632f601761 Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/conversations/profile.png differ diff --git a/docs/en/modules/admin/assets/images/features/conversations/start_a_conversation_form.png b/docs/en/modules/admin/assets/images/features/conversations/start_a_conversation_form.png new file mode 100644 index 0000000000..20689be6be Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/conversations/start_a_conversation_form.png differ diff --git a/docs/en/modules/admin/assets/images/features/embed/example.png b/docs/en/modules/admin/assets/images/features/embed/example.png new file mode 100644 index 0000000000..f3a67157c0 Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/embed/example.png differ diff --git a/docs/en/modules/admin/assets/images/features/embed/link.png b/docs/en/modules/admin/assets/images/features/embed/link.png new file mode 100644 index 0000000000..73665a7311 Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/embed/link.png differ diff --git a/docs/en/modules/admin/assets/images/features/embed/modal.png b/docs/en/modules/admin/assets/images/features/embed/modal.png new file mode 100644 index 0000000000..5886e7d063 Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/embed/modal.png differ diff --git a/docs/en/modules/admin/assets/images/features/embed/sidebar.png b/docs/en/modules/admin/assets/images/features/embed/sidebar.png new file mode 100644 index 0000000000..3367573b1f Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/embed/sidebar.png differ diff --git a/docs/en/modules/admin/assets/images/features/endorsements/full_list.png b/docs/en/modules/admin/assets/images/features/endorsements/full_list.png new file mode 100644 index 0000000000..be562bd20a Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/endorsements/full_list.png differ diff --git a/docs/en/modules/admin/assets/images/features/endorsements/list.png b/docs/en/modules/admin/assets/images/features/endorsements/list.png new file mode 100644 index 0000000000..a0b3ee9a86 Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/endorsements/list.png differ diff --git a/docs/en/modules/admin/assets/images/features/endorsements/modal.png b/docs/en/modules/admin/assets/images/features/endorsements/modal.png new file mode 100644 index 0000000000..f33763bc17 Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/endorsements/modal.png differ diff --git a/docs/en/modules/admin/assets/images/features/endorsements/sidebar.png b/docs/en/modules/admin/assets/images/features/endorsements/sidebar.png new file mode 100644 index 0000000000..2b247ca042 Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/endorsements/sidebar.png differ diff --git a/docs/en/modules/admin/assets/images/features/fingerprint/content.png b/docs/en/modules/admin/assets/images/features/fingerprint/content.png new file mode 100644 index 0000000000..6968c97854 Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/fingerprint/content.png differ diff --git a/docs/en/modules/admin/assets/images/features/fingerprint/md5calc.png b/docs/en/modules/admin/assets/images/features/fingerprint/md5calc.png new file mode 100644 index 0000000000..ec7a99953a Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/fingerprint/md5calc.png differ diff --git a/docs/en/modules/admin/assets/images/features/fingerprint/modal.png b/docs/en/modules/admin/assets/images/features/fingerprint/modal.png new file mode 100644 index 0000000000..58e6a83456 Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/fingerprint/modal.png differ diff --git a/docs/en/modules/admin/assets/images/features/follows/button_follow.png b/docs/en/modules/admin/assets/images/features/follows/button_follow.png new file mode 100644 index 0000000000..8faa8f7124 Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/follows/button_follow.png differ diff --git a/docs/en/modules/admin/assets/images/features/follows/button_stop_following.png b/docs/en/modules/admin/assets/images/features/follows/button_stop_following.png new file mode 100644 index 0000000000..475cad797c Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/follows/button_stop_following.png differ diff --git a/docs/en/modules/admin/assets/images/features/follows/user_tooltip_follow.png b/docs/en/modules/admin/assets/images/features/follows/user_tooltip_follow.png new file mode 100644 index 0000000000..9e22b5b1b0 Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/follows/user_tooltip_follow.png differ diff --git a/docs/en/modules/admin/assets/images/features/metrics/example.png b/docs/en/modules/admin/assets/images/features/metrics/example.png new file mode 100644 index 0000000000..10194dddf6 Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/metrics/example.png differ diff --git a/docs/en/modules/admin/assets/images/features/metrics/example_stats.png b/docs/en/modules/admin/assets/images/features/metrics/example_stats.png new file mode 100644 index 0000000000..bdf040a7eb Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/metrics/example_stats.png differ diff --git a/docs/en/modules/admin/assets/images/features/metrics/homepage.png b/docs/en/modules/admin/assets/images/features/metrics/homepage.png new file mode 100644 index 0000000000..891af80cc1 Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/metrics/homepage.png differ diff --git a/docs/en/modules/admin/assets/images/features/metrics/homepage_stats.png b/docs/en/modules/admin/assets/images/features/metrics/homepage_stats.png new file mode 100644 index 0000000000..332aa3db88 Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/metrics/homepage_stats.png differ diff --git a/docs/en/modules/admin/assets/images/features/metrics/page.png b/docs/en/modules/admin/assets/images/features/metrics/page.png new file mode 100644 index 0000000000..7e1931238f Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/metrics/page.png differ diff --git a/docs/en/modules/admin/assets/images/features/my_account/account.png b/docs/en/modules/admin/assets/images/features/my_account/account.png new file mode 100644 index 0000000000..acb5791ec6 Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/my_account/account.png differ diff --git a/docs/en/modules/admin/assets/images/features/my_account/account_dropdown.png b/docs/en/modules/admin/assets/images/features/my_account/account_dropdown.png new file mode 100644 index 0000000000..39b8aea608 Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/my_account/account_dropdown.png differ diff --git a/docs/en/modules/admin/assets/images/features/my_account/authorizations.png b/docs/en/modules/admin/assets/images/features/my_account/authorizations.png new file mode 100644 index 0000000000..d44fa4d37b Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/my_account/authorizations.png differ diff --git a/docs/en/modules/admin/assets/images/features/my_account/delete_my_account.png b/docs/en/modules/admin/assets/images/features/my_account/delete_my_account.png new file mode 100644 index 0000000000..e14a3ebd18 Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/my_account/delete_my_account.png differ diff --git a/docs/en/modules/admin/assets/images/features/my_account/delete_my_account_confirm.png b/docs/en/modules/admin/assets/images/features/my_account/delete_my_account_confirm.png new file mode 100644 index 0000000000..7213207ad3 Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/my_account/delete_my_account_confirm.png differ diff --git a/docs/en/modules/admin/assets/images/features/my_account/delete_my_account_deleted.png b/docs/en/modules/admin/assets/images/features/my_account/delete_my_account_deleted.png new file mode 100644 index 0000000000..b590276fef Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/my_account/delete_my_account_deleted.png differ diff --git a/docs/en/modules/admin/assets/images/features/my_account/groups.png b/docs/en/modules/admin/assets/images/features/my_account/groups.png new file mode 100644 index 0000000000..283cece52e Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/my_account/groups.png differ diff --git a/docs/en/modules/admin/assets/images/features/my_account/my_data.png b/docs/en/modules/admin/assets/images/features/my_account/my_data.png new file mode 100644 index 0000000000..88ef07ee34 Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/my_account/my_data.png differ diff --git a/docs/en/modules/admin/assets/images/features/my_account/my_data_email.png b/docs/en/modules/admin/assets/images/features/my_account/my_data_email.png new file mode 100644 index 0000000000..4b8e060f95 Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/my_account/my_data_email.png differ diff --git a/docs/en/modules/admin/assets/images/features/my_account/my_interests.png b/docs/en/modules/admin/assets/images/features/my_account/my_interests.png new file mode 100644 index 0000000000..bd84772cb8 Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/my_account/my_interests.png differ diff --git a/docs/en/modules/admin/assets/images/features/my_account/notifications_settings.png b/docs/en/modules/admin/assets/images/features/my_account/notifications_settings.png new file mode 100644 index 0000000000..c871244ff7 Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/my_account/notifications_settings.png differ diff --git a/docs/en/modules/admin/assets/images/features/my_account/password_change.png b/docs/en/modules/admin/assets/images/features/my_account/password_change.png new file mode 100644 index 0000000000..94aaf31a25 Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/my_account/password_change.png differ diff --git a/docs/en/modules/admin/assets/images/features/my_profile/profile_activity.png b/docs/en/modules/admin/assets/images/features/my_profile/profile_activity.png new file mode 100644 index 0000000000..bfaeea1aaf Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/my_profile/profile_activity.png differ diff --git a/docs/en/modules/admin/assets/images/features/my_profile/profile_badges.png b/docs/en/modules/admin/assets/images/features/my_profile/profile_badges.png new file mode 100644 index 0000000000..5813a8cc5f Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/my_profile/profile_badges.png differ diff --git a/docs/en/modules/admin/assets/images/features/my_profile/profile_create_group.png b/docs/en/modules/admin/assets/images/features/my_profile/profile_create_group.png new file mode 100644 index 0000000000..014451a3d1 Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/my_profile/profile_create_group.png differ diff --git a/docs/en/modules/admin/assets/images/features/my_profile/profile_dropdown.png b/docs/en/modules/admin/assets/images/features/my_profile/profile_dropdown.png new file mode 100644 index 0000000000..9e8f83dcf0 Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/my_profile/profile_dropdown.png differ diff --git a/docs/en/modules/admin/assets/images/features/my_profile/profile_followers.png b/docs/en/modules/admin/assets/images/features/my_profile/profile_followers.png new file mode 100644 index 0000000000..c7bf28593c Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/my_profile/profile_followers.png differ diff --git a/docs/en/modules/admin/assets/images/features/my_profile/profile_follows.png b/docs/en/modules/admin/assets/images/features/my_profile/profile_follows.png new file mode 100644 index 0000000000..c998432d2f Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/my_profile/profile_follows.png differ diff --git a/docs/en/modules/admin/assets/images/features/my_profile/profile_groups.png b/docs/en/modules/admin/assets/images/features/my_profile/profile_groups.png new file mode 100644 index 0000000000..1f17f9487e Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/my_profile/profile_groups.png differ diff --git a/docs/en/modules/admin/assets/images/features/my_profile/profile_manage_group.png b/docs/en/modules/admin/assets/images/features/my_profile/profile_manage_group.png new file mode 100644 index 0000000000..b220cd1749 Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/my_profile/profile_manage_group.png differ diff --git a/docs/en/modules/admin/assets/images/features/my_profile/profile_pop_up.png b/docs/en/modules/admin/assets/images/features/my_profile/profile_pop_up.png new file mode 100644 index 0000000000..73ab34e7b2 Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/my_profile/profile_pop_up.png differ diff --git a/docs/en/modules/admin/assets/images/features/my_profile/user_group_conversation.png b/docs/en/modules/admin/assets/images/features/my_profile/user_group_conversation.png new file mode 100644 index 0000000000..9de859423d Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/my_profile/user_group_conversation.png differ diff --git a/docs/en/modules/admin/assets/images/features/my_profile/user_group_endorse.png b/docs/en/modules/admin/assets/images/features/my_profile/user_group_endorse.png new file mode 100644 index 0000000000..0e42acaa60 Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/my_profile/user_group_endorse.png differ diff --git a/docs/en/modules/admin/assets/images/features/my_profile/user_group_invite_participant.png b/docs/en/modules/admin/assets/images/features/my_profile/user_group_invite_participant.png new file mode 100644 index 0000000000..66f7350ef7 Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/my_profile/user_group_invite_participant.png differ diff --git a/docs/en/modules/admin/assets/images/features/my_profile/user_group_make_comment.png b/docs/en/modules/admin/assets/images/features/my_profile/user_group_make_comment.png new file mode 100644 index 0000000000..fd2846e74f Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/my_profile/user_group_make_comment.png differ diff --git a/docs/en/modules/admin/assets/images/features/my_profile/user_group_manage_admins.png b/docs/en/modules/admin/assets/images/features/my_profile/user_group_manage_admins.png new file mode 100644 index 0000000000..8c86b70509 Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/my_profile/user_group_manage_admins.png differ diff --git a/docs/en/modules/admin/assets/images/features/my_profile/user_group_manage_participant.png b/docs/en/modules/admin/assets/images/features/my_profile/user_group_manage_participant.png new file mode 100644 index 0000000000..c880cc7314 Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/my_profile/user_group_manage_participant.png differ diff --git a/docs/en/modules/admin/assets/images/features/newsletters/newsletter_contact_permission.png b/docs/en/modules/admin/assets/images/features/newsletters/newsletter_contact_permission.png new file mode 100644 index 0000000000..ab12d68bc0 Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/newsletters/newsletter_contact_permission.png differ diff --git a/docs/en/modules/admin/assets/images/features/newsletters/newsletter_deliver_modal.png b/docs/en/modules/admin/assets/images/features/newsletters/newsletter_deliver_modal.png new file mode 100644 index 0000000000..b479ba7cb7 Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/newsletters/newsletter_deliver_modal.png differ diff --git a/docs/en/modules/admin/assets/images/features/newsletters/newsletter_list.png b/docs/en/modules/admin/assets/images/features/newsletters/newsletter_list.png new file mode 100644 index 0000000000..8639dc3948 Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/newsletters/newsletter_list.png differ diff --git a/docs/en/modules/admin/assets/images/features/newsletters/newsletter_menu.png b/docs/en/modules/admin/assets/images/features/newsletters/newsletter_menu.png new file mode 100644 index 0000000000..75a93ed142 Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/newsletters/newsletter_menu.png differ diff --git a/docs/en/modules/admin/assets/images/features/newsletters/newsletter_new_basic.png b/docs/en/modules/admin/assets/images/features/newsletters/newsletter_new_basic.png new file mode 100644 index 0000000000..17f10b6b36 Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/newsletters/newsletter_new_basic.png differ diff --git a/docs/en/modules/admin/assets/images/features/newsletters/newsletter_new_cta.png b/docs/en/modules/admin/assets/images/features/newsletters/newsletter_new_cta.png new file mode 100644 index 0000000000..fa814af12a Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/newsletters/newsletter_new_cta.png differ diff --git a/docs/en/modules/admin/assets/images/features/newsletters/newsletter_participant_notifications_settings.png b/docs/en/modules/admin/assets/images/features/newsletters/newsletter_participant_notifications_settings.png new file mode 100644 index 0000000000..fbe5921a49 Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/newsletters/newsletter_participant_notifications_settings.png differ diff --git a/docs/en/modules/admin/assets/images/features/newsletters/newsletter_preview_basic_example.png b/docs/en/modules/admin/assets/images/features/newsletters/newsletter_preview_basic_example.png new file mode 100644 index 0000000000..24526ff198 Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/newsletters/newsletter_preview_basic_example.png differ diff --git a/docs/en/modules/admin/assets/images/features/newsletters/newsletter_select_recipients.png b/docs/en/modules/admin/assets/images/features/newsletters/newsletter_select_recipients.png new file mode 100644 index 0000000000..d211b943e4 Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/newsletters/newsletter_select_recipients.png differ diff --git a/docs/en/modules/admin/assets/images/features/newsletters/newsletter_select_recipients_spaces.png b/docs/en/modules/admin/assets/images/features/newsletters/newsletter_select_recipients_spaces.png new file mode 100644 index 0000000000..8d6830fbcd Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/newsletters/newsletter_select_recipients_spaces.png differ diff --git a/docs/en/modules/admin/assets/images/features/newsletters/newsletter_templates.png b/docs/en/modules/admin/assets/images/features/newsletters/newsletter_templates.png new file mode 100644 index 0000000000..de66e54792 Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/newsletters/newsletter_templates.png differ diff --git a/docs/en/modules/admin/assets/images/features/notifications/no_notifications_yet.png b/docs/en/modules/admin/assets/images/features/notifications/no_notifications_yet.png new file mode 100644 index 0000000000..082bcf7bc3 Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/notifications/no_notifications_yet.png differ diff --git a/docs/en/modules/admin/assets/images/features/notifications/notifications.png b/docs/en/modules/admin/assets/images/features/notifications/notifications.png new file mode 100644 index 0000000000..50403da1e3 Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/notifications/notifications.png differ diff --git a/docs/en/modules/admin/assets/images/features/notifications/notifications_dropdown.png b/docs/en/modules/admin/assets/images/features/notifications/notifications_dropdown.png new file mode 100644 index 0000000000..88c5d04f5a Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/notifications/notifications_dropdown.png differ diff --git a/docs/en/modules/admin/assets/images/features/search/search_input.png b/docs/en/modules/admin/assets/images/features/search/search_input.png new file mode 100644 index 0000000000..7e1727c524 Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/search/search_input.png differ diff --git a/docs/en/modules/admin/assets/images/features/search/search_page.png b/docs/en/modules/admin/assets/images/features/search/search_page.png new file mode 100644 index 0000000000..d74c057184 Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/search/search_page.png differ diff --git a/docs/en/modules/admin/assets/images/features/share/share_button.png b/docs/en/modules/admin/assets/images/features/share/share_button.png new file mode 100644 index 0000000000..d9b8b6e9f8 Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/share/share_button.png differ diff --git a/docs/en/modules/admin/assets/images/features/share/share_modal.png b/docs/en/modules/admin/assets/images/features/share/share_modal.png new file mode 100644 index 0000000000..062544e999 Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/share/share_modal.png differ diff --git a/docs/en/modules/admin/assets/images/features/versions/list.png b/docs/en/modules/admin/assets/images/features/versions/list.png new file mode 100644 index 0000000000..1e6763b697 Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/versions/list.png differ diff --git a/docs/en/modules/admin/assets/images/features/versions/side_by_side_escaped.png b/docs/en/modules/admin/assets/images/features/versions/side_by_side_escaped.png new file mode 100644 index 0000000000..5fc6bf7b2a Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/versions/side_by_side_escaped.png differ diff --git a/docs/en/modules/admin/assets/images/features/versions/sidebar.png b/docs/en/modules/admin/assets/images/features/versions/sidebar.png new file mode 100644 index 0000000000..2169bbf257 Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/versions/sidebar.png differ diff --git a/docs/en/modules/admin/assets/images/features/versions/unified_escaped.png b/docs/en/modules/admin/assets/images/features/versions/unified_escaped.png new file mode 100644 index 0000000000..92dc4898c0 Binary files /dev/null and b/docs/en/modules/admin/assets/images/features/versions/unified_escaped.png differ diff --git a/docs/en/modules/admin/assets/images/first_steps_account_creation.png b/docs/en/modules/admin/assets/images/first_steps_account_creation.png new file mode 100644 index 0000000000..513679a7cf Binary files /dev/null and b/docs/en/modules/admin/assets/images/first_steps_account_creation.png differ diff --git a/docs/en/modules/admin/assets/images/first_steps_invitation_email.png b/docs/en/modules/admin/assets/images/first_steps_invitation_email.png new file mode 100644 index 0000000000..0da7b1faf2 Binary files /dev/null and b/docs/en/modules/admin/assets/images/first_steps_invitation_email.png differ diff --git a/en/modules/admin/assets/images/help_sections_backend.png b/docs/en/modules/admin/assets/images/help_sections_backend.png similarity index 100% rename from en/modules/admin/assets/images/help_sections_backend.png rename to docs/en/modules/admin/assets/images/help_sections_backend.png diff --git a/en/modules/admin/assets/images/help_sections_disable_backend.png b/docs/en/modules/admin/assets/images/help_sections_disable_backend.png similarity index 100% rename from en/modules/admin/assets/images/help_sections_disable_backend.png rename to docs/en/modules/admin/assets/images/help_sections_disable_backend.png diff --git a/en/modules/admin/assets/images/help_sections_disable_frontend.png b/docs/en/modules/admin/assets/images/help_sections_disable_frontend.png similarity index 100% rename from en/modules/admin/assets/images/help_sections_disable_frontend.png rename to docs/en/modules/admin/assets/images/help_sections_disable_frontend.png diff --git a/en/modules/admin/assets/images/help_sections_frontend.png b/docs/en/modules/admin/assets/images/help_sections_frontend.png similarity index 100% rename from en/modules/admin/assets/images/help_sections_frontend.png rename to docs/en/modules/admin/assets/images/help_sections_frontend.png diff --git a/en/modules/admin/assets/images/help_sections_frontend_hide.png b/docs/en/modules/admin/assets/images/help_sections_frontend_hide.png similarity index 100% rename from en/modules/admin/assets/images/help_sections_frontend_hide.png rename to docs/en/modules/admin/assets/images/help_sections_frontend_hide.png diff --git a/en/modules/admin/assets/images/homepage_footer_sub_hero_banner.png b/docs/en/modules/admin/assets/images/homepage_footer_sub_hero_banner.png similarity index 100% rename from en/modules/admin/assets/images/homepage_footer_sub_hero_banner.png rename to docs/en/modules/admin/assets/images/homepage_footer_sub_hero_banner.png diff --git a/en/modules/admin/assets/images/homepage_hero_image_back.png b/docs/en/modules/admin/assets/images/homepage_hero_image_back.png similarity index 100% rename from en/modules/admin/assets/images/homepage_hero_image_back.png rename to docs/en/modules/admin/assets/images/homepage_hero_image_back.png diff --git a/en/modules/admin/assets/images/homepage_hero_image_front.png b/docs/en/modules/admin/assets/images/homepage_hero_image_front.png similarity index 100% rename from en/modules/admin/assets/images/homepage_hero_image_front.png rename to docs/en/modules/admin/assets/images/homepage_hero_image_front.png diff --git a/docs/en/modules/admin/assets/images/homepage_highlighted_assemblies.png b/docs/en/modules/admin/assets/images/homepage_highlighted_assemblies.png new file mode 100644 index 0000000000..bbfbfabe03 Binary files /dev/null and b/docs/en/modules/admin/assets/images/homepage_highlighted_assemblies.png differ diff --git a/docs/en/modules/admin/assets/images/homepage_highlighted_conferences.png b/docs/en/modules/admin/assets/images/homepage_highlighted_conferences.png new file mode 100644 index 0000000000..e25e5ec937 Binary files /dev/null and b/docs/en/modules/admin/assets/images/homepage_highlighted_conferences.png differ diff --git a/docs/en/modules/admin/assets/images/homepage_highlighted_consultations.png b/docs/en/modules/admin/assets/images/homepage_highlighted_consultations.png new file mode 100644 index 0000000000..8f1937aa06 Binary files /dev/null and b/docs/en/modules/admin/assets/images/homepage_highlighted_consultations.png differ diff --git a/docs/en/modules/admin/assets/images/homepage_highlighted_content_banner.png b/docs/en/modules/admin/assets/images/homepage_highlighted_content_banner.png new file mode 100644 index 0000000000..3678150399 Binary files /dev/null and b/docs/en/modules/admin/assets/images/homepage_highlighted_content_banner.png differ diff --git a/docs/en/modules/admin/assets/images/homepage_highlighted_initiatives.png b/docs/en/modules/admin/assets/images/homepage_highlighted_initiatives.png new file mode 100644 index 0000000000..ca0aa8ebf4 Binary files /dev/null and b/docs/en/modules/admin/assets/images/homepage_highlighted_initiatives.png differ diff --git a/docs/en/modules/admin/assets/images/homepage_highlighted_processes.png b/docs/en/modules/admin/assets/images/homepage_highlighted_processes.png new file mode 100644 index 0000000000..80395beae3 Binary files /dev/null and b/docs/en/modules/admin/assets/images/homepage_highlighted_processes.png differ diff --git a/en/modules/admin/assets/images/homepage_how_to_participate.png b/docs/en/modules/admin/assets/images/homepage_how_to_participate.png similarity index 100% rename from en/modules/admin/assets/images/homepage_how_to_participate.png rename to docs/en/modules/admin/assets/images/homepage_how_to_participate.png diff --git a/docs/en/modules/admin/assets/images/homepage_html_block.png b/docs/en/modules/admin/assets/images/homepage_html_block.png new file mode 100644 index 0000000000..a3be350e7c Binary files /dev/null and b/docs/en/modules/admin/assets/images/homepage_html_block.png differ diff --git a/en/modules/admin/assets/images/homepage_last_activity.png b/docs/en/modules/admin/assets/images/homepage_last_activity.png similarity index 100% rename from en/modules/admin/assets/images/homepage_last_activity.png rename to docs/en/modules/admin/assets/images/homepage_last_activity.png diff --git a/docs/en/modules/admin/assets/images/homepage_organization_metrics.png b/docs/en/modules/admin/assets/images/homepage_organization_metrics.png new file mode 100644 index 0000000000..cacdde2513 Binary files /dev/null and b/docs/en/modules/admin/assets/images/homepage_organization_metrics.png differ diff --git a/en/modules/admin/assets/images/homepage_organization_statistics.png b/docs/en/modules/admin/assets/images/homepage_organization_statistics.png similarity index 100% rename from en/modules/admin/assets/images/homepage_organization_statistics.png rename to docs/en/modules/admin/assets/images/homepage_organization_statistics.png diff --git a/en/modules/admin/assets/images/homepage_sub_hero_banner.png b/docs/en/modules/admin/assets/images/homepage_sub_hero_banner.png similarity index 100% rename from en/modules/admin/assets/images/homepage_sub_hero_banner.png rename to docs/en/modules/admin/assets/images/homepage_sub_hero_banner.png diff --git a/docs/en/modules/admin/assets/images/homepage_upcoming_meetings.png b/docs/en/modules/admin/assets/images/homepage_upcoming_meetings.png new file mode 100644 index 0000000000..97ac35d458 Binary files /dev/null and b/docs/en/modules/admin/assets/images/homepage_upcoming_meetings.png differ diff --git a/docs/en/modules/admin/assets/images/icon_envelope.png b/docs/en/modules/admin/assets/images/icon_envelope.png new file mode 100644 index 0000000000..1286f5304b Binary files /dev/null and b/docs/en/modules/admin/assets/images/icon_envelope.png differ diff --git a/docs/en/modules/admin/assets/images/icon_envelope_off.png b/docs/en/modules/admin/assets/images/icon_envelope_off.png new file mode 100644 index 0000000000..79e83c975f Binary files /dev/null and b/docs/en/modules/admin/assets/images/icon_envelope_off.png differ diff --git a/docs/en/modules/admin/assets/images/icon_envelope_on.png b/docs/en/modules/admin/assets/images/icon_envelope_on.png new file mode 100644 index 0000000000..3db783d8b8 Binary files /dev/null and b/docs/en/modules/admin/assets/images/icon_envelope_on.png differ diff --git a/docs/en/modules/admin/assets/images/icons/action_block.png b/docs/en/modules/admin/assets/images/icons/action_block.png new file mode 100644 index 0000000000..3ed3d94a23 Binary files /dev/null and b/docs/en/modules/admin/assets/images/icons/action_block.png differ diff --git a/docs/en/modules/admin/assets/images/icons/action_clock.png b/docs/en/modules/admin/assets/images/icons/action_clock.png new file mode 100644 index 0000000000..e49103b6f7 Binary files /dev/null and b/docs/en/modules/admin/assets/images/icons/action_clock.png differ diff --git a/docs/en/modules/admin/assets/images/icons/action_configure.png b/docs/en/modules/admin/assets/images/icons/action_configure.png new file mode 100644 index 0000000000..9766f07b4c Binary files /dev/null and b/docs/en/modules/admin/assets/images/icons/action_configure.png differ diff --git a/docs/en/modules/admin/assets/images/icons/action_contact.png b/docs/en/modules/admin/assets/images/icons/action_contact.png new file mode 100644 index 0000000000..cb2061a885 Binary files /dev/null and b/docs/en/modules/admin/assets/images/icons/action_contact.png differ diff --git a/docs/en/modules/admin/assets/images/icons/action_delete.png b/docs/en/modules/admin/assets/images/icons/action_delete.png new file mode 100644 index 0000000000..4755d155d7 Binary files /dev/null and b/docs/en/modules/admin/assets/images/icons/action_delete.png differ diff --git a/docs/en/modules/admin/assets/images/icons/action_duplicate.png b/docs/en/modules/admin/assets/images/icons/action_duplicate.png new file mode 100644 index 0000000000..9282f2272e Binary files /dev/null and b/docs/en/modules/admin/assets/images/icons/action_duplicate.png differ diff --git a/docs/en/modules/admin/assets/images/icons/action_edit.png b/docs/en/modules/admin/assets/images/icons/action_edit.png new file mode 100644 index 0000000000..a97d1588f8 Binary files /dev/null and b/docs/en/modules/admin/assets/images/icons/action_edit.png differ diff --git a/docs/en/modules/admin/assets/images/icons/action_expand.png b/docs/en/modules/admin/assets/images/icons/action_expand.png new file mode 100644 index 0000000000..a435412e68 Binary files /dev/null and b/docs/en/modules/admin/assets/images/icons/action_expand.png differ diff --git a/docs/en/modules/admin/assets/images/icons/action_hide.png b/docs/en/modules/admin/assets/images/icons/action_hide.png new file mode 100644 index 0000000000..2b650f36d4 Binary files /dev/null and b/docs/en/modules/admin/assets/images/icons/action_hide.png differ diff --git a/docs/en/modules/admin/assets/images/icons/action_impersonate.png b/docs/en/modules/admin/assets/images/icons/action_impersonate.png new file mode 100644 index 0000000000..53bef80a0e Binary files /dev/null and b/docs/en/modules/admin/assets/images/icons/action_impersonate.png differ diff --git a/docs/en/modules/admin/assets/images/icons/action_permissions.png b/docs/en/modules/admin/assets/images/icons/action_permissions.png new file mode 100644 index 0000000000..991323b28e Binary files /dev/null and b/docs/en/modules/admin/assets/images/icons/action_permissions.png differ diff --git a/docs/en/modules/admin/assets/images/icons/action_preview.png b/docs/en/modules/admin/assets/images/icons/action_preview.png new file mode 100644 index 0000000000..2b650f36d4 Binary files /dev/null and b/docs/en/modules/admin/assets/images/icons/action_preview.png differ diff --git a/docs/en/modules/admin/assets/images/icons/action_promote.png b/docs/en/modules/admin/assets/images/icons/action_promote.png new file mode 100644 index 0000000000..76ae3f50bf Binary files /dev/null and b/docs/en/modules/admin/assets/images/icons/action_promote.png differ diff --git a/docs/en/modules/admin/assets/images/icons/action_publish.png b/docs/en/modules/admin/assets/images/icons/action_publish.png new file mode 100644 index 0000000000..96b75d3904 Binary files /dev/null and b/docs/en/modules/admin/assets/images/icons/action_publish.png differ diff --git a/docs/en/modules/admin/assets/images/icons/action_reofficialize.png b/docs/en/modules/admin/assets/images/icons/action_reofficialize.png new file mode 100644 index 0000000000..5ee35af16c Binary files /dev/null and b/docs/en/modules/admin/assets/images/icons/action_reofficialize.png differ diff --git a/docs/en/modules/admin/assets/images/icons/action_resend.png b/docs/en/modules/admin/assets/images/icons/action_resend.png new file mode 100644 index 0000000000..6e095cd254 Binary files /dev/null and b/docs/en/modules/admin/assets/images/icons/action_resend.png differ diff --git a/docs/en/modules/admin/assets/images/icons/action_share.png b/docs/en/modules/admin/assets/images/icons/action_share.png new file mode 100644 index 0000000000..60b05c506a Binary files /dev/null and b/docs/en/modules/admin/assets/images/icons/action_share.png differ diff --git a/docs/en/modules/admin/assets/images/icons/action_show_email.png b/docs/en/modules/admin/assets/images/icons/action_show_email.png new file mode 100644 index 0000000000..fed86c47bb Binary files /dev/null and b/docs/en/modules/admin/assets/images/icons/action_show_email.png differ diff --git a/docs/en/modules/admin/assets/images/icons/action_transfer_user.png b/docs/en/modules/admin/assets/images/icons/action_transfer_user.png new file mode 100644 index 0000000000..1fdcc1ba86 Binary files /dev/null and b/docs/en/modules/admin/assets/images/icons/action_transfer_user.png differ diff --git a/docs/en/modules/admin/assets/images/icons/action_unpublish.png b/docs/en/modules/admin/assets/images/icons/action_unpublish.png new file mode 100644 index 0000000000..e55816278b Binary files /dev/null and b/docs/en/modules/admin/assets/images/icons/action_unpublish.png differ diff --git a/docs/en/modules/admin/assets/images/icons/action_unreport.png b/docs/en/modules/admin/assets/images/icons/action_unreport.png new file mode 100644 index 0000000000..69fca6ca59 Binary files /dev/null and b/docs/en/modules/admin/assets/images/icons/action_unreport.png differ diff --git a/docs/en/modules/admin/assets/images/icons/action_verify.png b/docs/en/modules/admin/assets/images/icons/action_verify.png new file mode 100644 index 0000000000..727bfd2057 Binary files /dev/null and b/docs/en/modules/admin/assets/images/icons/action_verify.png differ diff --git a/en/modules/admin/assets/images/initiative_actions.png b/docs/en/modules/admin/assets/images/initiative_actions.png similarity index 100% rename from en/modules/admin/assets/images/initiative_actions.png rename to docs/en/modules/admin/assets/images/initiative_actions.png diff --git a/en/modules/admin/assets/images/initiative_actions_export.png b/docs/en/modules/admin/assets/images/initiative_actions_export.png similarity index 100% rename from en/modules/admin/assets/images/initiative_actions_export.png rename to docs/en/modules/admin/assets/images/initiative_actions_export.png diff --git a/en/modules/admin/assets/images/initiative_actions_export_pdf.png b/docs/en/modules/admin/assets/images/initiative_actions_export_pdf.png similarity index 100% rename from en/modules/admin/assets/images/initiative_actions_export_pdf.png rename to docs/en/modules/admin/assets/images/initiative_actions_export_pdf.png diff --git a/en/modules/admin/assets/images/initiative_admin_actions.png b/docs/en/modules/admin/assets/images/initiative_admin_actions.png similarity index 100% rename from en/modules/admin/assets/images/initiative_admin_actions.png rename to docs/en/modules/admin/assets/images/initiative_admin_actions.png diff --git a/en/modules/admin/assets/images/initiative_admin_list.png b/docs/en/modules/admin/assets/images/initiative_admin_list.png similarity index 100% rename from en/modules/admin/assets/images/initiative_admin_list.png rename to docs/en/modules/admin/assets/images/initiative_admin_list.png diff --git a/en/modules/admin/assets/images/initiative_admin_list_actions.png b/docs/en/modules/admin/assets/images/initiative_admin_list_actions.png similarity index 100% rename from en/modules/admin/assets/images/initiative_admin_list_actions.png rename to docs/en/modules/admin/assets/images/initiative_admin_list_actions.png diff --git a/en/modules/admin/assets/images/initiative_admin_show.png b/docs/en/modules/admin/assets/images/initiative_admin_show.png similarity index 100% rename from en/modules/admin/assets/images/initiative_admin_show.png rename to docs/en/modules/admin/assets/images/initiative_admin_show.png diff --git a/en/modules/admin/assets/images/initiative_admin_show_published.png b/docs/en/modules/admin/assets/images/initiative_admin_show_published.png similarity index 100% rename from en/modules/admin/assets/images/initiative_admin_show_published.png rename to docs/en/modules/admin/assets/images/initiative_admin_show_published.png diff --git a/en/modules/admin/assets/images/initiative_admin_show_published_detail.png b/docs/en/modules/admin/assets/images/initiative_admin_show_published_detail.png similarity index 100% rename from en/modules/admin/assets/images/initiative_admin_show_published_detail.png rename to docs/en/modules/admin/assets/images/initiative_admin_show_published_detail.png diff --git a/en/modules/admin/assets/images/initiative_admin_sidebar.png b/docs/en/modules/admin/assets/images/initiative_admin_sidebar.png similarity index 100% rename from en/modules/admin/assets/images/initiative_admin_sidebar.png rename to docs/en/modules/admin/assets/images/initiative_admin_sidebar.png diff --git a/en/modules/admin/assets/images/initiative_answer.png b/docs/en/modules/admin/assets/images/initiative_answer.png similarity index 100% rename from en/modules/admin/assets/images/initiative_answer.png rename to docs/en/modules/admin/assets/images/initiative_answer.png diff --git a/en/modules/admin/assets/images/initiative_backend_answer.png b/docs/en/modules/admin/assets/images/initiative_backend_answer.png similarity index 100% rename from en/modules/admin/assets/images/initiative_backend_answer.png rename to docs/en/modules/admin/assets/images/initiative_backend_answer.png diff --git a/en/modules/admin/assets/images/initiative_commitee_members_approve.png b/docs/en/modules/admin/assets/images/initiative_commitee_members_approve.png similarity index 100% rename from en/modules/admin/assets/images/initiative_commitee_members_approve.png rename to docs/en/modules/admin/assets/images/initiative_commitee_members_approve.png diff --git a/en/modules/admin/assets/images/initiative_commitee_members_ask.png b/docs/en/modules/admin/assets/images/initiative_commitee_members_ask.png similarity index 100% rename from en/modules/admin/assets/images/initiative_commitee_members_ask.png rename to docs/en/modules/admin/assets/images/initiative_commitee_members_ask.png diff --git a/en/modules/admin/assets/images/initiative_commitee_members_send_to_technical_false.png b/docs/en/modules/admin/assets/images/initiative_commitee_members_send_to_technical_false.png similarity index 100% rename from en/modules/admin/assets/images/initiative_commitee_members_send_to_technical_false.png rename to docs/en/modules/admin/assets/images/initiative_commitee_members_send_to_technical_false.png diff --git a/en/modules/admin/assets/images/initiative_commitee_members_send_to_technical_true.png b/docs/en/modules/admin/assets/images/initiative_commitee_members_send_to_technical_true.png similarity index 100% rename from en/modules/admin/assets/images/initiative_commitee_members_send_to_technical_true.png rename to docs/en/modules/admin/assets/images/initiative_commitee_members_send_to_technical_true.png diff --git a/en/modules/admin/assets/images/initiative_commitee_members_sent.png b/docs/en/modules/admin/assets/images/initiative_commitee_members_sent.png similarity index 100% rename from en/modules/admin/assets/images/initiative_commitee_members_sent.png rename to docs/en/modules/admin/assets/images/initiative_commitee_members_sent.png diff --git a/en/modules/admin/assets/images/initiative_edit.png b/docs/en/modules/admin/assets/images/initiative_edit.png similarity index 100% rename from en/modules/admin/assets/images/initiative_edit.png rename to docs/en/modules/admin/assets/images/initiative_edit.png diff --git a/en/modules/admin/assets/images/initiative_edit_commitee_members.png b/docs/en/modules/admin/assets/images/initiative_edit_commitee_members.png similarity index 100% rename from en/modules/admin/assets/images/initiative_edit_commitee_members.png rename to docs/en/modules/admin/assets/images/initiative_edit_commitee_members.png diff --git a/en/modules/admin/assets/images/initiative_edit_promotor_committee.png b/docs/en/modules/admin/assets/images/initiative_edit_promotor_committee.png similarity index 100% rename from en/modules/admin/assets/images/initiative_edit_promotor_committee.png rename to docs/en/modules/admin/assets/images/initiative_edit_promotor_committee.png diff --git a/en/modules/admin/assets/images/initiative_frontend_answer.png b/docs/en/modules/admin/assets/images/initiative_frontend_answer.png similarity index 100% rename from en/modules/admin/assets/images/initiative_frontend_answer.png rename to docs/en/modules/admin/assets/images/initiative_frontend_answer.png diff --git a/en/modules/admin/assets/images/initiative_list.png b/docs/en/modules/admin/assets/images/initiative_list.png similarity index 100% rename from en/modules/admin/assets/images/initiative_list.png rename to docs/en/modules/admin/assets/images/initiative_list.png diff --git a/en/modules/admin/assets/images/initiative_list_published.png b/docs/en/modules/admin/assets/images/initiative_list_published.png similarity index 100% rename from en/modules/admin/assets/images/initiative_list_published.png rename to docs/en/modules/admin/assets/images/initiative_list_published.png diff --git a/en/modules/admin/assets/images/initiative_new_step1.png b/docs/en/modules/admin/assets/images/initiative_new_step1.png similarity index 100% rename from en/modules/admin/assets/images/initiative_new_step1.png rename to docs/en/modules/admin/assets/images/initiative_new_step1.png diff --git a/en/modules/admin/assets/images/initiative_new_step2.png b/docs/en/modules/admin/assets/images/initiative_new_step2.png similarity index 100% rename from en/modules/admin/assets/images/initiative_new_step2.png rename to docs/en/modules/admin/assets/images/initiative_new_step2.png diff --git a/en/modules/admin/assets/images/initiative_new_step3.png b/docs/en/modules/admin/assets/images/initiative_new_step3.png similarity index 100% rename from en/modules/admin/assets/images/initiative_new_step3.png rename to docs/en/modules/admin/assets/images/initiative_new_step3.png diff --git a/en/modules/admin/assets/images/initiative_new_step4.png b/docs/en/modules/admin/assets/images/initiative_new_step4.png similarity index 100% rename from en/modules/admin/assets/images/initiative_new_step4.png rename to docs/en/modules/admin/assets/images/initiative_new_step4.png diff --git a/en/modules/admin/assets/images/initiative_print.png b/docs/en/modules/admin/assets/images/initiative_print.png similarity index 100% rename from en/modules/admin/assets/images/initiative_print.png rename to docs/en/modules/admin/assets/images/initiative_print.png diff --git a/en/modules/admin/assets/images/initiative_send_to_technical_validation.png b/docs/en/modules/admin/assets/images/initiative_send_to_technical_validation.png similarity index 100% rename from en/modules/admin/assets/images/initiative_send_to_technical_validation.png rename to docs/en/modules/admin/assets/images/initiative_send_to_technical_validation.png diff --git a/en/modules/admin/assets/images/initiative_show.png b/docs/en/modules/admin/assets/images/initiative_show.png similarity index 100% rename from en/modules/admin/assets/images/initiative_show.png rename to docs/en/modules/admin/assets/images/initiative_show.png diff --git a/en/modules/admin/assets/images/initiative_show_published.png b/docs/en/modules/admin/assets/images/initiative_show_published.png similarity index 100% rename from en/modules/admin/assets/images/initiative_show_published.png rename to docs/en/modules/admin/assets/images/initiative_show_published.png diff --git a/en/modules/admin/assets/images/initiative_show_signed.png b/docs/en/modules/admin/assets/images/initiative_show_signed.png similarity index 100% rename from en/modules/admin/assets/images/initiative_show_signed.png rename to docs/en/modules/admin/assets/images/initiative_show_signed.png diff --git a/docs/en/modules/admin/assets/images/introduction.png b/docs/en/modules/admin/assets/images/introduction.png new file mode 100644 index 0000000000..15c0943d30 Binary files /dev/null and b/docs/en/modules/admin/assets/images/introduction.png differ diff --git a/docs/en/modules/admin/assets/images/moderations/moderation_modal.png b/docs/en/modules/admin/assets/images/moderations/moderation_modal.png new file mode 100644 index 0000000000..027efcda79 Binary files /dev/null and b/docs/en/modules/admin/assets/images/moderations/moderation_modal.png differ diff --git a/docs/en/modules/admin/assets/images/moderations/moderations_backend_list_content.png b/docs/en/modules/admin/assets/images/moderations/moderations_backend_list_content.png new file mode 100644 index 0000000000..dda0fdd55c Binary files /dev/null and b/docs/en/modules/admin/assets/images/moderations/moderations_backend_list_content.png differ diff --git a/docs/en/modules/admin/assets/images/moderations/moderations_backend_list_users.png b/docs/en/modules/admin/assets/images/moderations/moderations_backend_list_users.png new file mode 100644 index 0000000000..50d96e0331 Binary files /dev/null and b/docs/en/modules/admin/assets/images/moderations/moderations_backend_list_users.png differ diff --git a/docs/en/modules/admin/assets/images/moderations/moderations_backend_report_content.png b/docs/en/modules/admin/assets/images/moderations/moderations_backend_report_content.png new file mode 100644 index 0000000000..b2d390573b Binary files /dev/null and b/docs/en/modules/admin/assets/images/moderations/moderations_backend_report_content.png differ diff --git a/docs/en/modules/admin/assets/images/moderations/moderations_backend_report_details.png b/docs/en/modules/admin/assets/images/moderations/moderations_backend_report_details.png new file mode 100644 index 0000000000..1633be83e6 Binary files /dev/null and b/docs/en/modules/admin/assets/images/moderations/moderations_backend_report_details.png differ diff --git a/docs/en/modules/admin/assets/images/moderations/moderations_menu.png b/docs/en/modules/admin/assets/images/moderations/moderations_menu.png new file mode 100644 index 0000000000..a134d0fb85 Binary files /dev/null and b/docs/en/modules/admin/assets/images/moderations/moderations_menu.png differ diff --git a/docs/en/modules/admin/assets/images/moderations/moderations_participants_block_user_alert.png b/docs/en/modules/admin/assets/images/moderations/moderations_participants_block_user_alert.png new file mode 100644 index 0000000000..348e9ebf7b Binary files /dev/null and b/docs/en/modules/admin/assets/images/moderations/moderations_participants_block_user_alert.png differ diff --git a/docs/en/modules/admin/assets/images/moderations/moderations_participants_block_user_justification.png b/docs/en/modules/admin/assets/images/moderations/moderations_participants_block_user_justification.png new file mode 100644 index 0000000000..5cdfa4e3e2 Binary files /dev/null and b/docs/en/modules/admin/assets/images/moderations/moderations_participants_block_user_justification.png differ diff --git a/docs/en/modules/admin/assets/images/moderations/moderations_reported_comment_flag.png b/docs/en/modules/admin/assets/images/moderations/moderations_reported_comment_flag.png new file mode 100644 index 0000000000..af6f827226 Binary files /dev/null and b/docs/en/modules/admin/assets/images/moderations/moderations_reported_comment_flag.png differ diff --git a/docs/en/modules/admin/assets/images/moderations/moderations_reported_content_flag.png b/docs/en/modules/admin/assets/images/moderations/moderations_reported_content_flag.png new file mode 100644 index 0000000000..e0561fe7db Binary files /dev/null and b/docs/en/modules/admin/assets/images/moderations/moderations_reported_content_flag.png differ diff --git a/docs/en/modules/admin/assets/images/moderations/moderations_reported_participant_flag.png b/docs/en/modules/admin/assets/images/moderations/moderations_reported_participant_flag.png new file mode 100644 index 0000000000..bca51eab6c Binary files /dev/null and b/docs/en/modules/admin/assets/images/moderations/moderations_reported_participant_flag.png differ diff --git a/docs/en/modules/admin/assets/images/moderations/reported_participant_modal_admin.png b/docs/en/modules/admin/assets/images/moderations/reported_participant_modal_admin.png new file mode 100644 index 0000000000..0a33549677 Binary files /dev/null and b/docs/en/modules/admin/assets/images/moderations/reported_participant_modal_admin.png differ diff --git a/docs/en/modules/admin/assets/images/moderations/reported_participant_modal_user.png b/docs/en/modules/admin/assets/images/moderations/reported_participant_modal_user.png new file mode 100644 index 0000000000..734862a83d Binary files /dev/null and b/docs/en/modules/admin/assets/images/moderations/reported_participant_modal_user.png differ diff --git a/docs/en/modules/admin/assets/images/pages/pages_backend_edit.png b/docs/en/modules/admin/assets/images/pages/pages_backend_edit.png new file mode 100644 index 0000000000..8e15e1f171 Binary files /dev/null and b/docs/en/modules/admin/assets/images/pages/pages_backend_edit.png differ diff --git a/docs/en/modules/admin/assets/images/pages/pages_backend_form.png b/docs/en/modules/admin/assets/images/pages/pages_backend_form.png new file mode 100644 index 0000000000..eb9f9bd1a4 Binary files /dev/null and b/docs/en/modules/admin/assets/images/pages/pages_backend_form.png differ diff --git a/docs/en/modules/admin/assets/images/pages/pages_backend_list.png b/docs/en/modules/admin/assets/images/pages/pages_backend_list.png new file mode 100644 index 0000000000..ada7b359b0 Binary files /dev/null and b/docs/en/modules/admin/assets/images/pages/pages_backend_list.png differ diff --git a/docs/en/modules/admin/assets/images/pages/pages_backend_list_topics.png b/docs/en/modules/admin/assets/images/pages/pages_backend_list_topics.png new file mode 100644 index 0000000000..d379515951 Binary files /dev/null and b/docs/en/modules/admin/assets/images/pages/pages_backend_list_topics.png differ diff --git a/docs/en/modules/admin/assets/images/pages/pages_backend_topic_form.png b/docs/en/modules/admin/assets/images/pages/pages_backend_topic_form.png new file mode 100644 index 0000000000..11d4d94fa7 Binary files /dev/null and b/docs/en/modules/admin/assets/images/pages/pages_backend_topic_form.png differ diff --git a/docs/en/modules/admin/assets/images/pages/pages_backend_tos_change.png b/docs/en/modules/admin/assets/images/pages/pages_backend_tos_change.png new file mode 100644 index 0000000000..0cd6f08a65 Binary files /dev/null and b/docs/en/modules/admin/assets/images/pages/pages_backend_tos_change.png differ diff --git a/docs/en/modules/admin/assets/images/pages/pages_frontend_footer.png b/docs/en/modules/admin/assets/images/pages/pages_frontend_footer.png new file mode 100644 index 0000000000..1d877516df Binary files /dev/null and b/docs/en/modules/admin/assets/images/pages/pages_frontend_footer.png differ diff --git a/docs/en/modules/admin/assets/images/pages/pages_frontend_list_topics.png b/docs/en/modules/admin/assets/images/pages/pages_frontend_list_topics.png new file mode 100644 index 0000000000..2bb14e268e Binary files /dev/null and b/docs/en/modules/admin/assets/images/pages/pages_frontend_list_topics.png differ diff --git a/docs/en/modules/admin/assets/images/pages/pages_frontend_show.png b/docs/en/modules/admin/assets/images/pages/pages_frontend_show.png new file mode 100644 index 0000000000..eca176d1c6 Binary files /dev/null and b/docs/en/modules/admin/assets/images/pages/pages_frontend_show.png differ diff --git a/docs/en/modules/admin/assets/images/pages/pages_frontend_show_topic.png b/docs/en/modules/admin/assets/images/pages/pages_frontend_show_topic.png new file mode 100644 index 0000000000..65490d986f Binary files /dev/null and b/docs/en/modules/admin/assets/images/pages/pages_frontend_show_topic.png differ diff --git a/docs/en/modules/admin/assets/images/pages/pages_frontend_tos_change.png b/docs/en/modules/admin/assets/images/pages/pages_frontend_tos_change.png new file mode 100644 index 0000000000..0ca0082ffb Binary files /dev/null and b/docs/en/modules/admin/assets/images/pages/pages_frontend_tos_change.png differ diff --git a/docs/en/modules/admin/assets/images/pages/pages_frontend_tos_reject.png b/docs/en/modules/admin/assets/images/pages/pages_frontend_tos_reject.png new file mode 100644 index 0000000000..86e951e38e Binary files /dev/null and b/docs/en/modules/admin/assets/images/pages/pages_frontend_tos_reject.png differ diff --git a/docs/en/modules/admin/assets/images/pages/pages_menu.png b/docs/en/modules/admin/assets/images/pages/pages_menu.png new file mode 100644 index 0000000000..a1d47a3b7e Binary files /dev/null and b/docs/en/modules/admin/assets/images/pages/pages_menu.png differ diff --git a/docs/en/modules/admin/assets/images/participants/admin_user_group_verification.png b/docs/en/modules/admin/assets/images/participants/admin_user_group_verification.png new file mode 100644 index 0000000000..3295b2c613 Binary files /dev/null and b/docs/en/modules/admin/assets/images/participants/admin_user_group_verification.png differ diff --git a/docs/en/modules/admin/assets/images/participants/admin_user_group_verification_csv.png b/docs/en/modules/admin/assets/images/participants/admin_user_group_verification_csv.png new file mode 100644 index 0000000000..4832459777 Binary files /dev/null and b/docs/en/modules/admin/assets/images/participants/admin_user_group_verification_csv.png differ diff --git a/docs/en/modules/admin/assets/images/participants/admins.png b/docs/en/modules/admin/assets/images/participants/admins.png new file mode 100644 index 0000000000..ce4c85e94a Binary files /dev/null and b/docs/en/modules/admin/assets/images/participants/admins.png differ diff --git a/docs/en/modules/admin/assets/images/participants/admins_invite.png b/docs/en/modules/admin/assets/images/participants/admins_invite.png new file mode 100644 index 0000000000..008fe8c07e Binary files /dev/null and b/docs/en/modules/admin/assets/images/participants/admins_invite.png differ diff --git a/docs/en/modules/admin/assets/images/participants/authorizations_admin_default.png b/docs/en/modules/admin/assets/images/participants/authorizations_admin_default.png new file mode 100644 index 0000000000..06bb6d4a02 Binary files /dev/null and b/docs/en/modules/admin/assets/images/participants/authorizations_admin_default.png differ diff --git a/docs/en/modules/admin/assets/images/participants/authorizations_admin_revocation.png b/docs/en/modules/admin/assets/images/participants/authorizations_admin_revocation.png new file mode 100644 index 0000000000..f3806c5fee Binary files /dev/null and b/docs/en/modules/admin/assets/images/participants/authorizations_admin_revocation.png differ diff --git a/docs/en/modules/admin/assets/images/participants/authorizations_code_postal_letter_confirm.png b/docs/en/modules/admin/assets/images/participants/authorizations_code_postal_letter_confirm.png new file mode 100644 index 0000000000..c328a4ae27 Binary files /dev/null and b/docs/en/modules/admin/assets/images/participants/authorizations_code_postal_letter_confirm.png differ diff --git a/docs/en/modules/admin/assets/images/participants/authorizations_code_postal_letter_edit.png b/docs/en/modules/admin/assets/images/participants/authorizations_code_postal_letter_edit.png new file mode 100644 index 0000000000..f0cbddba8d Binary files /dev/null and b/docs/en/modules/admin/assets/images/participants/authorizations_code_postal_letter_edit.png differ diff --git a/docs/en/modules/admin/assets/images/participants/authorizations_code_postal_letter_ongoing.png b/docs/en/modules/admin/assets/images/participants/authorizations_code_postal_letter_ongoing.png new file mode 100644 index 0000000000..7e22e8b729 Binary files /dev/null and b/docs/en/modules/admin/assets/images/participants/authorizations_code_postal_letter_ongoing.png differ diff --git a/docs/en/modules/admin/assets/images/participants/authorizations_code_postal_letter_request.png b/docs/en/modules/admin/assets/images/participants/authorizations_code_postal_letter_request.png new file mode 100644 index 0000000000..6715f4fc5b Binary files /dev/null and b/docs/en/modules/admin/assets/images/participants/authorizations_code_postal_letter_request.png differ diff --git a/docs/en/modules/admin/assets/images/participants/authorizations_code_postal_letter_verified.png b/docs/en/modules/admin/assets/images/participants/authorizations_code_postal_letter_verified.png new file mode 100644 index 0000000000..5246bfe983 Binary files /dev/null and b/docs/en/modules/admin/assets/images/participants/authorizations_code_postal_letter_verified.png differ diff --git a/docs/en/modules/admin/assets/images/participants/authorizations_code_postal_letter_verify.png b/docs/en/modules/admin/assets/images/participants/authorizations_code_postal_letter_verify.png new file mode 100644 index 0000000000..8c048f5648 Binary files /dev/null and b/docs/en/modules/admin/assets/images/participants/authorizations_code_postal_letter_verify.png differ diff --git a/docs/en/modules/admin/assets/images/participants/authorizations_id_document_account_choose.png b/docs/en/modules/admin/assets/images/participants/authorizations_id_document_account_choose.png new file mode 100644 index 0000000000..69ea7de765 Binary files /dev/null and b/docs/en/modules/admin/assets/images/participants/authorizations_id_document_account_choose.png differ diff --git a/docs/en/modules/admin/assets/images/participants/authorizations_id_document_configuration.png b/docs/en/modules/admin/assets/images/participants/authorizations_id_document_configuration.png new file mode 100644 index 0000000000..b42950aa27 Binary files /dev/null and b/docs/en/modules/admin/assets/images/participants/authorizations_id_document_configuration.png differ diff --git a/docs/en/modules/admin/assets/images/participants/authorizations_id_document_configuration_offline.png b/docs/en/modules/admin/assets/images/participants/authorizations_id_document_configuration_offline.png new file mode 100644 index 0000000000..a8dad3b160 Binary files /dev/null and b/docs/en/modules/admin/assets/images/participants/authorizations_id_document_configuration_offline.png differ diff --git a/docs/en/modules/admin/assets/images/participants/authorizations_id_document_offline_button.png b/docs/en/modules/admin/assets/images/participants/authorizations_id_document_offline_button.png new file mode 100644 index 0000000000..ae1ad6c6aa Binary files /dev/null and b/docs/en/modules/admin/assets/images/participants/authorizations_id_document_offline_button.png differ diff --git a/docs/en/modules/admin/assets/images/participants/authorizations_id_document_offline_confirm.png b/docs/en/modules/admin/assets/images/participants/authorizations_id_document_offline_confirm.png new file mode 100644 index 0000000000..83bb8a1b18 Binary files /dev/null and b/docs/en/modules/admin/assets/images/participants/authorizations_id_document_offline_confirm.png differ diff --git a/docs/en/modules/admin/assets/images/participants/authorizations_id_document_offline_request.png b/docs/en/modules/admin/assets/images/participants/authorizations_id_document_offline_request.png new file mode 100644 index 0000000000..719f8c2604 Binary files /dev/null and b/docs/en/modules/admin/assets/images/participants/authorizations_id_document_offline_request.png differ diff --git a/docs/en/modules/admin/assets/images/participants/authorizations_id_document_online.png b/docs/en/modules/admin/assets/images/participants/authorizations_id_document_online.png new file mode 100644 index 0000000000..1ffdcd186c Binary files /dev/null and b/docs/en/modules/admin/assets/images/participants/authorizations_id_document_online.png differ diff --git a/docs/en/modules/admin/assets/images/participants/authorizations_id_document_online_confirm.png b/docs/en/modules/admin/assets/images/participants/authorizations_id_document_online_confirm.png new file mode 100644 index 0000000000..7ab054e84a Binary files /dev/null and b/docs/en/modules/admin/assets/images/participants/authorizations_id_document_online_confirm.png differ diff --git a/docs/en/modules/admin/assets/images/participants/authorizations_id_document_online_pending.png b/docs/en/modules/admin/assets/images/participants/authorizations_id_document_online_pending.png new file mode 100644 index 0000000000..cef2d98178 Binary files /dev/null and b/docs/en/modules/admin/assets/images/participants/authorizations_id_document_online_pending.png differ diff --git a/docs/en/modules/admin/assets/images/participants/authorizations_id_document_online_rejected.png b/docs/en/modules/admin/assets/images/participants/authorizations_id_document_online_rejected.png new file mode 100644 index 0000000000..175964c3bb Binary files /dev/null and b/docs/en/modules/admin/assets/images/participants/authorizations_id_document_online_rejected.png differ diff --git a/docs/en/modules/admin/assets/images/participants/authorizations_organization_census.png b/docs/en/modules/admin/assets/images/participants/authorizations_organization_census.png new file mode 100644 index 0000000000..b8d735f194 Binary files /dev/null and b/docs/en/modules/admin/assets/images/participants/authorizations_organization_census.png differ diff --git a/docs/en/modules/admin/assets/images/participants/authorizations_organization_census_account.png b/docs/en/modules/admin/assets/images/participants/authorizations_organization_census_account.png new file mode 100644 index 0000000000..17e4c47cf9 Binary files /dev/null and b/docs/en/modules/admin/assets/images/participants/authorizations_organization_census_account.png differ diff --git a/docs/en/modules/admin/assets/images/participants/authorizations_organization_census_imported.png b/docs/en/modules/admin/assets/images/participants/authorizations_organization_census_imported.png new file mode 100644 index 0000000000..81428e0962 Binary files /dev/null and b/docs/en/modules/admin/assets/images/participants/authorizations_organization_census_imported.png differ diff --git a/docs/en/modules/admin/assets/images/participants/authorizations_organization_census_verified.png b/docs/en/modules/admin/assets/images/participants/authorizations_organization_census_verified.png new file mode 100644 index 0000000000..629e4182e7 Binary files /dev/null and b/docs/en/modules/admin/assets/images/participants/authorizations_organization_census_verified.png differ diff --git a/docs/en/modules/admin/assets/images/participants/participants_conversation.png b/docs/en/modules/admin/assets/images/participants/participants_conversation.png new file mode 100644 index 0000000000..d1423b458f Binary files /dev/null and b/docs/en/modules/admin/assets/images/participants/participants_conversation.png differ diff --git a/docs/en/modules/admin/assets/images/participants/participants_impersonations_backend_list_button.png b/docs/en/modules/admin/assets/images/participants/participants_impersonations_backend_list_button.png new file mode 100644 index 0000000000..0ccf23949a Binary files /dev/null and b/docs/en/modules/admin/assets/images/participants/participants_impersonations_backend_list_button.png differ diff --git a/docs/en/modules/admin/assets/images/participants/participants_impersonations_backend_list_logs.png b/docs/en/modules/admin/assets/images/participants/participants_impersonations_backend_list_logs.png new file mode 100644 index 0000000000..ea6757c8a0 Binary files /dev/null and b/docs/en/modules/admin/assets/images/participants/participants_impersonations_backend_list_logs.png differ diff --git a/docs/en/modules/admin/assets/images/participants/participants_impersonations_backend_list_no_auth.png b/docs/en/modules/admin/assets/images/participants/participants_impersonations_backend_list_no_auth.png new file mode 100644 index 0000000000..4dfb6c78d7 Binary files /dev/null and b/docs/en/modules/admin/assets/images/participants/participants_impersonations_backend_list_no_auth.png differ diff --git a/docs/en/modules/admin/assets/images/participants/participants_impersonations_form.png b/docs/en/modules/admin/assets/images/participants/participants_impersonations_form.png new file mode 100644 index 0000000000..c8556358e7 Binary files /dev/null and b/docs/en/modules/admin/assets/images/participants/participants_impersonations_form.png differ diff --git a/docs/en/modules/admin/assets/images/participants/participants_impersonations_promotion.png b/docs/en/modules/admin/assets/images/participants/participants_impersonations_promotion.png new file mode 100644 index 0000000000..15c65f829f Binary files /dev/null and b/docs/en/modules/admin/assets/images/participants/participants_impersonations_promotion.png differ diff --git a/docs/en/modules/admin/assets/images/participants/participants_impersonations_user.png b/docs/en/modules/admin/assets/images/participants/participants_impersonations_user.png new file mode 100644 index 0000000000..194d891ad3 Binary files /dev/null and b/docs/en/modules/admin/assets/images/participants/participants_impersonations_user.png differ diff --git a/docs/en/modules/admin/assets/images/participants/participants_menu.png b/docs/en/modules/admin/assets/images/participants/participants_menu.png new file mode 100644 index 0000000000..9977dcc76c Binary files /dev/null and b/docs/en/modules/admin/assets/images/participants/participants_menu.png differ diff --git a/docs/en/modules/admin/assets/images/participants/participants_officialize.png b/docs/en/modules/admin/assets/images/participants/participants_officialize.png new file mode 100644 index 0000000000..077f728db1 Binary files /dev/null and b/docs/en/modules/admin/assets/images/participants/participants_officialize.png differ diff --git a/docs/en/modules/admin/assets/images/participants/participants_participants.png b/docs/en/modules/admin/assets/images/participants/participants_participants.png new file mode 100644 index 0000000000..7714effcd5 Binary files /dev/null and b/docs/en/modules/admin/assets/images/participants/participants_participants.png differ diff --git a/docs/en/modules/admin/assets/images/participants/participants_show_email.png b/docs/en/modules/admin/assets/images/participants/participants_show_email.png new file mode 100644 index 0000000000..c570b83873 Binary files /dev/null and b/docs/en/modules/admin/assets/images/participants/participants_show_email.png differ diff --git a/docs/en/modules/admin/assets/images/participants/participants_showed_email.png b/docs/en/modules/admin/assets/images/participants/participants_showed_email.png new file mode 100644 index 0000000000..dd2986b56d Binary files /dev/null and b/docs/en/modules/admin/assets/images/participants/participants_showed_email.png differ diff --git a/docs/en/modules/admin/assets/images/participants/participants_showed_email_admin_log.png b/docs/en/modules/admin/assets/images/participants/participants_showed_email_admin_log.png new file mode 100644 index 0000000000..eeceb0f326 Binary files /dev/null and b/docs/en/modules/admin/assets/images/participants/participants_showed_email_admin_log.png differ diff --git a/docs/en/modules/admin/assets/images/participants/participants_sidebar_menu.png b/docs/en/modules/admin/assets/images/participants/participants_sidebar_menu.png new file mode 100644 index 0000000000..2682c36f49 Binary files /dev/null and b/docs/en/modules/admin/assets/images/participants/participants_sidebar_menu.png differ diff --git a/docs/en/modules/admin/assets/images/participants/user_group_frontend_show.png b/docs/en/modules/admin/assets/images/participants/user_group_frontend_show.png new file mode 100644 index 0000000000..e24d0a30b7 Binary files /dev/null and b/docs/en/modules/admin/assets/images/participants/user_group_frontend_show.png differ diff --git a/docs/en/modules/admin/assets/images/participants/user_group_verified.png b/docs/en/modules/admin/assets/images/participants/user_group_verified.png new file mode 100644 index 0000000000..fd7e807870 Binary files /dev/null and b/docs/en/modules/admin/assets/images/participants/user_group_verified.png differ diff --git a/docs/en/modules/admin/assets/images/participants/verifications_conflicts.png b/docs/en/modules/admin/assets/images/participants/verifications_conflicts.png new file mode 100644 index 0000000000..fb7b5ca311 Binary files /dev/null and b/docs/en/modules/admin/assets/images/participants/verifications_conflicts.png differ diff --git a/docs/en/modules/admin/assets/images/participants/verifications_conflicts_transfer_user.png b/docs/en/modules/admin/assets/images/participants/verifications_conflicts_transfer_user.png new file mode 100644 index 0000000000..3fcb08a258 Binary files /dev/null and b/docs/en/modules/admin/assets/images/participants/verifications_conflicts_transfer_user.png differ diff --git a/en/modules/admin/assets/images/process_backend_metadata.png b/docs/en/modules/admin/assets/images/process_backend_metadata.png similarity index 100% rename from en/modules/admin/assets/images/process_backend_metadata.png rename to docs/en/modules/admin/assets/images/process_backend_metadata.png diff --git a/en/modules/admin/assets/images/process_frontend_metadata.png b/docs/en/modules/admin/assets/images/process_frontend_metadata.png similarity index 100% rename from en/modules/admin/assets/images/process_frontend_metadata.png rename to docs/en/modules/admin/assets/images/process_frontend_metadata.png diff --git a/en/modules/admin/assets/images/process_phases.png b/docs/en/modules/admin/assets/images/process_phases.png similarity index 100% rename from en/modules/admin/assets/images/process_phases.png rename to docs/en/modules/admin/assets/images/process_phases.png diff --git a/en/modules/admin/assets/images/process_phases_header.png b/docs/en/modules/admin/assets/images/process_phases_header.png similarity index 100% rename from en/modules/admin/assets/images/process_phases_header.png rename to docs/en/modules/admin/assets/images/process_phases_header.png diff --git a/en/modules/admin/assets/images/process_phases_list.png b/docs/en/modules/admin/assets/images/process_phases_list.png similarity index 100% rename from en/modules/admin/assets/images/process_phases_list.png rename to docs/en/modules/admin/assets/images/process_phases_list.png diff --git a/en/modules/admin/assets/images/process_phases_new_form.png b/docs/en/modules/admin/assets/images/process_phases_new_form.png similarity index 100% rename from en/modules/admin/assets/images/process_phases_new_form.png rename to docs/en/modules/admin/assets/images/process_phases_new_form.png diff --git a/en/modules/admin/assets/images/process_steps_components.png b/docs/en/modules/admin/assets/images/process_steps_components.png similarity index 100% rename from en/modules/admin/assets/images/process_steps_components.png rename to docs/en/modules/admin/assets/images/process_steps_components.png diff --git a/en/modules/admin/assets/images/process_submenu.png b/docs/en/modules/admin/assets/images/process_submenu.png similarity index 100% rename from en/modules/admin/assets/images/process_submenu.png rename to docs/en/modules/admin/assets/images/process_submenu.png diff --git a/en/modules/admin/assets/images/processes_group_example.png b/docs/en/modules/admin/assets/images/processes_group_example.png similarity index 100% rename from en/modules/admin/assets/images/processes_group_example.png rename to docs/en/modules/admin/assets/images/processes_group_example.png diff --git a/en/modules/admin/assets/images/processes_group_landing.png b/docs/en/modules/admin/assets/images/processes_group_landing.png similarity index 100% rename from en/modules/admin/assets/images/processes_group_landing.png rename to docs/en/modules/admin/assets/images/processes_group_landing.png diff --git a/en/modules/admin/assets/images/processes_group_list.png b/docs/en/modules/admin/assets/images/processes_group_list.png similarity index 100% rename from en/modules/admin/assets/images/processes_group_list.png rename to docs/en/modules/admin/assets/images/processes_group_list.png diff --git a/en/modules/admin/assets/images/processes_group_new_form.png b/docs/en/modules/admin/assets/images/processes_group_new_form.png similarity index 100% rename from en/modules/admin/assets/images/processes_group_new_form.png rename to docs/en/modules/admin/assets/images/processes_group_new_form.png diff --git a/en/modules/admin/assets/images/processes_list.png b/docs/en/modules/admin/assets/images/processes_list.png similarity index 100% rename from en/modules/admin/assets/images/processes_list.png rename to docs/en/modules/admin/assets/images/processes_list.png diff --git a/en/modules/admin/assets/images/processes_list_filter.png b/docs/en/modules/admin/assets/images/processes_list_filter.png similarity index 100% rename from en/modules/admin/assets/images/processes_list_filter.png rename to docs/en/modules/admin/assets/images/processes_list_filter.png diff --git a/en/modules/admin/assets/images/processes_new_form.png b/docs/en/modules/admin/assets/images/processes_new_form.png similarity index 100% rename from en/modules/admin/assets/images/processes_new_form.png rename to docs/en/modules/admin/assets/images/processes_new_form.png diff --git a/en/modules/admin/assets/images/reported_participant_modal.png b/docs/en/modules/admin/assets/images/reported_participant_modal.png similarity index 100% rename from en/modules/admin/assets/images/reported_participant_modal.png rename to docs/en/modules/admin/assets/images/reported_participant_modal.png diff --git a/en/modules/admin/assets/images/scopes_filter_initiatives.png b/docs/en/modules/admin/assets/images/scopes_filter_initiatives.png similarity index 100% rename from en/modules/admin/assets/images/scopes_filter_initiatives.png rename to docs/en/modules/admin/assets/images/scopes_filter_initiatives.png diff --git a/en/modules/admin/assets/images/scopes_filter_processes.png b/docs/en/modules/admin/assets/images/scopes_filter_processes.png similarity index 100% rename from en/modules/admin/assets/images/scopes_filter_processes.png rename to docs/en/modules/admin/assets/images/scopes_filter_processes.png diff --git a/en/modules/admin/assets/images/scopes_list.png b/docs/en/modules/admin/assets/images/scopes_list.png similarity index 100% rename from en/modules/admin/assets/images/scopes_list.png rename to docs/en/modules/admin/assets/images/scopes_list.png diff --git a/en/modules/admin/assets/images/scopes_new_form.png b/docs/en/modules/admin/assets/images/scopes_new_form.png similarity index 100% rename from en/modules/admin/assets/images/scopes_new_form.png rename to docs/en/modules/admin/assets/images/scopes_new_form.png diff --git a/en/modules/admin/assets/images/scopes_types_new_form.png b/docs/en/modules/admin/assets/images/scopes_types_new_form.png similarity index 100% rename from en/modules/admin/assets/images/scopes_types_new_form.png rename to docs/en/modules/admin/assets/images/scopes_types_new_form.png diff --git a/en/modules/admin/assets/images/settings_configuration_social.png b/docs/en/modules/admin/assets/images/settings_configuration_social.png similarity index 100% rename from en/modules/admin/assets/images/settings_configuration_social.png rename to docs/en/modules/admin/assets/images/settings_configuration_social.png diff --git a/en/modules/admin/assets/images/settings_configuration_welcome.png b/docs/en/modules/admin/assets/images/settings_configuration_welcome.png similarity index 100% rename from en/modules/admin/assets/images/settings_configuration_welcome.png rename to docs/en/modules/admin/assets/images/settings_configuration_welcome.png diff --git a/docs/en/modules/admin/assets/images/spaces/admins_form.png b/docs/en/modules/admin/assets/images/spaces/admins_form.png new file mode 100644 index 0000000000..9534d9b862 Binary files /dev/null and b/docs/en/modules/admin/assets/images/spaces/admins_form.png differ diff --git a/docs/en/modules/admin/assets/images/spaces/admins_list.png b/docs/en/modules/admin/assets/images/spaces/admins_list.png new file mode 100644 index 0000000000..961a6b3c5c Binary files /dev/null and b/docs/en/modules/admin/assets/images/spaces/admins_list.png differ diff --git a/docs/en/modules/admin/assets/images/spaces/admins_role_admin01.png b/docs/en/modules/admin/assets/images/spaces/admins_role_admin01.png new file mode 100644 index 0000000000..ab798d11a3 Binary files /dev/null and b/docs/en/modules/admin/assets/images/spaces/admins_role_admin01.png differ diff --git a/docs/en/modules/admin/assets/images/spaces/admins_role_admin02.png b/docs/en/modules/admin/assets/images/spaces/admins_role_admin02.png new file mode 100644 index 0000000000..6049b9397c Binary files /dev/null and b/docs/en/modules/admin/assets/images/spaces/admins_role_admin02.png differ diff --git a/docs/en/modules/admin/assets/images/spaces/admins_role_collaborator.png b/docs/en/modules/admin/assets/images/spaces/admins_role_collaborator.png new file mode 100644 index 0000000000..4ed1990bcd Binary files /dev/null and b/docs/en/modules/admin/assets/images/spaces/admins_role_collaborator.png differ diff --git a/docs/en/modules/admin/assets/images/spaces/admins_role_moderator.png b/docs/en/modules/admin/assets/images/spaces/admins_role_moderator.png new file mode 100644 index 0000000000..7dea2be7aa Binary files /dev/null and b/docs/en/modules/admin/assets/images/spaces/admins_role_moderator.png differ diff --git a/docs/en/modules/admin/assets/images/spaces/admins_role_valuator.png b/docs/en/modules/admin/assets/images/spaces/admins_role_valuator.png new file mode 100644 index 0000000000..bad6220a81 Binary files /dev/null and b/docs/en/modules/admin/assets/images/spaces/admins_role_valuator.png differ diff --git a/docs/en/modules/admin/assets/images/spaces/attachments.png b/docs/en/modules/admin/assets/images/spaces/attachments.png new file mode 100644 index 0000000000..5323503d08 Binary files /dev/null and b/docs/en/modules/admin/assets/images/spaces/attachments.png differ diff --git a/docs/en/modules/admin/assets/images/spaces/attachments_admin.png b/docs/en/modules/admin/assets/images/spaces/attachments_admin.png new file mode 100644 index 0000000000..de3f32de6c Binary files /dev/null and b/docs/en/modules/admin/assets/images/spaces/attachments_admin.png differ diff --git a/docs/en/modules/admin/assets/images/spaces/attachments_folders_admin.png b/docs/en/modules/admin/assets/images/spaces/attachments_folders_admin.png new file mode 100644 index 0000000000..61613a6f4a Binary files /dev/null and b/docs/en/modules/admin/assets/images/spaces/attachments_folders_admin.png differ diff --git a/docs/en/modules/admin/assets/images/spaces/attachments_new_folder_form.png b/docs/en/modules/admin/assets/images/spaces/attachments_new_folder_form.png new file mode 100644 index 0000000000..ff8f1d9506 Binary files /dev/null and b/docs/en/modules/admin/assets/images/spaces/attachments_new_folder_form.png differ diff --git a/docs/en/modules/admin/assets/images/spaces/attachments_new_form.png b/docs/en/modules/admin/assets/images/spaces/attachments_new_form.png new file mode 100644 index 0000000000..c7e83bcd5b Binary files /dev/null and b/docs/en/modules/admin/assets/images/spaces/attachments_new_form.png differ diff --git a/docs/en/modules/admin/assets/images/spaces/categories.png b/docs/en/modules/admin/assets/images/spaces/categories.png new file mode 100644 index 0000000000..528190c095 Binary files /dev/null and b/docs/en/modules/admin/assets/images/spaces/categories.png differ diff --git a/docs/en/modules/admin/assets/images/spaces/categories_new_form.png b/docs/en/modules/admin/assets/images/spaces/categories_new_form.png new file mode 100644 index 0000000000..1f0fb420b3 Binary files /dev/null and b/docs/en/modules/admin/assets/images/spaces/categories_new_form.png differ diff --git a/docs/en/modules/admin/assets/images/spaces/categories_sidebar.png b/docs/en/modules/admin/assets/images/spaces/categories_sidebar.png new file mode 100644 index 0000000000..e57cfc6511 Binary files /dev/null and b/docs/en/modules/admin/assets/images/spaces/categories_sidebar.png differ diff --git a/docs/en/modules/admin/assets/images/spaces/components/components.png b/docs/en/modules/admin/assets/images/spaces/components/components.png new file mode 100644 index 0000000000..200a9158fa Binary files /dev/null and b/docs/en/modules/admin/assets/images/spaces/components/components.png differ diff --git a/docs/en/modules/admin/assets/images/spaces/components/components_new_dropdown.png b/docs/en/modules/admin/assets/images/spaces/components/components_new_dropdown.png new file mode 100644 index 0000000000..d298f0c49e Binary files /dev/null and b/docs/en/modules/admin/assets/images/spaces/components/components_new_dropdown.png differ diff --git a/en/modules/admin/assets/images/spaces/conferences/attachments.png b/docs/en/modules/admin/assets/images/spaces/conferences/attachments.png similarity index 100% rename from en/modules/admin/assets/images/spaces/conferences/attachments.png rename to docs/en/modules/admin/assets/images/spaces/conferences/attachments.png diff --git a/en/modules/admin/assets/images/spaces/conferences/certificates_of_attendance.png b/docs/en/modules/admin/assets/images/spaces/conferences/certificates_of_attendance.png similarity index 100% rename from en/modules/admin/assets/images/spaces/conferences/certificates_of_attendance.png rename to docs/en/modules/admin/assets/images/spaces/conferences/certificates_of_attendance.png diff --git a/en/modules/admin/assets/images/spaces/conferences/certificates_of_attendance_button.png b/docs/en/modules/admin/assets/images/spaces/conferences/certificates_of_attendance_button.png similarity index 100% rename from en/modules/admin/assets/images/spaces/conferences/certificates_of_attendance_button.png rename to docs/en/modules/admin/assets/images/spaces/conferences/certificates_of_attendance_button.png diff --git a/en/modules/admin/assets/images/spaces/conferences/certificates_of_attendance_button_disabled.png b/docs/en/modules/admin/assets/images/spaces/conferences/certificates_of_attendance_button_disabled.png similarity index 100% rename from en/modules/admin/assets/images/spaces/conferences/certificates_of_attendance_button_disabled.png rename to docs/en/modules/admin/assets/images/spaces/conferences/certificates_of_attendance_button_disabled.png diff --git a/en/modules/admin/assets/images/spaces/conferences/certificates_of_attendance_pdf.png b/docs/en/modules/admin/assets/images/spaces/conferences/certificates_of_attendance_pdf.png similarity index 100% rename from en/modules/admin/assets/images/spaces/conferences/certificates_of_attendance_pdf.png rename to docs/en/modules/admin/assets/images/spaces/conferences/certificates_of_attendance_pdf.png diff --git a/en/modules/admin/assets/images/spaces/conferences/example01.png b/docs/en/modules/admin/assets/images/spaces/conferences/example01.png similarity index 100% rename from en/modules/admin/assets/images/spaces/conferences/example01.png rename to docs/en/modules/admin/assets/images/spaces/conferences/example01.png diff --git a/en/modules/admin/assets/images/spaces/conferences/invite_participant_form.png b/docs/en/modules/admin/assets/images/spaces/conferences/invite_participant_form.png similarity index 100% rename from en/modules/admin/assets/images/spaces/conferences/invite_participant_form.png rename to docs/en/modules/admin/assets/images/spaces/conferences/invite_participant_form.png diff --git a/en/modules/admin/assets/images/spaces/conferences/invites.png b/docs/en/modules/admin/assets/images/spaces/conferences/invites.png similarity index 100% rename from en/modules/admin/assets/images/spaces/conferences/invites.png rename to docs/en/modules/admin/assets/images/spaces/conferences/invites.png diff --git a/en/modules/admin/assets/images/spaces/conferences/manage_conferences.png b/docs/en/modules/admin/assets/images/spaces/conferences/manage_conferences.png similarity index 100% rename from en/modules/admin/assets/images/spaces/conferences/manage_conferences.png rename to docs/en/modules/admin/assets/images/spaces/conferences/manage_conferences.png diff --git a/en/modules/admin/assets/images/spaces/conferences/media_links_backend.png b/docs/en/modules/admin/assets/images/spaces/conferences/media_links_backend.png similarity index 100% rename from en/modules/admin/assets/images/spaces/conferences/media_links_backend.png rename to docs/en/modules/admin/assets/images/spaces/conferences/media_links_backend.png diff --git a/en/modules/admin/assets/images/spaces/conferences/media_links_frontend.png b/docs/en/modules/admin/assets/images/spaces/conferences/media_links_frontend.png similarity index 100% rename from en/modules/admin/assets/images/spaces/conferences/media_links_frontend.png rename to docs/en/modules/admin/assets/images/spaces/conferences/media_links_frontend.png diff --git a/en/modules/admin/assets/images/spaces/conferences/menu.png b/docs/en/modules/admin/assets/images/spaces/conferences/menu.png similarity index 100% rename from en/modules/admin/assets/images/spaces/conferences/menu.png rename to docs/en/modules/admin/assets/images/spaces/conferences/menu.png diff --git a/en/modules/admin/assets/images/spaces/conferences/new_conference.png b/docs/en/modules/admin/assets/images/spaces/conferences/new_conference.png similarity index 100% rename from en/modules/admin/assets/images/spaces/conferences/new_conference.png rename to docs/en/modules/admin/assets/images/spaces/conferences/new_conference.png diff --git a/en/modules/admin/assets/images/spaces/conferences/new_media_link.png b/docs/en/modules/admin/assets/images/spaces/conferences/new_media_link.png similarity index 100% rename from en/modules/admin/assets/images/spaces/conferences/new_media_link.png rename to docs/en/modules/admin/assets/images/spaces/conferences/new_media_link.png diff --git a/en/modules/admin/assets/images/spaces/conferences/new_partner.png b/docs/en/modules/admin/assets/images/spaces/conferences/new_partner.png similarity index 100% rename from en/modules/admin/assets/images/spaces/conferences/new_partner.png rename to docs/en/modules/admin/assets/images/spaces/conferences/new_partner.png diff --git a/en/modules/admin/assets/images/spaces/conferences/new_registration_type.png b/docs/en/modules/admin/assets/images/spaces/conferences/new_registration_type.png similarity index 100% rename from en/modules/admin/assets/images/spaces/conferences/new_registration_type.png rename to docs/en/modules/admin/assets/images/spaces/conferences/new_registration_type.png diff --git a/en/modules/admin/assets/images/spaces/conferences/new_speaker.png b/docs/en/modules/admin/assets/images/spaces/conferences/new_speaker.png similarity index 100% rename from en/modules/admin/assets/images/spaces/conferences/new_speaker.png rename to docs/en/modules/admin/assets/images/spaces/conferences/new_speaker.png diff --git a/en/modules/admin/assets/images/spaces/conferences/partners.png b/docs/en/modules/admin/assets/images/spaces/conferences/partners.png similarity index 100% rename from en/modules/admin/assets/images/spaces/conferences/partners.png rename to docs/en/modules/admin/assets/images/spaces/conferences/partners.png diff --git a/en/modules/admin/assets/images/spaces/conferences/partners_frontend.png b/docs/en/modules/admin/assets/images/spaces/conferences/partners_frontend.png similarity index 100% rename from en/modules/admin/assets/images/spaces/conferences/partners_frontend.png rename to docs/en/modules/admin/assets/images/spaces/conferences/partners_frontend.png diff --git a/en/modules/admin/assets/images/spaces/conferences/program_backend.png b/docs/en/modules/admin/assets/images/spaces/conferences/program_backend.png similarity index 100% rename from en/modules/admin/assets/images/spaces/conferences/program_backend.png rename to docs/en/modules/admin/assets/images/spaces/conferences/program_backend.png diff --git a/en/modules/admin/assets/images/spaces/conferences/program_frontend.png b/docs/en/modules/admin/assets/images/spaces/conferences/program_frontend.png similarity index 100% rename from en/modules/admin/assets/images/spaces/conferences/program_frontend.png rename to docs/en/modules/admin/assets/images/spaces/conferences/program_frontend.png diff --git a/en/modules/admin/assets/images/spaces/conferences/program_venues_frontend.png b/docs/en/modules/admin/assets/images/spaces/conferences/program_venues_frontend.png similarity index 100% rename from en/modules/admin/assets/images/spaces/conferences/program_venues_frontend.png rename to docs/en/modules/admin/assets/images/spaces/conferences/program_venues_frontend.png diff --git a/en/modules/admin/assets/images/spaces/conferences/registration_landing01.png b/docs/en/modules/admin/assets/images/spaces/conferences/registration_landing01.png similarity index 100% rename from en/modules/admin/assets/images/spaces/conferences/registration_landing01.png rename to docs/en/modules/admin/assets/images/spaces/conferences/registration_landing01.png diff --git a/en/modules/admin/assets/images/spaces/conferences/registration_landing02.png b/docs/en/modules/admin/assets/images/spaces/conferences/registration_landing02.png similarity index 100% rename from en/modules/admin/assets/images/spaces/conferences/registration_landing02.png rename to docs/en/modules/admin/assets/images/spaces/conferences/registration_landing02.png diff --git a/en/modules/admin/assets/images/spaces/conferences/registration_types_backend.png b/docs/en/modules/admin/assets/images/spaces/conferences/registration_types_backend.png similarity index 100% rename from en/modules/admin/assets/images/spaces/conferences/registration_types_backend.png rename to docs/en/modules/admin/assets/images/spaces/conferences/registration_types_backend.png diff --git a/en/modules/admin/assets/images/spaces/conferences/registration_types_frontend_w_user.png b/docs/en/modules/admin/assets/images/spaces/conferences/registration_types_frontend_w_user.png similarity index 100% rename from en/modules/admin/assets/images/spaces/conferences/registration_types_frontend_w_user.png rename to docs/en/modules/admin/assets/images/spaces/conferences/registration_types_frontend_w_user.png diff --git a/en/modules/admin/assets/images/spaces/conferences/registration_types_frontend_wo_user.png b/docs/en/modules/admin/assets/images/spaces/conferences/registration_types_frontend_wo_user.png similarity index 100% rename from en/modules/admin/assets/images/spaces/conferences/registration_types_frontend_wo_user.png rename to docs/en/modules/admin/assets/images/spaces/conferences/registration_types_frontend_wo_user.png diff --git a/en/modules/admin/assets/images/spaces/conferences/sidebar.png b/docs/en/modules/admin/assets/images/spaces/conferences/sidebar.png similarity index 100% rename from en/modules/admin/assets/images/spaces/conferences/sidebar.png rename to docs/en/modules/admin/assets/images/spaces/conferences/sidebar.png diff --git a/en/modules/admin/assets/images/spaces/conferences/speakers.png b/docs/en/modules/admin/assets/images/spaces/conferences/speakers.png similarity index 100% rename from en/modules/admin/assets/images/spaces/conferences/speakers.png rename to docs/en/modules/admin/assets/images/spaces/conferences/speakers.png diff --git a/en/modules/admin/assets/images/spaces/conferences/speakers_frontend.png b/docs/en/modules/admin/assets/images/spaces/conferences/speakers_frontend.png similarity index 100% rename from en/modules/admin/assets/images/spaces/conferences/speakers_frontend.png rename to docs/en/modules/admin/assets/images/spaces/conferences/speakers_frontend.png diff --git a/en/modules/admin/assets/images/spaces/conferences/user_registration_confirmed_email.png b/docs/en/modules/admin/assets/images/spaces/conferences/user_registration_confirmed_email.png similarity index 100% rename from en/modules/admin/assets/images/spaces/conferences/user_registration_confirmed_email.png rename to docs/en/modules/admin/assets/images/spaces/conferences/user_registration_confirmed_email.png diff --git a/en/modules/admin/assets/images/spaces/conferences/user_registration_confirmed_notification.png b/docs/en/modules/admin/assets/images/spaces/conferences/user_registration_confirmed_notification.png similarity index 100% rename from en/modules/admin/assets/images/spaces/conferences/user_registration_confirmed_notification.png rename to docs/en/modules/admin/assets/images/spaces/conferences/user_registration_confirmed_notification.png diff --git a/en/modules/admin/assets/images/spaces/conferences/user_registration_pending_email.png b/docs/en/modules/admin/assets/images/spaces/conferences/user_registration_pending_email.png similarity index 100% rename from en/modules/admin/assets/images/spaces/conferences/user_registration_pending_email.png rename to docs/en/modules/admin/assets/images/spaces/conferences/user_registration_pending_email.png diff --git a/en/modules/admin/assets/images/spaces/conferences/user_registration_pending_notification.png b/docs/en/modules/admin/assets/images/spaces/conferences/user_registration_pending_notification.png similarity index 100% rename from en/modules/admin/assets/images/spaces/conferences/user_registration_pending_notification.png rename to docs/en/modules/admin/assets/images/spaces/conferences/user_registration_pending_notification.png diff --git a/en/modules/admin/assets/images/spaces/conferences/user_registrations.png b/docs/en/modules/admin/assets/images/spaces/conferences/user_registrations.png similarity index 100% rename from en/modules/admin/assets/images/spaces/conferences/user_registrations.png rename to docs/en/modules/admin/assets/images/spaces/conferences/user_registrations.png diff --git a/docs/en/modules/admin/assets/images/spaces/landing_page/activities.png b/docs/en/modules/admin/assets/images/spaces/landing_page/activities.png new file mode 100644 index 0000000000..04cbec678f Binary files /dev/null and b/docs/en/modules/admin/assets/images/spaces/landing_page/activities.png differ diff --git a/docs/en/modules/admin/assets/images/spaces/landing_page/announcement_front.png b/docs/en/modules/admin/assets/images/spaces/landing_page/announcement_front.png new file mode 100644 index 0000000000..6d8419a9d8 Binary files /dev/null and b/docs/en/modules/admin/assets/images/spaces/landing_page/announcement_front.png differ diff --git a/docs/en/modules/admin/assets/images/spaces/landing_page/assemblies.png b/docs/en/modules/admin/assets/images/spaces/landing_page/assemblies.png new file mode 100644 index 0000000000..c382abc549 Binary files /dev/null and b/docs/en/modules/admin/assets/images/spaces/landing_page/assemblies.png differ diff --git a/docs/en/modules/admin/assets/images/spaces/landing_page/assemblies_admin.png b/docs/en/modules/admin/assets/images/spaces/landing_page/assemblies_admin.png new file mode 100644 index 0000000000..7dbf6547b3 Binary files /dev/null and b/docs/en/modules/admin/assets/images/spaces/landing_page/assemblies_admin.png differ diff --git a/docs/en/modules/admin/assets/images/spaces/landing_page/dates_metadata.png b/docs/en/modules/admin/assets/images/spaces/landing_page/dates_metadata.png new file mode 100644 index 0000000000..39e4622484 Binary files /dev/null and b/docs/en/modules/admin/assets/images/spaces/landing_page/dates_metadata.png differ diff --git a/docs/en/modules/admin/assets/images/spaces/landing_page/documents.png b/docs/en/modules/admin/assets/images/spaces/landing_page/documents.png new file mode 100644 index 0000000000..2c31738af7 Binary files /dev/null and b/docs/en/modules/admin/assets/images/spaces/landing_page/documents.png differ diff --git a/docs/en/modules/admin/assets/images/spaces/landing_page/duration.png b/docs/en/modules/admin/assets/images/spaces/landing_page/duration.png new file mode 100644 index 0000000000..3e6e85fa7a Binary files /dev/null and b/docs/en/modules/admin/assets/images/spaces/landing_page/duration.png differ diff --git a/docs/en/modules/admin/assets/images/spaces/landing_page/hero_admin.png b/docs/en/modules/admin/assets/images/spaces/landing_page/hero_admin.png new file mode 100644 index 0000000000..bd63445966 Binary files /dev/null and b/docs/en/modules/admin/assets/images/spaces/landing_page/hero_admin.png differ diff --git a/docs/en/modules/admin/assets/images/spaces/landing_page/hero_front.png b/docs/en/modules/admin/assets/images/spaces/landing_page/hero_front.png new file mode 100644 index 0000000000..0c80b054bd Binary files /dev/null and b/docs/en/modules/admin/assets/images/spaces/landing_page/hero_front.png differ diff --git a/docs/en/modules/admin/assets/images/spaces/landing_page/images.png b/docs/en/modules/admin/assets/images/spaces/landing_page/images.png new file mode 100644 index 0000000000..dba50948ed Binary files /dev/null and b/docs/en/modules/admin/assets/images/spaces/landing_page/images.png differ diff --git a/docs/en/modules/admin/assets/images/spaces/landing_page/landing_page_admin.png b/docs/en/modules/admin/assets/images/spaces/landing_page/landing_page_admin.png new file mode 100644 index 0000000000..7cc4197613 Binary files /dev/null and b/docs/en/modules/admin/assets/images/spaces/landing_page/landing_page_admin.png differ diff --git a/docs/en/modules/admin/assets/images/spaces/landing_page/main_data.png b/docs/en/modules/admin/assets/images/spaces/landing_page/main_data.png new file mode 100644 index 0000000000..6019e04fc1 Binary files /dev/null and b/docs/en/modules/admin/assets/images/spaces/landing_page/main_data.png differ diff --git a/docs/en/modules/admin/assets/images/spaces/landing_page/meetings.png b/docs/en/modules/admin/assets/images/spaces/landing_page/meetings.png new file mode 100644 index 0000000000..014f34553d Binary files /dev/null and b/docs/en/modules/admin/assets/images/spaces/landing_page/meetings.png differ diff --git a/docs/en/modules/admin/assets/images/spaces/landing_page/metadata.png b/docs/en/modules/admin/assets/images/spaces/landing_page/metadata.png new file mode 100644 index 0000000000..64323b5651 Binary files /dev/null and b/docs/en/modules/admin/assets/images/spaces/landing_page/metadata.png differ diff --git a/docs/en/modules/admin/assets/images/spaces/landing_page/metrics.png b/docs/en/modules/admin/assets/images/spaces/landing_page/metrics.png new file mode 100644 index 0000000000..4b54fe1f13 Binary files /dev/null and b/docs/en/modules/admin/assets/images/spaces/landing_page/metrics.png differ diff --git a/docs/en/modules/admin/assets/images/spaces/landing_page/posts.png b/docs/en/modules/admin/assets/images/spaces/landing_page/posts.png new file mode 100644 index 0000000000..a90cbc3c82 Binary files /dev/null and b/docs/en/modules/admin/assets/images/spaces/landing_page/posts.png differ diff --git a/docs/en/modules/admin/assets/images/spaces/landing_page/processes.png b/docs/en/modules/admin/assets/images/spaces/landing_page/processes.png new file mode 100644 index 0000000000..93e0670ff7 Binary files /dev/null and b/docs/en/modules/admin/assets/images/spaces/landing_page/processes.png differ diff --git a/docs/en/modules/admin/assets/images/spaces/landing_page/processes_admin.png b/docs/en/modules/admin/assets/images/spaces/landing_page/processes_admin.png new file mode 100644 index 0000000000..338a46e0b7 Binary files /dev/null and b/docs/en/modules/admin/assets/images/spaces/landing_page/processes_admin.png differ diff --git a/docs/en/modules/admin/assets/images/spaces/landing_page/proposals.png b/docs/en/modules/admin/assets/images/spaces/landing_page/proposals.png new file mode 100644 index 0000000000..03ffb65479 Binary files /dev/null and b/docs/en/modules/admin/assets/images/spaces/landing_page/proposals.png differ diff --git a/docs/en/modules/admin/assets/images/spaces/landing_page/proposals_admin.png b/docs/en/modules/admin/assets/images/spaces/landing_page/proposals_admin.png new file mode 100644 index 0000000000..d048d0d286 Binary files /dev/null and b/docs/en/modules/admin/assets/images/spaces/landing_page/proposals_admin.png differ diff --git a/docs/en/modules/admin/assets/images/spaces/landing_page/results.png b/docs/en/modules/admin/assets/images/spaces/landing_page/results.png new file mode 100644 index 0000000000..be30903930 Binary files /dev/null and b/docs/en/modules/admin/assets/images/spaces/landing_page/results.png differ diff --git a/docs/en/modules/admin/assets/images/spaces/landing_page/social_networks.png b/docs/en/modules/admin/assets/images/spaces/landing_page/social_networks.png new file mode 100644 index 0000000000..ed7c47dbaf Binary files /dev/null and b/docs/en/modules/admin/assets/images/spaces/landing_page/social_networks.png differ diff --git a/docs/en/modules/admin/assets/images/spaces/landing_page/statistics.png b/docs/en/modules/admin/assets/images/spaces/landing_page/statistics.png new file mode 100644 index 0000000000..092003c04d Binary files /dev/null and b/docs/en/modules/admin/assets/images/spaces/landing_page/statistics.png differ diff --git a/docs/en/modules/admin/assets/images/spaces/private_participants.png b/docs/en/modules/admin/assets/images/spaces/private_participants.png new file mode 100644 index 0000000000..99ba0c7e81 Binary files /dev/null and b/docs/en/modules/admin/assets/images/spaces/private_participants.png differ diff --git a/docs/en/modules/admin/assets/images/spaces/private_participants_csv_import.png b/docs/en/modules/admin/assets/images/spaces/private_participants_csv_import.png new file mode 100644 index 0000000000..233b821bba Binary files /dev/null and b/docs/en/modules/admin/assets/images/spaces/private_participants_csv_import.png differ diff --git a/en/modules/admin/assets/images/spaces/private_participants_email_invite.png b/docs/en/modules/admin/assets/images/spaces/private_participants_email_invite.png similarity index 100% rename from en/modules/admin/assets/images/spaces/private_participants_email_invite.png rename to docs/en/modules/admin/assets/images/spaces/private_participants_email_invite.png diff --git a/docs/en/modules/admin/assets/images/spaces/private_participants_new_form.png b/docs/en/modules/admin/assets/images/spaces/private_participants_new_form.png new file mode 100644 index 0000000000..314ed3acdc Binary files /dev/null and b/docs/en/modules/admin/assets/images/spaces/private_participants_new_form.png differ diff --git a/docs/en/modules/admin/assets/images/spaces/private_participants_user_registration_form.png b/docs/en/modules/admin/assets/images/spaces/private_participants_user_registration_form.png new file mode 100644 index 0000000000..e8292c970c Binary files /dev/null and b/docs/en/modules/admin/assets/images/spaces/private_participants_user_registration_form.png differ diff --git a/docs/en/modules/admin/assets/images/spaces/processes/process-types-admin-backend.png b/docs/en/modules/admin/assets/images/spaces/processes/process-types-admin-backend.png new file mode 100644 index 0000000000..03ef36090a Binary files /dev/null and b/docs/en/modules/admin/assets/images/spaces/processes/process-types-admin-backend.png differ diff --git a/docs/en/modules/admin/assets/images/spaces/processes/process-types-edit-process.png b/docs/en/modules/admin/assets/images/spaces/processes/process-types-edit-process.png new file mode 100644 index 0000000000..614b8bb5e0 Binary files /dev/null and b/docs/en/modules/admin/assets/images/spaces/processes/process-types-edit-process.png differ diff --git a/docs/en/modules/admin/assets/images/spaces/processes/process-types-front-end.png b/docs/en/modules/admin/assets/images/spaces/processes/process-types-front-end.png new file mode 100644 index 0000000000..960b9a21e9 Binary files /dev/null and b/docs/en/modules/admin/assets/images/spaces/processes/process-types-front-end.png differ diff --git a/en/modules/admin/assets/images/spaces_admin.png b/docs/en/modules/admin/assets/images/spaces_admin.png similarity index 100% rename from en/modules/admin/assets/images/spaces_admin.png rename to docs/en/modules/admin/assets/images/spaces_admin.png diff --git a/en/modules/admin/assets/images/spaces_visitor.png b/docs/en/modules/admin/assets/images/spaces_visitor.png similarity index 100% rename from en/modules/admin/assets/images/spaces_visitor.png rename to docs/en/modules/admin/assets/images/spaces_visitor.png diff --git a/docs/en/modules/admin/assets/images/templates/templates_block_user_backend_form.png b/docs/en/modules/admin/assets/images/templates/templates_block_user_backend_form.png new file mode 100644 index 0000000000..225b090604 Binary files /dev/null and b/docs/en/modules/admin/assets/images/templates/templates_block_user_backend_form.png differ diff --git a/docs/en/modules/admin/assets/images/templates/templates_block_user_choice.png b/docs/en/modules/admin/assets/images/templates/templates_block_user_choice.png new file mode 100644 index 0000000000..c6f4c632d2 Binary files /dev/null and b/docs/en/modules/admin/assets/images/templates/templates_block_user_choice.png differ diff --git a/docs/en/modules/admin/assets/images/templates/templates_menu.png b/docs/en/modules/admin/assets/images/templates/templates_menu.png new file mode 100644 index 0000000000..7ce4e1a86b Binary files /dev/null and b/docs/en/modules/admin/assets/images/templates/templates_menu.png differ diff --git a/docs/en/modules/admin/assets/images/templates/templates_proposal_answers_backend_form.png b/docs/en/modules/admin/assets/images/templates/templates_proposal_answers_backend_form.png new file mode 100644 index 0000000000..3f015fce86 Binary files /dev/null and b/docs/en/modules/admin/assets/images/templates/templates_proposal_answers_backend_form.png differ diff --git a/docs/en/modules/admin/assets/images/templates/templates_proposal_answers_choice.png b/docs/en/modules/admin/assets/images/templates/templates_proposal_answers_choice.png new file mode 100644 index 0000000000..483ff6dcd2 Binary files /dev/null and b/docs/en/modules/admin/assets/images/templates/templates_proposal_answers_choice.png differ diff --git a/docs/en/modules/admin/assets/images/templates/templates_proposal_answers_choice_component.png b/docs/en/modules/admin/assets/images/templates/templates_proposal_answers_choice_component.png new file mode 100644 index 0000000000..6817ed1257 Binary files /dev/null and b/docs/en/modules/admin/assets/images/templates/templates_proposal_answers_choice_component.png differ diff --git a/docs/en/modules/admin/assets/images/templates/templates_questionnaires_backend_form.png b/docs/en/modules/admin/assets/images/templates/templates_questionnaires_backend_form.png new file mode 100644 index 0000000000..1482aa009c Binary files /dev/null and b/docs/en/modules/admin/assets/images/templates/templates_questionnaires_backend_form.png differ diff --git a/docs/en/modules/admin/assets/images/templates/templates_questionnaires_backend_survey_form.png b/docs/en/modules/admin/assets/images/templates/templates_questionnaires_backend_survey_form.png new file mode 100644 index 0000000000..50bd5af51d Binary files /dev/null and b/docs/en/modules/admin/assets/images/templates/templates_questionnaires_backend_survey_form.png differ diff --git a/docs/en/modules/admin/assets/images/templates/templates_questionnaires_backend_survey_preview.png b/docs/en/modules/admin/assets/images/templates/templates_questionnaires_backend_survey_preview.png new file mode 100644 index 0000000000..4cbc4bc20b Binary files /dev/null and b/docs/en/modules/admin/assets/images/templates/templates_questionnaires_backend_survey_preview.png differ diff --git a/docs/en/modules/admin/assets/images/templates/templates_questionnaires_list.png b/docs/en/modules/admin/assets/images/templates/templates_questionnaires_list.png new file mode 100644 index 0000000000..fd73d61ccd Binary files /dev/null and b/docs/en/modules/admin/assets/images/templates/templates_questionnaires_list.png differ diff --git a/docs/en/modules/admin/assets/images/templates/templates_questionnaires_survey_choice.png b/docs/en/modules/admin/assets/images/templates/templates_questionnaires_survey_choice.png new file mode 100644 index 0000000000..440086a01e Binary files /dev/null and b/docs/en/modules/admin/assets/images/templates/templates_questionnaires_survey_choice.png differ diff --git a/en/modules/admin/pages/appearance.adoc b/docs/en/modules/admin/pages/appearance.adoc similarity index 100% rename from en/modules/admin/pages/appearance.adoc rename to docs/en/modules/admin/pages/appearance.adoc diff --git a/en/modules/admin/pages/areas.adoc b/docs/en/modules/admin/pages/areas.adoc similarity index 100% rename from en/modules/admin/pages/areas.adoc rename to docs/en/modules/admin/pages/areas.adoc diff --git a/en/modules/admin/pages/components.adoc b/docs/en/modules/admin/pages/components.adoc similarity index 100% rename from en/modules/admin/pages/components.adoc rename to docs/en/modules/admin/pages/components.adoc diff --git a/en/modules/admin/pages/components/accountability.adoc b/docs/en/modules/admin/pages/components/accountability.adoc similarity index 87% rename from en/modules/admin/pages/components/accountability.adoc rename to docs/en/modules/admin/pages/components/accountability.adoc index 9945ae14f3..5ab2085432 100644 --- a/en/modules/admin/pages/components/accountability.adoc +++ b/docs/en/modules/admin/pages/components/accountability.adoc @@ -1,5 +1,6 @@ = Accountability +<<<<<<< HEAD:en/modules/admin/pages/components/accountability.adoc The Accountability component allows people who visit the platform to view the level of execution (global, by categories and/or subcategories), of the results of a participatory space. It allows to keep track of the results or decisions made in the platform, and also to relate them to the proposals and meetings that helped to make them. @@ -275,3 +276,13 @@ the format and what you'll need to fill out. ** status/id: ID of the Status for this result ** progress: Percentage (from 0 to 100) of the execution ** proposals_ids: internal ID of the related proposals (separated with a comma). It gets automatically converted to proposal_url +======= +The Accountability component allows people to follow project implementations. It works like a project management system built into the platform. It offers the following features: + +* creating results that represent projects to be implemented +* subdividing results into projects or sub-projects +* defining and applying progress in implementation statuses (0% to 100% implemented) around their implementation +* displaying the extent of the results’ implementation grouped by categories and scopes + +Results, projects and statuses can be updated through a CSV (comma-separated values), or manually by the administration interface. +>>>>>>> develop:docs/en/modules/admin/pages/components/accountability.adoc diff --git a/en/modules/admin/pages/components/blog.adoc b/docs/en/modules/admin/pages/components/blog.adoc similarity index 100% rename from en/modules/admin/pages/components/blog.adoc rename to docs/en/modules/admin/pages/components/blog.adoc diff --git a/docs/en/modules/admin/pages/components/budgets.adoc b/docs/en/modules/admin/pages/components/budgets.adoc new file mode 100644 index 0000000000..906b1d89db --- /dev/null +++ b/docs/en/modules/admin/pages/components/budgets.adoc @@ -0,0 +1,356 @@ += Budgets +:page-toclevels: 4 + +The Budgets component allows people to vote by selecting projects of their choosing. Depending on the needs and normative +of the organization, this could be configured so people have assigned a total budget (for instance, 100.000 EUR) and then +every project has assigned a value (for instance, 10.000 EUR). Then when people vote on projects, they have a progress bar +where they see how much remaining budget they have to allocate in this voting. + +From this starting point, there could be other configurations, such as: + +* A minimum percentage of budget to be allocated +* A minimum number of projects to be allocated +* Multiple budgets, one for each district or neighborhood + +Some examples of where this component was used: + +* https://www.decidim.barcelona/processes/PressupostosParticipatius[2020/2021 Participatory Budgeting Process in Decidim Barcelona]. +The city of Barcelona (Spain) has allocated a budget of 30.000.000 EUR so people can present, define, prioritize, vote +and choose which investment projects the city government should execute. +* https://ecrivons.angers.fr/processes/BP2021[2021 Participatory Budgeting Process in Angers]. The city of Angers (France) has allocated +a budget of 1.000.000 EUR so people from 11 years can propose maximum of 3 ideas and then vote for their 5 favorite projects. +* https://omastadi.hel.fi/[2021 Participatory Budgeting Process in Helsinki]. Helsinki has allocated 8.8 million euros to realising +residents’ wishes. The ideas are developed together into proposals that Helsinki residents can vote on. The proposals with the +most votes are realised by the City. + +image:components/budgets/example01.png[Budgets example voting] +image:components/budgets/example02.png[Budgets example error messagge when exceding the amount of budget] +image:components/budgets/example03.png[Budgets vote confirmation] +image:components/budgets/example04.png[Budgets after voting] + +To configure the Budgets component: + +. Sign in as admin +. Go to admin panel +. In the main sidebar, click in the button for the space that you want to configure the component for. +For instance, it could be "Processes", "Assemblies" or "Conferences". +. Go to components +. Click on "Add component" button +. Click on "Budgets" +. Fill the xref:_add_component[Add component] form + +== Add component + +image:components/budgets/component.png[Add component form] + +.Add component: Budgets form +|=== +|Field |Type |Description + +|Name +|Required +|What is the title of this component. For instance, "Budgets" + +|Order position +|Optional +|Which order will it have in relation to the other budgets. Having a lower number means a higher priority. +For instance, if you have two budgets, "Budget a" with weight "10" and "Budget b" with weight "0", then "Budget b" will be first when ordering. + +|=== + +.Add component: Budgets form - Global settings +|=== +|Field |Type |Description + +|Scopes enabled +|Optional +|Check if you want to have Scopes filtering in this component. + +|Scope +|Optional +|Which xref:admin:scopes.adoc[Scope] does this component belongs to. + +|Global scope +|Optional +| + +|xref:_workflows[Workflow] +|Required +|How the participants can vote if there are multiple budget sets. You can define your own xref:_workflows[Workflow] or use one of the availables. + +|Projects per page +|Required +|How many projects are displayed per page. + +|Enable rule: Minimum budget percentage +|Optional, but incompatible with "Minimum number of projects to be voted on" and "Selected projects with minimum and maximum number of projects to be voted on" +|Allows to define a "Vote threshold percent", a percent of the total budget that participants must reach to be able to vote. + +|Enable rule: Minimum number of projects to be voted on +|Optional, but incompatible with "Minimum budget percentage" and "Selected projects with minimum and maximum number of projects to be voted on" +|Allows to define a "Minimum number of projects to vote", a number of projects that participants must reach to be able to vote. + +|Enable rule: Selected projects with minimum and maximum number of projects to be voted on +|Optional, but incompatible with "Minimum budget percentage" and "Minimum number of projects to be voted on" +|Allows to define a "Minimum amount of projects to be selected" and a "Maximum amount of projects to be selected", the number of projects +that participants will need to vote as a minimum and maximum. + +|Comments enabled +|Optional +|Whether you want to have comments in the meetings. + +|Comments max length +|Optional +|What is the characters limit that participants will have when making comments. Leave 0 for default value. + +|Actions permissions can be set for each project +|Optional +|Whether you want to be able to set permissions for every one of the projects. Most of the time you will want to leave this option disabled. + +|Announcement +|Optional +|A general announcement that'll be visible on the general budgets landing page. + +|Budgets landing page +|Optional +|What message will be shown in the Budgets landing page when there are multiple budgets. + +|More information modal +|Optional +|What message will be shown when clicking on the "More information" link. + +|=== + +In the cases where the space that this component will be used has xref:admin:spaces/processes/phases.adoc[Phases], for instance, in +xref:admin:spaces/processes.adoc[Participatory Processes], then you can also define different behaviors per Step. + +.Add component: Budgets form - Step settings +|=== +|Field |Type |Description + +|Comments blocked +|Optional +|Whether you want to enable comments for this phase. + +|Voting +|Required +|Choose one of the following options depending in the moment of the process: Voting disabled, Voting enabled or Voting finished. + +|Show votes +|Optional +|Wheter the votes will be shown. We strongly recommend that you only check this option after the voting is finished. + +|Announcement +|Optional +|A general announcement that'll be visible on the general budgets landing page. + +|Budgets landing page +|Optional +|What message will be shown in the Budgets landing page when there are multiple budgets. + +|More information modal +|Optional +|What message will be shown when clicking on the "More information" link. + +|=== + +== Permissions + +Edit permissions + +* Vote +* Comment + +== Workflows + +One neat feature of the Budgets component is the ability to define your own workflows. + +This means that you can define multiple Budgets, for instance one for every Neighberhood or District that a City has, and +you can also define multiple rullings regarding how people can vote on those Budgets. By default you have these workflows: + +* Vote in one: allows participants to vote in any budget, but only in one. +* Vote in all: allows participants to vote in all budgets. +* Vote in a random component: allows participants to vote only in one budget, selected randomly. + +But this can be extended in your application by a developer, by making your own Workflows. For instance for the +https://www.decidim.barcelona/processes/PressupostosParticipatius[2020/2021 Participatory Budgeting Process in Decidim Barcelona], +the people could vote in two districts: the one where they lived and one of their choosing. This was defined in the +https://github.com/AjuntamentdeBarcelona/decidim-barcelona/blob/743be2a210e8745d2dc443166642b285aed2b356/lib/budgets_workflow_pam2021.rb[decidim-barcelona application itself]. + +You can read more about Worfklows in https://github.com/decidim/decidim/blob/1ab5cd8fdabef48f5be94ff9c30c6bb3bc9a2f8f/decidim-budgets/README.md#budget-workflows[decidim-budgets README.md]. + +NOTE: You only want to have a voting without much complications? Like a city-wide vote? Don't worry: if you define only one +Budget, then people will go there directly when click in the Budgets section. + +== Manage budgets + +image:components/budgets/manage_budgets.png[Manage budgets table] + +This window also lets you see the votes that the various projects have received. (Number of votes) and the total number of votes (*Finished votes* and *Pending votes*, that is, that a participant has started voting but has still not cast their vote). + +=== Export all + +Allows to export the projects for this budget in different formats. + +* Projects as CSV +* Projects as JSON +* Projects as Excel + +=== New budget form + +image:components/budgets/new_budget.png[New budget form] + +.New budget form +|=== +|Field |Type |Description + +|Title +|Required +|What is the title of this budget. For instance, "District A" + +|Order position +|Optional +|Which order will it have in relation to the other budgets. Having a lower number means a higher priority. +For instance, if you have two budgets, "Budget a" with weight "10" and "Budget b" with weight "0", then "Budget b" will be first when ordering. + +|Description +|Optional +|What is the description of this budget. + +|Total budget +|Required +|What is the total amount of money that people will have for assigning. + +|=== + +==== Actions + +.Actions +|=== +|Icon |Name |Definition + +|image:action_preview.png[Preview icon] +|Preview +|To see how it's shown in the frontend to participants. + +|image:action_list.png[Manage projects icon] +|xref:_manage_projects[Manage projects] +|Allows you to manage the projects of a budget. + +|image:action_edit.png[Edit icon] +|Edit +|Edit form for a budget. It's the same form as "New budget". + +|image:action_delete.png[Delete icon] +|Delete +|To delete this budget. Only can be done when there aren't any projects. + +|=== + +==== Manage projects + +===== Import proposals to projects + +Depending in the normative, you could want to have a first phase where participants +make proposals, and those proposals are selected (by voting or by technical review), +then you can import those proposals and convert them to projects. + +For this to work: + +. The following settings in the proposals component need to be enabled: +.. Proposal answering enabled +.. Enable costs on proposal answers +. A valuator or administrator need to Answer proposals: +.. Review the proposals +.. Accept or reject them according to your normative +.. Add costs to the proposals if were accepted +. An administrator can Import proposals to projects + +image:components/budgets/import_proposals.png[Import proposals to projects] + +===== Export all + +Allows to export the projects for this budget in different formats. + +* Projects as CSV +* Projects as JSON +* Projects as Excel + +===== New project form + +image:components/budgets/new_project.png[New project form for a Budget] + +.New project form +|=== +|Field |Type |Description + +|Title +|Required +|The title for this project. + +|Description +|Required +|A description of what this project is about. + +|Budget amount +|Required +|What's the budget amount for this project. How much money will it cost to implement this project? + +|Category +|Optional +|Which Category has the project. Used for filtering in the budgets list. + +|Proposals +|Optional +|Choose related proposals for this project. Automatic assingned when importing proposals. + +|Add an image gallery +|Optional +|Add multiple images illustrating what this project is about, or where it will be implemented. + +|=== + +===== Actions + +.Actions +|=== +|Icon |Name |Definition + +|image:action_preview.png[Preview icon] +|Preview +|To see how it's shown in the frontend to participants. + +|image:action_edit.png[Edit icon] +|Edit +|Edit form for a project. It's the same form as "New project". + +|image:action_folder.png[Folders icon] +|Folders +|For classifying Attachments. + +|image:action_attachments.png[Attachments icon] +|Attachments +|Documents that are related to the project. + +|image:action_delete.png[Delete icon] +|Delete +|To delete this project. + +|=== + +== Results + +After the voting step has finished, then an administrator need to: + +. Change the Voting configuration for the Budget component to "Voting finished" +. Go to the Budgets and view the results +. On the projects that according to the normative have been selected, they will need to go to each project, edit it and +then check the "Selected for implementation". + +image:components/budgets/results_unselected.png[Unselected projects after voting] +image:components/budgets/results_select_project.png[Select a project for implementation] +image:components/budgets/results_selected.png[Selected projects after voting] +image:components/budgets/results_selected_frontend.png[Selected projects after voting in the frontend] + +We strongly recommend that after you have selected projects then you enable the xref:components/accountability.adoc[Accountability] +component so participants can see the grade of impementation. diff --git a/en/modules/admin/pages/components/debates.adoc b/docs/en/modules/admin/pages/components/debates.adoc similarity index 100% rename from en/modules/admin/pages/components/debates.adoc rename to docs/en/modules/admin/pages/components/debates.adoc diff --git a/docs/en/modules/admin/pages/components/meetings.adoc b/docs/en/modules/admin/pages/components/meetings.adoc new file mode 100644 index 0000000000..68b7ec471f --- /dev/null +++ b/docs/en/modules/admin/pages/components/meetings.adoc @@ -0,0 +1,411 @@ += Meetings + +Meetings are where people come together to discuss or inform about a given topic. All the meetings have a given location +(where the meeting will happen) and start and end date and time (when the meeting will happen). + +Some examples of where this component was used are: + +* https://www.decidim.barcelona/processes/PAM2020/f/3734/[Procés participatiu del Programa d'Actuació Municipal (PAM) 2020-2023] +in https://www.decidim.barcelona/[Decidim Barcelona] +* https://lejourdapres.parlement-ouvert.fr/processes/ateliers/f/14/[Les ateliers] in https://lejourdapres.parlement-ouvert.fr/[Le jour d'après] + +image:components/meetings/example01.png[Meetings list in Decidim Barcelona] +image:components/meetings/example02.png[Example meeting detail 01 in Decidim Barcelona] +image:components/meetings/example03.png[Example meeting detail 02 in Decidim Barcelona] +image:components/meetings/example04.png[Meetings list in Le jour d'après] + +== Types + +Regarding the *location*, depending on the configuration of the component, you can have: + +* In-person meetings: where you get together in a given location +* Online meetings: where you get together using an external service (for instance Jitsi Meet) + +Depending in the *author* (who's the person that's making the call): + +* Official meetings: meetings created by the organization (created by an administrator through the panel) +* Citizens meetings: meetings created by a User participant (a User or an UserGroup). + +== Add the component + +image:components/meetings/component.png[Add a meetings component] + +For adding the component, you need to: + +. Sign in as admin +. Go to admin panel +. In the main sidebar, click in the button for the space that you want to configure the component for. +For instance, it could be "Processes", "Assemblies", or "Conferences" +. Go to components +. Click on "Add component" button +. Click on "Meetings" +. Fill the xref:_add_component[Add component] form + +== Add component + +For configuring the meeting component you have these settings: + +.Add component - Meetings form +|=== +|Field |Type |Description + +|Name +|Required +|What is the name of this component. + +|Order position +|Optional +|Which order will it have in relation with the other components. Having a lower number means a higher priority. For instance, +if you have two components, "Proposals" with weight "10" and "Meetiings" with weight "0", then "Meetings" will be first when ordering. + +|=== + +.Add component - Meetings form: Global settings +|=== +|Field |Type |Description + +|Scopes enabled +|Optional +|Check if you want to have Scopes filtering in this process. + +|Scope +|Optional +|Which scope will be used for this component. + +|Announcement +|Optional +|A general announcement that'll be visible in the general meetings list. + +|Default registration terms +|Optional +|What'll be the registration terms of service that the participant would need to accept when registering. + +|Comments enabled +|Optional +|Whether you want to have comments in the meetings. + +|Comments max length +|Optional +|What is the characters limit that participants will have when making comments. Leave 0 for default value. + +|Registration code enabled +|Optional +|Check if you want to give registration codes to participants. Learn more in xref:components/meetings/registrations.adoc[Registrations]. + +|Actions permissions can be set for each meeting +|Optional +|If you want more granular permissions inside of every one of the Meetings. + +|Enable pads creation +|Optional +|If you want an Etherpad embedded in your meetings. Must have the xref:services:etherpad.adoc[Etherpad] integration configurated. + +|Participants can create meetings +|Optional +|Allows participants to create new meetings. See xref:_citizens_meetings[Citizens meetings] + +|Maps enabled +|Optional +|Wheter you want to show a map in the meetings in the meeting detail. + +|=== + +.Add component - Meetings form: Step settings +|=== +|Field |Type |Description + +|Announcement +|Optional +|A general announcement that'll be visible in the general meetings list. + +|Comments enabled +|Optional +|Whether you want to have comments in the meetings. + +|=== + +== Create a new meeting + +=== Citizens meetings + +Meetings can be created by participants if the setting is "Participants can create meetings" is checked. + +If a participant belongs to a xref:admin:participants/groups.adoc[user group], then they will be able to create meetings as that group also. + +image:components/meetings/new_meeting_form_frontend01.png[Create a new meeting form (frontend)] +image:components/meetings/new_meeting_form_frontend02.png[Create a new meeting form (frontend)] + +.Create meeting - Frontend form +|=== +|Field |Type |Description + +|Title +|Required +|What is the title for this meeting. + +|Description +|Required +|A description of what will be discussed in this meeting, like the topics. + +|Type +|Required +|Choose one option between "In person", "Online" or "Booth" + +|Address +|Required if meeting type is "In person" or "Booth" +|Address: used by Geocoder to find the location + +|Location +|Required +|Location: message directed to the users implying the spot to meet at + +|Location hints +|Optional +|Location hints: additional info. Example: the floor of the building + +|Online meeting URL +|Optional +|Which URL will the meeting be held. + +|Show embedded iframe for this URL +|Optional +|Whether or not embed the iframe for this videoconference URL. Only a few services allow embedding (i.e. YouTube, Twitch...) + +|Start Time +|Required +|Which day and time will the meeting start. Expected format: dd/mm/yyyy hh:ii + +|End Time +|Required +|Which day and time will the meeting start. Expected format: dd/mm/yyyy hh:ii + +|Category +|Optional +|Which Category has the meeting. Used for filtering in the meetings list. + +|Registration type +|Required +|Choose one option between "Registration disabled", "On this platform", or "On a different platform" + +|Available slots for this meeting +|Required if "Registration type" is "On this platform" +|How many slots are available for this meeting? Leave it to 0 if you have unlimited slots available + +|Registration terms +|Required if "Registration type" is "On this platform" +|What terms of services participants need to accept to register or join the meeting. Specific to "Citizens meetings" + +|Registration URL +|Required if "Registration type" is "On a different platform" +|Must be an URL. Link to go on the external service that you are using for registrations. + +|Create meeting as +|Required if the participant belongs to a group +|With which identity they want to create this meeting: as their user or as a group that they are reprensenting? + +|=== + +After creating the meeting, participants can also edit and xref:components/meetings/close.adoc[close] it. + +=== Official meetings + +image:components/meetings/new_meeting_form_backend.png[Create a new meeting form (backend)] + +.Create meeting - Backend form +|=== +|Field |Type |Description + +|Title +|Required +|What is the title for this meeting. + +|Description +|Required +|A description of what will be discussed in this meeting, like the topics. + +|Type +|Required +|Choose one option between "In person", "Online" or "Booth" + +|Address +|Required if meeting type is "In person" or "Booth" +|Address: used by Geocoder to find the location + +|Location +|Required +|Location: message directed to the users implying the spot to meet at + +|Location hints +|Optional +|Location hints: additional info. Example: the floor of the building + +|Online meeting URL +|Optional +|Which URL will the meeting be held. + +|Show embedded iframe for this URL +|Optional +|Whether or not embed the iframe for this videoconference URL. Only a few services allow embedding (i.e. YouTube, Twitch...) + +|Start Time +|Required +|Which day and time will the meeting start. Expected format: dd/mm/yyyy hh:ii + +|End Time +|Required +|Which day and time will the meeting start. Expected format: dd/mm/yyyy hh:ii + +|Category +|Optional +|Which Category has the meeting. Used for filtering in the meetings list. + +|Registration type +|Required +|Choose one option between "Registration disabled", "On this platform", or "On a different platform" + +|Available slots for this meeting +|Required if "Registration type" is "On this platform" +|How many slots are available for this meeting? Leave it to 0 if you have unlimited slots available + +|Registration URL +|Required if "Registration type" is "On a different platform" +|Must be an URL. Link to go on the external service that you are using for registrations. + +|Private meeting +|Optional +|Check if the meeting shouldn't be visible for all the visitors. Specific to "Official meetings". + +|Transparent +|Optional +|Related to "Private meeting", check if the meeting should be visible for all the visitors but they shouldn't be able to +participate in. Specific to "Official meetings". Specific to "Official meetings". + +|Customize registration email +|Optional +|Wheter you want to add a message in the registration email. Specific to "Official meetings". + +|Registration email custom content +|Required if "Customize registration email" is checked +|The content of the customized email. This text will appear in the middle of the registration confirmation email. Just +after the registration code. Specific to "Official meetings". + +|=== + +You can also define *Services* inside of a Meeting. These are metadata that allows to comunicate, for instance, if there's +a place for children, deaf assistance, translations, etc. You can have multiple services inside of a meeting. + +.Create meeting - Services +|=== +|Field |Type |Description + +|Title +|Required +|Title of the service. + +|Description +|Optional +|Description of the service. + +|=== + +== Actions + +=== Citizens meetings + +.Actions - Citizens meetings +|=== +|Icon |Name |Definition + +|image:action_preview.png[Preview icon] +|Preview +|To see how it's shown in the frontend to participants. + +|image:action_permissions.png[Permissions icon] +|Permissions +|To handle the permissions of this meeting, depending on the verification a participant has. Allows an admin to configure +who can *Join* a meeting. + +|=== + +=== Official meetings + +.Actions - Official meetings +|=== +|Icon |Name |Definition + +|image:action_publish.png[Publish icon] +|Publish +|To show publicly the meeting. + +|image:action_publish.png[Unpublish icon] +|Unpublish +|To not show publicly the meeting. + +|image:action_preview.png[Preview icon] +|Preview +|To see how it's shown in the frontend to participants. + +|image:action_duplicate.png[Duplicate icon] +|Duplicate +|Allows an admin to duplicate a meeting. + +|image:action_registrations.png[Registrations icon] +|xref:admin:components/meetings/registrations.adoc[Registrations] +|Allows to define who can register for attending to the meeting. + +|image:action_edit.png[Edit icon] +|Edit +|Edit form for a Meeting. It's the same form as "Create a new meeting". + +|image:action_agenda.png[Agenda icon] +|xref:admin:components/meetings/agenda.adoc[Agenda] +|To add the topics that will be discussed in the meeting. + +|image:action_list.png[Poll icon] +|xref:admin:components/meetings/polls.adoc[Polls] +|To manage the polls for this online meeting. + +|image:action_close.png[Close icon] +|xref:admin:components/meetings/close.adoc[Close] +|Allows and admin to Close the meeting and add extra information. + +|image:action_folder.png[Folders icon] +|Folders +|For classifying Attachments. + +|image:action_attachments.png[Attachments icon] +|Attachments +|Documents that are related to the meeting. + +|image:action_permissions.png[Permissions icon] +|Permissions +|To handle the permissions of this meeting, depending on the verification a participant has. Allows an admin to configure +who can *Join* a meeting. + +|image:action_delete.png[Delete icon] +|Delete +|To delete this meeting. + +|=== + +== Meetings features + +There are different kinds of features that can be enabled in meetings, such as: + +* xref:admin:components/meetings/registrations.adoc[Registrations]: for managing how particpant can register to attend the meeting. +* xref:admin:components/meetings/agenda.adoc[Agenda]: for seeing the topics that will be discussed in the meeting by minutes. +* xref:admin:components/meetings/polls.adoc[Polls]: for quick voting during an online meeting. +* xref:admin:components/meetings/close.adoc[Close]: for adding the final report on what was discussed in the meeting. + +== Online meetings + +Depending in the moment and configuration of the meeting, there could be different messages that will be shown to the participants. + +. If the "Online meeting URL" ins't set, there'll be a message that says "Link available soon" +image:components/meetings/online_meeting_available_soon.png[Online meeting available soon] +. If the "Online meeting URL" is set, and a few minutes before the meeting start, the mesage will say "The link to join +the meeting will be available a few minutes before it starts" +image:components/meetings/online_meeting_available_before.png[Online meeting available before it starts] +. If the "Online meeting URL" is set, and the start time of the meeting has arrived, then there'll be a message that says +that "the meeting is happening right now", with a link to join the meeting. +image:components/meetings/online_meeting_happening.png[Online meeting available before it starts] diff --git a/en/modules/admin/pages/components/meetings/agenda.adoc b/docs/en/modules/admin/pages/components/meetings/agenda.adoc similarity index 100% rename from en/modules/admin/pages/components/meetings/agenda.adoc rename to docs/en/modules/admin/pages/components/meetings/agenda.adoc diff --git a/en/modules/admin/pages/components/meetings/close.adoc b/docs/en/modules/admin/pages/components/meetings/close.adoc similarity index 100% rename from en/modules/admin/pages/components/meetings/close.adoc rename to docs/en/modules/admin/pages/components/meetings/close.adoc diff --git a/en/modules/admin/pages/components/meetings/polls.adoc b/docs/en/modules/admin/pages/components/meetings/polls.adoc similarity index 100% rename from en/modules/admin/pages/components/meetings/polls.adoc rename to docs/en/modules/admin/pages/components/meetings/polls.adoc diff --git a/docs/en/modules/admin/pages/components/meetings/registrations.adoc b/docs/en/modules/admin/pages/components/meetings/registrations.adoc new file mode 100644 index 0000000000..8c09e527ea --- /dev/null +++ b/docs/en/modules/admin/pages/components/meetings/registrations.adoc @@ -0,0 +1,105 @@ += Registrations + +Through registrations you can have capacity control of the attendance for a meeting. With this feature for instance you can +limit how many people could attend to the meeting, or you can know before the start of a meeting if you need to find a bigger +room to have the meeting. + +Enabling this feature will add a button so that participants can express their wish to go to the meeting. Depending in how +this feature is configured, then: + +. it's possible to define how many slots are available for controling the maximum capacity for this meeting +. a xref:_registration_form[custom registration form] for asking information to participants can be configured +. administrators can make xref:_invitations[invitations] to other participants or people that isn't registered in the platform +. it's possible to control attendance to the meeting through xref:_registration_code[registration codes] + +image:components/meetings/registrations/frontend_join_meeting.png[Join a meeting sidebar button] + +Once participants confirm joining a meeting they get asked if they're reprensenting a group and if they want to show publicly that they're attending. + +image:components/meetings/registrations/frontend_confirm.png[Join a meeting confirm modal] + +== Enable registrations for a meeting + +To enable registrations for a meeting: + +. Sign in as admin +. Go to admin panel +. In the main sidebar, click in the button for the space that you want to configure the component for. +For instance, it could be "Processes", "Assemblies", or "Conferences" +. Click on "Meetings" +. Search the meeting that you want to enable registrations for +. Click on the "Edit" button image:action_edit.png[Edit button] +. Change the "Registration type" field to "On this platform" +. Define how many slots are available in "Available slots for this meeting" +. Click on the "Update" button +. Click on the "Registrations" button image:action_registrations.png[Registrations button] +. Check the "Registrations enabled" checkbox +. Fill the form + +== Registrations settings form + +image:components/meetings/registrations/backend.png[Registrations settings in a meeting] + +.Registrations settings form +|=== +|Field |Type |Description + +|Registrations enabled +|Required +|Check to enable the registration for this meeting. + +|Registration form enabled +|Optional +|Check if you want to enable the registration form + +|Available slots for this meeting +|Required +|How many slots are available. Leave it to 0 if you have unlimited slots available. + +|Reserved slots +|Required +|How many slots are already reserved. Leave it to 0 if you don't have reserved slots + +|Registration terms +|Required +|What terms of services participants need to accept to register or join the meeting. + +|=== + +== Registration form + +This feature allows you to define a custom form like the xref:admin:components/surveys.adoc[Surveys] component to ask participants +for registration information. + +== Export all + +It's possible to export registrations in multiple formats: CSV, JSON and XLSX (Excel). + +The exported data will have these fields: + +* id: The registration id +* code: the xref:_registration_code[registration code] (if this feature is enabled) +* user/name: the name of the user +* user/email: the email of the user +* user/user_group: the group of the user if they have selected that's representing a group when registering + +== Invitations + +This feature allows you to invite attendes to a meeting. These could be already registered or non-existing participants +in the platform. + +image:components/meetings/registrations/invite_attendee.png[Invite attendee for registration in a meeting] + +== Registration code + +This feature allows you to check if the attendee is registered in the meeting. They need to provide their code, that gets +entered in this form and it's checked against the database. + +image:components/meetings/registrations/backend_w_registration_code.png[Registration code form in a meeting] + +image:components/meetings/registrations/frontend_confirmed_w_code.png[Registration code in a meeting frontend] + +It can receive two kind of responses: + +* Registration code successfully validated. +* This registration code is invalid. diff --git a/en/modules/admin/pages/components/pages.adoc b/docs/en/modules/admin/pages/components/pages.adoc similarity index 100% rename from en/modules/admin/pages/components/pages.adoc rename to docs/en/modules/admin/pages/components/pages.adoc diff --git a/docs/en/modules/admin/pages/components/proposals.adoc b/docs/en/modules/admin/pages/components/proposals.adoc new file mode 100644 index 0000000000..3000b0ba8a --- /dev/null +++ b/docs/en/modules/admin/pages/components/proposals.adoc @@ -0,0 +1,444 @@ += Proposals + +The Proposals component allows people to create, comment, endorse, and give support to proposals. + +From this starting point, there could be other configurations, such as: + +* how many proposals a participant can create +* how many supports as a maximum a participant can give to proposals +* how many supports as a minimum a participant must give to proposals so their supports are valid +* whether you want to enable that participants comment on proposals +* whether you want that proposals have images, attachments, WYSIWYG editor, geolocated address, scopes, etc. + +Some examples of where this component was used: + +* https://futureu.europa.eu/[Conference of the Future of Europe] +* https://meta.decidim.org/processes/roadmap/f/122/[Propose new functionalities for Decidim software] in https://meta.decidim.org/[Metadecidim] + +image:components/proposals/example01.png[Proposals list example in COFE] +image:components/proposals/example02.png[Proposals list example in Metadecidim] +image:components/proposals/example03.png[Proposal detail example in Metadecidim] + +To configure the Proposals component: + +. Sign in as admin +. Go to admin panel +. In the main sidebar, click in the button for the space that you want to configure the component for. +For instance, it could be "Processes", "Assemblies", or "Conferences" +. Go to components +. Click on "Add component" button +. Click on "Proposals" +. Fill the xref:_add_component[Add component] form + +== Add component + +image:components/proposals/component.png[Add component form] + +.Add component: Proposals form +|=== +|Field |Type |Description + +|Name +|Required +|What is the title of this component. For instance, "Proposals" + +|Order position +|Optional +|Which order will it have in relation to the other components. Having a lower number means a higher priority. +For instance, if you have two components, "Proposals" with weight "10" and "Meetings" with weight "0", then "Meetings" will be first when ordering. + +|=== + +.Add component: Proposals form - Global settings +|=== +|Field |Type |Description + +|Scopes enabled +|Optional +|Check if you want to have Scopes filtering in this component. + +|Scope +|Optional +|Which xref:admin:scopes.adoc[Scope] does this component belongs to. + +|Support limit per participant +|Optional +|Must be a number. How much supports a participant can give to proposals. + +|Minimum supports per user +|Optional +|Must be a number. How many supports does a participant needs to give to proposals so their supports are counted. If they don't +reach this number, their supports will not be taken in account. + +|Proposal limit per participant +|Optional +|Must be a number. How many proposals a participant can create. + +|Maximum proposal body length +|Optional +|Must be a number. How many characters a proposal body can have as maximum. + +|Proposal editing +|Required +|Choose one of these two options: "Allow editing of proposals within a specific timeframe" or "Allow editing proposals +for an infinite amount of time". In case it's within a specific timeframe, you must specify the time in "Proposals can be +edited by authors before this many minutes passes". Note that if you xref:components/proposals/answers.adoc[answer a proposal] +then it can't be edited anymore. + +|Proposals can be edited by authors before this many minutes passes +|Required if "Proposal editing" is "Allow editing of proposals within a specific timeframe" +|Must be a number. How many minutes after the creation of a proposal it can be edited by its author. + +|Threshold per proposal +|Optional +|Must be a number. How many supports a proposal needs to have to be considered as "validated". See <>. + +|Can accumulate supports beyond threshold +|Optional. Only applies if "Threshold per proposal" is configured. +|Whether the proposal can accumulate more supports than the threshold. + +|Proposal answering enabled +|Optional +|Whether administrators or valuators can answer proposals. + +|Official proposals enabled +|Optional +|Wheter administrators can create official proposals. + +|Comments enabled +|Optional +|Whether you want to have comments in the meetings. + +|Comments max length +|Optional +|What are the characters limit that participants will have when making comments. Leave 0 for the default value. + +|Geocoding enabled +|Optional +|Wheter participants can define a geocoding address for their proposals. Need to have xref:configure:geocoding[Geocoding] enabled. See <>. + +|Allow attachments +|Optional +|Check to allow participants to attach files to their proposals. + +|Allow card image +|Optional +|Check to show a card image when participants attach images to their proposals. See <>. + +|Actions permissions can be set for each proposal +|Optional +|Whether you want to be able to set permissions for every one of the proposals. Most of the time you will want to leave this option disabled. + +|Collaborative drafts enabled +|Optional +|Check to enable xref:components/proposals/collaborative_drafts.adoc[collaborative drafts] in proposals. + +|Participatory texts enabled +|Optional +|Check to enable xref:components/proposals/participatory_texts.adoc[participatory texts] in proposals. + +|Amendments enabled +|Optional +|Check to enable xref:components/proposals/amendments.adoc[amendments] in proposals. If active, configure Amendment features for each step. + +|Amendments Wizard help text +|Optional. Visible if the "Amendments enabled" option is checked. +|What's the help text visible when creating new amendments. + +|Announcement +|Optional +|A general announcement that'll be visible on the general proposals landing page. + +|New proposal body template +|Optional +|A pre-defined text that will be used when creating new proposals. Useful if you want to define a format that participants need to +follow when creating new proposals. + +|New proposal help text +|Optional +|What's the help text visible when creating new proposals. + +|Proposal wizard "Create" step help text +|Optional +|What's the help text visible when creating new proposals in the "Create" step. + +|Proposal wizard "Compare" step help text +|Optional +|What's the help text visible when creating new proposals in the "Compare" step. + +|Proposal wizard "Complete" step help text +|Optional +|What's the help text visible when creating new proposals in the "Complete" step. + +|Proposal wizard "Publish" step help text +|Optional +|What's the help text visible when creating new proposals in the "Publish" step. + +|=== + +[#setting-threshold] +*Example of threshold setting* + +image::components/proposals/setting_threshold01.png[Example of threshold setting] +image::components/proposals/setting_threshold02.png[Example of threshold setting] + +[#setting-card-image] +*Example of card image setting* + +image::components/proposals/setting_card_image.png[Example of card image setting] + +[#setting-geocoding] +*Example of geocoding setting* + +image::components/proposals/setting_geocoding.png[Example of geocoding setting] + +--- + +In the cases where the space that this component will be used has xref:admin:spaces/processes/phases.adoc[Phases], for instance, in +xref:admin:spaces/processes.adoc[Participatory Processes], then you can also define different behaviors per Step. + +.Add component: Proposals form - Step settings +|=== +|Field |Type |Description + +|Announcement +|Optional +|A general announcement that'll be visible on the general proposal landing page. + +|Endorsements enabled +|Optional +|Check if you want that participants show public support for these proposals. + +|Endorsements blocked +|Optional +|Whether participants will be able to see the endorsments but don't make any. + +|Supports enabled +|Optional +|Whether participants will be able to support proposals in this step. + +|Supports blocked +|Optional +|Whether participants will be able to support proposals in this step. + +|Supports hidden +|Optional +|If supports are enabled, checking this will hide the number of supports. + +|Comments blocked +|Optional +|Whether you want to enable comments for this phase. + +|Proposal creation enabled +|Optional +|Whether you want to enable proposal creation by participants for this phase. See xref:_new_proposal_form[New proposal form] + +|Proposal answering enabled +|Optional +|Whether you want to enable xref:components/proposals/answers.adoc[proposal answering]. + +|Publish proposal answers immediately +|Optional +|Wheter you want that the answers of proposals are published at the same time that you're xref:components/proposals/answers.adoc[answering] them or you want to control when to publish the answers. + +|Enable costs on proposal answers +|Optional +|Wheter you want to add economical costs to proposal answers. Useful for importing to xref:components/budgets.adoc[budgets]. + +|Amendment creation enabled +|Optional. Visible if "Amendments enabled" option is checked. +|Participant can amend proposals. See xref:components/proposals/amendments.adoc[Amendments]. + +|Amendment reaction enabled +|Optional. Visible if "Amendments enabled" option is checked. +|Proposal's authors will be able to accept or reject Participant's emendations. + +|Amendment promotion enabled +|Optional. Visible if "Amendments enabled" option is checked. +|Emandation authors will be able to promote to Proposal the rejected emendation. + +|Amendments visibility +|Required. Visible if "Amendments enabled" option is checked. +|Choose one of "Amendments are visible to all" or "Amendments are visible only to their authors" + +|Announcement +|Optional +|A general announcement that'll be visible on the general proposals landing page. + +|Hashtags added to all proposals +|Optional +|Automatically add a hashtag to every proposal. See <>. + +|Hashtags suggested to participants for new proposals +|Optional +|Suggest hashtags to participants for new proposals. Participants can select more than one hashtag. See <>. + +|=== + +[#setting-hashtags] +*Example of hashtags setting* + +image::components/proposals/setting_hashtag.png[Example of hashtag setting] + +== Permissions + +An administrator can choose which kind of xref:customize:authorizations.adoc[Authorizations] a participant need to have to make +certain actions in the proposals: + +* Endorse +* Support +* Create +* Withdraw +* Amend +* Comment +* Vote comment + +== Manage proposals + +image:components/proposals/manage_proposals.png[Manage proposals table] + +=== Export + +Allows exporting the proposals in different formats. + +* Proposals as CSV +* Proposals as JSON +* Proposals as Excel +* Comments as CSV +* Comments as JSON +* Comments as Excel + +=== Import + +* Import from another component +* Import from a file + +=== New proposal form + +==== Citizens proposals + +image:components/proposals/new_proposal_frontend.png[New proposal form] + +Proposals can be created by participants if the setting is "Proposal creation enabled" is checked for the active phase. + +If a participant belongs to a xref:admin:participants/groups.adoc[user group], then they will be able to create proposals as that group also. + +This form depends a lot in which settings you've enabled in this component. It can be really short (with only a Title and +Body by default) or very long (Title, Body, Hashtags, Address, Scope, Category, Image and Attachment). + +.New proposal form - default (by a participant) +|=== +|Field |Type |Description + +|Title +|Required +|What is the title of this proposal. For instance, "Bike lane in Main Street". Must have at least 15 characters as minimum +and 150 characters as maximum. Must start with a capital letter. + +|Body +|Optional +|What is the full description for this proposal. Must have at least 15 characters as minimum and 450 characters as maximum +by default but can be changed with the setting "Maximum proposal body length". + +|=== + +To detect duplicated proposals before publishing them, the proposal creation has a wizard form with multiple steps. This also +allows participants to save proposals drafts (unpublished) in case they need to fill too many fields. + +image:components/proposals/new_proposal_frontend_compare.png[New proposal form (by a participant) - Compare] + +As an example of what the form could look depending in the settings enabled, here's a screenshot of the form for a proposal +with the following settings: "Hashtags added to all proposals", "Hashtags suggested to participants for new proposals", +"Geocoding enabled", "Allow attachments", "Allow card image" and "Scopes enabled". + +image:components/proposals/new_proposal_frontend_complete.png[New proposal form (by a participant) - Complete] + +After completing these fields the participant can see a preview of their proposal before publishing. They can also modify +the proposal before publishing it. + +image:components/proposals/new_proposal_frontend_publish.png[New proposal form (by a participant) - Publish] + +image:components/proposals/new_proposal_frontend_published.png[Published proposal made by a participant] + +==== Official proposals + +Administrators can create official proposals. There will be a filter to show only official proposals in the proposals navigation page. + +image:components/proposals/new_proposal_backend01.png[New proposal form - default (official proposals)] + +.New proposal form - default (official proposals) +|=== +|Field |Type |Description + +|Title +|Required +|What is the title of this proposal. For instance, "Bike lane in Main Street". Must have at least 15 characters as minimum +and 150 characters as maximum. Must start with a capital letter. + +|Body +|Optional +|What is the full description of this proposal. Must have at least 15 characters as minimum and 450 characters as maximum +by default but can be changed with the setting "Maximum proposal body length". + +|This proposal comes from a meeting +|Optional +|Check if this proposal comes from a meeting. + +|Select a meeting +|Required if the "This proposal comes from a meeting" checkbox is checked +|Dropdown selector with all the meetings of this space. The author of the proposal will be the meeting. + +|=== + +As an example of what the form could look like depending on the settings enabled, here's a screenshot of the form for a proposal +with the following settings: "Hashtags added to all proposals", "Hashtags suggested to participants for new proposals", +"Geocoding enabled", "Allow attachments", "Allow card image" and "Scopes enabled". + +image:components/proposals/new_proposal_backend02.png[New proposal form - with multiple settings (official proposals)] + +==== Actions + +.Actions +|=== +|Icon |Name |Definition + +|image:action_edit.png[Edit icon] +|Edit +|Edit form for a proposal. It's the same form as "New proposal". Only visible when the proposal is an xref:_official_proposals["Official proposal"]. + +|image:action_answer.png[Answer proposal icon] +|xref:components/proposals/answers.adoc[Answer proposal] +|Allows you to answer a proposal. + +|image:action_permissions.png[Permissions icon] +|Permissions +| + +|image:action_preview.png[Preview icon] +|Preview +|To see how it's shown in the frontend to participants. + +|=== + +== Origin filter + +When navigating in the proposals listing, you can filter the proposals by origin. + +image:components/proposals/origin_filter.png[Proposals origin filter] + +There are five origin options: + +* All: select all the origins +* xref:_official_proposals[Official]: proposals created by administrators +* xref:_citizens_proposals[Citizens]: proposals created by participants +* Groups: proposals created by participants that belong to a user group and choose that option when creating the proposal +* Meetings: proposals created by administrators that have checked this option when creating the proposal + +== Proposal types and mechanisms + +There are different kind of proposals mechanisms that can be enabled in proposals, such as: + +* xref:admin:components/proposals/amendments.adoc[Amendments] +* xref:admin:components/proposals/answers.adoc[Answers] +* xref:admin:components/proposals/collaborative_drafts.adoc[Collaborative drafts] +* xref:admin:components/proposals/participatory_texts.adoc[Participatory texts] diff --git a/docs/en/modules/admin/pages/components/proposals/amendments.adoc b/docs/en/modules/admin/pages/components/proposals/amendments.adoc new file mode 100644 index 0000000000..27904d8f20 --- /dev/null +++ b/docs/en/modules/admin/pages/components/proposals/amendments.adoc @@ -0,0 +1,94 @@ += Amendments + +With the amendment feature, participants can propose changes to an already published proposal. + +It's useful to propose improvements or corrections, specially useful when redacting laws or normatives with xref:components/proposals/participatory_texts.adoc[Participatory Texts]. + +It has similarities with xref:components/proposals/collaborative_drafts.adoc[Collaborative Drafts], but the main difference +is that with amendments there is no need to trust the other authors intentions, as every change is reviewed and must be +approved by the author of the original proposal. + +image:components/proposals/amendments/amendment.png[Amendment of a proposal] + +To configure "Amendments" in proposals component: + +. Sign in as admin +. Go to admin panel +. In the main sidebar, click in the button for the space that you want to configure the component for. +For instance, it could be "Processes", "Assemblies", or "Conferences" +. Go to components +. Click on "Add component" button +. Click on "Proposals" +. Check the "Amendments enabled" setting +. Review and configure the following related settings: "Amendments Wizard help text" in global component settings and "Amendment creation enabled", "Amendment reaction enabled", "Amendment promotion enabled", and "Amendments visibility" in the step component settings. +. Save the component + +== How it works + +. A participant (Alice) has created a proposal +. Another participant (Bob) has seen the proposal and wants to make some changes +image:components/proposals/amendments/proposal_to_amend.png[] +. Bob click on the "Amend proposal" button +. Bob makes the changes in the "Create amendment draft" form +image:components/proposals/amendments/create_amendment_draft.png[] +. Bob checks if there is any similar amendment +. Bob edits the amendment draft +image:components/proposals/amendments/edit_amendment_draft.png[] +. Bob publishes the amendment draft +image:components/proposals/amendments/publish_amendment_draft.png[] +. Anyone can see the amendment draft +image:components/proposals/amendments/proposal_amendmed.png[] +image:components/proposals/amendments/amendment_list.png[] +image:components/proposals/amendments/amendment_view_side_by_side.png[] +. It's also possible to filter the amended proposals +image:components/proposals/amendments/amendment_list_filter.png[] +. Alice receives a notification that Bob has proposed an amendment to their original proposal +image:components/proposals/amendments/proposal_amendmed_notification.png[] +. Alice can see the amendment proposal +image:components/proposals/amendments/proposal_amendmed_to_review.png[] +. Alice can review the amendment proposal +image:components/proposals/amendments/proposal_amendmed_review.png[] +. Alice can approve the amendment proposal +image:components/proposals/amendments/proposal_amendmed_accepted.png[] +. Anyone can see the final proposal +image:components/proposals/amendments/proposal_amendmed_final.png[] +image:components/proposals/amendments/proposal_amendmed_amendment_list.png[] +. Anyone can see the versions history of the proposal +image:components/proposals/amendments/proposal_amendmed_versions.png[] + +== Relevant component settings + +.Proposals component form - Settings related to amendments +|=== +|Field |Type |Description + +|Amendments enabled +|Global +|Check to enable xref:components/proposals/amendments.adoc[amendments] in proposals. Other settings visible when enabling one. + +|Amendments Wizard help text +|Global +|What's the help text visible when creating new amendments. + +|Amendment creation enabled +|Step +|Participant can amend proposals. See xref:components/proposals/amendments.adoc[Amendments]. + +|Amendment reaction enabled +|Step +|Proposal's authors will be able to accept or reject Participant's emendations. + +|Amendment promotion enabled +|Step +|Emandation authors will be able to promote to Proposal the rejected emendation. + +|Amendments visibility +|Step +|Choose one of "Amendments are visible to all" or "Amendments are visible only to their authors" + +|=== + +== Promotion + +If a proposal is rejected and the "Amendment promotion enabled" is enabled, then the author that have made the rejected +amendment will be able to promote to a new proposal the rejected emendation. diff --git a/docs/en/modules/admin/pages/components/proposals/answers.adoc b/docs/en/modules/admin/pages/components/proposals/answers.adoc new file mode 100644 index 0000000000..51b79374b9 --- /dev/null +++ b/docs/en/modules/admin/pages/components/proposals/answers.adoc @@ -0,0 +1,113 @@ += Answers + +Proposals answers allow an administrator or valuator to review a proposal and give it an official response. + +image:components/proposals/proposal_answer_state_accepted.png[Proposal answer state: Accepted] + +For answering a proposal: + +. Sign in as admin or valuator +. Go to admin panel +. In the main sidebar, click in the button for the space that you want to configure the component for. +For instance, it could be "Processes", "Assemblies", or "Conferences" +. Click in the "Proposals" component +. Search the proposal you want to answer +. Click in the "Proposal answer" button image:action_answer.png[Answer proposal icon] +. Fill the form + +Alternatively, you could also: + +. Sign in as admin or valuator +. Navigate to the proposal you want to answer +. Click in the proposal answer button in the header image:components/proposals/answer_button_header.png[Answer proposal button] +. Fill the form + +== Answer page + +The answer page has three sections: + +=== Metadata + +It has general information about the proposal, like the link, who is the author, the proposal body, how many supports, endorsements, comments, and so on. + +=== Private notes + +Allows an administrator or valuator to leave notes that will not be visible to the public. + +=== Answer for proposal + +Allows an administrator to answer a proposal. + +image:components/proposals/proposal_answer.png[Proposal answer form] + +.Answer for proposal form +|=== +|Field |Type |Description + +|Internal state +|Required +|Choose one of the following: Accepted, Rejected, or Evaluating + +|Answer +|Optional +|An explanation on why the proposal was accepted, rejected, or evaluated + +|Cost +|Required if "Enable costs on proposal answers" is enabled in the proposals component settings and if it's accepted +|A number that indicates the cost of the proposal + +|Cost report +|Required if "Enable costs on proposal answers" is enabled in the proposals component settings and if it's accepted +|An explanation of the cost of the proposal + +|Execution period +|Required if "Enable costs on proposal answers" is enabled in the proposals component settings and if it's accepted +|How much time the proposal will take to be executed + +|=== + +== States + +If the proposals component setting "Publish proposal answers immediately" is checked, then the response of the proposal will be visible to the public immediately. + +The state is visible on the proposal page and card. + +image:components/proposals/proposal_answer_state_accepted_card.png[Proposal card answer state: Accepted] + +=== Evaluating + +image:components/proposals/proposal_answer_state_evaluating.png[Proposal answer state: Evaluating] + +=== Accepted + +After proposals have been accepted, they can be imported to the xref:components/budgets.adoc[budgets] component. + +image:components/proposals/proposal_answer_state_accepted.png[Proposal answer state: Accepted] + +=== Rejected + +image:components/proposals/proposal_answer_state_rejected.png[Proposal answer state: Rejected] + +== Publication + +You can control when the answers will be published by using the "Publish proposal answers immediately" checkbox. + +For enabling automatic publication, you'll need to check it. + +On the other hand, if you want to control when to publish the answer a proposal or multiple proposals, you'll need to follow these steps: + +. Sign in as admin or valuator +. Go to admin panel +. In the main sidebar, click in the button for the space that you want to configure the component for. +For instance, it could be "Processes", "Assemblies", or "Conferences" +. Click in the "Proposals" component +. Search the proposal you want to answer +. Click in the left checkbox of the proposal that you want to publish +. Click on the "Actions" button +. Click on the "Publish answers" option +image:components/proposals/proposal_answer_publish.png[Proposal answer publication: action] +. Click on "Publish" button +image:components/proposals/proposal_answer_publish_button.png[Proposal answer publication: publish button] + +NOTE: If you have unchecked the "Publish proposal answers immediately", answered the proposals and then checked the option again, the answers will not be +published automatically. You'll still need to publish the answers manually with the "Actions" button. diff --git a/docs/en/modules/admin/pages/components/proposals/collaborative_drafts.adoc b/docs/en/modules/admin/pages/components/proposals/collaborative_drafts.adoc new file mode 100644 index 0000000000..9026a00138 --- /dev/null +++ b/docs/en/modules/admin/pages/components/proposals/collaborative_drafts.adoc @@ -0,0 +1,70 @@ += Collaborative draft + +With the collaborative draft feature participants can make a proposal with multiple authors. + +It's useful to propose improvements or corrections. + +It has similarities with xref:components/proposals/amendments.adoc[Amendments] but the main difference is that with collaborative +drafts there is a need to trust other authors, as they can make any change to the original proposal without approval by the +original author, although the original author can decide if they promote the collaborative draft as a proposal. + +image:components/proposals/collaborative_drafts/collaborative_draft_request_access.png[Collaborative draft with request access button] + +To configure "Collaborative Drafts" in Proposals component: + +. Sign in as admin +. Go to admin panel +. In the main sidebar, click in the button for the space that you want to configure the component for. +For instance, it could be "Processes", "Assemblies", or "Conferences" +. Go to components +. Click on "Add component" button +. Click on "Proposals" +. Check the "Collaborative drafts enabled" setting +. Save the component + +== How it works + +. A participant (Alice) wants to create a collaborative draft. For that, they go to the proposals list page. +. Alice clicks in the "Access collaborative drafts" button +image:components/proposals/collaborative_drafts/proposals_list01.png[] +. Alice clicks in "New collaborative draft" button +image:components/proposals/collaborative_drafts/list_empty.png[] +. Alice fills the form and submits it +image:components/proposals/collaborative_drafts/create_form.png[] +. Once the collaborative draft is created, Alice can: edit, withdraw or publish the collaborative draft and approve or +reject collaboration requests +image:components/proposals/collaborative_drafts/collaborative_draft.png[] +. Another participant (Bob) has seen the collaborative draft and wants to make some changes +image:components/proposals/collaborative_drafts/collaborative_draft_request_access.png[] +. Bob clicks in the "Request access" button +image:components/proposals/collaborative_drafts/access_requested.png[] +. Alice receives the notification +image:components/proposals/collaborative_drafts/notification.png[] +. Alice goes to the collaborative draft. There they can accept or reject the collaboration request +image:components/proposals/collaborative_drafts/author_sidebar.png[] +. Alice approves the collaboration request. Once a request is approved it can't be rejected +. Now the collaborative draft has multiple authors +image:components/proposals/collaborative_drafts/multiple_authors.png[] +. Bob can edit the collaborative draft by clicking in the "Edit collaborative draft" button +image:components/proposals/collaborative_drafts/edit_collaborative_draft.png[] +image:components/proposals/collaborative_drafts/edit_form.png[] +. Once the collabrative draft is edited, then it's possible to see the old versions and its changes +image:components/proposals/collaborative_drafts/collaborative_draft_edited.png[] +image:components/proposals/collaborative_drafts/collaborative_draft_edited_versions.png[] +image:components/proposals/collaborative_drafts/collaborative_draft_edited_versions_show_v2_01.png[] +image:components/proposals/collaborative_drafts/collaborative_draft_edited_versions_show_v2_02.png[] +. Once Alice is satisfied with the collaborative draft, they can publish it by click in the "Publish" button +image:components/proposals/collaborative_drafts/publish_modal.png[] +. When it's published it becomes a proposal +image:components/proposals/collaborative_drafts/proposal.png[] +image:components/proposals/collaborative_drafts/proposals_list02.png[] +. And the collaborative draft is still visible although it can't be edited anymore +image:components/proposals/collaborative_drafts/collaborative_draft_published.png[] + +== Important aspects + +- A collaborative draft can has any number of authors. +- Only the original author can approve or reject the collaboration requests. +- Only the original author can publish the collaborative draft. +- Only the original author can withdraw the collaborative draft. +- Once a collaboration request is approved, it can't be rejected. diff --git a/en/modules/admin/pages/components/proposals/participatory_texts.adoc b/docs/en/modules/admin/pages/components/proposals/participatory_texts.adoc similarity index 100% rename from en/modules/admin/pages/components/proposals/participatory_texts.adoc rename to docs/en/modules/admin/pages/components/proposals/participatory_texts.adoc diff --git a/docs/en/modules/admin/pages/components/skeleton.adoc b/docs/en/modules/admin/pages/components/skeleton.adoc new file mode 100644 index 0000000000..3df58fde7b --- /dev/null +++ b/docs/en/modules/admin/pages/components/skeleton.adoc @@ -0,0 +1,167 @@ += Skeleton + +The Skeleton component allows people to XXX + +From this starting point, there could be other configurations, such as: + +* + +Some examples of where this component was used: + +* + +image:components/skeleton/example01.png[] +image:components/skeleton/example02.png[] +image:components/skeleton/example03.png[] +image:components/skeleton/example04.png[] + +To configure the Skeleton component: + +. Sign in as admin +. Go to admin panel +. In the main sidebar, click in the button for the space that you want to configure the component for. +For instance, it could be "Processes", "Assemblies" or "Conferences". +. Go to components +. Click on "Add component" button +. Click on "Skeleton" +. Fill the xref:_add_component[Add component] form + +== Add component + +image:components/skeleton/component.png[Add component form] + +.Add component: Skeleton form +|=== +|Field |Type |Description + +|Name +|Required +|What is the title of this component. For instance, "Skeletons" + +|Order position +|Optional +|Which order will it have in relation to the other skeletons. Having a lower number means a higher priority. +For instance, if you have two skeletons, "Skeleton a" with weight "10" and "Skeleton b" with weight "0", then "Skeleton b" will be first when ordering. + +|=== + +.Add component: Skeleton form - Global settings +|=== +|Field |Type |Description + +|Scopes enabled +|Optional +|Check if you want to have Scopes filtering in this component. + +|Scope +|Optional +|Which xref:admin:scopes.adoc[Scope] does this component belongs to. + +|Global scope +|Optional +| + +|Comments enabled +|Optional +|Whether you want to have comments in the meetings. + +|Comments max length +|Optional +|What is the characters limit that participants will have when making comments. Leave 0 for default value. + +|Actions permissions can be set for each skeleton +|Optional +|Whether you want to be able to set permissions for every one of the skeletons. Most of the time you will want to leave this option disabled. + +|Announcement +|Optional +|A general announcement that'll be visible on the general skeletons landing page. + +|=== + +In the cases where the space that this component will be used has xref:admin:spaces/processes/phases.adoc[Phases], for instance, in +xref:admin:spaces/processes.adoc[Participatory Processes], then you can also define different behaviors per Step. + +.Add component: Skeletons form - Step settings +|=== +|Field |Type |Description + +|Comments blocked +|Optional +|Whether you want to enable comments for this phase. + +|Announcement +|Optional +|A general announcement that'll be visible on the general skeleton landing page. + +|=== + +== Permissions + +An administrator can choose which kind of xref:customize:authorizations.adoc[Authorizations] a participant need to have to make +certain actions in the skeletons: + +* Create +* Endorse + +== Manage skeletons + +image:components/skeleton/manage_skeletons.png[Manage skeletons table] + +=== Export all + +Allows exporting the skeletons in different formats. + +* Skeletons as CSV +* Skeletons as JSON +* Skeletons as Excel +* Comments as CSV +* Comments as JSON +* Comments as Excel + +=== New skeleton form + +image:components/skeleton/new_skeleton.png[New skeleton form] + +.New skeleton form +|=== +|Field |Type |Description + +|Title +|Required +|What is the title of this skeleton. For instance, "District A" + +|Order position +|Optional +|Which order will it have in relation to the other skeletons. Having a lower number means a higher priority. +For instance, if you have two skeletons, "Skeleton a" with weight "10" and "Skeleton b" with weight "0", then "Skeleton b" will be first when ordering. + +|Description +|Optional +|What is the description of this skeleton. + +|=== + +==== Actions + +.Actions +|=== +|Icon |Name |Definition + +|image:action_preview.png[Preview icon] +|Preview +|To see how it's shown in the frontend to participants. + +|image:action_list.png[Manage projects icon] +|xref:_manage_projects[Manage projects] +|Allows you to manage the projects of a skeleton. + +|image:action_edit.png[Edit icon] +|Edit +|Edit form for a skeleton. It's the same form as "New skeleton". + +|image:action_delete.png[Delete icon] +|Delete +|To delete this skeleton. Only can be done when there aren't any projects. + +|=== diff --git a/docs/en/modules/admin/pages/components/sortitions.adoc b/docs/en/modules/admin/pages/components/sortitions.adoc new file mode 100644 index 0000000000..8be4473e8d --- /dev/null +++ b/docs/en/modules/admin/pages/components/sortitions.adoc @@ -0,0 +1,3 @@ += Sortitions + +The Sortitions component allows to select a number of proposals (e.g. candidates for a jury) with random, yet reproducible, procedures that guarantees non-biased and uniform distributions. diff --git a/en/modules/admin/pages/components/surveys.adoc b/docs/en/modules/admin/pages/components/surveys.adoc similarity index 100% rename from en/modules/admin/pages/components/surveys.adoc rename to docs/en/modules/admin/pages/components/surveys.adoc diff --git a/docs/en/modules/admin/pages/configuration.adoc b/docs/en/modules/admin/pages/configuration.adoc new file mode 100644 index 0000000000..eae6e6a6e3 --- /dev/null +++ b/docs/en/modules/admin/pages/configuration.adoc @@ -0,0 +1,53 @@ += Configuration + +In this page you can configure general settings from Decidim. + +image::admin_configuration.png[Decidim Admin Configuration] + +These are: + +* **Name**. Required. The name that the platform has. Visible at title, emails, etc. +* **Social**. Social handlers for different social networks. Visible at the footer in every page. This are: +** Twitter +** Facebook +** Instagram +** YouTube +** GitHub + +image::settings_configuration_social.png[Social networks configuration in Decidim] + +* **Default locale**. Required. +* **Time Zone**. Required. In which Time Zone is your organization. Used by things like calendars in Meetings. +* **Reference prefix**. Required. +* **Enable badges**. Whether you want or not that your participants have badges as a gamification mechanism, for instance for creating proposals or making comments. +* **Enable groups**. Whether you want or not that your participants have the possibility to create xref:participants/groups.adoc[User Groups]. Useful for example for associations or other collectives. +* **Enable rich text editor for participants**. Whether you want or not that your participants have the possibility to have a https://en.wikipedia.org/wiki/WYSIWYG[What You See Is What You Get (WYSIWYG) editor]. In some text areas, participants will be able to insert some HTML tags by using the rich text editor. +* **Send welcome notification**. Whether you want or not that your participants receive a notification when their first created their account. If enabled you can customize this notification. +** **Customize welcome notification**. +** **Welcome notification subject**. +** **Welcome notification body**. + +.Welcome notification +==== +Hi {\{name}}, thanks for joining {\{organization}} and welcome! + +If you want to get a quick idea of what you can do here, have a look at the Help section. +Once you have read it you will get your first badge. Here's a list of all the badges you can get as you participate in {\{organization}} + +Last but not least, join other people, share with them the experience of being engaged and participating in {\{organization}}. Make proposals, comments, debate, think about how to contribute to the common good, provide arguments to convince, listen and read to be convinced, express your ideas in a concrete and direct way, respond with patience and decision, defend your ideas and keep an open mind to collaborate and join other people's ideas. +==== + +image::settings_configuration_welcome.png[Welcome notification configuration in Decidim] + +* **Admin terms of use body**. Which message an Administrator user will see when accessing for the first time to the Administration panel. + +.Admin terms of use +==== +ADMIN TERMS OF USE + +We trust you have received the usual lecture from the local System Administrator. It usually boils down to these three things: + +* Respect the privacy of others. +* Think before you click. +* With great power comes great responsibility. +==== \ No newline at end of file diff --git a/docs/en/modules/admin/pages/features.adoc b/docs/en/modules/admin/pages/features.adoc new file mode 100644 index 0000000000..cd0f37f8a4 --- /dev/null +++ b/docs/en/modules/admin/pages/features.adoc @@ -0,0 +1,14 @@ += Features + +== Understand the basics + +Decidim is mainly organized around xref:admin:spaces.adoc[Spaces] and xref:admin:components.adoc[Components], but also offers +a lot of other features, to enable administrators to keep the participants engaged, to encourage the collaboration and the +participation on the platform, etc. + +For the readability of this documentation, they are divided in four different sections: + +. *xref:admin:features/search.adoc[Search engine]* +. *xref:admin:features/social_features.adoc[Social features]* +. *xref:admin:features/transparency_features.adoc[Transparency features]* +. *xref:admin:features/participants_actions.adoc[Participant account and actions]* diff --git a/docs/en/modules/admin/pages/features/participant_actions/group_profile.adoc b/docs/en/modules/admin/pages/features/participant_actions/group_profile.adoc new file mode 100644 index 0000000000..65578d00de --- /dev/null +++ b/docs/en/modules/admin/pages/features/participant_actions/group_profile.adoc @@ -0,0 +1,120 @@ += Groups profiles + +== Understand the basics + +As a participant, you might want to create a user group for you association, your company, your club, etc. +If an administrator verifies that you are entitled to represent this group, then you are able to participate in the instance in the +name of the group. + +NOTE: The group creation option is only available when groups are enabled for the organization. +You can ask an administrator of the platform or enable it from the xref:admin:configuration.adoc[Configuration] panel. + +== Create a group + +To create a group, click the "Create group" button in your public profile. + +image::features/my_profile/profile_create_group.png[Public profile group creation form] + +.Group creation form +[cols="20h,10h,~"] +|=== +|Field |Type |Description + +|Name +|Required +|Name of the organization, association, collective, group, etc. + +|Nickname +|Required +|Nickname of the organization, association, collective, group, etc. Do not use spaces nor accents. + +|Email +|Required +|Email of your organization, association, collective, group, etc. + +|Avatar +|Optional +|Avatar of your organization, that is displayed as a user avatar. Can be a logo, a picture, etc. + +|About +|Optional +|More information about your organization. This is publicly displayed on the user group profile page. + +|Document number +|Optional +|Fill this field if you want an administrator to verify the authenticity of your user group. + +|Phone +|Optional +|Fill this field if you want an administrator to be able to call someone in your organization to +verify the authenticity of the user group. + +|=== + +The user group is visible on the platform as soon as you create it. After its creation, you are redirected to the +user group profile page. + +User groups profiles pages display: + +* Members: Members of the groups, and who are the administrators. +* Badges: User group badges. +* Followers: Participants can also follow user groups. + +== Manage a group + +After a group has been created, it's possible to invite participants to become members of the group. +After a participant has accepted to be part of this group then they can become an admin. + +The actions that can be done by a user group administrator are: + +* Edit group profile +* Manage members +* Manage admins +* Invite participant +* Leave group + +image::features/my_profile/profile_manage_group.png[Public profile group drop down menu] + +=== Manage members + +On this page, you can accept or refuse participants requests to join your group, but also promote group members to administrators +or remove them from the group. + +image::features/my_profile/user_group_manage_participant.png[User groups: manage participants] + +=== Manage administrators + +On this page, you can only remove group administrator rights, but it won't remove the participant from the group. + +image::features/my_profile/user_group_manage_admins.png[User groups: manage admins] + +=== Invite participants + +To invite a participant, they need to have an account on the platform. +You can invite them with their nickname. + +image::features/my_profile/user_group_invite_participant.png[User groups: invite a participant] + +Then, they receive an invitation to join the group. They can accept it or not. + +=== Conversations + +You can also have Conversations as a group. + +image::features/my_profile/user_group_conversation.png[User group: conversations] + +== Participate as a group + +NOTE: For user group administrators to be able to participate as a group, an administrator of the instance must have verified it. + +The interest of having an administrator verify the user group is that you can then participate to the platform as a group, +and create debate, proposal, meetings, comments, etc. + +Administrators of the user group can for example comment in the name of their group. + +image::features/my_profile/user_group_make_comment.png[User group: make a comment] + +They can also choose to endorse a debate or a proposal in the name of their group and / or in their own name. + +image::features/my_profile/user_group_endorse.png[User group: endorse] + diff --git a/docs/en/modules/admin/pages/features/participant_actions/my_account.adoc b/docs/en/modules/admin/pages/features/participant_actions/my_account.adoc new file mode 100644 index 0000000000..88e6459eb9 --- /dev/null +++ b/docs/en/modules/admin/pages/features/participant_actions/my_account.adoc @@ -0,0 +1,174 @@ += My account + +== Understand the basics + +This feature allows participants to manage their account information, notifications preferences, authorizations, see their groups, etc. +This account page is only accessible to the participant, and some account information (such as the "About" field) are displayed in the +participant xref:admin:features/participant_actions/my_public_profile.adoc[public profile]. + +== How to find it? + +As a signed in participant, you can access your account configuration from two places: + +. Click in your avatar in the header, and then click in the "My account" menu item +. Click in the "Configuration" link in the footer, in the "My account" section + +image::features/my_account/account_dropdown.png[Frontend user menu dropdown] + +== Account settings + +There, you'll find different sections, allowing you to set different settings for your participant account. + +NOTE: You might not see the Authorizations and the Groups settings sections if you didn't enable them. + +=== Account + +In this section, participants can modify the information displayed in their xref:features/participant_actions/my_public_profile.adoc[public profile], modify their email address or +the language they want to use by default. + +image::features/my_account/account.png[My account form] + +.Participant settings - My account form +[cols="20h,10h,~"] +|=== +|Field |Type |Description + +|Avatar +|Optional +|Avatar or picture for the participant. Guidance for image: Preferably a landscape image that does not have any text. +The service crops the image. Maximum file size: 5 MB + +|Your name +|Required +|The name of the participant. + +|Nickname +|Required +|The nickname of the participant. + +|Your email +|Required +|The email of the participant, where they will receive notifications, password recovery, etc. If it's changed it needs to be +confirmed again. + +|Personal URL +|Optional +|Metadata that is displayed in the participant's profile. + +|About +|Optional +|Information about the participant displayed in the participant's profile. + +|Locale +|Required +|Language you want to use to browse and receive notifications in Decidim. + +|=== + +Participants can also change their password on this page, by clicking the "Change password" link. They need to choose a new password and enter +their current password to be able to change it. + +image::features/my_account/password_change.png[My account form - password change] + +=== Notifications settings + +In this section participants can choose which kind of notifications they want to receive and how often they want to receive them. + +image:features/my_account/notifications_settings.png[Notifications settings] + +The options available are: + +* I want to get notifications about +** My own activity, like when someone comments in my proposal or mentions me +** Everything I follow +* How often do you want to receive the notifications email? +** None, Real time, Daily, or Weekly +* Newsletters +** I want to receive newsletters +* Receive direct messages from anyone +** Allow anyone to send me a direct message, even if I don't follow them +* Administrators +** I want to receive an email every time something or someone is reported for moderation. +** I want to receive email reminders of closed meetings unpublished reports +* Push notifications +** Get push notifications to find out what is going on when you are not on the platform. You can turn them off anytime. + +=== Authorizations + +In this section participants are able to review their Authorizations and see some metadata, like when it was granted +or the status of the authorization. + +It depends on how it's configured for the organization, as depending in the context (like normative or laws) it could work +in different ways. For more information about Authorizations see xref:admin:participants/authorizations.adoc[authorizations +in admin manual] and xref:customize:authorizations.adoc[authorizations in customize guide]. + +image:features/my_account/authorizations.png[Authorizations] + +For any given authorization, you can see the following information: + +* If it's not finished, when the authorization process started +* If it has finished and has been granted, the date when it was granted +* If the authorization provides it, some metadata, such as the scope of the authorization + +=== Groups + +In this section participants can see which groups they belong to. + +NOTE: Want to create a new group? Go to the xref:admin:features/participant_actions/group_profile.adoc[Group profile] page. + +image::features/my_account/groups.png[Groups] + +Read more about groups configuration in the xref:admin:participants/groups.adoc[Groups in the administrator manual]. + +=== My interests + +In this section participants can choose which interests they have to receive more information about. + +By default what they see here is a list of all the xref:admin:scopes.adoc[Scopes] of the organization. Those selections +can be used by administrators when segmenting for the xref:admin:features/social_features/newsletters.adoc[Newsletters]. + +image::features/my_account/my_interests.png[My interests] + +=== My data + +In this section participants can request a file with all the data that they've provided in the platform. + +image::features/my_account/my_data.png[My data] + +To request the data: + +. Click in "Request data" +. Wait a couple of minutes so the files are generated. It could depend in how many proposals, comments, etc you've made +. Go to your email account and find the received email +. Click in "Download" +. Open it with a support zip software +. Enter the password that you've received in the email +. Unzip or extract the contents + +image:features/my_account/my_data_email.png[My data] + +For opening the zip file, the software that you use need to support encryption with the AES-256 algorithm. Depending on your operating system you have multiple alternatives. + +* Windows: https://www.7-zip.org/[7-Zip] +* Mac: https://www.keka.io[Keka] +* GNU/Linux: File Roller (available through your package manager) or https://peazip.github.io/[PeaZip] + +=== Delete my account + +In this section participants are able to delete their own accounts. Once it's done, they are unable to access the system anymore. +This action is irreversible. All the contributions on the platform become anonymous. + +image:features/my_account/delete_my_account.png[Delete my account form] + +To delete the account: + +. Optionally, you can provide a reason for the deletion +. Click in "Delete my account" +. Click in "Yes, I want to delete my account" + +image:features/my_account/delete_my_account_confirm.png[Confirm account deletion] + +After the account has been deleted, the contributions (such as comments, proposals, etc) are still visible but all the authorship information is anonymised, +and transferred to a "Deleted participant" author. + +image:features/my_account/delete_my_account_deleted.png[Deleted participant contribution] \ No newline at end of file diff --git a/docs/en/modules/admin/pages/features/participant_actions/my_public_profile.adoc b/docs/en/modules/admin/pages/features/participant_actions/my_public_profile.adoc new file mode 100644 index 0000000000..77ec0494a6 --- /dev/null +++ b/docs/en/modules/admin/pages/features/participant_actions/my_public_profile.adoc @@ -0,0 +1,81 @@ += My public profile + +== Understand the basics + +Every participant has a public profile that shows details about them and their activity on the instance. +This profile page is accessible to all participants and visitors. + +== How to find it? + +To see a participant public profile, click directly in their avatar or their user name in the participant tool-tip. + +image::features/my_profile/profile_pop_up.png[Participant tool-tip] + +As a signed in participant, you can access your public profile from two places: + +. Click in your avatar in the header, and then click in the "My public profile" menu item +. Click in the "My public profile" link in the footer, in the "My account" section + +image::features/my_profile/profile_dropdown.png[Frontend user menu dropdown] + +== Profile tabs + +There, you'll find different tabs. + +NOTE: You might not see the Badges and the Groups tab if you didn't enable them in the xref:admin:configuration.adoc[Configuration] panel. + +=== Activity + +This tab displays all the activity of the participant, starting with the most recent content. + +image::features/my_profile/profile_activity.png[Public profile activity tab] + +=== Badges + +The public profile's badges shows which badges the participant has accumulated and what their current level is for each badge. + +More information about badges is available on the xref:admin:features/social_features/badges.adoc[Badges feature page]. + +image::features/my_profile/profile_badges.png[Public profile badges tab] + +=== Follows + +The follows section contains a list of participants and groups the participant is currently following. +By following another participant or a group on the platform, the participant receives notifications about the activity +done by those participants or groups on the platform. Some participants may also require that they need to be following +a participant before they can exchange private messages with each other. + +image::features/my_profile/profile_follows.png[Public profile follows tab] + +=== Followers + +The followers section contains a list of participants and groups that are following the participant. + +image::features/my_profile/profile_followers.png[Public profile followers tab] + +=== Groups + +The groups section contains all the groups that the user belongs to. More information about the groups feature is +available at the xref:admin:features/participant_actions/groups.adoc[User groups page]. + +image::features/my_profile/profile_groups.png[Public profile groups tab] + +== Actions available + +=== When on another participant profile + +Logged in participants can perform two actions from another participant public profile page: + +. Send them a message +. Follow them +. Report them + +=== When on your own profile + +Logged in participants can perform two actions from their public profile page: + +. Edit their profile: When clicking this button, they're redirected to their xref:admin:features/participant_actions/my_account.adoc[account]. +. Create a group: When clicking this button, they're redirected to the xref:admin:features/participant_actions/group_profile.adoc[group creation form]. + +NOTE: The group creation option is only available when groups are enabled for the organization. +You can do it from the xref:admin:configuration.adoc[Configuration] panel. diff --git a/docs/en/modules/admin/pages/features/participant_actions/notifications.adoc b/docs/en/modules/admin/pages/features/participant_actions/notifications.adoc new file mode 100644 index 0000000000..fdd726618e --- /dev/null +++ b/docs/en/modules/admin/pages/features/participant_actions/notifications.adoc @@ -0,0 +1,137 @@ += Notifications + +== Understand the basics + +Notifications allow participants to keep up to date with the platform latest news, with the spaces, the contents and the participants they follow, etc. +Most of the actions in the platform generate notifications. + +Participants can manage their notifications preferences in their xref:admin:features/participant_actions/my_account.adoc[account]. + +== The notification page + +As a signed in participant, you can access your notifications from two places: + +. Click in your avatar in the header, and then click in the "Notifications" menu item +. Click in the "Notifications" link in the footer, in the "My account" section + +image::features/notifications/notifications_dropdown.png[Frontend user menu dropdown] + +If there are notifications, the participant sees a small badge next to their avatar, and in the dropdown menu. + +image:features/notifications/notifications.png[Example of notifications page when there are notifications] + +When there are no notifications, or the participant marked all the notifications as read, a message is displayed. + +image:features/notifications/no_notifications_yet.png[Example of notifications page when there aren't notifications] + +== Notifications list + +Below is an exhaustive list of actions that trigger notifications to participants. Participants are divided into three categories: affected users, followers, and administrators. + +NOTE: Affected users depend on the notification context. For instance, it could be the author of +moderated content, a user that earns a badge, a user that has been mentioned, etc. + +[cols="7,2,1,1,1"] +|============================================================================================================================================================================ +| Action | Feature | Affected user | Follower | Administrator + +| A new attachment has been created | Admin | ❌ | ✅ | ❌ +| An administrator requested an export | Admin | ❌ | ❌ | ✅ +| A component has been published in a participatory space | Admin | ❌ | ✅ | ❌ +| A participant has tried to verify themselves with the data of another participant | Verifications | ❌ | ❌ | ✅ +| An administrator moderated a resource because it has been reported | Moderation | ✅ | ❌ | ❌ +| A resource has been reported | Moderation | ❌ | ❌ | ✅ +| A user confirms the registration (if welcome notification is enabled) | User | ✅ | ❌ | ❌ +| A user earned a badge (if badges are enabled) | User | ✅ | ❌ | ❌ +| A user has reached a new badge level (if badges are enabled) | User | ✅ | ❌ | ❌ +| A user has been officialized | User | ❌ | ❌ | ✅ +| A user asked their data export | User | ✅ | ❌ | ❌ +| A user I follow endorsed a resource | User | ❌ | ✅ | ❌ +| A public profile has been updated | User | ❌ | ✅ | ❌ +| A new user group has been created | User groupsfootnote:user-group[If user groups are enabled] | ❌ | ❌ | ✅ +| A user group has updated its profile | User groupsfootnote:user-group[] | ❌ | ❌ | ✅ +| A user has been invited to join a user group | User groupsfootnote:user-group[] | ✅ | ❌ | ❌ +| A user has been promoted as group administrator | User groupsfootnote:user-group[] | ✅ | ❌ | ❌ +| A user requested to join the user group | User groupsfootnote:user-group[] | ✅ | ❌ | ❌ +| A user request has been accepted to join the user group | User groupsfootnote:user-group[] | ✅ | ❌ | ❌ +| A user request to join the user group has been rejected | User groupsfootnote:user-group[] | ✅ | ❌ | ❌ +| The group administrator has been demoted | User groupsfootnote:user-group[] | ✅ | ❌ | ❌ +| The user has been removed from the group | User groupsfootnote:user-group[] | ✅ | ❌ | ❌ +| An administrator of the assembly has added you as one of its members | Assemblies | ✅ | ❌ | ❌ +| You have been assigned a role for the assembly | Assemblies | ✅ | ❌ | ❌ +| You have been assigned a role for the participatory process | Processes | ✅ | ❌ | ❌ +| The phases dates have been updated | Processes | ❌ | ✅ | ❌ +| A new phase has been activated | Processes | ❌ | ✅ | ❌ +| You have been assigned a role for the conference | Conferences | ✅ | ❌ | ❌ +| The registration to the conference has been confirmed | Conferences | ✅ | ❌ | ❌ +| The registration for the conference is open | Conferences | ❌ | ✅ | ❌ +| The conference occupied slots are over X% | Conferences | ❌ | ❌ | ✅ +| The conference is taking place in 2 days | Conferences | ❌ | ✅ | ❌ +| The conference has been updated | Conferences | ❌ | ✅ | ❌ +| The election is now active for the participatory space | Elections | ❌ | ✅ | ❌ +| You are added as a trustee for the election | Elections | ✅ | ❌ | ❌ +| An administrator has added you as trustee | Elections | ✅ | ❌ | ❌ +| Your vote was accepted | Elections | ✅ | ❌ | ❌ +| You have been assigned a role of the Polling Station | Elections | ✅ | ❌ | ❌ +| Here is your Access Code | Elections | ✅ | ❌ | ❌ +| A user I follow created an initiative | Initiatives | ❌ | ✅ | ❌ +| My initiative has been created | Initiatives | ✅ | ❌ | ❌ +| A user I follow endorsed an initiative | Initiatives | ❌ | ✅ | ❌ +| A user sent their initiative to technical validation | Initiatives | ❌ | ❌ | ✅ +| The initiative has changed its status | Initiatives | ✅ | ✅ | ❌ +| The signatures end date for the initiative have been extended | Initiatives | ❌ | ✅ | ❌ +| The request to be part of the promoter committee for the initiative has been accepted | Initiatives | ✅ | ❌ | ❌ +| The request to be part of the promoter committee for the initiative has been rejected | Initiatives | ✅ | ❌ | ❌ +| A user wants to join your initiative | Initiatives | ✅ | ❌ | ❌ +| The initiative has reached the signatures threshold | Initiatives | ❌ | ❌ | ✅ +| Your initiative has achieved the X% of signatures | Initiatives | ❌ | ✅ | ❌ +| The initiative has achieved the X% of signatures | Initiatives | ✅ | ❌ | ❌ +| The proposal has been included in a result | Accountability | ❌ | ✅ | ❌ +| The result progress has been updated | Accountability | ❌ | ✅ | ❌ +| A post has been published | Blogs | ❌ | ✅ | ❌ +| The budget is now active | Budgets | ❌ | ✅ | ❌ +| A resource has a comment | Comments | ❌ | ✅ | ❌ +| A user group has left a comment on a resource | Comments | ❌ | ✅ | ❌ +| A user has left a comment on a resource | Comments | ❌ | ✅ | ❌ +| A user has replied your comment | Comments | ✅ | ❌ | ❌ +| A group you belong to has been mentioned | Comments | ✅ | ❌ | ❌ +| You have been mentioned | Comments | ✅ | ❌ | ❌ +| Your comment in has been up-voted | Comments | ✅ | ❌ | ❌ +| Your comment in has been down-voted | Comments | ✅ | ❌ | ❌ +| A debate has been created | Debates | ❌ | ✅ | ❌ +| Debate creation is enabled for participants | Debates | ❌ | ✅ | ❌ +| Debate creation is no longer active | Debates | ❌ | ✅ | ❌ +| The debate was closed | Debates | ✅ | ✅ | ❌ +| A meeting has been created | Meetings | ❌ | ✅ | ❌ +| A meeting was closed | Meetings | ✅ | ✅ | ❌ +| A meeting was updated | Meetings | ❌ | ✅ | ❌ +| Your meeting's registration has been confirmed | Meetings | ✅ | ❌ | ❌ +| The allocated slots for the meeting are over X% | Meetings | ❌ | ❌ | ✅ +| The meeting has enabled registrations | Meetings | ❌ | ✅ | ❌ +| The registration code for the meeting has been validated. | Meetings | ✅ | ❌ | ❌ +| The meeting will start in less than 48 h | Meetings | ❌ | ✅ | ❌ +| A new proposal has been published | Proposals | ❌ | ✅ | ❌ +| Proposal creation is open | Proposals | ❌ | ✅ | ❌ +| Proposal supports are open | Proposals | ❌ | ✅ | ❌ +| Proposal endorsements are open | Proposals | ❌ | ✅ | ❌ +| Someone has left a note on the proposal | Proposals | ❌ | ❌ | ✅ +| A proposal is currently being evaluated | Proposals | ✅ | ✅ | ❌ +| A proposal has been rejected | Proposals | ✅ | ✅ | ❌ +| A proposal has been accepted | Proposals | ✅ | ✅ | ❌ +| An administrator has updated the scope of your proposal | Proposals | ✅ | ❌ | ❌ +| An administrator has updated the category of your proposal | Proposals | ✅ | ❌ | ❌ +| A proposal has been mentioned | Proposals | ✅ | ❌ | ❌ +| A user requested access as a contributor | Proposal drafts | ✅ | ❌ | ❌ +| You have been accepted to access as a contributor | Proposal drafts | ✅ | ❌ | ❌ +| You have been rejected to access as a contributor | Proposal drafts | ✅ | ❌ | ❌ +| A user has been rejected to access as a contributor | Proposal drafts | ✅ | ❌ | ❌ +| A user has been accepted to access as a contributor | Proposal drafts | ✅ | ❌ | ❌ +| A user withdrawn the collaborative draft | Proposal drafts | ✅ | ❌ | ❌ +| An amendment has been rejected | Amendmentsfootnote:amendments[If amendments are enabled] | ✅ | ✅ | ❌ +| An amendment has been accepted | Amendmentsfootnote:amendments[] | ✅ | ✅ | ❌ +| An amendment has been created | Amendmentsfootnote:amendments[] | ✅ | ✅ | ❌ +| An amendment has been promoted | Amendmentsfootnote:amendments[] | ✅ | ✅ | ❌ +| A sortition has been created | Sortitions | ❌ | ✅ | ❌ +| A survey has been opened | Surveys | ❌ | ✅ | ❌ +| A survey has been closed | Surveys | ❌ | ✅ | ❌ +|============================================================================================================================================================================ diff --git a/docs/en/modules/admin/pages/features/participants_actions.adoc b/docs/en/modules/admin/pages/features/participants_actions.adoc new file mode 100644 index 0000000000..357e311da5 --- /dev/null +++ b/docs/en/modules/admin/pages/features/participants_actions.adoc @@ -0,0 +1,13 @@ += Participant actions + +== Understand the basics + +This documentation section is about participants related features when they want to configure their account, display information on their profile, +create user groups, delete their account, or understand how the notifications work. + +Here, you'll find: + +. xref:admin:features/participant_actions/notifications.adoc[Notifications] +. xref:admin:features/participant_actions/my_account.adoc[My account] +. xref:admin:features/participant_actions/my_public_profile.adoc[My public profile] +. xref:admin:features/participant_actions/group_profile.adoc[Group profiles] diff --git a/docs/en/modules/admin/pages/features/search.adoc b/docs/en/modules/admin/pages/features/search.adoc new file mode 100644 index 0000000000..7c041d02d4 --- /dev/null +++ b/docs/en/modules/admin/pages/features/search.adoc @@ -0,0 +1,21 @@ += Search engine + +== Understand the basics + +*The search engine* allows participants to perform searches across all of the platform’s content that can be indexed, +both generally and specifically, by searching within a specific participatory process or inside its components +(proposals, results, etc.), through advanced searches. + +== How to find it? + +The search engine is accessible in the instance header, next to your platform logo. + +image::features/search/search_input.png[Search input in frontend navigation bar] + +In the search bar, you can enter a word or just do an empty search to access the search results page. + +image::features/search/search_page.png[Search results page example] + +The search engine searches for the entry in all the resources titles and descriptions. + +You can also filter the search by clicking the resources types in the left. diff --git a/docs/en/modules/admin/pages/features/social_features.adoc b/docs/en/modules/admin/pages/features/social_features.adoc new file mode 100644 index 0000000000..e140af23f0 --- /dev/null +++ b/docs/en/modules/admin/pages/features/social_features.adoc @@ -0,0 +1,17 @@ += Social features + +== Understand the basics + +This documentation section is about features related to the social interaction between participants on the platform. +Transparency is really important in Decidim, and is one of the main part of xref:understand:social-contract#_transparency_traceability_and_integrity.adoc[Decidim Social Contract]. + +Here, you'll find: + +. xref:admin:features/social_features/newsletters.adoc[Newsletters] +. xref:admin:features/social_features/badges.adoc[Badges] +. xref:admin:features/social_features/comments.adoc[Comments] +. xref:admin:features/social_features/conversations.adoc[Conversations] +. xref:admin:features/social_features/endorsements.adoc[Endorsements] +. xref:admin:features/social_features/follows.adoc[Follows] +. xref:admin:features/social_features/share.adoc[Share] +. xref:admin:features/social_features/hashtags.adoc[Hashtags] diff --git a/docs/en/modules/admin/pages/features/social_features/badges.adoc b/docs/en/modules/admin/pages/features/social_features/badges.adoc new file mode 100644 index 0000000000..119db0e71b --- /dev/null +++ b/docs/en/modules/admin/pages/features/social_features/badges.adoc @@ -0,0 +1,76 @@ += Badges + +== Understand the basics + +Badges are recognitions of the participant actions and progress on the platform. As participants start discovering, participating, +and interacting, they earn different badges. Here is the list of badges and some ways participants can earn them. + +It's a https://en.wikipedia.org/wiki/Gamification[gamification] mechanism to improve the engagement of the participants in a ludic way. + +The badges a participant has are visible in their public profile. + +image::features/badges/profile_badges.png[Example of badges in profile] + +When a participant earns a badge they receive a notification. + +image::features/badges/notification.png[Example of badges notification] + +== Badges description + +Badges have multiple levels, depending in the number of times they have made the action. For instance, for the followers badge, +the participants receive the first level badge when they have 1 follower, the second level at 15 followers, the third level at 30 followers, +the fourth level at 60 and the fifth level at 100. + +.Badges +|=== +|Image | Title | Description | How it's earned | Levels + +|image:features/badges/accepted_proposals_badge.png[Accepted proposals badge] +|Accepted proposals +|Granted when participants actively participate with new proposals and these are accepted. +|The participant needs to choose the participation space of their interest with submission for proposals enabled and try to +make proposals that can be carried out. This way they are more likely to be accepted. +|1, 5, 15, 30, 50 + +|image:features/badges/attended_meetings_badge.png[Attended meetings badge] +|Attended meetings +|Granted when participants attend several face-to-face meetings. +|The participant needs to register for the meetings they want to attend +|1, 3, 5, 10, 30 + +|image:features/badges/debates_badge.png[Debates badge] +|Debates +|Granted when participants actively participate in the different debates by leaving comments. +|The participant needs to take part in debates. +|1, 5, 10, 30, 50 + +|image:features/badges/followers_badge.png[Followers badge] +|Followers +|Granted when participant reach a certain number of followers. The platform is a social and political network, so +participants need to weave their web to communicate with other people in the platform. +|The participant needs to be active and follow other people. It encourages other people to follow them. +|1, 15, 30, 60, 100 + +|image:features/badges/published_initiatives_badge.png[Published initiatives badge] +|Published initiatives +|Granted when a participant launch new initiatives, partnering with others to carry them out. +|The participant needs to go to the participation space of Initiatives and follow the steps to create a new initiative. +|1, 5, 15, 30, 50 + +|image:features/badges/proposal_supports_badge.png[Proposal supports badge] +|Proposal supports +|Granted when participants support other people's proposals. +|The participant needs to browse and spend some time reading other people's proposals and give support to the proposals they like or find interesting. +|5, 15, 50, 100, 500 + +|image:features/badges/proposals_badge.png[Proposals badge] +|Proposals +|Granted when participants actively participate with new proposals. +|The participant needs to choose the participation space of their interest with submission for proposals enabled and create a new proposal. +|1, 5, 10, 30, 60 + +|=== + +There's also a general explanation page with a short description of every badge. + +image::features/badges/badges_page.png[Badges page with badges explanation] diff --git a/docs/en/modules/admin/pages/features/social_features/comments.adoc b/docs/en/modules/admin/pages/features/social_features/comments.adoc new file mode 100644 index 0000000000..67535f8d2c --- /dev/null +++ b/docs/en/modules/admin/pages/features/social_features/comments.adoc @@ -0,0 +1,136 @@ += Comments + +== Understand the basics + +Comments are public messages allowing participants to share information or opinions about a proposal, debate, meeting, initiative, etc. + +NOTE: Comments need to be enabled by administrators, otherwise participants are not able to comment. To learn +how to enable comments on a component, please refer to the component's article. + +image::features/comments/nested_comment.png[Comments example] + +== Create a comment + +. Go to the content that you want to comment +. Go to the bottom of the page +. Fill the "Add comment" field and leave your comment + +image::features/comments/form.png[Comments form] + +When commenting, participants can: + +|=== +|Type |Description |Syntax |Example + +|Mention +|Mention a participant or a user group. They'll receive a notification for the mention. +|@nickname +|@carmelia_hudson + +|Hashtag +|Hashtags are redirecting to the general xref:admin:features/search.adoc[search page] +|#example +|#sedep + +|Quote +|Hashtags are redirecting to the general xref:admin:features/search.adoc[search page] +|> Your quote here +|> the funding for this program could be better allocated to improving public transportation options + +|URL +|Once published, URL become clickable, and can be internal or external. If they refer to a content of the platform, the +link label takes the content title. +|https://domain.name/ +|https://en.wikipedia.org/wiki/Decidim + +|Emojis +|Participants can add emojis by clicking on the emoji icon at the bottom right of the comment field. +|No syntax +|😁 + +|Give their opinion +|Participants can say they are in favor, neutral, or against the content +|No syntax +|In favor + +|=== + +Below, you can find an example of a comment field with several of those elements. + +image::features/comments/rich_text_write.png[Comments with rich text (write)] + +Once published, this comment and its different elements are displayed like below. + +image::features/comments/rich_text_read.png[Comments with rich text (read)] + +When clicking on a hashtag in a comment or another content, participant is redirected to the global search. + +image::features/comments/hashtag_search.png[Hashtags in comments] + +NOTE: HTML injection added in comments are escaped and not shown. + +image::features/comments/xss_write.png[XSS in comments (write)] +image::features/comments/xss_read.png[XSS in comments (read)] + +== Actions + +Participants can interact with comments in different ways. + +* Everyone can sort them and show and hide replies thread. +* Participants can additionally reply to comments, up-vote or down-vote them, report them or get the link to the comment. +* Authors of comments can also edit and delete their own comments. + +They can access some actions directly on the comment, and others by clicking the three dots menu next to a comment. + +image::features/comments/actions.png[Comments actions] + +=== Sort + +Participants can sort comments by: +* Best rated: comments with the more up-votes appear first in the list +* Recent: most recent comments appear first. +* Older: older comments appear first. +* More discussed: comments with the more nested comments appear first. + +image::features/comments/order_by.png[Order comments] + +They can also hide replies, when they don't want to display a whole comment thread. + +=== Reply + +By clicking on the "Reply" button below a comment, participants can reply to other participants and have public discussions. +Comments can be nested until four levels. On the fourth level, the "Reply" button is not available anymore. + +image::features/comments/anidation_levels.png[Nested comments] + +=== Up-vote / down-vote + +Participants can support comments by clicking on the "Thumbs up" icon at the bottom right of each comment. +It allows them to participate and give their opinion, without necessary having to answer a comment. + +=== Report + +Please read the xref:admin:moderations/reported_content.adoc[Reported content] article to know more about reporting content. + +=== Get link + +By clicking on the "Get link" item, participants are redirected to the comment dedicated URL. +They can then share this link to others, and it lead them directly to the one comment. +A message is displayed to warn the visitor that they are seeing a single comment, with a link to see all the other comments. + +image::features/comments/single_comment.png[Edited comment] + +=== Edit + +Participants can edit their comments, and after they do, a "Edited" mention appears on their comment to indicate to other +participants that this content was edited. + +Comments don't have a version history of the changes made. + +image::features/comments/edited_comment.png[Edited comment] + +=== Delete + +Once a comment is deleted, it's no longer visible, and a message indicates the date when it was deleted. + +image::features/comments/deleted_comment.png[Deleted comment] diff --git a/docs/en/modules/admin/pages/features/social_features/conversations.adoc b/docs/en/modules/admin/pages/features/social_features/conversations.adoc new file mode 100644 index 0000000000..65332598ba --- /dev/null +++ b/docs/en/modules/admin/pages/features/social_features/conversations.adoc @@ -0,0 +1,59 @@ += Conversations + +== Understand the basics + +With conversations, participants can send private messages to another participant, a group of participants, or to user groups. +Only the participants who are in the conversation can see each the messages. + +NOTE: It's not possible to delete a conversation nor to edit a message in a conversation. + +== How to find it? + +As a signed in participant, you can access your conversations from two places: + +. Click in your avatar in the header, and then click in the "Conversations" menu item +. Click in the "Conversations" link in the footer, in the "My account" section + +image::features/conversations/conversations_dropdown.png[Frontend user menu dropdown] + +If there are notifications, the participant sees a small badge next to their avatar, and in the dropdown menu. + +== Start a conversation + +A participant can start a conversation with any participant or group registered on the platform. + +image::features/conversations/conversations.png[Conversations list] + +There are two ways to start a conversation. + +=== From a participant profile + +. Go to the profile of the participant with who you want to start a conversation +. Click the "Message" button +. Write your message + +image:features/conversations/profile.png[Participant profile] + +image:features/conversations/start_a_conversation_form.png[Start a conversation form] + +=== From the conversation page + +image::features/conversations/conversation.png[Example of a conversation] + +. Click in your avatar in the header +. Click in "Conversations" +. Click on the "New conversation" button +. Search the participants or group that you want to start a conversation with +. Write your message + +NOTE: You can start a conversation with several participants, with a limit of 9 participants. + +image::features/conversations/new_conversation_modal.png[New conversation modal] + +== Group conversations + +Just like with participants, it is possible to have conversations with groups. + +NOTE: To know more about user groups, read the xref:admin:features/participant_actions/group_profile.adoc[Group creation] article. + +image::features/conversations/group_conversations.png[Group conversations list] diff --git a/docs/en/modules/admin/pages/features/social_features/endorsements.adoc b/docs/en/modules/admin/pages/features/social_features/endorsements.adoc new file mode 100644 index 0000000000..7c46a19683 --- /dev/null +++ b/docs/en/modules/admin/pages/features/social_features/endorsements.adoc @@ -0,0 +1,26 @@ += Endorsements + +== Understand the basics + +Through endorsements, participants can publicly show that they want to support a particular content, like a proposal, a debate, etc. +Administrators can enable endorsements by step in a given participatory process, and they can also define permissions with authorizations. + +NOTE: Endorsements are also called "Likes" in the participant interface. + +image::features/endorsements/sidebar.png[Endorsement button in sidebar] + +== Endorse / like a content + +To endorse a content, click the "Like" button below the content. + +image::features/endorsements/list.png[List of endorsements] + +When a participant belongs to a verified group they can also endorse like that group by selecting the identity. + +image::features/endorsements/modal.png[Select identity modal] + +By default the endorsements list is collapsed. To see all the endorsers, you need too click in the "+ x" icon. + +image:features/endorsements/full_list.png[Full list of endorsements] + +Participants can also dislike the content if they change their mind. \ No newline at end of file diff --git a/docs/en/modules/admin/pages/features/social_features/follows.adoc b/docs/en/modules/admin/pages/features/social_features/follows.adoc new file mode 100644 index 0000000000..8c142c7a0e --- /dev/null +++ b/docs/en/modules/admin/pages/features/social_features/follows.adoc @@ -0,0 +1,41 @@ += Follows + +== Understand the basics + +Participants can follow contents in Decidim, such as participatory spaces, proposals, a specific meeting, other participants, user groups, etc. +Following something or someone means that when there are news related to this content, the participant receive xref:features/participant_actions/notifications.adoc[notifications]. + +Notifications are accessible in the notification page, but can also be sent by email. +You can control these notifications in the xref:features/participant_actions/my_account.adoc#_notifications_settings[settings of your account]. + +The activity that you're following is visible in your xref:features/participant_actions/my_public_profile.adoc[profile activity]. + +== Follow a content + +NOTE: By default, administrators follow all the new spaces created in the platform. + +To follow a content: + +. Navigate to whatever you want to follow. +. Click in the "Follow" button. +. See that the "Follow" button disappear and the "Stop following" button appear. + +image::features/follows/button_follow.png[Follow button] + +== Unfollow a content + +To unfollow a content: + +. Navigate to whatever you want to unfollow. +. Click in the "Stop following" button. +. You'll see the "Stop following" button disappear and the "Follow" button appear. + +image::features/follows/button_stop_following.png[Stop following button] + +== Follow a participant + +A participant can also follow participants. This is public and visible in the profile xref:features/participant_actions/my_public_profile.adoc[follows section]. + +To follow a participant, pass the cursor on their avatar, or click the "Follow" button in their public profile page. + +image::features/follows/user_tooltip_follow.png[Follow user] diff --git a/docs/en/modules/admin/pages/features/social_features/hashtags.adoc b/docs/en/modules/admin/pages/features/social_features/hashtags.adoc new file mode 100644 index 0000000000..36bb956d32 --- /dev/null +++ b/docs/en/modules/admin/pages/features/social_features/hashtags.adoc @@ -0,0 +1,18 @@ += Hashtags + +== Understand the basics + +Hashtags are a way to categorize content globally on the platform and make it more searchable through these categorizations. +It allows different related contents to be discoverable under the same topic. +Similar feature is often used in other social media platforms. + +Hashtags can be set for different records within the platform, such as participatory spaces. +They can also be generated for content created by the participants to allow easier discovery of the content. +Some components may also allow setting suggested hashtags or specific hashtags for all records submitted by the participants. + +== Use hashtags + +Participants can add hashtags in their comments, debates, proposals, etc. +When clicking on a hashtag in a comment or another content, the participant is redirected to the global search. + +image::features/comments/hashtag_search.png[Hashtags in comments] \ No newline at end of file diff --git a/docs/en/modules/admin/pages/features/social_features/newsletters.adoc b/docs/en/modules/admin/pages/features/social_features/newsletters.adoc new file mode 100644 index 0000000000..16ae94ac0a --- /dev/null +++ b/docs/en/modules/admin/pages/features/social_features/newsletters.adoc @@ -0,0 +1,188 @@ += Newsletters + +== Understand the basics + +Newsletters may be sent out to inform participants of the latest news on the platform: launch of a new consultation, warning +before a closing date for votes, announcement of a result, monitoring of projects in progress, etc. +The newsletter is sent to any user of the site who has ticked the "Receive an occasional newsletter with relevant information" +box when they created their account, or later in their xref:admin:features/participant_actions/my_account.adoc[account] settings. + +image::features/newsletters/newsletter_contact_permission.png[Contact permission in participant registration] + +image::features/newsletters/newsletter_participant_notifications_settings.png[Contact permission in participant account] + +Some examples of when you can and should sent a newsletter are: + +* When a new process could be interesting for all the citizens in a city, +for instance a Participatory Budgeting process. +* When there are the results published for a given process. +* When an assembly has a important topic to discuss. +* When there's a new voting planned. +* When there's a new conference published. +* Etc. + +== Configuration + +To access the Newsletters panel, go in the administration panel and click the "Newsletters" item in the administration navigation bar. + +image::features/newsletters/newsletter_menu.png[Newsletter administrator menu] + +There, you see the list of newsletters already sent from this instance. If it's a new instance, you shouldn't see any newsletter in the +list. + +image::features/newsletters/newsletter_list.png[Newsletter list] + +== Create a newsletter + +To start creating a newsletter, click the "New newsletter" button at the top right of the page. + +=== Select a template + +First, you are asked to select a newsletter template, depending on what you want to send. +Two templates are displayed, with a preview for each one to help you decide on the best format for the content you want to communicate. + +* Basic (only text): recommended for short updates +* Image, text and Call To Action button: recommended for more elaborated contents + +image::features/newsletters/newsletter_templates.png[Newsletter new templates selection] + +Click the "Use this template" button below the template you want to use. + +=== Write the newsletter + +Depending in which template you've chosen, you have to fill a form with different fields. + +NOTE: You can use "%\{name}" anywhere in the body or subject to be automatically replaced by the participant's name. + +image::features/newsletters/newsletter_new_basic.png[Newsletter new template basic form] + +.New Newsletter "basic (only text)" form +|=== +|Field |Type |Description + +|Subject +|Required +|Subject of the email. + +|Body +|Optional +|Body of the email. +|=== + +image::features/newsletters/newsletter_new_cta.png[Newsletter new template Image, text and CTA form] + +.New Newsletter "Image, text and Call To Action button" form +|=== +|Field |Type |Description + +|Subject +|Required +|Subject of the email. + +|Introduction +|Optional +|Introduction of the email, displayed before the CTA button. + +|Call To Action button text +|Optional +|The CTA button text. + +|Call To Action button URL +|Optional +|Where the CTA link redirects. + +|Body +|Optional +|Body of the email, displayed after the CTA button. + +|Main image +|Optional +|Guidance for image: Preferably a landscape image that does not have any text. The service crops the image. +Allowed file extensions: JPG JPEG PNG WEBP + +|=== + +Once you wrote the newsletter, click the "Save and preview" button. + +=== Preview the newsletter + +The preview page allows you to review the look and content of the newsletter before sending it. +Until you send the newsletter, you can edit it and review its preview anytime you want. + +image::features/newsletters/newsletter_preview_basic_example.png[Newsletter new template basic form preview] + +=== Send a test email + +If you want to review the newsletter directly in your mailbox, click the "Send me a test email" button at the top right of the page. +You receive the newsletter directly at the email address registered for your participant account. + +=== Select recipients to deliver + +If you want to only communicate about a given space or neighborhood, you can choose the which participants you're sending the newsletter to. +To do so, click the "Select recipients to deliver" button. + +NOTE: If you don't want to send your newsletter to a specific segment, select "Send to all users" + +There, you can choose between sending the newsletter to: + +* All confirmed users +* All confirmed users that have participated in any of the selected participatory spaces in the list +* All confirmed users that have followed any of the selected participatory spaces in the list +* All the participants that have selected an scope in their "My interests" settings in their account. + +NOTE: Even if a participant has a confirmed account and is following a space, the system don't send them a newsletter email if they +haven't accepted it in their xref:admin:features/participant_actions/my_account#_notifications_settings.adoc[notifications] settings. + +image::features/newsletters/newsletter_select_recipients.png[Newsletter select recipients] + +If you select the "Sent do participants" or "Send to followers" of a given space, +then you can choose which spaces are relevant. + +image::features/newsletters/newsletter_select_recipients_spaces.png[Newsletter select recipients spaces] + +=== Deliver the newsletter + +Finally if you click in the "Deliver newsletter" button, the newsletter is sent to all the selected recipients. +Before sending it, a pop-up appears to make sure you reviewed everything and are ready to send it. + +image::features/newsletters/newsletter_deliver_modal.png[Newsletter deliver modal] + +NOTE: Once a newsletter is sent it can't be undone nor edited. If you have multiple languages active, +be careful with reviewing all the languages well before sending. + +== Manage newsletters + +You can find all the newsletters on the newsletter page, with: + +* *Subject*: subject of the newsletter, redirects to the newsletter preview. +* *Created at*: date of the newsletter creation. +* *Sent at*: date of the newsletter sending. +* *Sent to*: the segment the newsletter was sent to. +* *Progress*: the number of participants to whom the newsletter was sent, upon the total number of recipients. + +=== Actions + +|=== +|Icon |Name |Definition |Condition + +|image:icons/action_edit.png[Edit newsletter] +|Edit +|To edit the newsletter. +|Newsletter not sent. + +|image:icons/action_share.png[Send test email] +|Send a test email +|To send a test email to the administrator email address. +|Always. + +|image:icons/action_preview.png[Preview newsletter] +|Preview +|To preview the newsletter +|Always. + +|image:icons/action_delete.png[Delete] +|Delete +|To delete the newsletter. +|Newsletter not sent. + +|=== diff --git a/docs/en/modules/admin/pages/features/social_features/share.adoc b/docs/en/modules/admin/pages/features/social_features/share.adoc new file mode 100644 index 0000000000..34e4eb4192 --- /dev/null +++ b/docs/en/modules/admin/pages/features/social_features/share.adoc @@ -0,0 +1,20 @@ += Share + +== Understand the basics + +Participants can share content on the platform through the share links available on the different contents pages. +The share links allow easier sharing to different social media services that can be configured for Decidim through the configuration files. + +NOTE: Check xref:customize:social_shares.adoc[Social share services] for more information. + +== Share a content + +To share a content, such as a proposal, go to the content page and click the "Share" link at the right of the description. + +image::features/share/share_button.png[Share button on resources] + +A modal appears, with different buttons to different social services providers. +By clicking on a button, the participant is redirected to the social network, and can quickly publish or send a message with a link to the content page. +Participants can also copy the link below the buttons, or click in the "Copy" link or icon. + +image::features/share/share_modal.png[Share modal] \ No newline at end of file diff --git a/docs/en/modules/admin/pages/features/transparency/fingerprint.adoc b/docs/en/modules/admin/pages/features/transparency/fingerprint.adoc new file mode 100644 index 0000000000..725c2ea71f --- /dev/null +++ b/docs/en/modules/admin/pages/features/transparency/fingerprint.adoc @@ -0,0 +1,34 @@ += Fingerprint + +== Understand the basics + +Although the platform should show the xref:admin:features/transparency/versions.adoc[Versions] for almost all of the contents, it'd still be possible +for a system administrator to manipulate the content by editing the database directly. + +As mitigation for this risk, the platform shows a fingerprint for some important fields, for instance, a proposal body and title. + +Its goal is to provide a way to give an informal "receipt" to a participant so they can detect tampering. A fingerprint is +a hashed representation of the content. It's useful to ensure the content hasn't been tampered with, as a single modification +would result in a totally different value. It's calculated using a *SHA256 hashing algorithm*. In order to replicate it +yourself, you can use a http://www.md5calc.com/sha256[MD5 calculator online] and copy-paste the source data. + +== Check fingerprint + +. Go to the content for which you want to verify the fingerprint +. Click in the "Check fingerprint" link at the bottom of the page +. Copy the source field value +. Go to a MD5 calculator online (External link) and copy-paste the source data +. Check that fingerprint are the same + +image:features/fingerprint/content.png[Check fingerprint link in page bottom] + +image::features/fingerprint/modal.png[Check fingerprint modal] + +image:features/fingerprint/md5calc.png[MD5calc.com screenshot] + +It's also possible to verify the fingerprint with other tools, such as the sha256sum command line tool. + +[source,bash] +---- +echo -n '{"body":{"en":"This proposal suggests creating a green corridor that connects the north and south districts of Chakar via a bicycle and pedestrian-only route. The corridor would pass through the city center and industrial areas, providing a safe, dedicated path for non-motorized transport, with shade trees, rest spots, and solar-powered lighting."},"title":{"en":"Green Corridor for Cyclists and Pedestrians"}}' | sha256sum +---- diff --git a/docs/en/modules/admin/pages/features/transparency/statistics.adoc b/docs/en/modules/admin/pages/features/transparency/statistics.adoc new file mode 100644 index 0000000000..cc533ec8cf --- /dev/null +++ b/docs/en/modules/admin/pages/features/transparency/statistics.adoc @@ -0,0 +1,38 @@ += Statistics + +== Understand the basics + +Decidim provides general statistics about the whole platform and different participatory spaces can also provide statistics related to that participatory space only. +These are generic numbers that indicate the website activity and may also encourage other people to join the platform as they see it being popular. + +== The types of data + +=== Statistics + +The homepage configuration allows administrators to enable a statistics content block to be displayed on the homepage. + +image::features/metrics/homepage_stats.png[Example of statistics content block] + +Administrators can also enable metrics in a participatory process or an assembly landing page. + +image::features/metrics/example_stats.png[Example of statistics] + +=== Metrics + +NOTE: Looking for how to enable this feature technically? Go to xref:develop:metrics.adoc[Metrics in Developers guide]. + +With metrics, participants can see the evolution in time of some resources, such as Proposals, Supports, Endorsements, Followers, Participants, Accepted proposals, Comments, etc. + +The homepage configuration allows administrators to enable a metrics content block to be displayed on the homepage. + +image::features/metrics/homepage.png[Example of metrics content block] + +Administrators can also enable metrics in a participatory process landing page. + +You can see a real world example of this in https://meta.decidim.org/processes/roadmap/all-metrics[Metadecidim Roadmap process]. + +image::features/metrics/example.png[Example of metrics] + +By clicking in the "Show all" button visitors can see other metrics and download this data in CSV format. + +image:features/metrics/page.png[Metrics page] \ No newline at end of file diff --git a/docs/en/modules/admin/pages/features/transparency/versions.adoc b/docs/en/modules/admin/pages/features/transparency/versions.adoc new file mode 100644 index 0000000000..2ef3c3b8d8 --- /dev/null +++ b/docs/en/modules/admin/pages/features/transparency/versions.adoc @@ -0,0 +1,25 @@ += Versions + +== Understand the basics + +The versions feature allows a visitor to see the evolution of the different versions of resources that can be edited, +like proposals or results. + +With versions it's possible to see who made changes to a content, when the change has been made and exactly what has changed. + +image::features/versions/side_by_side_escaped.png[Versions in resources] + +== How to find it? + +. Go to the content for which you want to review the different versions. +. Click in the "see other versions" link in the bottom of the page. +. From there you can change the visualisation of the version differences, and review all past versions. + +image::features/versions/sidebar.png[See other versions link in page bottom] + +image::features/versions/list.png[List of versions] + +It's possible to view the diffs of the versions in two formats: side by side or unified. In case that the contents are +in HTML then it's also possible to see the diff un-escaped and escaped, and see the full HTML code. + +image:features/versions/unified_escaped.png[Unified escaped view] diff --git a/docs/en/modules/admin/pages/features/transparency_features.adoc b/docs/en/modules/admin/pages/features/transparency_features.adoc new file mode 100644 index 0000000000..1dee963ad6 --- /dev/null +++ b/docs/en/modules/admin/pages/features/transparency_features.adoc @@ -0,0 +1,12 @@ += Transparency features + +== Understand the basics + +This documentation section is about features related to the transparency policy of Decidim. +Transparency is really important in Decidim, and is one of the main part of xref:understand:social-contract#_transparency_traceability_and_integrity.adoc[Decidim Social Contract]. + +Here, you'll find: + +. xref:admin:features/transparency/statistics.adoc[Statistics] +. xref:admin:features/transparency/versions.adoc[Versions] +. xref:admin:features/transparency/fingerprint.adoc[Fingerprint] diff --git a/docs/en/modules/admin/pages/first_steps.adoc b/docs/en/modules/admin/pages/first_steps.adoc new file mode 100644 index 0000000000..e72b558af2 --- /dev/null +++ b/docs/en/modules/admin/pages/first_steps.adoc @@ -0,0 +1,71 @@ += First steps in Decidim + +== Log in for the first time + +Once you or your developers have successfully installed Decidim, and created an organization in the System panel, you should +receive an email asking you to complete your account creation. +If you didn't receive an invitation email, ask the person in charge of the system administration to add you as an administrator. + +image::first_steps_invitation_email.png[Administrator invitation email] + +The invitation email redirects you to a form so you can finish setting up your account with your nickname, name, and password. + +image::first_steps_account_creation.png[Administrator invitation email] + +== Discover the administration dashboard + +=== Access the administration dashboard + +After logging in, you can see the platform as a participant, but it's not where you can configure and manage the platform. +To access the administration dashboard, or administration panel, you can click in three different items: + +. The "Admin dashboard" button at the left of the administrator header only administrators can see. +. The "Edit" button at the right of the administrator header. +. The "Admin dashboard" button in the drop-down list available when you click your account avatar. + +image::admin_dashboard_menu.png[Decidim Admin Dashboard in user menu] + +The "Edit" button redirects to the administration of the space you're seeing in the participant panel, whereas the other two buttons +redirect to the administration dashboard. + +=== Administrators terms of service + +For your first time accessing to the administration of Decidim, you are asked to review the administration terms of service. +Click on the "I agree with this terms" button to be able to start configuring the platform. + +image::admin_tos_pending.png[Decidim Admin Dashboard in user menu] + +Those terms of service can be useful for you if you start inviting other administrators to the platform, and you need them to be aware +of specific privacy rules, or anything relevant for them before they have access to the administration. + +Those terms of service can be configured in the xref:admin:configuration.adoc[Configuration panel]. + +=== Explanation of the dashboard + +Once you accepted the administrator terms of service, you can see the dashboard. +On a new instance, almost no data is displayed, but you can see how it looks like on an active instance: + +image::admin_dashboard.png[Decidim Admin Dashboard] + +You can see several sections on this page: + +. *Pending moderations*: highlights the number of pending moderations, reported users and contents combined. +. *Activity*: number of participants and admins that logged in the last month, last week and last day. +. *Metrics*: the graphics for the evolution of multiple components inside of Decidim: +. *Admin log*: last actions made by all the administrators in the platform. + +== Administration navigation + +To navigate in the administration panel, you can click in all of the items displayed in the vertical navigation bar on the left. + +*** xref:admin:spaces/processes.adoc[Participatory Processes] +*** xref:admin:spaces/assemblies.adoc[Assemblies] +*** xref:admin:spaces/initiatives.adoc[Initiatives] +*** xref:admin:spaces/conferences.adoc[Conferences] +** xref:admin:global_moderations.adoc[Global moderations] +** xref:admin:pages.adoc[Pages] +** xref:admin:participants.adoc[Participants] +** xref:admin:newsletters.adoc[Newsletters] +** Settings +** Admin activity log +** Templates \ No newline at end of file diff --git a/docs/en/modules/admin/pages/global_moderations.adoc b/docs/en/modules/admin/pages/global_moderations.adoc new file mode 100644 index 0000000000..70c37f9a14 --- /dev/null +++ b/docs/en/modules/admin/pages/global_moderations.adoc @@ -0,0 +1,57 @@ += Global moderations + +== Understand the basics + +The *Global moderations* function allows you to moderate different kind of contents and +ensure that the dialog in your platform is democratic and constructive. +It also allows managing participants who infringe the rules of the platform. + +NOTE: Looking for how to report participants or content? See xref:moderations/reported_users.adoc[Reported participants] and xref:moderations/reported_content.adoc[Reported content]. + +For instance, in the case of https://www.decidim.barcelona/[Decidim Barcelona], +the https://www.decidim.barcelona/pages/terms-and-conditions[Terms of Service] says: + +> It is not allowed to add any illegal or unauthorized content to the site, such +as information with the following features: +> +> * be it false or misleading; +> * to infringe any law of the City Council or any third party, such as copyright, +trademarks or other intellectual and industrial property rights or related rights; +> * attacking the privacy of a third party, such as publishing personal details +of participants, such as name, address, phone number, email, photos or any other +personal information; +> * containing viruses, Trojans, robots or other programs that may harm the website +or the City Hall systems, or the website or system of any third party, or which +intend to circumvent the technical measures designed for the proper functioning +of the platform; +> * to send spam to users or overload the system; +> * which has the character of message chain, pyramidal game or random game; +> * for commercial purposes, such as publishing job offers or ads; +> * that it is not in keeping with public decency; consequently, content must not +incite hatred, discriminate, threaten, provoke, have no sexual, violent, coarse or +offensive meaning or character; +> * to infringe the law or applicable regulation; +> * to campaign by promoting mass voting for other proposals not related to the +process and the framework for discussion, and +> * to create multiple users by pretending to be different people (astroturfing). + +== Configuration + +To access the Global moderations panel, go in the administration panel and click in the "Global moderations" item in +the administrator navigation bar. + +image::moderations/moderations_menu.png[Global moderations menu] + +The Global moderations panel allows to manage reported contents as well as reported participants. + +image:moderations/moderations_backend_list_content.png[Global moderations panel for content] + +== Examples + +=== Report content + +You can report and hide a comment containing private information, or a link to a commercial platform posted by a user. + +=== Report user + +You can report and block participants who are constantly violating the participation chart, or spamming and trolling the platform. \ No newline at end of file diff --git a/docs/en/modules/admin/pages/help_sections.adoc b/docs/en/modules/admin/pages/help_sections.adoc new file mode 100644 index 0000000000..9be6d5e3d7 --- /dev/null +++ b/docs/en/modules/admin/pages/help_sections.adoc @@ -0,0 +1,23 @@ += Help sections + +The first time a visitor goes to any Space page they will see an information box about what's this Space about. + +This is how the information box is shown to participants and visitors: + +image:help_sections_frontend.png[Help sections: frontend] + +They can hide this box by clicking in the close button [X]. This gets remembered by the application. They can open this box again by clicking in [Help: ?]. + +image:help_sections_frontend_hide.png[Help sections: hide] + +As this is something that depends on your given installation, an administrator can customize these *Help sections*, adapting them to your needs. + +image:help_sections_backend.png[Help sections: backend] + +== Disable + +You can disable these information boxes by leaving the contents all empty for every language: + +image:help_sections_disable_backend.png[Disable help section in admin] + +image:help_sections_disable_frontend.png[Disabled help section] \ No newline at end of file diff --git a/en/modules/admin/pages/homepage.adoc b/docs/en/modules/admin/pages/homepage.adoc similarity index 89% rename from en/modules/admin/pages/homepage.adoc rename to docs/en/modules/admin/pages/homepage.adoc index 2a1c738e5a..7dd3e7a32d 100644 --- a/en/modules/admin/pages/homepage.adoc +++ b/docs/en/modules/admin/pages/homepage.adoc @@ -34,8 +34,6 @@ These are the different content blocks enabled with the official Decidim modules === Hero image -NOTE: These area legacy settings that will be removed in the next version. https://github.com/decidim/decidim/pull/6284[See PR]. In this next version you're going to be able to change the button and path for this button from this same content block. - image::homepage_hero_image_back.png[Hero image in Homepage backend content block] image::homepage_hero_image_front.png[Hero image in Homepage frontend content block] @@ -58,9 +56,9 @@ image::homepage_footer_sub_hero_banner.png[Hero image in Homepage content block] image::homepage_how_to_participate.png[How to participate in Homepage content block] -=== Upcoming events +=== Upcoming meetings -image::homepage_upcoming_events.png[Upcoming events in Homepage content block] +image::homepage_upcoming_meetings.png[Upcoming meetings in Homepage content block] === Last activity @@ -100,4 +98,4 @@ image::homepage_organization_statistics.png[Organizations statistics in Homepage === Organization metrics -image::homepage_organization_metrics.png[Organzation metrics in Homepage content block] \ No newline at end of file +image::homepage_organization_metrics.png[Organzation metrics in Homepage content block] diff --git a/docs/en/modules/admin/pages/index.adoc b/docs/en/modules/admin/pages/index.adoc new file mode 100644 index 0000000000..1279a397ac --- /dev/null +++ b/docs/en/modules/admin/pages/index.adoc @@ -0,0 +1,55 @@ += Introduction + +== Understand the basics + +Deploying Decidim means taking account of all the activities that play a part in the configuration of the platform and the deployment +of the participatory processes. Acquiring knowledge in administering Decidim enables control over fundamental matters such as: + +* configuring a participatory process +* creating an assembly and managing its members +* opening an initiative space +* moderating the contents of the platform +* managing associated legal texts, such as the privacy policy +* managing access rights of administrators +* monitoring and verifying participants and their organizations + +None of these aspects are strictly technical but they do involve a series of political decisions over how you want your instance to work, +what messages and contents it contains, what the moderation policy should be, and overall how you want your participatory +platform to function. This is why it's essential to understand the socio-technical implications of the Decidim platform’s +administration and management. + +To understand how Decidim works, you first need to distinguish between xref:spaces.adoc[*spaces*] and xref:components.adoc[*components*]. + +* *Participatory spaces* are the channels that citizens can participate through: participatory processes, assemblies, initiatives and conferences. +* *Participatory components* are mechanisms that enable interaction between participants and the participatory spaces: meetings, pages, proposals, surveys, etc. + +Therefore, all participatory spaces can incorporate several components, such as meetings, proposals, surveys, or results. + +image:introduction.png[Spaces and components] + +So, administrators configure participatory spaces by defining and configuring the components they're going to need. +It's important to bear in mind that these participatory components and the various functions are repeated in the various spaces, +offering many opportunities when it comes to configuring the various spaces. +This simplifies learning as once a space is configured, it's then easier to configure others. + +This documentation section provides a full description of how to configure the Decidim platform for any kind of organization +and how to configure, manage and administer your various participatory processes. A description has been given in tutorial format, +to help with understanding administration tasks, following Decidim’s literal fields and enclosing screenshots to facilitate their +interpretation. + +Administering the Decidim platform is quite intuitive and don't require specific IT knowledge. +The administrators of a Decidim platform, in other words, those with the necessary authorization for managing the platform, +can configure the platform in a general way (images, information pages, etc.,) and manage the various participatory processes +(configuring, editing, analysing and concluding). + +== Get started + +* xref:admin:.adoc[Getting started] +* xref:admin:.adoc[Settings] +* xref:admin:pages.adoc[Pages and topics] +* xref:admin:participants.adoc[Participants] +* xref:admin:.adoc[Global moderation] +* xref:admin:spaces.adoc[Spaces] +* xref:admin:components.adoc[Components] +* xref:admin:.adoc[Features] +* xref:admin:.adoc[Templates] diff --git a/en/modules/admin/pages/initiatives_initializer.adoc b/docs/en/modules/admin/pages/initiatives_initializer.adoc similarity index 100% rename from en/modules/admin/pages/initiatives_initializer.adoc rename to docs/en/modules/admin/pages/initiatives_initializer.adoc diff --git a/docs/en/modules/admin/pages/moderations/reported_content.adoc b/docs/en/modules/admin/pages/moderations/reported_content.adoc new file mode 100644 index 0000000000..8e2ece358f --- /dev/null +++ b/docs/en/modules/admin/pages/moderations/reported_content.adoc @@ -0,0 +1,80 @@ += Reported content + +When writing the Terms and Conditions of your platform, or your participation chart, you want to make sure that the +participants respect the participation rules in the contents they're writing. +All participants are able to report comments, proposals, debates, etc. + +== Report a content + +Any logged in participant can report content, clicking on the "Report" button available next to the resource. + +image:moderations/moderations_reported_content_flag.png[Report flag in content] + +image:moderations/moderations_reported_comment_flag.png[Report flag in comment] + +Participants have to select a reason for the report, and can add extra information if needed. + +image:moderations/moderation_modal.png[Give reason for moderation modal] + +== Manage reported content + +After a participant has reported a content, it appears in two sections of the administration panel: + +* Global moderations panel +* Participatory space moderation panel + +image:moderations/moderations_backend_list_content.png[Global moderations panel for content] + +There you'll find first all the unprocessed reports if there's any, with: +* *Id*: unique identifier of the reported content. +* *Type*: the kind of content reported, for instance comment, proposal, debate, etc. +* *Participatory Space*: which space this content belongs to. +* *Reported content URL*: link for seeing the content reported and see the context of the complaint. +* *Reason*: why the content is reported. If the participant that made the report has given extra +information it's possible to see it by hovering it. +* *Reported at*: when it was originally reported. +* *Count*: number of reports by different users. +* *Actions*: you can *Expand*, *Unreport* or *Hide*. + +Once you moderate a content, it appears in the "Hidden" contents list, accessible at the top right of the page. + +=== Actions + +|=== +|Icon |Name |Definition |Condition + +|image:icons/action_expand.png[Expand icon] +|Expand +|To see the full details of the reported content and reports. +|Always available. + +|image:icons/action_unreport.png[Unreport icon] +|Unreport +|Allows an administrator or moderator to keep showing this content and cancel the report. +|Available when the content isn't yet hidden. + +|image:icons/action_hide.png[Hide icon] +|Hide +|Allows an administrator or moderator to hide this content and accept the report. +|Available when the content isn't yet hidden. + +|image:icons/action_hide.png[Unhide icon] +|Unhide +|Allows an administrator or moderator to Unhide this content (showing it publicly again). +|Available when the content is hidden. +|=== + +If a content has been mistakenly "Unreported" then you'll need to find it again in the public platform +and report it again so you can moderate it. + +=== Expand + +To review the details of a content, and the different reports made by participants, you can click the "Expand" button. +see all the metadata of a report, you can see it Expanded. + +image:moderations/moderations_backend_report_content.png[Global moderations panel for content] + +This view allow you to assess quickly if it's necessary to hide or not the content. +At the bottom of the report, you can also review the different reports made by other participants, and expand them as well. + +image:moderations/moderations_backend_report_details.png[Global moderations panel for content] \ No newline at end of file diff --git a/docs/en/modules/admin/pages/moderations/reported_users.adoc b/docs/en/modules/admin/pages/moderations/reported_users.adoc new file mode 100644 index 0000000000..9e4d046f9d --- /dev/null +++ b/docs/en/modules/admin/pages/moderations/reported_users.adoc @@ -0,0 +1,74 @@ += Reported participants + +There are cases where participants could go against the Terms of Service of the +platform, so it's useful to have the option for reporting and blocking participants. +You can block participants from the xref:participants/participants.adoc[participants +section in the administration panel] or through the "Reported participants" section. + +== Report a participant + +Any logged in participant can report another participant through the "Flag" icon in the participant +profile. + +image:moderations/moderations_reported_participant_flag.png[Report flag in participant profile] + +After a participant has clicked in this action they need to provide a reason why they're making this report: + +image:moderations/reported_participant_modal_user.png[Give reason for reporting a participant modal] + +When an administrator or a moderator report a participant, they have additional options that allow them to +directly block the user and hide all their contents. They have to give a justification for blocking this participant. + +image:moderations/reported_participant_modal_admin.png[Give reason for reporting a participant modal administrators] + +== Manage reported participants + +Reported participants are visible on the "Reported participants" section of the Global moderations panel. + +image:moderations/moderations_backend_list_users.png[Global moderations panel for users] + +You can find all the reported participants on the reported participant list in the administration panel, with: +* *Name*: name of the participant, with a link to their profile. +* *Nickname*: nickname of the participant, with a link to their profile. +* *Reason*: why the participant is reported. If the participant that made the report has given extra +information it's possible to see it by hovering it. +* *Reported at*: when they were originally reported. +* *Reports count*: number of reports by different users. +* *Actions*: you can *Unreport* or *Block* the participant. + +=== Actions + +|=== +|Icon |Name |Definition |Condition + +|image:icons/action_unreport.png[Unreport icon] +|Unreport +|To Unreport the participant and remove them from the list. +|Available when the participant isn't yet blocked. + +|image:icons/action_block.png[Block user] +|Block user +|To block the participant. +|Available when the participant isn't yet blocked. + +|image:icons/action_block.png[Unblock user] +|Unblock user +|To unblock the participant. +|Available for blocked participants. + +|=== + +=== Block a participant + +If a content has been mistakenly "Unreported" then you'll need to find it again in the public platform +and report it again so you can moderate it. + +Administrators need to provide a justification if they want to block a participant. + +image:moderations/moderations_participants_block_user_justification.png[Justify block user action] + +Once a blocked participant tries to log-in they see an error message: + +image:moderations/moderations_participants_block_user_alert.png[Message shown to blocked user] + +Blocked participants names change for "Blocked user." \ No newline at end of file diff --git a/docs/en/modules/admin/pages/pages.adoc b/docs/en/modules/admin/pages/pages.adoc new file mode 100644 index 0000000000..ab78f1721c --- /dev/null +++ b/docs/en/modules/admin/pages/pages.adoc @@ -0,0 +1,35 @@ += Pages and topics + +== Understand the basics + +The pages tab allow you to publish static pages including, for example, your platform's Terms and Conditions, accessibility statements, FAQs, etc. +You can organize these pages in different topics, acting as kind of folders. + +NOTE: Looking for how to create topics and pages? See xref:pages/pages.adoc[Pages] and xref:pages/topics.adoc[Topics]. + +These pages are available to all the participants through the **Help** section in the header and in the footer. + +== Configuration + +To access the Pages configuration panel, go in the administration panel and click the "Pages" item in the administration navigation bar. + +image::pages/pages_menu.png[Pages: Access pages panel] + +There, you are able to create, update, or delete xref:admin:pages/pages.adoc[Pages] and xref:admin:pages/topics.adoc[Topics]. +You can start by creating only pages if you want, as you are able to create topics and reorganize pages inside them at any moment. + +image::pages/pages_backend_list.png[Backend: list pages] + +== Examples + +=== A page without topic + +image::pages/pages_frontend_show.png[Frontend: show a page] + +=== A page with a topic + +image::pages/pages_frontend_show_topic.png[Frontend: show a page with topic] + +=== Help section with pages and topics + +image::pages/pages_frontend_list_topics.png[Frontend: list topics of pages] diff --git a/docs/en/modules/admin/pages/pages/pages.adoc b/docs/en/modules/admin/pages/pages/pages.adoc new file mode 100644 index 0000000000..25fa9425e8 --- /dev/null +++ b/docs/en/modules/admin/pages/pages/pages.adoc @@ -0,0 +1,82 @@ += Pages + +In this section, you can configure static Pages, to give general information to the participants of the platform. + +As an example, some of these pages could refer to: + +* What's this platform? Who's the organization? +* How to participate here? +* How to create and verify an account? +* What are the terms and conditions and the legal information about this platform? + +== Manage the pages + +You can manage the pages from this section of the administration panel: + +image::pages/pages_backend_list.png[Backend: list pages] + +As you can see, you can edit all the pages and re-organize them in different topics at any moment. + +There is only one page you can't delete. As the platform enables the Participants to register and save some of their personal data, it's important to have a page for the **Terms and Conditions**. +This is where you need to put your legal terms, for instance who owns the data collected, for how many times it's saved, etc. This should ideally be written and reviewed by a lawyer. + +== Create a new page + +To create a new page, you need to click the "Create page" button. + +image::pages/pages_backend_form.png[Backend: new page form] + +.New page form +|=== +|Field |Type |Description + +|Title +|Required +|Title of this page. For instance: "How to participate?" + +|URL Slug +|Required +|String used in the URL. Use partial paths, not full URLs here. Accepts letters, numbers, dashes and slashes, and must start with a letter. +For instance if the slug is "faq" and your domain is "https://example.org" your page is accessible at "https://example.org/pages/faq" + +|Content +|Required +|All the content of the page. + +|Topic +|Optional +|In which Topic it's stored. + +|Order position +|Optional +|The order of the page in relation with the other pages. Having a lower number means a higher priority. +For instance, if you have two pages, "Page a" with weight "10" and "Page b" with weight "0" then "Page b" is first when ordering. + +|=== + +== Edit a page + +You can edit the pages at any moment, by clicking on the pencil icon in the pages list. +All the content and configuration of the page are editable. + +image::pages/pages_backend_edit.png[Backend: edit a page] + +== The "terms and conditions" page + +This page is generated by default in every new organization. It can't be deleted, and it has a few specific details related with its legal nature: + +. It is shown to participants when they sign up, and they have to accept it to be able to participate ; +. If there are meaningful changes, administrators can decide that all users have to accept the new version at their next sign in ; +. The structure of this page can be more complex than the other ones, with summary and two-columns sections. + +image::pages/pages_backend_tos_change.png[Backend: ToS change] + +image::pages/pages_frontend_tos_change.png[Frontend: ToS change] + +If a participant refuses to accept the terms, then they have three options: + +. To review it again later. It signs them out automatically. +. To download their personal data. +. To delete their account. + +image::pages/pages_frontend_tos_reject.png[Frontend: ToS refusal] diff --git a/docs/en/modules/admin/pages/pages/topics.adoc b/docs/en/modules/admin/pages/pages/topics.adoc new file mode 100644 index 0000000000..29db325ca8 --- /dev/null +++ b/docs/en/modules/admin/pages/pages/topics.adoc @@ -0,0 +1,42 @@ += Topics + +In this section, you can configure Topics, to organize your static pages and provide more clarity to the participants. + +== Manage the topics + +To access the topics list, click the Topics tab at the top of the panel. +Here, you are able to edit, delete, and create topics for your static pages. + +image::pages/pages_backend_list_topics.png[Backend: list topics of pages] + +== Create a new topic + +To create a new topic, click the "Create topic" button. + +image::pages/pages_backend_topic_form.png[Backend: new topic form] + +.New topic form + +|=== +|Field |Type |Description + +|Title +|Required +|Title of this topic. For instance: "Help" + +|Description +|Optional +|What's this topic is about. + +|Order position +|Optional +|The order of the topic in relation with the other topics. Having a lower number means a higher priority. +For instance, if you have two topics, "Topic a" with weight "10" and "Topic b" with weight "0" then "Topic b" is first when ordering. + +|Show in the footer +|Optional +|Wether you want to show this topic in the "Help" section of the general footer (accessible in every page). + +|=== + +image::pages/pages_frontend_footer.png[Frontend: example of a page in the footer] diff --git a/docs/en/modules/admin/pages/participants.adoc b/docs/en/modules/admin/pages/participants.adoc new file mode 100644 index 0000000000..ced59c75b0 --- /dev/null +++ b/docs/en/modules/admin/pages/participants.adoc @@ -0,0 +1,41 @@ += Participants + +== Understand the basics + +The participants tab allow you to make certain tasks with participants, among them: + +* To manage access rights to the platform administration +* To contact participants +* To manage participants access to specific spaces +* To certify the identity of specific participants +* To certify the authenticity of user organizations or collectives + +== Configuration + +To access the Participants configuration panel, go in the administration panel and click the "Participants" item in the administration navigation bar. + +image::participants/participants_menu.png[Participants menu] + +There, you first see the list of administrators of the platform. + +image::participants/participants_sidebar_menu.png[Participants sidebar menu] + +In the secondary navigation panel, you can see all the participants configuration possibilities: + +* xref:admin:participants/admins.adoc[Admins] +* xref:admin:participants/groups.adoc[Groups] +* xref:admin:participants/participants.adoc[Participants] +* xref:admin:participants/impersonations.adoc[Impersonations] +** xref:admin:participants/verifications_conflicts.adoc[Verifications conflicts] +* xref:admin:participants/authorizations.adoc[Authorizations] +** xref:admin:participants/authorizations/identity_documents.adoc[Identity documents] +** xref:admin:participants/authorizations/code_postal_letter.adoc[Code by postal letter] +** xref:admin:participants/authorizations/census.adoc[Organization's census] + +Some of those items might not appear in this menu, because they aren't enabled. +To check how to enable them, go on the missing item documentation article. + +== Examples + +You want to add your colleagues so they can edit the platform. +You want to set specific flows for participants to be able to participate in a specific participatory space. diff --git a/docs/en/modules/admin/pages/participants/admins.adoc b/docs/en/modules/admin/pages/participants/admins.adoc new file mode 100644 index 0000000000..89d30a1f8d --- /dev/null +++ b/docs/en/modules/admin/pages/participants/admins.adoc @@ -0,0 +1,74 @@ += Administrators + +Administrators are the persons managing the organization, creating the processes, managing the platform as a whole +They can be of two types: + +* Administrators: have access to all the platform configuration. +* Participant managers: can only manage participants xref:admin:participants/impersonations.adoc[impersonations]. + +image:participants/admins.png[Admins list] + +== Invite an administrator + +To invite an administrator, click the "New admin" button at the top right of the page. +You can invite an already registered or a non registered participant. + +image:participants/admins_invite.png[Invite participant as administrator form] + +.New administrator form + +|=== +|Field |Type |Description + +|Name +|Required +|Name of the administrator. If they already have an account, it changes automatically for their username. + +|Email +|Required +|Email of the participant to invite. If they don't have an account related to this email, they should receive an invitation email to create an account. Otherwise, they won't be notified. + +|Role +|Required +|Administrator or Participant manager + +|=== + +If an administrator doesn't already have an account, but didn't register, you can also Resend the invitation. + +== Manage administrators + +You can find all the administrators on the administrators list in the administration panel, with: +* *Role*: type of administrator rights, can only be Administrator or Participant manager. +* *Name*: name of the participant. +* *Email*: email of the participant. +* *Invitation sent at*: date and time of the email invitation. +* *Invitation accepted at*: when they accepted the email invitation. +* *Last log in date*: date of the administrator last connection. +* *Creation date*: date of the participant account creation. + +You can filter and sort this list by clicking the "Filter" button and the columns headers. +You can also search for administrators by email, name, or nickname in the search bar. + +=== Actions + +|=== +|Icon |Name |Definition |Condition + +|image:icons/action_resend.png[Resend invitation icon] +|Resend invitation +|To resend an invitation email to the participant. +|Available when the participant didn't accept the invitation. + +|image:icons/action_delete.png[Delete icon] +|Delete +|To revoke the participant's administration access rights. +|Available for all administrators, except for the first one. + +|=== + +=== Revoke administrator permissions + +When an administrator doesn't need access anymore, you should revoke their rights by clicking the "Delete" button. +You need to confirm the rights deletion to completely remove their rights. +Revoking administrator permissions don't delete the participant account. \ No newline at end of file diff --git a/docs/en/modules/admin/pages/participants/authorizations.adoc b/docs/en/modules/admin/pages/participants/authorizations.adoc new file mode 100644 index 0000000000..eab3f00d5c --- /dev/null +++ b/docs/en/modules/admin/pages/participants/authorizations.adoc @@ -0,0 +1,44 @@ += Authorizations + +Authorizations allow to give specific participation rights to participants who have completed a verification process. +This verification process can be direct, have multiple steps, be online or in-person. + +For instance you can configure that only participants who have verified themselves by their identity documents can vote on +proposals in a specific participatory process. + +NOTE: Several authorizations are available by default, but you can also develop your own authorizations. + +== Enable / disable authorizations + +To enable an authorization, you need to have access to the xref:configure:system.adoc[System panel] or ask the instance implementer. +To understand more what are authorizations and how to configure them, please refer to the +xref:customize:authorizations.adoc[Authorizations section in the Customize Guide]. + +Participants can access, update, or delete their authorizations in their xref:admin:features/my_account/authorizations.adoc[account]. + +== Verification methods + +Some of the available authorizations by default are: + +* xref:admin:participants/authorizations/identity_documents.adoc[Identity documents] +* xref:admin:participants/authorizations/code_postal_letter.adoc[Code by postal letter] +* xref:admin:participants/authorizations/census.adoc[Organization's census] + +If any of these authorizations are not useful for your needs, talk with your implementer to see other alternatives. Learn +more about xref:customize:authorizations.adoc[Authorizations in the Customize Guide section]. + +== Authorizations revocation + +A default Decidim installation don't have verified participants. + +image::participants/authorizations_admin_default.png[Authorizations in a default installation] + +From the moment some participants get verified with an authorization, administrators can revoke all the authorizations at once. +Indeed, after some time, some of the verifications can be deprecated. +For instance, identity documents expire after some time, or participants can move from a city. +Then, an administrator can want to force participants to renew their verification information. + +image:participants/authorizations_admin_revocation.png[Authorizations revocation] + +It's possible to revoke all the authorizations with "Revoke all," or to only revoke authorizations created before a given date. +Another possibility is to revoke only the verifications for xref:admin:participants/impersonations.adoc[impersonated participants]. diff --git a/docs/en/modules/admin/pages/participants/authorizations/census.adoc b/docs/en/modules/admin/pages/participants/authorizations/census.adoc new file mode 100644 index 0000000000..cc2f27f868 --- /dev/null +++ b/docs/en/modules/admin/pages/participants/authorizations/census.adoc @@ -0,0 +1,34 @@ += Organization's census authorization + +The process is as follows: + +. Admins upload a CSV with the emails of the verified participants +. Participants go to their account and request to be verified +. Only participants with an email in that CSV file can get verified + +NOTE: This authorization is too basic and you need more features related to CSV census imports? +Check all the CSV or file based authorizations in the https://decidim.org/modules/[Modules page]. + +== 1. CSV upload + +In the administrator panel, you can upload a CSV file by clicking on "Organization's census" in the "Participants" section. + +image::participants/authorizations_organization_census.png[Organization's census in administrator panel] + +After the CSV is imported then the administrator can see how many participants were imported. They can also delete this +imported census. + +image::participants/authorizations_organization_census_imported.png[Imported CSV] + +== 2. Participant request + +By going to the authorization section in its profile, or by clicking on the action button if this permission is requested, +a participant can request to be verified. + +image::participants/authorizations_organization_census_account.png[Organization's census in participant's accounts] + +== 3. Participant verification + +After is verified, as with other verifications, they can see it in their account settings. + +image::participants/authorizations_organization_census_verified.png[Verified by organization's census] \ No newline at end of file diff --git a/docs/en/modules/admin/pages/participants/authorizations/code_postal_letter.adoc b/docs/en/modules/admin/pages/participants/authorizations/code_postal_letter.adoc new file mode 100644 index 0000000000..faacc51af5 --- /dev/null +++ b/docs/en/modules/admin/pages/participants/authorizations/code_postal_letter.adoc @@ -0,0 +1,59 @@ += Code by postal letter authorization + +This authorization allows a participant to request for a verification code to be sent to an address, to confirm that they +live or work in this place. They then need to fill the received code in the platform. + +NOTE: If you don't want to use this authorization, you should turn it off in the xref:admin:system.adoc[system panel]. + +The process is: + +. Participant request a verification code to be sent to an address. +. An administrator sends the letter to their address with the verification code. +. An administrator marks the letter as sent. +. Once you mark the letter as sent, the participant is able to introduce the code. +. If this code matches, then they get verified. + +== 1. Verification code request + +By going to the authorization section in its profile, or by clicking on the action button if this permission is requested, +a participant can see the form requesting their full address. + +image::participants/authorizations_code_postal_letter_request.png[Code by postal letter request by participant] + +If they try to edit it, they see this message: + +image::participants/authorizations_code_postal_letter_edit.png[Edit the postal letter request] + +This is because the letter could be in the process of being sent. If this needs to be corrected, then the participant needs +to contact a platform administrator. + +== 2. Administrator review + +In the administration panel, the administrator can review the request by going to the "Code by postal letter" in the "Participants" section. + +image::participants/authorizations_code_postal_letter_ongoing.png[Code by postal letter ongoing panel in administration] + +Here they can see the verification code and can send it to the participant by postal letter. After the code is sent they can mark it +as such with the icon image:icons/action_verify.png[Mark as sent]. It'll also show when the letter was sent. + +== 3. Participant validate the code + +After the participant has received the code, they can go to their account settings and click in the "Code by postal letter" +verification method. + +image::participants/authorizations_code_postal_letter_verify.png[Code by postal letter ongoing in the participant account] + +Then they can fill the form with the code they received. + +image::participants/authorizations_code_postal_letter_confirm.png[Code by postal letter confirmation form] + +== 4. Code match + +If the verification code matches, then the participant sees the message "Congratulations. You've been successfully verified." + +On the other hand, if the verification code doesn't match, then the participant see an error asking to double-check the code in +the letter. + +After a participant is verified, as with other verifications, they can see it in their account settings. + +image::participants/authorizations_code_postal_letter_verified.png[Verified by code by postal letter] diff --git a/docs/en/modules/admin/pages/participants/authorizations/identity_documents.adoc b/docs/en/modules/admin/pages/participants/authorizations/identity_documents.adoc new file mode 100644 index 0000000000..72df53914b --- /dev/null +++ b/docs/en/modules/admin/pages/participants/authorizations/identity_documents.adoc @@ -0,0 +1,145 @@ += Identity documents authorization + +This authorization allows a participant to upload its identity documents into the platform, and get their account verified. +These documents depend on the organization, they could be a driver's license, a passport, a national identity card, +a club membership card, etc. + +NOTE: If you don't want to collect any data, you should turn it off in the xref:admin:system.adoc[system panel]. + +These documents are reviewed by an administrator who can accept or reject them. It's possible to do this process +in two ways: + +* *Online*: the participant is asked to upload the documents, and the administrator reviews these documents. +* *Offline*: the participant is asked to fill in some data, and then they need to go to a physical place +to show their documents face to face. + +== Configuration + +Click the "Config" button to configure the authorization. + +image::participants/authorizations_id_document_configuration.png[ID document authorization configuration] + +.ID Documents authorization configuration +|=== +|Field |Type |Description + +|Available methods +|Required +|At least one method must be selected. Options: Online and/or Offline. + +|Instructions for offline verification +|Required (if offline is selected) +|Directions that participants need to follow to verify their documents when offline verification is selected. For instance, +do they need to go to a specific place to show their documents? Is this place open some days of the week? Is it open +for certain hours? + +|=== + +== Online verification + +The process is: + +. Participants fill in their document type and number and upload a copy of their document. +. An administrator fills in the information present in the uploaded image. +. The information should match whatever the user filled in. +. If the administrator can't see the information or they can't get it verified, they can reject the request and +the user will be able to fix it. + +=== 1. Participant authorization creation + +By going to the authorization section in its profile, or by clicking on the action button if this permission is requested, +a participant can see the form for uploading a copy of their document. They also need to fill in their document type and number. + +image::participants/authorizations_id_document_online.png[ID document authorization online form] + +NOTE: You can change the document types options by xref:customize:code.adoc[customizing or overriding the code]. + +=== 2. Administrator document review + +After this document is uploaded, an administrator can review it by going to the Identity documents section in the administration +panel. + +image::participants/authorizations_id_document_online_pending.png[ID document authorization pending online verification] + +After clicking on the verification id link or on the document, the administrator needs to review the image and fill in +the document number in the field. This number needs to match with the one provided by the participant. + +image:participants/authorizations_id_document_online_confirm.png[ID document authorization online confirmation form] + +=== 3. Administrator decision + +There are two actions an administrator can do: + +* Verify: the system checks if the document numbers entered by administrator and user are the same. +* Reject: the participant have to edit their authorization if they want to get verified. + +If the request is rejected then the participant can provide other pictures or document. + +image::participants/authorizations_id_document_online_rejected.png[ID document authorization rejected online verification] + +Once a participant is verified, their documents are deleted from the list. + +== Offline verification + +The process is: + +. Participants fill in their document type and number. +. Participants follow the instructions provided to them. For instance, if they need to go to a specific place in a +specific time to show their documents. +. An administrator go to the "Offline verification" panel and fills in the information present in the physical documents. +. The information should match whatever the user filled in. +. If the administrator can't see the information or they can't get it verified, they can reject the request and +the user is then able to fix it. + +For this authorization to work, an administrator need to first configure it in the administration panel with the instructions explaining +what the participant need to do to finish the verification process. + +image:participants/authorizations_id_document_configuration_offline.png[ID document authorization configuration: offline instructions] + +=== 1. Participant authorization creation + +By going to the authorization section in its profile, or by clicking on the action button if this permission is requested, +a participant can see the form for filling in their document type and number. + +image:participants/authorizations_id_document_offline_request.png[ID document authorization offline form] + +=== 2. Administrator document review + +In the administration panel, the administrator can review the request by clicking the "Offline verification" button. + +image::participants/authorizations_id_document_offline_button.png[ID document authorization offline button in administration] + +Then they need to fill some data provided by the participant and review the document physically provided. + +image::participants/authorizations_id_document_offline_confirm.png[ID document authorization offline confirmation form in administration] + +.ID Documents authorization offline form +|=== +|Field |Type |Description + +|Participant email +|Required +|Email of the registered participant + +|Type of the document +|Required +|Can be: ID or Passport + +|Document number +|Required +|Document number of the participant. For instance, "12345678Z" + +|=== + +=== 3. Administrator decision + +In the cases where the verifications don't match (meaning that the email or the document number provided by the +participant and the ones filled by the administrators aren't the same), then the participant needs to edit it within their +user account. + +== Both + +It's also possible to enable both of these verifications methods. In this case, the participant has to choose +which kind of verification they want to do. + +image::participants/authorizations_id_document_account_choose.png[Choose ID document verification kind] diff --git a/docs/en/modules/admin/pages/participants/groups.adoc b/docs/en/modules/admin/pages/participants/groups.adoc new file mode 100644 index 0000000000..360668a962 --- /dev/null +++ b/docs/en/modules/admin/pages/participants/groups.adoc @@ -0,0 +1,72 @@ += User groups + +User groups are entities created by participants to represent a structure, a club, an association, etc. +User groups can be managed by different administrators, and have several members. +If an administrator verifies a user group, then all the user group administrators can participate in the name of the group. + +image::participants/user_group_frontend_show.png[Frontend: show a user group] + +== Enable / disable user groups + +Administrators can enable or disable user groups in the xref:admin:configuration.adoc[Configuration] panel. + +When enabled, participants are able to create and manage groups from their profile. +To learn more about how participants can do this, go to the xref:admin:features/my_public_profile.adoc[public profile] article. + +== Manage user groups + +When a participant creates a user group, it adds a line in the user groups list in the administration panel, with: +* *Name*: name of the user group. +* *Nickame*: nickame of the user group. +* *Document number*: can be the identification number of the structure, like a company or association identification number. +* *Phone*: phone number of the structure or the administrator of the user group. +* *Participants count*: number of members of the user group. +* *Created at*: date of the user group creation. +* *State*: state of the verification, can only be pending, verified, or rejected. + +You can filter and sort this list by clicking the "Filter" button and the columns headers. +You can also search for user groups by email, name, or nickname in the search bar. + +image::participants/admin_user_group_verification.png[Admin panel: user group verifications] + +A user group can have three states: + +* Pending: waiting for an answer from an administrator +* Verified: an administrator verified the authenticity of this group +* Rejected: an administrator decided this group was not authentic or compliant + +=== Actions + +|=== +|Icon |Name |Definition |Condition + +|image:icons/action_verify.png[Verify icon] +|Verify +|To validate the verification of the user group. +|Available when the user group state is pending or rejected. + +|image:icons/action_delete.png[Reject icon] +|Reject +|To reject the verification request of the user group. +|Available when the user group state is pending or verified. + +|=== + +=== Verify a group + +To verify a group, an administrator should verify that the group exists and is legitimate to have an entity on the platform. +Administrator can call the group administrator on the phone number provided, or verify that the document number exists. + +After a group is verified, this is publicly visible in their nickname in the platform and there's a message in its profile: +"This group is publicly verified, its name has been verified to correspond with its real name." + +image::participants/user_group_verified.png[User group: verified icon] + +=== Verify by CSV + +If you want to verify multiple user groups at once, you can do so with the "Verify via CSV" button. + +image::participants/admin_user_group_verification_csv.png[Admin panel: user group verifications CSV] + +There, you can upload a CSV file, with a unique column without headers, containing the user groups emails you want to verify. +Only the groups that have confirmed their email and that have an email appearing in the CSV file will be verified. diff --git a/docs/en/modules/admin/pages/participants/impersonations.adoc b/docs/en/modules/admin/pages/participants/impersonations.adoc new file mode 100644 index 0000000000..098d8d2ad2 --- /dev/null +++ b/docs/en/modules/admin/pages/participants/impersonations.adoc @@ -0,0 +1,76 @@ += Participants impersonations + +Sometimes, people don't have the time to create an account, or don't have the knowledge or ability to use technological tools. +Impersonations allow administrators and participant managers to enable those persons to participate anyway. + +NOTE: In the code and the User Interface, *Impersonation* and *Managed Participants* are the same thing. + +== Enable / disable impersonations + +Impersonations are only available when at least one authorization is enabled for the organization. +Indeed, they allow the system to search through a Verification system for an already existing participant, and to create +a participant without the need for an email address. + +To enable an authorization, you need to have access to the xref:configure:system.adoc[System panel] or ask your instance implementer. + +image::participants/participants_impersonations_backend_list_no_auth.png[Administrators Impersonations panel with no authorizations] + +The different authorizations give you different possibilities: + +* View impersonation logs only: When Identity documents, Code by postal letter, and/or Organization's census are enabled +* Impersonate existing and new users: Direct verification enabled, like example authorization or other custom direct authorizations. + +NOTE: You can learn more regarding how to program your form authorization in +https://github.com/decidim/decidim/blob/develop/decidim-verifications/README.md[Decidim-verification README]. + +image::participants/participants_impersonations_backend_list_logs.png[Administrators Impersonations panel with view log] + +image::participants/participants_impersonations_backend_list_button.png[Administrators Impersonations panel with impersonation action] + +== Manage impersonations + +You can find all the participants of the platform, with: +* *Name*: name of the participant. +* *Status*: if the participant is impersonated/managed or not. + +You can filter this list by clicking the "Filter" button and search for participants by their name. + +=== Actions + +|=== +|Icon |Name |Definition |Condition + +|image:icons/action_impersonate.png[Impersonate icon] +|Impersonate +|To impersonate the participant. +|Available all the time. + +|image:icons/action_clock.png[View logs icon] +|View logs +|To view the impersonation history of the participant. +|Available all the time. + +|image:icons/action_promote.png[Promote icon] +|Promote +|To view the impersonation history of the participant. +|Available only for managed users. + +|=== + +=== Impersonate a participant + +Click the "Manage new participant" button. You are then able to enter the personal data to check against the verification: + +image::participants/participants_impersonations_form.png[Administrators Impersonations form] + +After this data is checked by the system, it opens a session for the participant for 30 minutes. +A banner at the top of the page reminds the administrator that they are impersonating the participant, and the remaining time. + +image::participants/participants_impersonations_user.png[Impersonated user session] + +=== Promote a managed participant + +Administrators can promote managed participants, to invite them to the create an account on the platform. +Click the "Promote" icon to be able to add an email address to the participant and invite them by email. + +image::participants/participants_impersonations_promotion.png[Administrators promotion Impersonations] diff --git a/docs/en/modules/admin/pages/participants/participants.adoc b/docs/en/modules/admin/pages/participants/participants.adoc new file mode 100644 index 0000000000..6b39fb2494 --- /dev/null +++ b/docs/en/modules/admin/pages/participants/participants.adoc @@ -0,0 +1,90 @@ += Participants + +Participants are all people with an account on the platform, whether they have confirmed their email address or not. +In this page an administrator can: + +* Block a participant, for instance because they are spamming or acting against the Terms of Service +* Contact a participant with Decidim private messages +* Officialize a participant +* Show a participant email + +image:participants/participants_participants.png[Participants list] + +== Manage participants + +You can find all the participants here, with: +* *Name*: name of the participant, with a link to their profile. +* *Nickname*: nickname of the participant, with a link to their profile. +* *Created at*: date of the participant account creation. +* *Status*: if the participant is officialized or not. +* *Badge*: the officialization badge, given when officializing the participant. +* *Reports*: number of reports by different users. + +You can filter and sort this list by clicking the "Filter" button and the columns headers. +You can also search for participants by email, name, or nickname in the search bar. + +=== Actions + +|=== +|Icon |Name |Definition |Condition + +|image:icons/action_block.png[Block user] +|Block / Unblock user +|To block or unblock a participant. See xref:admin:moderations/reported_users.adoc[Reported users] for more information. +|Block action is available for unblocked users, and vice versa. + +|image:icons/action_show_email.png[Show email] +|xref:_show_email_address[Show email address] +|To show the email address of a participant. +|Available all the time. + +|image:icons/action_contact.png[Contact] +|xref:_contact[Contact] +|To contact a participant through a private message. +|Available all the time. + +|image:icons/action_verify.png[Officialize] +|xref:_officialize[Officialize] +|To recognize that a participant has a special status, like mayor, association's president, etc. +|Available for unofficialized participants. + +|image:icons/action_reofficialize.png[Reoffficialize] +|Reofficialize +|To change the officialization badge. +|Available for officialized participants. + +|image:icons/action_delete.png[Unofficialize] +|Unofficialize +|To revoke an officialization. +|Available for officialized participants. + +|=== + +=== Show email address + +Sometimes, administrators need to find a user email address. They can click the "Show email address" option. +A modal appears, with the name of the participant, and an hidden field. + +image:participants/participants_show_email.png[Modal in show email] + +To show the email address, you need to click the "Show" button. + +image:participants/participants_showed_email.png[Modal after the email is shown] + +For administration transparency, this action is logged in the activity logs. + +image:participants/participants_showed_email_admin_log.png[Admin activity log for show email] + +=== Contact + +To contact participants directly through the private messaging of the platform, click the "Contact" icon. + +image:participants/participants_conversation.png[Conversation with a participant]. + +=== Officialize + +This option is useful to recognize that a participant has a specific status in the +platform. For instance, if someone is the city mayor, a city councillor, the +president of an association, etc. + +image:participants/participants_officialize.png[Officialize a participant] \ No newline at end of file diff --git a/docs/en/modules/admin/pages/participants/verifications_conflicts.adoc b/docs/en/modules/admin/pages/participants/verifications_conflicts.adoc new file mode 100644 index 0000000000..e11907e2dd --- /dev/null +++ b/docs/en/modules/admin/pages/participants/verifications_conflicts.adoc @@ -0,0 +1,66 @@ += Verifications conflicts + +A verification conflict can happen when authorizations are enabled, and some participants create several accounts +or get impersonated. + +For instance: + +. A participant create an account, and get verified against an authorization. +. Then they create another account and try to get verified again against the same authorization. + +This can also happens with impersonations: + +. A participant get xref:admin:participants/impersonations.adoc[impersonated] with their data, but don't enter an email +. Then they create an account, and try to verify themselves with the same verification + +For security, try to be extra cautious in these cases, and make sure an administrator reviews these potential conflicts. +It depends a lot on which kind of verifications you've enabled in your organization, so most of the time an organization +don't see any conflicts appear in this panel. + +image:participants/verifications_conflicts.png[Verification's conflicts panel] + +When there is a verification conflict, administrators receive an email notification. + +== Manage verifications conflicts + +In the verifications conflict panel, you can find all the conflicts, with: +* *User*: name of the non managed participant who tried to get verified from their account. +* *Managed user*: name of the impersonated user with the same verification data. +* *Attempts*: number of time the user tried to get verified with their data. +* *Solved*: if the verification conflict was solved or not. + +You can search for conflicts by participant email, name, or nickname in the search bar. + +=== Actions + +|=== +|Icon |Name |Definition + +|image:icons/action_transfer_user.png[Transfer user] +|Transfer user +|To solve the verification conflict. + +|=== + +=== Transfer user + +The transfer user button allows to solve the conflict between both account. + +image:participants/verifications_conflicts_transfer_user.png[Transfer user form] + +.Transfer user form +|=== +|Field |Type |Description + +|Reason +|Required +|Why you want to transfer the user account + +|Email +|Required +|The email of the user to transfer + +|=== + +After the user is transferred, both accounts, the managed one and the new one, is merged into one, that takes the +email address entered in the form, and the valid verification is transferred to this account. diff --git a/docs/en/modules/admin/pages/scopes.adoc b/docs/en/modules/admin/pages/scopes.adoc new file mode 100644 index 0000000000..8657bdbba0 --- /dev/null +++ b/docs/en/modules/admin/pages/scopes.adoc @@ -0,0 +1,105 @@ += Scopes + +Scopes are the set of territories or subjects that an Organization has. A scope may have child scopes. + +For instance, in the case of the city of Barcelona the scopes are its districts, and the children of a district are its neighborhoods. They can also have types, so it can be configured, for example, by thematic and also territorial scopes. + +Most of the components and spaces in Decidim allow you to configure Scopes in one way or another. There are mainly three ways of using Scopes: + +To configure Scope on the Decidim platform, go to menu:Settings[Scopes] in the admin sidebar menu. A list will appear with the existing scopes if there are any: + +image:scopes_list.png[Scopes list] + +If you need so, you need to first configure the Scope type. + +== Form + +image:scopes_types_new_form.png[New scope type form] + +.Admin New Scope Type form +|=== +|Field |Type |Description + +|Singular +|Required +|Name of the scope type in singular. + +|Plural +|Required +|Name of the scope type in plural. + +|=== + +image:scopes_new_form.png[New scope form] + +.Admin New Scope Form +|=== +|Field |Type |Description + +|Name +|Required +|Name of the scope. + +|Code +|Required +|(Internal) name of the scope. + +|Scope type +|Required +|Which type of scope it's. + +|=== + +== Actions + +You have 3 possible actions in this list after a Scope is created: + +|=== +|Icon |Name |Definition + +|image:action_browse.png[Browse icon] +|Browse +|See and configure the children scopes for this Scope. + +|image:action_edit.png[Edit icon] +|Edit +|Edit form for a Scope. It's the same form as "Create a new scope". + +|image:action_delete.png[Delete icon] +|Delete +|To delete this scope. + +|=== + +== Features +The main features related with scopes are: + +. Filtering +. User interests and Newsletters + +=== Filtering + +For filtering. Most of the spaces and components allows an administrator or a participant to associate them to a scope. This allows to filter by scopes when exploring them. + +image:scopes_filter_initiatives.png[Initiatives scopes filtering] + +image:scopes_filter_processes.png[Processes scopes filtering] + +Some examples: + +* With Accountability module, so it's possible to filter Results +* Assemblies and Processes can have Scopes. It's used for filtering multiple assemblies in the main listing page (/assemblies or /processes). These can be hidden by unchecking the "Enable participatory space filters" in the xref:admin:configuration.adoc[admin's configuration page]. +* Filtering in the sidebar is possible in Budgets Projects, Initiatives and Proposals. In some of these components you can control if these filters are shown with the "Scopes enabled" checkbox in the component settings. This will also enable or disable the scope selector in the resource creation form. + +You can also configure a participatory space so the filtering will only concern one scope and its children scopes. For example, let's imagine your organization have 3 different scopes for 3 cities, each of them having children scopes for the cities neighbourhoods. +On a participatory space which concerns only one of the cities, you will be able to select only this scope and its children so that users do not see the scopes of other cities in the filter options. + +=== User interests and Newsletters + +A Participant can choose which Scopes they want to follow in its account. + +image:account_my_interests.png[Account: my interests] + +This is used by the xref:admin:newsletters.adoc[Newsletters], in the "Select recipients to deliver" step, "Filter for users having activated any selected scope in their account's My Interests settings." section. + +image:newsletter_select_recipients.png[Newsletter: select recipients] diff --git a/en/modules/admin/pages/spaces.adoc b/docs/en/modules/admin/pages/spaces.adoc similarity index 100% rename from en/modules/admin/pages/spaces.adoc rename to docs/en/modules/admin/pages/spaces.adoc diff --git a/en/modules/admin/pages/spaces/assemblies.adoc b/docs/en/modules/admin/pages/spaces/assemblies.adoc similarity index 100% rename from en/modules/admin/pages/spaces/assemblies.adoc rename to docs/en/modules/admin/pages/spaces/assemblies.adoc diff --git a/en/modules/admin/pages/spaces/assemblies/admins.adoc b/docs/en/modules/admin/pages/spaces/assemblies/admins.adoc similarity index 100% rename from en/modules/admin/pages/spaces/assemblies/admins.adoc rename to docs/en/modules/admin/pages/spaces/assemblies/admins.adoc diff --git a/en/modules/admin/pages/spaces/assemblies/attachments.adoc b/docs/en/modules/admin/pages/spaces/assemblies/attachments.adoc similarity index 100% rename from en/modules/admin/pages/spaces/assemblies/attachments.adoc rename to docs/en/modules/admin/pages/spaces/assemblies/attachments.adoc diff --git a/en/modules/admin/pages/spaces/assemblies/categories.adoc b/docs/en/modules/admin/pages/spaces/assemblies/categories.adoc similarity index 100% rename from en/modules/admin/pages/spaces/assemblies/categories.adoc rename to docs/en/modules/admin/pages/spaces/assemblies/categories.adoc diff --git a/en/modules/admin/pages/spaces/assemblies/components.adoc b/docs/en/modules/admin/pages/spaces/assemblies/components.adoc similarity index 100% rename from en/modules/admin/pages/spaces/assemblies/components.adoc rename to docs/en/modules/admin/pages/spaces/assemblies/components.adoc diff --git a/docs/en/modules/admin/pages/spaces/assemblies/landing_page.adoc b/docs/en/modules/admin/pages/spaces/assemblies/landing_page.adoc new file mode 100644 index 0000000000..d8700998bc --- /dev/null +++ b/docs/en/modules/admin/pages/spaces/assemblies/landing_page.adoc @@ -0,0 +1,10 @@ + +include::partial$page_landing_page.adoc[] + +=== Dates metadata + +image::spaces/landing_page/dates_metadata.png[Landing page results content block] + +=== Social networks + +image::spaces/landing_page/social_networks.png[Landing page results content block] diff --git a/docs/en/modules/admin/pages/spaces/assemblies/members.adoc b/docs/en/modules/admin/pages/spaces/assemblies/members.adoc new file mode 100644 index 0000000000..b64508b465 --- /dev/null +++ b/docs/en/modules/admin/pages/spaces/assemblies/members.adoc @@ -0,0 +1,72 @@ += Assembly members + +Assembly members allow showing all the people or groups that belong to a given assembly. It's useful for being transparent. + +You can see an example in https://meta.decidim.org/assemblies/coordination-committee/members[Decidim Coordination Commitee Assembly in Metadecidim]. + +image:assembly_members.png[Assembly members of the Coordination Committee] + +== New assembly member form + +image:assembly_members_list.png[Assembly members admin list] + +For creating a new phase of a participatory process: + +. Sign in as administrator +. Go to the assemblies section in the sidebar +. Click on the assembly Edit action +. Click on the Members link in the sidebar +. Click on the "New member" button +. Fill the form + +image:assembly_members_new_form.png[Assembly members new form] + +.New assembly member form +|=== +|Field |Type |Description + +|Participant type +|Required +|Wheter this assembly member is non-participant or existing participant. Do they already have an account created on the platform? + +|Full name +|Required if it's non-participant. +| + +|User or group +|Required if it's an existing participant. +|Type at least three characters to search. + +|Position +|Required +|Choose one of President, Vice president, Secretary, or Other. In case it's other, you can fill in the position title. + +|Weight +|Optional +|Which order will it have in relation to the other members. Having a lower number means a higher priority. For instance, if you have two members, "Member a" with weight "10" and "Member b" with weight "0", then "Member b" will be first when ordering. + +|Designation date +|Required +|When was this person or group assigned as a member of this assembly. Expected format: dd/mm/yyyy + +|Designation mode +|Optional +|How was this person designed. + +|Ceased date +|Optional +|When was this person or group ceased to be a member of this assembly. Expected format: dd/mm/yyyy + +|Gender +|Optional +|Which gender does this person most identify with. + +|Birthday +|Optional +|When was this person born. Expected format: dd/mm/yyyy + +|Birthplace +|Optional +|Where was this person born. + +|=== diff --git a/en/modules/admin/pages/spaces/assemblies/moderations.adoc b/docs/en/modules/admin/pages/spaces/assemblies/moderations.adoc similarity index 100% rename from en/modules/admin/pages/spaces/assemblies/moderations.adoc rename to docs/en/modules/admin/pages/spaces/assemblies/moderations.adoc diff --git a/en/modules/admin/pages/spaces/assemblies/private_participants.adoc b/docs/en/modules/admin/pages/spaces/assemblies/private_participants.adoc similarity index 100% rename from en/modules/admin/pages/spaces/assemblies/private_participants.adoc rename to docs/en/modules/admin/pages/spaces/assemblies/private_participants.adoc diff --git a/en/modules/admin/pages/spaces/conferences.adoc b/docs/en/modules/admin/pages/spaces/conferences.adoc similarity index 100% rename from en/modules/admin/pages/spaces/conferences.adoc rename to docs/en/modules/admin/pages/spaces/conferences.adoc diff --git a/en/modules/admin/pages/spaces/conferences/admins.adoc b/docs/en/modules/admin/pages/spaces/conferences/admins.adoc similarity index 100% rename from en/modules/admin/pages/spaces/conferences/admins.adoc rename to docs/en/modules/admin/pages/spaces/conferences/admins.adoc diff --git a/en/modules/admin/pages/spaces/conferences/attachments.adoc b/docs/en/modules/admin/pages/spaces/conferences/attachments.adoc similarity index 100% rename from en/modules/admin/pages/spaces/conferences/attachments.adoc rename to docs/en/modules/admin/pages/spaces/conferences/attachments.adoc diff --git a/en/modules/admin/pages/spaces/conferences/categories.adoc b/docs/en/modules/admin/pages/spaces/conferences/categories.adoc similarity index 100% rename from en/modules/admin/pages/spaces/conferences/categories.adoc rename to docs/en/modules/admin/pages/spaces/conferences/categories.adoc diff --git a/en/modules/admin/pages/spaces/conferences/components.adoc b/docs/en/modules/admin/pages/spaces/conferences/components.adoc similarity index 100% rename from en/modules/admin/pages/spaces/conferences/components.adoc rename to docs/en/modules/admin/pages/spaces/conferences/components.adoc diff --git a/en/modules/admin/pages/spaces/conferences/media_links.adoc b/docs/en/modules/admin/pages/spaces/conferences/media_links.adoc similarity index 100% rename from en/modules/admin/pages/spaces/conferences/media_links.adoc rename to docs/en/modules/admin/pages/spaces/conferences/media_links.adoc diff --git a/en/modules/admin/pages/spaces/conferences/moderations.adoc b/docs/en/modules/admin/pages/spaces/conferences/moderations.adoc similarity index 100% rename from en/modules/admin/pages/spaces/conferences/moderations.adoc rename to docs/en/modules/admin/pages/spaces/conferences/moderations.adoc diff --git a/en/modules/admin/pages/spaces/conferences/partners.adoc b/docs/en/modules/admin/pages/spaces/conferences/partners.adoc similarity index 100% rename from en/modules/admin/pages/spaces/conferences/partners.adoc rename to docs/en/modules/admin/pages/spaces/conferences/partners.adoc diff --git a/en/modules/admin/pages/spaces/conferences/registrations.adoc b/docs/en/modules/admin/pages/spaces/conferences/registrations.adoc similarity index 100% rename from en/modules/admin/pages/spaces/conferences/registrations.adoc rename to docs/en/modules/admin/pages/spaces/conferences/registrations.adoc diff --git a/en/modules/admin/pages/spaces/conferences/registrations/certificates.adoc b/docs/en/modules/admin/pages/spaces/conferences/registrations/certificates.adoc similarity index 100% rename from en/modules/admin/pages/spaces/conferences/registrations/certificates.adoc rename to docs/en/modules/admin/pages/spaces/conferences/registrations/certificates.adoc diff --git a/docs/en/modules/admin/pages/spaces/conferences/registrations/invites.adoc b/docs/en/modules/admin/pages/spaces/conferences/registrations/invites.adoc new file mode 100644 index 0000000000..d95b4056e3 --- /dev/null +++ b/docs/en/modules/admin/pages/spaces/conferences/registrations/invites.adoc @@ -0,0 +1,38 @@ +# Invites + +Administrators can invite participants to join the conference. + +image:spaces/conferences/invites.png[Conferences user invites (backend)] + +## Flow + +. An administrator sends an invitation to join the conference to a non-existing or existing participant +. The participant accepts the invitation + +image:spaces/conferences/invite_participant_form.png[Invite a participant form] + +.Invite participant form +|=== +|Field |Type |Description + +|Attendee type +|Required +|Wheter this invited person is a non-existing or existing participant. Do they already have an account created on the platform? + +|Name +|Required if it's a non-existing participant. +|Name of the invited person. + +|Email +|Required if it's a non-existing participant. +|Email of the invited person. + +|User +|Required if it's an existing participant. +|Type at least three characters to search. + +|xref:admin:spaces/conferences/registrations/types.adoc[Registration type] +|Required +|What xref:admin:spaces/conferences/registrations/types.adoc[registration type] does this participant will have. + +|=== diff --git a/en/modules/admin/pages/spaces/conferences/registrations/types.adoc b/docs/en/modules/admin/pages/spaces/conferences/registrations/types.adoc similarity index 94% rename from en/modules/admin/pages/spaces/conferences/registrations/types.adoc rename to docs/en/modules/admin/pages/spaces/conferences/registrations/types.adoc index 1b0a31b831..c343880b08 100644 --- a/en/modules/admin/pages/spaces/conferences/registrations/types.adoc +++ b/docs/en/modules/admin/pages/spaces/conferences/registrations/types.adoc @@ -54,6 +54,6 @@ image:spaces/conferences/registration_types_backend.png[Manage registration type |=== -If the participant is already logged in then she'll see her username and email in the registration page. +If the participant is already logged in then they will see their username and email in the registration page. image:spaces/conferences/registration_types_frontend_w_user.png[Select registration type with user account] diff --git a/docs/en/modules/admin/pages/spaces/conferences/registrations/users.adoc b/docs/en/modules/admin/pages/spaces/conferences/registrations/users.adoc new file mode 100644 index 0000000000..fde51db0ec --- /dev/null +++ b/docs/en/modules/admin/pages/spaces/conferences/registrations/users.adoc @@ -0,0 +1,27 @@ +# User registrations + +After participants have registered, they will appear in this section. + +image:spaces/conferences/user_registrations.png[Conferences user registrations (backend)] + +As an administrator, you can: + +* Export the registrations +* Confirm a registration + +## Export + +It's possible to export the registrations in multiple formats: CSV, JSON, and XLSX (Excel). + +## Flow + +. A participant registers to the conference +. They receive a pending registration notification +image:spaces/conferences/user_registration_pending_notification.png[Notification for pending user registration] +. They receive a pending registration email +image:spaces/conferences/user_registration_pending_email.png[Email for pending user registration] +. An administrator reviews and confirms the registration with the image:action_check.png[Confirm] button +. The participant receives a confirmed registration notification +image:spaces/conferences/user_registration_confirmed_notification.png[Notification for confirmed user registration] +. They receive a confirmed registration email with an calendar file (.ICS). +image:spaces/conferences/user_registration_confirmed_email.png[Email for confirmed user registration] diff --git a/en/modules/admin/pages/spaces/conferences/speakers.adoc b/docs/en/modules/admin/pages/spaces/conferences/speakers.adoc similarity index 96% rename from en/modules/admin/pages/spaces/conferences/speakers.adoc rename to docs/en/modules/admin/pages/spaces/conferences/speakers.adoc index 0a4adf6483..524f2ec414 100644 --- a/en/modules/admin/pages/spaces/conferences/speakers.adoc +++ b/docs/en/modules/admin/pages/spaces/conferences/speakers.adoc @@ -25,7 +25,7 @@ image:spaces/conferences/new_speaker.png[Conferences speakers] |Participant type |Required -|Wheter this speaker is a non-participant or existing participant. Does she already have an account created on the platform? +|Wheter this speaker is a non-participant or existing participant. Do they already have an account created on the platform? |Full name |Required if it's non-participant. diff --git a/docs/en/modules/admin/pages/spaces/initiatives.adoc b/docs/en/modules/admin/pages/spaces/initiatives.adoc new file mode 100644 index 0000000000..e6df8dcdfb --- /dev/null +++ b/docs/en/modules/admin/pages/spaces/initiatives.adoc @@ -0,0 +1,416 @@ += Initiatives + +An initiative is a special type of participatory process that can be promoted by anyone (independently of other channels or participation spaces) through the collection of (online and in-person) signatures for the organization to carry out a specific action (modify a regulation, initiate a project, change the name of a department or a street, etc.). + +The promoters of an initiative can define its objectives, gather support, debate, disseminate it and define meeting points where signatures can be collected from the attendees or debates open to other participants. + +Examples: An initiative can collect signatures to call for a consultation among all the people of an organization, or to create an assembly, or to call for a process of budget increase for a territory or area of the organization. During the process of collecting signatures, more people can add to this demand and carry it forward in the organization. + +Initiatives are to be distinguished from the other participation spaces because they can be used as a participatory tool or mechanism promoted by participants. In other words, the initiatives are mechanisms for semi-direct democracy through which participants can promote a certain action of common interest to the organization, by collecting a specific number of signatures. In this case, what the organization has to do is enable the promotion of these initiatives and offer the necessary technical support and advice to the people concerned. The role of the platform’s administrator, then, is somewhat different from that of the other participation spaces. + +In the first place, you will have to configure the various forms of initiatives. This could be specified in a regulation (like a municipal normative or state law), specifying the number of signatures required for processing the various types of initiatives. For example, an initiative for incorporating one or several items into the Municipal Council’s agenda evidently requires fewer signatures than another initiative for promoting a binding consultation. + +== 0. Initiative setup + +How initiatives work depends on two things: how the initiative module is configured through the xref:admin:initiatives_initializer.adoc[initializer] (in code) and how the initiative type is configured in the administration panel. + +Regarding initiatives type, **an administrator** needs to define one. For Initiatives to work on an organization there must be at least one initiative type created and configured with at least one initiative type scope. If there's only one type then the participant will not get the possibility to choose the initiative type, this step will be skipped in the initiative creation wizard. + +Some real examples from the city of Barcelona are: + +* To add an item to the Municipal Council or Districts agendas +* To perform a participatory process +* To create a new assembly +* To approve or modify a regulation +* To request the holding of a citizen consultation +* To call for assemblies (neighborhood councils or public audiences) + +=== New initiative type form + +image:admin_initiative_type.png[New initiative type form] + +.Admin new initiative type form: General information +|=== +|Field |Type |Description + +|Title +|Required +|Title of the initiative type. For instance, "New park at city center". + +|Description +|Required +|Explanation of what can be done with this initiative type. + +|Banner image +|Required +|An image for this initiative type. NOTE: At the moment this is not used. + +|=== + +.Admin new initiative type form: Options +|=== +|Field |Type |Description + +|Signature type +|Optional +|Which kind of signature type will be allowed. Options are: Online, In-person and Mixed. The Mixed option allows a participant to choose which signature type will have the initiative. + +|Enable attachments +|Optional +|Whether it'll allow to upload attachments to initiatives. + +|Enable participants to undo their online signatures +|Optional +|Can a participant undo its signature when they already signed? + +|Enable authors to choose the end of the signature collection period +|Optional +|Can the authors of an initiative change the end of the signature collection period? + +|Enable authors to choose the area for their initiative +|Optional +|Can the authors choose the area of their initiative? + +|Enable child scope signatures +|Optional +|This config flag doesn't support offline votes, it enables sub-scopes and works with an authorization handler that associates a scope to the user, make sure you select that authorization, bellow in authorization settings. For it to work, scopes need to be configured in a hierarchical way : 1 Parent - N Child. + +|Only allow global scope initiatives creation +|Optional +|Tick this flag if you enabled "Child scope signature" and configured the global scope as your parent scope. By enabling this, scope selection will be skipped in the initiative creation wizard. + +|Enable promoting committee +|Optional +|Whether it will only allow individual initiatives (made by only one person) or allow collective initiatives (multiple promoters, being multiple individuals or a user group). + +|Minimum of committee members +|Optional +|When "Enable promoting committee" option is checked, defines the minimum number of promoter's committee member to send the initiative to technical validation + +|Collect participant personal data on signature +|Optional +|Adds a step to the signature process. When a participant clicks on the signature button, they will be redirected to a form asking for some personal data. This will be used with the PDF export action after the recollection period has ended. + +|Legal information about the collection of personal data +|Depends on whether the option "Collect participant personal data on the signature" is checked +|Privacy notice and terms of use for the participant personal data during the signature process. + +|=== + +.Admin new initiative type form: Authorization settings +|=== +|Field |Type |Description + +|Authorization to verify document number on signatures +|Optional +|When a participant is making the signature process, will they be asked for an authorization? + +|Add SMS code validation step to the signature process +| +|During the signature process, will it ask for SMS validation? See xref:services:sms.adoc[configuration of SMS service]. + +|=== + +=== New initiative type scope form + +An initiative type can also have scopes associated. For Initiatives it needs at least one scope configured. + +image:admin_initiative_type_scope.png[New initiative type form] + +.Admin new initiative type scope form +|=== +|Field |Type |Description + +|Scopes +|Required +|A Scope. An author can choose this scope in the creation of the initiative. + +|Signatures required +|Required +|Number of signatures the initiative need to have before the end period so it can be accepted. + +|=== + +== 1. Create an initiative + +This action is done by **the author**. The author is a participant that creates the initiative. Depending on how the initiatives module is configured in the initializer or how the initiative type is configured, it may need to ask for authorization, or it will even not show the "New initiative" button. + +image:initiative_list.png[Initiatives list] + +For creating an initiative, a participant must click in the "New initiative" button. Then they will have a wizard with multiple steps: + + +=== 1.1 Choose the initiative type + +image:initiative_new_step1.png[Initiative creation: step 1] + +=== 1.2 Add title and description + +image:initiative_new_step2.png[Initiative creation: step 2] + +=== 1.3 [Optional] Similarity comparison + +Checks the rest of the initiatives if there are other similar initiatives. If there are, the system will show them before continuing. This is a way to avoid duplicates. + +=== 1.4 Finish + +image:initiative_new_step3.png[Initiative creation: step 3] + +image:initiative_new_step4.png[Initiative creation: step 4] + +=== Actions after it was created + +After the initiative was created, a participant can see the initiative page, but until the initiative is reviewed and accepted by an administrator, through the technical validation, it will not be published and visible for all the participants. + +image:initiative_show.png[Initiative show] + +In the sidebar a participant can make some actions: Edit, Print and Send to technical validation. + +image:initiative_actions.png[Initiative actions] + +==== Edit + +After the initiative was created and before it was sent to technical validation, **an author** can edit and correct the initiative if it has any error. + +image:initiative_edit.png[Initiative edit] + +==== Print + +An author can also print the initiative. + +image:initiative_print.png[Print an initiative] + +==== Technical validation + +After the author has reviewed how the initiative will look, they can send it to technical validation. + +image:initiative_send_to_technical_validation.png[Send initiative to technical validation] + +== 2. Send initiative to technical validation + +This action is done by **the author**. + +After it has been reviewed by the author, it can be sent to "Technical validation", but it depends in the configuration of the initiative type, in whether the options "Enable promoting committee" and "Minimum of committee members" are configured. + +=== Promoter's committee + +An initiative type can optionally be supported by a promoter's committee, with a minimum number of committee members. Once the user has created the initiative and before it can be sent for technical validation they need to invite committee members to promote it. + +When the user has created the initiative they will be given a link to share with possible committee members, which will look something like `/initiatives/.../committee_requests/new` + +When a prospective committee member opens the link, they can click a button which allows them to request to be part of the committee. The initiative author then needs to approve each request. The author can approve them by clicking on the "Edit" button of their initiative at the bottom of the form they can approve or reject committee members. + +image:initiative_commitee_members_send_to_technical_false.png[Initiative promotor committee: edit screen] + +The initiative cannot be sent to technical validation until it meets the minimum number of committee members required. You can find the invitation link in the edit form. + +image:initiative_edit_commitee_members.png[Initiative promotor committee: edit screen] + +Share the invitation link with the people you'd like to have on your committee. + +image:initiative_commitee_members_ask.png[Initiative promotor committee: edit screen] + +The people invited with the link will be able to read the initiative and ask to be part of the committee. + +image:initiative_commitee_members_sent.png[Initiative promotor committee: edit screen] + +The request is sent and the author can then and accept or refuse it in the initiative edit form. + +image:initiative_commitee_members_approve.png[Initiative promotor committee: edit screen] + +image:initiative_commitee_members_send_to_technical_true.png[Initiative promotor committee: edit screen] + +Once enough people have joined the promoter committee the initiative author can send it for +technical validation. + +== 3. Publish an initiative + +This action is done by **an administrator**. + +After the initiative was sent to technical validation by a participant, an administrator can view all the initiatives in the admin panel and make some corrections. + +image:initiative_admin_list.png[Admin initiatives list] + +=== Actions + +Regarding the actions in an initiative, an administrator can "Preview", "Edit", "Answer" or "Print" an initiative: + +image:initiative_admin_list_actions.png[Initiative admin list actions] + +|=== +|Icon |Name |Definition + +|image:action_preview.png[Preview icon] +|Preview +|To see how it's shown in the frontend to participants. + +|image:action_edit.png[Edit icon] +|Edit +|Edit form for Initiative. + +|image:action_answer.png[Answer icon] +|Answer +|Allows to answer an Initiative. + +|image:action_print.png[Print icon] +|Print +|Allows to print. + +|=== + +=== Components + +Once an initiative has been created it gets the Meetings and Page component enabled by +default. The initiative author has no control over these - an admin will need to manage +them. All of the other usual components may be added by an admin too. + +image:initiative_admin_show.png[Admin initiative show page] + +There are also other features inside initiatives, like Attachments and Moderations for the comments. + +image:initiative_admin_sidebar.png[Admin initiative sidebar] + +=== Publish + +After the initiative was reviewed and technically approved by an admin, for instance for checking that what the initiative is asking is legal or abides to the normative (ie it's municipal competency), then it can be published: + +image:initiative_admin_actions.png[Admin initiative actions] + +== 4. Sign an initiative + +This action is done by **a participant**. + +After the initiative was published, it'll be visible in the initiatives listing page (/initiatives): + +image:initiative_list_published.png[Initiative list after it was published] + +image:initiative_admin_show_published.png[Admin initiative show after it was published] +image:initiative_show_published.png[Initiative show after it was published] + +And authorized participants can sign it: + +image:initiative_admin_show_published_detail.png[Admin initiative show after it was published (detail)] + +image:initiative_show_signed.png[Initiative show after it was signed] + + +== 5. Export signatures + +This action is done by **an administrator**. After the initiative has started to get signatures, there's an option for exporting a PDF of the signatures: + +image:initiative_actions_export.png[Initiative actions with Export to PDF] + +image:initiative_actions_export_pdf.png[Initiative exported PDF] + +== 6. Answer an initiative + +After the initiative has collected all the signatures then it can be answered by an administrator. An initiative answer don't have different types. + +image:initiative_backend_answer.png[Initiative backend answer] + +image:initiative_frontend_answer.png[Initiative frontend answer] + +== Initiative statuses + +For better understanding all the status, this is a summary: + +|=== +|Status |Explanation + +|Created +|The initiative has been created but is not yet public for every visitor or the rest of the participants. + +|Technical validation +|The initiative needs to be reviewed by an administrator. From here, it can be "discarded" or "published" + +|Expired +|The initiative wasn't reviewed by an administrator and wasn't approved, and the maximum time for validation has passed. + +|Discarded +|The initiative was reviewed by an administrator and was discarded, so it's not published. + +|Published +|The initiative was reviewed by an administrator and was approved, so it's published. + +|Rejected +|The period for signature recollection has ended and there weren't enough signatures. + +|Accepted +|The period for signature recollection has ended and there were enough signatures. +|=== + + +[plantuml] +.... +@startuml +:Created; +:Technical validation; +if (has passed the maximum validation time?) then (yes) + #pink:Expired; + kill; +elseif (validated?) then (no) + #pink:Discarded; + kill; +else (yes) + #palegreen:Published; + if (enough signatures?) then (no) + #pink:Rejected + (not enough signatures); + kill; + else (yes) + #palegreen:Accepted + (enough signatures); + stop; + endif; +endif +@enduml +.... + +Finally, these are all the relevant settings in every moment in the initiatives life cicle: + +[plantuml] +.... +@startuml +(*) --> "Create a new initiative" +if "Has only one type?" then +--> [Yes] "Fill initiative form" +else +--> [No] "Select initiative type" +--> "Fill initiative form" +Endif +partition Created { + if "Is the User a UserGroup?" then + --> [Yes] "Send to Technical Validation" + else + --> [No] Collect the minimum number of committee members (2 by default) + --> "Send to Technical Validation" + Endif +} +partition Validating { + if "Has passed the maximum time for validation (60 days by default)?" then + --> [Yes] "Expired" + else + --> [No] if "Is accepted by an administrator?" then + --> [No] "Discarded" + else + --> [Yes] "Publish" + endIf + endIf +} +partition Published { + --> "Signature process" + if "Has passed the configured time window for validation (60 days by default)?" + --> [Yes] "Expired" + else + --> [No] Export PDF to signatures + --> Check signatures with offline signatures for duplicates (if the Initiative has them) + --> if "Has the initiative get the number of signatures required?" then + --> [No] Rejected + else + --> [Yes] Accepted + endIf + endIf +} +--> (*) +@enduml +.... diff --git a/en/modules/admin/pages/spaces/processes.adoc b/docs/en/modules/admin/pages/spaces/processes.adoc similarity index 98% rename from en/modules/admin/pages/spaces/processes.adoc rename to docs/en/modules/admin/pages/spaces/processes.adoc index 60ef13968b..7fe8cbaabe 100644 --- a/en/modules/admin/pages/spaces/processes.adoc +++ b/docs/en/modules/admin/pages/spaces/processes.adoc @@ -191,7 +191,7 @@ instance multiple squares in a City or multiple documents using the same partici |Private space |Optional -|Check if this process should only be accessible by xref:admin:process_private_participants.adoc[Private Participants] +|Check if this process should only be accessible by xref:admin:spaces/processes/private_participants.adoc[Private Participants] |Promoted |Optional diff --git a/en/modules/admin/pages/spaces/processes/admins.adoc b/docs/en/modules/admin/pages/spaces/processes/admins.adoc similarity index 100% rename from en/modules/admin/pages/spaces/processes/admins.adoc rename to docs/en/modules/admin/pages/spaces/processes/admins.adoc diff --git a/en/modules/admin/pages/spaces/processes/attachments.adoc b/docs/en/modules/admin/pages/spaces/processes/attachments.adoc similarity index 100% rename from en/modules/admin/pages/spaces/processes/attachments.adoc rename to docs/en/modules/admin/pages/spaces/processes/attachments.adoc diff --git a/en/modules/admin/pages/spaces/processes/categories.adoc b/docs/en/modules/admin/pages/spaces/processes/categories.adoc similarity index 100% rename from en/modules/admin/pages/spaces/processes/categories.adoc rename to docs/en/modules/admin/pages/spaces/processes/categories.adoc diff --git a/en/modules/admin/pages/spaces/processes/components.adoc b/docs/en/modules/admin/pages/spaces/processes/components.adoc similarity index 100% rename from en/modules/admin/pages/spaces/processes/components.adoc rename to docs/en/modules/admin/pages/spaces/processes/components.adoc diff --git a/docs/en/modules/admin/pages/spaces/processes/groups.adoc b/docs/en/modules/admin/pages/spaces/processes/groups.adoc new file mode 100644 index 0000000000..9d8101fd66 --- /dev/null +++ b/docs/en/modules/admin/pages/spaces/processes/groups.adoc @@ -0,0 +1,113 @@ += Process groups + +A group of processes proves useful for subdividing large participatory processes into subprocesses according to a criteria, +for instance the xref:admin:scopes.adoc[scope] of every process. + +As an example you can see the https://www.decidim.barcelona/processes_groups/4[Barcelona City Council's Neighborhoods Plan, Pla de Barris]. +This is is a 150 million euro shock plan that aims to reduce inequalities within the city. There are 10 related processes, one for each involved neighborhood. + +image::processes_group_example.png[Participatory process group example] + +== New process group form + +For creating a new process group: + +. Sign in as administrator +. Go to the Processes section in the sidebar +. Click on the Process groups link in the sidebar +. Click on the "New process group" button +. Fill in the form + +image::processes_group_list.png[Participatory process groups list] + +image::processes_group_new_form.png[New participatory process group form] + +.New participatory process group form: General information +|=== +|Field |Type |Description + +|Title +|Required +|Title of the participatory process group. For instance, "Participatory Budgeting". + +|Description +|Required +|A long explanation of what's your participatory process about. + +|Related processes +|Optional +|Which are the processes that are related to this one? They will be used for populating +the Content Blocks in the Landing page of this Process group. For selecting multiple you'll +need to use the *ctrl* function. + +|Image +|Optional +|Image that will be used in presentation cards of this process group. Guidance for image: +Preferably a landscape image that does not have any text. The service crops the image. +Maximum file size: 10MB. Allowed file extensions: jpeg jpg png + +|=== + +.New participatory process group form: Metadata +|=== +|Field |Type |Description + +Hashtag +Website + +|Promoter group +|Optional +|Information that's displayed in the process metadata content block. + +|Organization area +|Optional +|Information that's displayed in the process metadata content block. + +|Scope metadata +|Optional +|Information that's displayed in the process metadata content block. + +|Who participates +|Optional +|Information that's displayed in the process metadata content block. + +|What is decided +|Optional +|Information that's displayed in the process metadata content block. + +|How is it decided +|Optional +|Information that's displayed in the process metadata content block. + +|=== + +.New participatory process group form: Visibility +|=== +|Field |Type |Description + +|Promoted +|Optional +|Check if you want the process to have more visibility in the Process public list. It'll also be visible in the +ParticpipatoryProcess Content Block in the xref:admin:homepage.adoc[Homepage] configuration. This is accessible in the btn:[Edit] action in a Process. + +|=== + +== Landing page + +One of the main features of a process group is to be able to configure the Landing page, through Content blocks, just like +the general homepage of the platform. This means that you can enable or disable different sections of the landing page and also +configure some fo these sections. + +image::processes_group_landing.png[Participatory process group landing page] + +* Title, description and hashtag +* Metadata +* Image, text and Call to Action button. Configurable. +* Proposals. You can configure how the elements will be sorted: by most recent or random. +* Results. You can configure how the elements will be sorted: by most recent or random. +* Upcoming events +* Statistics +* Participatory processes +* First HTML block +* Second HTML block +* Third HTML block diff --git a/en/modules/admin/pages/spaces/processes/moderations.adoc b/docs/en/modules/admin/pages/spaces/processes/moderations.adoc similarity index 100% rename from en/modules/admin/pages/spaces/processes/moderations.adoc rename to docs/en/modules/admin/pages/spaces/processes/moderations.adoc diff --git a/en/modules/admin/pages/spaces/processes/phases.adoc b/docs/en/modules/admin/pages/spaces/processes/phases.adoc similarity index 100% rename from en/modules/admin/pages/spaces/processes/phases.adoc rename to docs/en/modules/admin/pages/spaces/processes/phases.adoc diff --git a/en/modules/admin/pages/spaces/processes/private_participants.adoc b/docs/en/modules/admin/pages/spaces/processes/private_participants.adoc similarity index 100% rename from en/modules/admin/pages/spaces/processes/private_participants.adoc rename to docs/en/modules/admin/pages/spaces/processes/private_participants.adoc diff --git a/docs/en/modules/admin/pages/spaces/processes/types.adoc b/docs/en/modules/admin/pages/spaces/processes/types.adoc new file mode 100644 index 0000000000..785d1c5009 --- /dev/null +++ b/docs/en/modules/admin/pages/spaces/processes/types.adoc @@ -0,0 +1,40 @@ += Process types + +In some cases it is necessary to organize participatory processes by more than just xref:spaces/processes/groups.adoc[Process Groups]. This is where Process Types can be useful. + +Process Types work similarly to xref:admin:spaces/assemblies.adoc#_assemblies_types[Assembly types]. + +== New process type form + +For creating a new process type: + +. Sign in as administrator +. Go to the Processes section in the sidebar +. Click on the Process types link in the sidebar +. Click on the "New process type" button +. Fill in the form + +image:spaces/processes/process-types-admin-backend.png[A screenshot of the back-end showing the button to create a new process type,title="Create a new process type in the back-end"] + +.New participatory process type form: General information +|=== +|Field |Type |Description + +|Title +|Required +|Title of the participatory process type. For instance, "Consultative". + +|=== + +== Add process type to existing processes + +It's possible to add a process type to existing processes. Edit the process, and select the process type under the section labelled Other. + +image:spaces/processes/process-types-edit-process.png[A screenshot of editing an existing process to add a process type,title="Add process type to an existing process"] + +== Process type filter + +In the front-end if there is at least one Process Type defined, a filter shows, allowing filtering of Processes. + +image:spaces/processes/process-types-front-end.png[A screenshot of the front-end showing a filter for Process types,title="Front-end filter for Process Types"] + diff --git a/docs/en/modules/admin/pages/templates.adoc b/docs/en/modules/admin/pages/templates.adoc new file mode 100644 index 0000000000..fdc851e58e --- /dev/null +++ b/docs/en/modules/admin/pages/templates.adoc @@ -0,0 +1,38 @@ += Templates + +== Understand the basics + +The templates tab allow you to create templates and to save time when managing your instance. +You can create templates for three different items: + +* *Questionnaires*: for creating template surveys in the xref:admin:components/surveys.adoc[survey component] +* *Block user messages*: for creating template justification for blocking xref:admin:moderations/reported_users.adoc[reported users] +* *Proposal answers*: for creating template xref:admin:components/proposals/answers.adoc[answers to proposals] + +Once created, those templates are available to all the administrators, and help them manage the instance more efficiently. + +== Configuration + +To access the Templates configuration panel, go in the administration panel and click the "Templates" item in the administration navigation bar. + +image::templates/templates_menu.png[Pages: Access templates panel] + +There, you can start creating and managing: + +* xref:admin:templates/questionnaires.adoc[Questionnaires templates] +* xref:admin:templates/block_users.adoc[Block user messages] +* xref:admin:templates/proposal_answers.adoc[Proposal answers] + +image::templates/templates_questionnaires_list.png[Backend: templates panel] + +== Examples + +At the end of each of the participatory processes you do, you want to collect the feedback of the participants. +Creating a questionnaire template makes the survey creation quicker than re-creating the survey and its questions for each process. + +On some platforms, you can also have spam users, that you want to be able to block quickly for the same reason each time. +Creating a justification template allow you to quickly choose this justification when blocking a spam user, rather than writing it +again each time. + +Same goes for proposal answers, sometimes you want to give a same answer to a lot of different proposals. Creating a proposal +answer template allows you and the processes administrators to manage proposals more efficiently. diff --git a/docs/en/modules/admin/pages/templates/block_users.adoc b/docs/en/modules/admin/pages/templates/block_users.adoc new file mode 100644 index 0000000000..0cf819ca74 --- /dev/null +++ b/docs/en/modules/admin/pages/templates/block_users.adoc @@ -0,0 +1,58 @@ += Block user messages templates + +In this section, you can create, edit, and delete block user justification templates, that you can then use when moderating users. + +== Create a block user message template + +To create a new block user message template, you need to click the "New template" button. + +image::templates/templates_block_user_backend_form.png[Backend: new template form] + +.New questionnaire template form +|=== +|Field |Type |Description + +|Name +|Required +|Title of this template. Choose a clear title, describing precisely what the message is for, like "spam users." + +|Description +|Required +|Block user message that is used for justifying the blocking of the participant. + +|=== + +== Manage + +All the block user messages templates appear in the templates list: + +* *Template*: name of the template. +* *Created at*: date of creation. + +You can edit a template at any moment. + +=== Actions + +|=== +|Icon |Name |Definition + +|image:icons/action_edit.png[Edit template] +|Edit +|To edit the block user message. + +|image:icons/action_duplicate.png[Duplicate template] +|Duplicate +|To duplicate the template. + +|image:icons/action_delete.png[Delete template] +|Delete +|To delete the template. + +|=== + +=== Use the template + +To use the template, go to the xref:admin:moderations/reported_users.adoc[reported users] panel, and click a "Block user" icon. +You then see a page proposing you to choose a template for the justification to block this participant. + +image::templates/templates_block_user_choice.png[Backend: choose template when blocking user] diff --git a/docs/en/modules/admin/pages/templates/proposal_answers.adoc b/docs/en/modules/admin/pages/templates/proposal_answers.adoc new file mode 100644 index 0000000000..38a8ce56bf --- /dev/null +++ b/docs/en/modules/admin/pages/templates/proposal_answers.adoc @@ -0,0 +1,71 @@ += Proposal answers templates + +In this section, you can create, edit, and delete proposal answers templates, that you can then use when answering proposals. + +== Create a proposal answers template + +NOTE: To be able to create a proposal answers template, you need to have created at least one +xref:admin:components/proposals.adoc[proposals] component. + +To create a new proposal answers template, you need to click the "New template" button. + +image::templates/templates_proposal_answers_choice_component.png[Backend: Proposal component choice for template] + +Choose the participatory space and component for which you want to create proposal answers to see the template answer form. + +image::templates/templates_proposal_answers_backend_form.png[Backend: new proposal answer template form] + +.New proposal answer template form +|=== +|Field |Type |Description + +|Name +|Required +|Title of this answer template. Choose a clear title, describing precisely what the answer is for, like "accepted proposal". + +|Description +|Required +|Content of the answer provided to the proposals for which you choose this template. You can use variables in your answer. + +|Proposal state +|Required +|By default, you can choose Evaluating, Accepted, or Rejected. + +|=== + +== Manage + +All the templates appear in the proposal answers templates list: + +* *Template*: name of the proposal answer template. +* *Internal state*: state given to proposals when using this template. +* *Add constraint*: proposal component where you can use this template. +* *Created at*: date of creation. + +You can edit a template and its fields at any moment. + +=== Actions + +|=== +|Icon |Name |Definition + +|image:icons/action_edit.png[Edit template] +|Edit +|To edit the proposal answer. + +|image:icons/action_duplicate.png[Duplicate template] +|Duplicate +|To duplicate the template. + +|image:icons/action_delete.png[Delete template] +|Delete +|To delete the template. + +|=== + +=== Use the template + +To use the template, go to one of the proposal component for which you created a proposal answer template, and click an "Answer" icon. +You can choose an answer template to fill the answer field. + +image::templates/templates_proposal_answers_choice.png[Backend: choose template when answering proposal] diff --git a/docs/en/modules/admin/pages/templates/questionnaires.adoc b/docs/en/modules/admin/pages/templates/questionnaires.adoc new file mode 100644 index 0000000000..d3162a2867 --- /dev/null +++ b/docs/en/modules/admin/pages/templates/questionnaires.adoc @@ -0,0 +1,76 @@ += Questionnaires templates + +In this section, you can create, edit, and delete questionnaire templates, that you can then use in any survey component. + +== Create a questionnaire template + +To create a new questionnaire template, you need to click the "New template" button. + +image::templates/templates_questionnaires_backend_form.png[Backend: new template form] + +.New questionnaire template form +|=== +|Field |Type |Description + +|Name +|Required +|Title of this template. Choose a clear title, describing precisely what the survey is for, like "feedback survey." + +|Description +|Required +|Description of what the template is made for. This description is only available in the templates panel, to describe precisely what +the survey is for. + +|=== + +Click the "Save" button to continue creating your template questionnaire. + +image::templates/templates_questionnaires_backend_survey_form.png[Backend: new survey template form] + +Then, click the "Edit" button. You enter the survey creation process. Click the "Skip" button if you don't want to use an existing template. + +On the next page, you can create a survey. Please refer to the xref:admin:components/surveys.adoc[Surveys] documentation for more information. + +Click the "Save" button to see a preview of your survey. + +image::templates/templates_questionnaires_backend_survey_preview.png[Backend: new survey template preview] + +Click on the "Save" button again to save your template. + +== Manage templates + +All the templates appear in the questionnaire templates list: + +* *Template*: name of the template. +* *Questionnaire Title*: name of the survey by default when choosing this template. +* *Number of questions*: number of different questions in the survey. +* *Created at*: date of creation. + +You can edit a template and its questions at any moment. Also, please note that when you choose a template when creating a survey, +you can also change the questions, add some or delete some for this specific component. + +=== Actions + +|=== +|Icon |Name |Definition + +|image:icons/action_edit.png[Edit template] +|Edit +|To edit the template and the survey questions. + +|image:icons/action_duplicate.png[Duplicate template] +|Duplicate +|To duplicate the template. + +|image:icons/action_delete.png[Delete template] +|Delete +|To delete the template. + +|=== + +=== Use the template + +To use the template, create a xref:admin:components/surveys.adoc[survey] component in a participatory space, then edit it. +You then see a page proposing you to choose a template for this survey. + +image::templates/templates_questionnaires_survey_choice.png[Backend: choose template when creating survey] diff --git a/docs/en/modules/admin/partials/components_list.adoc b/docs/en/modules/admin/partials/components_list.adoc new file mode 100644 index 0000000000..8cb751f310 --- /dev/null +++ b/docs/en/modules/admin/partials/components_list.adoc @@ -0,0 +1,16 @@ + +The platform currently have the following official components: + +* xref:admin:components/accountability.adoc[*Accountability*]: allows to keep track of ongoing projects. +* xref:admin:components/blog.adoc[*Blog*]: allows administrators to publish blog posts and news. +* xref:admin:components/budgets.adoc[*Budgets*]: allows participants to vote for projects with amounts predefined, for +participatory budgeting for example. +* xref:admin:components/debates.adoc[*Debates*]: allows participants to have debates. +* xref:admin:components/meetings.adoc[*Meetings*]: in person or online gatherings, agenda, minutes, etc. +* xref:admin:components/pages.adoc[*Page*]: static pages with multi-language support. +* xref:admin:components/proposals.adoc[*Proposals*]: contributions posted by participants. +* xref:admin:components/sortitions.adoc[*Sortitions*]: allows to randomly selected proposals. +* xref:admin:components/surveys.adoc[*Survey*]: for conducting surveys with different kinds of questions. + +NOTE: In the cases where your needs aren't covered by one of those components, +you can create your own component through a xref:develop:modules.adoc[Module]. diff --git a/docs/en/modules/admin/partials/deprecated.adoc b/docs/en/modules/admin/partials/deprecated.adoc new file mode 100644 index 0000000000..ceaa4f0f37 --- /dev/null +++ b/docs/en/modules/admin/partials/deprecated.adoc @@ -0,0 +1,4 @@ +[CAUTION] +==== +This feature is deprecated and will be removed in the future. If you really depend in this feature and can't find an alternative way of working with this, please put in touch with us at hola [at] decidim [dot] +==== \ No newline at end of file diff --git a/en/modules/admin/partials/development.adoc b/docs/en/modules/admin/partials/development.adoc similarity index 100% rename from en/modules/admin/partials/development.adoc rename to docs/en/modules/admin/partials/development.adoc diff --git a/docs/en/modules/admin/partials/legacy.adoc b/docs/en/modules/admin/partials/legacy.adoc new file mode 100644 index 0000000000..22c10a6058 --- /dev/null +++ b/docs/en/modules/admin/partials/legacy.adoc @@ -0,0 +1,4 @@ +[CAUTION] +==== +This section hasn't been updated. It shows the content of an old version of Decidim. You can collaborate to improving the Documentation, please put in touch with us at hola [at] decidim [dot] org +==== \ No newline at end of file diff --git a/docs/en/modules/admin/partials/page_admins.adoc b/docs/en/modules/admin/partials/page_admins.adoc new file mode 100644 index 0000000000..613b3140f0 --- /dev/null +++ b/docs/en/modules/admin/partials/page_admins.adoc @@ -0,0 +1,103 @@ += Space administrators + +== Understand the basics + +You can give specific permissions to users in the different spaces, so they can only have access to some of the administration actions. +These roles are administrators, moderators, collaborators, and valuators. + +* *Administrators*: they can administer the space and change the space settings. +* *Collaborators*: they can see the space and its components before it's published and view the space settings. +They can't edit anything. +* *Moderators*: they can see the reported contents of the space and hide or unhide it. +* *Valuators*: they can evaluate proposals, give them answers and update their statuses. + +== How to find it? + +To configure space administrators, click the "Process admins" or "Assembly admins" item in the corresponding space. + +image::spaces/admins_list.png[Administrators of space] + +== Manage admins + +You can find all the administrators on the list in the administration panel, with: + +* *Name*: name of the administrator account. +* *Email*: email of the administrator account. +* *Last log in date*: last time the administrator was logged in. +* *Invitation accepted at*: date when the administrator accepted the invitation by clicking the link in the invitation email. +* *Role*: administrator role. + +== Actions + +.Components actions in component list +[cols="20h,10h,~"] +|=== +|Icon |Name |Definition + +|image:icons/action_edit.png[Edit icon] +|Edit +|To edit the administrator role. + +|image:icons/action_delete.png[Delete icon] +|Delete +|To delete the space administrator rights. It doesn't delete the account of the administrator. + +|=== + +== Add a space administrator + +Click on the *New space admin* button (depending in the kind of space you're in). + +image:spaces/admins_form.png[New space administrator form] + +.New space administrator form +[cols="20h,10h,~"] +|=== +|Field |Type |Description + +|Name +|Required +|What's the name of the new administrator. + +|Email +|Required +|What's the email of the new administrator, so they can receive an invitation if they don't already have an account. + +|Role +|Required +|Which role does this administrator should have in the space. Can be any of Administrator, Collaborator, Moderator, or Valuator. +|=== + +== Roles + +=== Administrators + +A space administrator can administer the space and change the space settings. They can also invite new space administrators. +When managing the space, they would only see the following views and tabs. + +image:spaces/admins_role_admin01.png[Process administrators view 01] + +image:spaces/admins_role_admin02.png[Process administrators view 02] + +=== Collaborators + +A space collaborator can preview a space before it's published. + +image:spaces/admins_role_collaborator.png[Process collaborators view] + +=== Moderators + +A space moderator can review the reported contents of the space and hide or unhide them. They can also +access the reported content in the global moderation panel, but don't see the contents reported from other spaces. + +image:spaces/admins_role_moderator.png[Process moderators view] + +=== Valuators + +A space valuator can review the proposals of the space that were assigned to them, by: + +* change the status of the proposals, by accepting or rejecting them. +* give an answer to the proposals. +* add a monetary value to the proposals, so they can be voted with the budget component. + +image:spaces/admins_role_valuator.png[Process valuators view] diff --git a/docs/en/modules/admin/partials/page_attachments.adoc b/docs/en/modules/admin/partials/page_attachments.adoc new file mode 100644 index 0000000000..7f5b1c3544 --- /dev/null +++ b/docs/en/modules/admin/partials/page_attachments.adoc @@ -0,0 +1,108 @@ += Attachments + +== Understand the basics + +Attachments allow an administrator to upload static files to a space. + +When a space is launched, it is important to provide citizens with as much information as possible about them so that they can participate with knowledge. +That is why it is helpful to add files, documents, images with relevant information. + +These documents can be grouped in *Folders*. For example, for a participatory process of remodeling a square, folders could be created with information about possible uses, with plans, with economic information, etc. + +They can be found on the space xref:admin:spaces/processes/categories.adoc[landing page] when the content block is enabled. + +image:spaces/attachments.png[View the attachments in the public interface] + +== How to find it? + +To create and manage attachments, click the *Attachments* item in the left navigation bar of any participatory space. + +image:spaces/attachments_admin.png[View the attachments in the administration interface] + +There, you are able to manage the attachments and folders, configure them, add new ones, etc. + +== Create a new attachment + +To create a new attachment, click the "New attachment" button. + +image:spaces/attachments_new_form.png[Create a new attachment form] + +.Create attachment +[cols="20h,10h,~"] +|=== +|Field |Type |Description + +|Attachment or image name +|Required +|What is the title for this attachment. + +|Order position +|Optional +|Which order it has in relation to the other attachments. Having a lower number means a higher priority. For instance, if you have two categories, "Attachment a" with weight "10" and "Attachment b" with weight "0" then "Attachment b" will be first when ordering. + +|Description +|Required +|A long description explaining what this attachment is about. + +|Folder +|Optional +|Which folder this attachment belongs to. + +|File +|Required +|Upload the file. Guidance for file: Has to be an image or a document. Maximum file size: 10 MB. Allowed +file extensions depends in your server configuration. +|=== + +== Create a new folder + +image:spaces/attachments_folders_admin.png[View the folders in the administration interface] + +To create and manage attachments folders, click the *Folders* tab. + +image:spaces/attachments_new_folder_form.png[Create a new folder for attachments form] + +.Create folder +|=== +|Field |Type |Description + +|Name +|Required +|Name of the folder + +|Order position +|Optional +|Which order it has in relation to the other folders. Having a lower number means a higher priority. For instance, if you have two folders, "Folder a" with weight "10" and "Folder b" with weight "0" then "Folder b" will be first when ordering. + +|Description +|Required +|A long description explaining what this folder is about. +|=== + +== Manage attachments + +You can find all the attachments on the list in the administration panel, with: + +* *Title*: title of the attachment, given when creating or editing it. +* *Folder*: folder where the attachment is stored. +* *Type*: extension type of the attachment. +* *Size*: size of the attachment in bites. + +You can also access the folders list by clicking the "Folders" tab on top of the attachments list. + +== Actions + +.Components actions in component list +[cols="20h,10h,~"] +|=== +|Icon |Name |Definition + +|image:icons/action_edit.png[Edit icon] +|Edit +|To edit the name, description, order position and the folder of the attachment. + +|image:icons/action_delete.png[Delete icon] +|Delete +|To delete the attachment. + +|=== \ No newline at end of file diff --git a/docs/en/modules/admin/partials/page_categories.adoc b/docs/en/modules/admin/partials/page_categories.adoc new file mode 100644 index 0000000000..49cb064844 --- /dev/null +++ b/docs/en/modules/admin/partials/page_categories.adoc @@ -0,0 +1,75 @@ += Categories + +== Understand the basics + +Categories (and subcategories) are used for classifying resources inside of a space. + +An administrator can define them, can be assigned to when creating resources, and then participants can filter the +different resources by these categories. For instance, they can be used in proposals, meetings, and debates. + +. Administrators define categories in a space. +. Participants can create resources and give them a category. +. Participants can then filter by categories. + +image::spaces/categories_sidebar.png[Filter categories in proposals] + +NOTE: Once a category is in use it can't be deleted, as there are resources that are linked to it. + +Decidim has other ways to classify resources, for instance xref:admin:scopes.adoc[Scopes] and xref:admin:features/hashtags.adoc[Hashtags]. +The main difference is that Categories can be defined in a given space, Scopes are global for all the platform, and Hashtags +can be defined by the participants. + +Categories can be nested, meaning that a category can have subcategories. + +== How to find it? + +To configure categories, click the *Categories* item in any participatory space. + +image::spaces/categories.png[View categories in a space administration page] + +== Create a new category + +Click in "New category" button on the top right. + +image:spaces/categories_new_form.png[Create a new category form] + +.Create category form +[cols="20h,10h,~"] +|=== +|Field |Type |Description + +|Name +|Required +|What is the name for this category. + +|Order position +|Optional +|Which order it has in relation to the other categories. Having a lower number means a higher priority. For instance, if you have two categories, "Category a" with weight "10" and "Category b" with weight "0" then "Category b" is first when ordering. + +|Parent +|Optional +|What is the parent category. +|=== + +== Manage categories + +You can find all the categories on the list in the administration panel, with: + +* *Name*: name of the category, given when creating or editing it by the administrator. + +== Actions + +.Components actions in component list +[cols="20h,10h,~"] +|=== +|Icon |Name |Definition + +|image:icons/action_edit.png[Edit icon] +|Edit +|To edit the name, the order position and the parent of the category. + +|image:icons/action_delete.png[Delete icon] +|Delete +|To delete the category. A category can't be deleted if it has resources attached to it. + +|=== diff --git a/docs/en/modules/admin/partials/page_components.adoc b/docs/en/modules/admin/partials/page_components.adoc new file mode 100644 index 0000000000..691aa84647 --- /dev/null +++ b/docs/en/modules/admin/partials/page_components.adoc @@ -0,0 +1,80 @@ += Components + +== Understand the basics + +As explained in the xref:admin:index.adoc[introduction page], to understand how Decidim works, you need to distinguish between *spaces* and *components*. +The participatory spaces are the channels that citizens can participate through when public decisions are being taken, whereas participatory components are +mechanisms that enable interaction between users of the platform and the various participatory spaces. + +All components can be enabled in each space, for example you can enable three Proposals components in a same participatory process, or having all the +components enabled in an assembly space. + +include::partial$components_list.adoc[] + +== How to find it? + +To configure components, click the *Components* item in any participatory space. + +image::spaces/components/components.png[Components of space] + +There, you are able to manage the already added components, configure them, add new ones, etc. + +== Manage components + +You can find all the components on the list in the administration panel, with: + +* *Component name*: title of the component, given when creating or editing it. +* *Component type*: type of the component. +* *Component scope*: in a same space, components can have different scopes. + +== Create a component + +To configure a new component, click the *Add component* from the upper right part of the screen and select the type of +component you want. + +image::spaces/components/components_new_dropdown.png[Add a component in a space] + +== Actions + +.Components actions in component list +[cols="20h,10h,~"] +|=== +|Icon |Name |Definition + +|image:icons/action_edit.png[Manage icon] +|Manage +|To manage all the resources inside of a component. For instance, all the Proposals of a Proposal component, the Meetings +in a Meeting component, etc. + +|image:icons/action_share.png[Share icon] +|Share +|To share privately before publishing this component. Useful for getting reviews from other people of your organization. + +|image:icons/action_configure.png[Configure icon] +|Configure +|To configure a component with specific rules, for instance, in the case of Meetings: +are comments enabled, participants can create meetings or not, etc. + +|image:icons/action_publish.png[Publish icon] +|Publish +|To publish a component. This means that the component is then visible to the public. + +|image:icons/action_unpublish.png[Unpublish icon] +|Unpublish +|To unpublish a component. This means that the component is then invisible to the public. + +|image:icons/action_preview.png[Preview icon] +|Preview +|To preview the space before it's published. + +|image:icons/action_permissions.png[Permissions icon] +|Permissions +|To configure which xref:customize:authorizations.adoc[Authorization] is necessary to make certain actions in +this component. For instance, in the case of Proposals, which Verification is needed to create a new proposal or +to give supports. + +|image:icons/action_delete.png[Delete icon] +|Delete +|To delete this component. If there are content inside, most of the components don't let you delete them so it doesn't break +relations with other resources. In those cases it's recommended to just unpublish the component. +|=== diff --git a/docs/en/modules/admin/partials/page_landing_page.adoc b/docs/en/modules/admin/partials/page_landing_page.adoc new file mode 100644 index 0000000000..c7f4567c45 --- /dev/null +++ b/docs/en/modules/admin/partials/page_landing_page.adoc @@ -0,0 +1,154 @@ += Landing page + +== Understand the basics + +Each process and assembly has a landing page, with different content blocks that can be added, deleted, enabled, ordered, and configured, +just as the xref:admin:homepage.adoc[Homepage] content blocks. + +In order to organize a landing page, enter the space and click the landing page item in the left navigation bar. +You are redirected to the landing page configuration panel. + +. Add different content blocks by clicking the "Add content block" button, and choose the one you want to add. +. Configure the content block when it's possible. +. Finally, move the content block in the active content blocks column to make it appear on the homepage. + +image::spaces/landing_page/landing_page_admin.png[Landing page content blocks] + +== Landing page content blocks + +Below, you'll find all the content blocks configuration guides and screenshots of how there are displayed on the homepage. + +=== Hero image and CTA + +The Hero image and CTA content blocks allow to display in the space landing page: + +* *title*: the space title. +* *hashtag*: the space hashtag redirecting to the X platform. +* *subtitle*: the space subtitle. +* *a call to action button*: by default, the button isn't display. To enable it, click the "Edit" icon of the content block. +* *an image*: the downloaded image is displayed with an opacity filter, to make sure the text is readable. + +image::spaces/landing_page/hero_admin.png[Landing page content Hero image content block form] + +.Admin hero image and CTA landing page content block form +|=== +|Field |Type |Description + +|Call To Action text +|Optional +|Text displayed on the CTA button. + +|Call To Action URL +|Optional +|URL where the button redirects participants. Can be an external URL, or a slug if inside the space. + +|Image +|Optional +|Image displayed in the content block background. Preferably a landscape image that does not have any text + +|=== + +image::spaces/landing_page/hero_front.png[Landing page content Hero image content block frontend] + +=== Announcement + +The announcement block display the content of the announcement field from the space configuration, in a announcement blue box. +It allows administrators to highlight important information. + +image::spaces/landing_page/announcement_front.png[Landing page content Announcement content block] + +=== Main data + +The main data block displays the short description and description of the space, and for assemblies, the purpose of action and composition. + +image::spaces/landing_page/main_data.png[Landing page content Main data content block] + +=== Phase / type & duration + +The phase & duration block displays the process start and end date, and the current xref:admin:spaces/processes/phases.adoc[phase] of processes. +For assemblies, it displays the duration of the assembly. + +image::spaces/landing_page/duration.png[Landing page content Phase and duration content block] + +=== Metadata + +The metadata block displays all the metadata fields entered in the space configuration. + +image::spaces/landing_page/metadata.png[Landing page content Metadata content block] + +=== Last activity + +The last activity block shows the last activities of the space, blog posts, comments, debates, etc. +You can configure the number of avatars displayed next to the title. + +image::spaces/landing_page/activities.png[Landing page content Last activity content block] + +=== Statistics + +image::spaces/landing_page/statistics.png[Landing page content Statistics content block] + +=== Metrics + +image::spaces/landing_page/metrics.png[Landing page content Metrics content block] + +=== Related processes + +image::spaces/landing_page/processes.png[Landing page content Related processes content block] + +You can configure the number of processes to display in this content block by clicking the "Edit" button on the content block. + +image::spaces/landing_page/processes_admin.png[Landing page content Related processes content block] + +=== Related assemblies + +image::spaces/landing_page/assemblies.png[Landing page content Related assemblies content block] + +You can configure the number of assemblies to display in this content block by clicking the "Edit" button on the content block. + +image::spaces/landing_page/assemblies_admin.png[Landing page content Related assemblies content block] + +=== Related documents + +The related documents allows administrator to display the xref:admin:spaces/processes/attachments.adoc[Attachments] on the landing page, except images. + +image::spaces/landing_page/documents.png[Landing page content Related documents content block] + +=== Related images + +The related images allows administrator to display the images xref:admin:spaces/processes/attachments.adoc[Attachments] on the landing page. + +image::spaces/landing_page/images.png[Landing page content Related images content block] + +=== Upcoming meetings + +The upcoming meetings allows administrator to display the upcoming xref:admin:spaces/components/meetings.adoc[Meetings] on the landing page with a map when they have a location. +You can configure the component to take the meetings from by clicking the Edit button of the content block. + +image::spaces/landing_page/meetings.png[Landing page content meetings content block] + +=== Posts + +The posts content block allows administrator to display the last posts published on the space, with their images if they were added as attachments to the posts. +You can configure the component to take the posts from by clicking the Edit button of the content block. + +image::spaces/landing_page/posts.png[Landing page content posts content block] + +=== Proposals + +The proposals allow to display a sample of proposals on the space landing page. + +image::spaces/landing_page/proposals.png[Landing page content proposals block edition] + +You can configure the display order and the Proposal component by clicking the Edit button of the content block. + +image::spaces/landing_page/proposals_admin.png[Landing page proposals content block] + +=== Results + +image::spaces/landing_page/results.png[Landing page results content block] + +You can configure the display order and the Accountability to take the results from component by clicking the Edit button of the content block. + +=== HTML + +The HTML block content block allows to add an editable HTML block on the landing page, and therefore to create a personalized section. \ No newline at end of file diff --git a/docs/en/modules/admin/partials/page_moderations.adoc b/docs/en/modules/admin/partials/page_moderations.adoc new file mode 100644 index 0000000000..881e6eb0a6 --- /dev/null +++ b/docs/en/modules/admin/partials/page_moderations.adoc @@ -0,0 +1,7 @@ += Moderation + +Moderations inside of a space work like xref:global_moderations.adoc[Global moderations]. + +The main difference is that if you can invite Moderators of this specific space in the +xref:admin:spaces/processes/admins.adoc[space admins] section, so they only have access to the reports made for +contents of this space. diff --git a/docs/en/modules/admin/partials/page_private_participants.adoc b/docs/en/modules/admin/partials/page_private_participants.adoc new file mode 100644 index 0000000000..b8125c434f --- /dev/null +++ b/docs/en/modules/admin/partials/page_private_participants.adoc @@ -0,0 +1,96 @@ += Private participants + +== Understand the basics + +In some cases, you might want to restrict the participation to a specific group of participants. +For instance this could be a space dedicated to the members of a commission in a big organization. +For these cases you can use the private participants feature. + +NOTE: Private participants list can only be reviewed in the administration panel, and is not publicly displayed. + +== How to find it? + +NOTE: Private participants are only available in private spaces. To enable them, make sure you tick the "Private space" checkbox when +creating or editing your process or assembly. + +To create and manage private participants, click the *Private participants* item in the left navigation bar of the space. + +image::spaces/private_participants.png[Private participants list] + +There, you are able to manage the private participants, import them in a batch, add new ones manually, etc. + +== Invite a private participant + +Click on the "New participatory space private user" button. + +image:spaces/private_participants_new_form.png[New private participant form] + +.New participatory space private user form +|=== +|Field |Type |Description + +|Name +|Required +|The name of the new private participant. + +|Email +|Required +|The email of the new private participant. + +|=== + +== Import via CSV + +Click on the "Import via CSV" button. + +image::spaces/private_participants_csv_import.png[Import private participants via CSV] + +This form allows you to delete all private participants access at once, and to bulk import via CSV. + +The CSV must follow the following formatting: + +* The file must have two columns, first one being emails and the second one being names of the participants you want to import. +* The file should not have headers. That means that you do not have to add a column that says "email, name" +* You must avoid using invalid chars like `<>?%&^*#@()[]=+:;"{}\|` in user name. +* The separator between columns must be a comma (","). + +== Invitation + +NOTE: If the email is already linked to an account on the instance, the participant is already able to participate in the space +and won't receive an invitation email. + +When a participant is added to the private participant list, but doesn't already have an account, they get an email +with a link for accepting the invitation: + +image::spaces/private_participants_email_invite.png[Email invitation of a private participant] + +After clicking in the "Accept invitation" link in the email, they are redirected to the instance and have to finish creating +their account by setting their nickname, password and accepting the Terms of Service. + +image::spaces/private_participants_user_registration_form.png[User registration form of a private participant] + +== Manage private participants + +You can find all the private participants on the list in the administration panel, with: + +* *Name*: name of the private participant. If the account already exists, it is automatically changed for the account username. +* *Email*: email of the participant. +* *Invitation sent at*: date and hour when the invitation email was sent (when participant doesn't already have an account). +* *Invitation accepted at*: date and hour when the invitation email was accepted by the participant. + +You can sort the list by clicking on the columns header, filter it and search for participants by their name or email. + +== Actions + +|=== +|Icon |Name |Definition + +|image:icons/action_resend.png[Resend invitation] +|Resend invitation +|If the invitation wasn't accepted, send it again to the participant. + +|image:icons/action_delete.png[Delete] +|Delete invitation +|Revoke the access granted to the participant. + +|=== diff --git a/en/modules/admin/partials/under-construction.adoc b/docs/en/modules/admin/partials/under-construction.adoc similarity index 100% rename from en/modules/admin/partials/under-construction.adoc rename to docs/en/modules/admin/partials/under-construction.adoc diff --git a/docs/en/modules/contribute/assets/images/documentation-edit.png b/docs/en/modules/contribute/assets/images/documentation-edit.png new file mode 100644 index 0000000000..3117188791 Binary files /dev/null and b/docs/en/modules/contribute/assets/images/documentation-edit.png differ diff --git a/en/modules/contribute/assets/images/translation-bot.png b/docs/en/modules/contribute/assets/images/translation-bot.png similarity index 100% rename from en/modules/contribute/assets/images/translation-bot.png rename to docs/en/modules/contribute/assets/images/translation-bot.png diff --git a/en/modules/contribute/assets/images/translation-join-01.png b/docs/en/modules/contribute/assets/images/translation-join-01.png similarity index 100% rename from en/modules/contribute/assets/images/translation-join-01.png rename to docs/en/modules/contribute/assets/images/translation-join-01.png diff --git a/en/modules/contribute/assets/images/translation-join-02.png b/docs/en/modules/contribute/assets/images/translation-join-02.png similarity index 100% rename from en/modules/contribute/assets/images/translation-join-02.png rename to docs/en/modules/contribute/assets/images/translation-join-02.png diff --git a/en/modules/ROOT/assets/images/workflow-features.png b/docs/en/modules/contribute/assets/images/workflow-features.png similarity index 100% rename from en/modules/ROOT/assets/images/workflow-features.png rename to docs/en/modules/contribute/assets/images/workflow-features.png diff --git a/docs/en/modules/contribute/pages/documentation.adoc b/docs/en/modules/contribute/pages/documentation.adoc new file mode 100644 index 0000000000..c68a47203a --- /dev/null +++ b/docs/en/modules/contribute/pages/documentation.adoc @@ -0,0 +1,19 @@ += Documentation + +To contribute to the documentation (for instance, this same page that you're reading), you can do it through two ways: editing on GitHub directly or editing locally. + +== Edit on GitHub + +This is the recomended way if you just want to make a quick fix (for instance, a typo or some clarification on a single page). For doing this you'll need to click in the "Edit this page" link in the top of every page. + +image::documentation-edit.png[Edit this page link] + +It'll open the page for editing in GitHub interface and after you've finished it'll guide you to make a Pull Request so maintainers can review your contribution. + +== Edit locally + +If you want to propose lots of changes in the documentation, or if you want to review your changes locally before sending them because you want to review things like formatting, you can install the environment for having the documentation site locally. + +Then you'll need to fork the repository, make a branch and propose your changes as a Pull Request so maintainers can review it. As you see this can be a hassle if you want to make small changes, so the prefered way would be to do it initially with the "Edit this page" link mehod. + +Read the full instructions on how to install this documentation website locally in the https://github.com/decidim/documentation/[Decidim Documentation GitHub repository]. diff --git a/docs/en/modules/contribute/pages/governance.adoc b/docs/en/modules/contribute/pages/governance.adoc new file mode 100644 index 0000000000..c848cd3fb5 --- /dev/null +++ b/docs/en/modules/contribute/pages/governance.adoc @@ -0,0 +1,45 @@ += Governance + +== About the code + +For making new features, you can made a https://decidim.org/modules[new module] for your own application. If you want to publish it on the website, you can https://decidim.org/contact[send us an message]. + +If you want to add a new feature or a change on the codebase, the process is: + +. Suggest your change in https://meta.decidim.barcelona/processes/roadmap[Metadecidim] +. Wait until Product Team reviews and accept the feature, as it's important to be consistent with the rest of the software, comply with the Social Contract, etc. +. Then you can make the Pull Request. +. The PR will get reviewed by: +.. Product Team: will review the functionality +.. Mantainers: will review the code quality + +image::workflow-features.png[new feature workflow process] + +Some things that you need to take in account about this process: + +* If you make the PR without Product Team approval then you could get rejected (after investing lots of time on developing). +* Proposals can receive endorsements, although these are not decisive for a proposal to be included on the roadmap. The endorsements serve as indicators of the interest of the proposal or the need it covers. The comments to the proposals are also enabled, to collectively elaborate the initial idea and bring it to a productive result. +* Every Thursday the Product team reviews all new proposals that have been published the previous week +* If no funding is available it is included in the backlog of the corresponding component or module. + +== About the organization + +Decidim was initially created by the city of Barcelona, but quickly it evolved through the help of Localret and other entities and administrations from Catalonia, such as Diputació de Barcelona (Barcelona Provincial Government), and other catalan cities: Terrassa, Sabadell, Gavà, L'Hospitalet de Llobregat, Badalona and Sant Cugat. You can read more about the history in xref:understand:about.adoc[About]. + +Since our first version in 2017 we've detected that it's necessary for the sustainability of the project to not depend in a given institution such as the city of Barcelona, as that could be problematic for the future. Other open source projects made by public institutions that didn't have a strong community or a sustainability strategy get shut down or slowly die without funding. + +Making this kind of open source software from the public institutions and through public contracting law is really difficult and one other issue that we want to tackle with this new organization is about having resources for contracting in-house developers. + +With all this on mind, we started with the https://meta.decidim.org/processes/decidim-gov[Metadecidim Governance participatory process] starting in November 2017: + +**** +A process open to the entire Community regarding the decision-making and representative bodies that we must equip ourselves with in order to build an autonomous, transparent and democratic organisation for the Decidim Project. + +The objective is to define an organizational and representation system (internal organs and how they are chosen) that can be transformed into an autonomous entity or association from which the whole community participates and can manage the project at multiple levels + +The Decidim project needs a system of its own governance that allows it to enjoy sufficient autonomy to continue growing in a sustainable manner, which is why it has to be provided with decision-making and conflict resolution bodies. +**** + +As a result of this participatory process, on February 2019 the Decidim Free Software Association (_Associació de Software Lliure Decidim_ in catalan) was created. You can read more about the https://meta.decidim.org/assemblies/general-assembly-association[General Assembly of the Decidim Association]. + +On 2021, the Decidim Association https://decidim.org/blog/2021-02-09-the-government-of-catalonia-barcelona-city-council-and-the-free-software-association-decidim-sign-a-collaboration-agreement-to-promote-democratic-participation-with-free-and-open-technologies/[has signed a collaboration agreement with the Government of Catalonia and Barcelona City Council to promote the development of the platform]. diff --git a/docs/en/modules/contribute/pages/index.adoc b/docs/en/modules/contribute/pages/index.adoc new file mode 100644 index 0000000000..2ece212f20 --- /dev/null +++ b/docs/en/modules/contribute/pages/index.adoc @@ -0,0 +1,10 @@ += Contribute + +You don't need to know how to code to contribute to Decidim, just having available time and attitude. + +Learn more about https://github.com/decidim/decidim/blob/develop/CONTRIBUTING.adoc[How to contribute to Decidim] in GitHub. + +* xref:contribute:governance.adoc[Governance] +* xref:contribute:translations.adoc[Translations] +* xref:contribute:documentation.adoc[Documentation] + diff --git a/en/modules/contribute/pages/translations.adoc b/docs/en/modules/contribute/pages/translations.adoc similarity index 100% rename from en/modules/contribute/pages/translations.adoc rename to docs/en/modules/contribute/pages/translations.adoc diff --git a/docs/en/modules/features/assets/images/.gitkeep b/docs/en/modules/features/assets/images/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/en/modules/features/assets/images/card-anatomy.png b/docs/en/modules/features/assets/images/card-anatomy.png similarity index 100% rename from en/modules/features/assets/images/card-anatomy.png rename to docs/en/modules/features/assets/images/card-anatomy.png diff --git a/en/modules/features/assets/images/functional-architecture-en.svg b/docs/en/modules/features/assets/images/functional-architecture-en.svg similarity index 100% rename from en/modules/features/assets/images/functional-architecture-en.svg rename to docs/en/modules/features/assets/images/functional-architecture-en.svg diff --git a/en/modules/features/assets/images/spaces-components.png b/docs/en/modules/features/assets/images/spaces-components.png similarity index 100% rename from en/modules/features/assets/images/spaces-components.png rename to docs/en/modules/features/assets/images/spaces-components.png diff --git a/docs/en/modules/features/pages/components.adoc b/docs/en/modules/features/pages/components.adoc new file mode 100644 index 0000000000..9e144854e3 --- /dev/null +++ b/docs/en/modules/features/pages/components.adoc @@ -0,0 +1,182 @@ += Components +:page-partial: + +*Components* are participatory mechanisms that allow interactions among the platform Participants within each of the Participatory Spaces. + +== Proposals + +*Proposals* are Decidim's most important component. They can be defined as the minimum decision unit. + +Proposals can be made by any of the following *types of creators*: + +* by the *official organisation* managing the platform +* by registered *individual participants* +* by a *group* of registered participants +* from a *meeting* as a result of a discussion or collective deliberation + +Once a proposal has been published, it can be *moderated*, *amended* or *withdrawn* by its author(s). + +Proposals can be *accepted*, *rejected* or kept in an *evaluating* state. Proposals can also be imported to a new phase, so they can be re-written or elaborated in different stages. + +Other features associated with proposals include: + +* *Proposal creation wizard*: While a proposal is being created, the participant is accompanied through the process, which is divided into different steps, with contextual help and previews before the proposal is published. +* *Modification and withdrawal of proposals*: a proposal’s author can modify and/or withdraw it before the support stage opens. +* *Version control*: this makes it possible to keep a record of all the changes made to a proposal, as well as code-generation to verify the proposal’s integrity. +* *Detecting similarities*: This allows anyone making a new proposal to find similar ones previously made on the platform, thereby avoiding duplications. +* *Connections between proposals*: proposals made can be connected to one another using links in the comments section, showing related proposals as cards and giving notifications on the existence of a new connection. +* *Endorsement of proposals*: participants and collectives can endorse proposals and such public endorsement will be shown within the proposal. Followers of the endorsers will be notified that the followed endorsed the proposal. +* *Amendments*: any participant can edit a proposal’s text and a sub-proposal will be created in Amendment Mode (as Pull Request in Github). This sub-proposal can gather endorsements and supports. Besides, the proposal’s author can accept or reject the amendment (or sub-proposal). Where a sub-proposal is rejected, its author can convert it into an official proposal. +* *Collaborative draft for proposals*: Decidim permits collaboration and co-creation over proposals. It incorporates the following features: +** Creating rough drafts with numerous authors. +** Listing of collaborative drafts +** Comments in drafts +** Asking for help from and accepting the help of other collaborators + +== Endorsements + +include::admin:partial$development.adoc[] + +Participants can endorse proposals. Such endorsements can be interpreted as votes, signatures or any other format that demonstrates a positive agreement in accordance with the political will itself. +Participants can issue a single endorsement for each proposal they wish. The number of endorsements can be limited for each participant. +There is no limit to the number of proposals that can be endorsed. + +If the endorsement is a vote, it is possible to configure from the administration panel the *display settings for the voting results*, either during or solely after the voting period. + +There is a *special form used to vote for participatory budgets* which allows participants to vote by "spending" an amount equivalent to the budget in question among the proposed projects. The number of votes is limited here by the selected projects’ accumulated spending amount. + +== Results + +The *results* component is used to turn proposals into results and give official responses to them. +It is possible to merge various proposals into a single result or to create different results related to the same original proposal. + +Results gather information about the original proposal(s), like the meetings where they were created, discussed and debated and the endorsements received. + +== Debates + +Discussions and debates can be opened on questions and specific issues established by administrators or participants. + +== Surveys + +The *surveys* component can be used to design and publish surveys and to display and download their results. + +* *Survey configuration tool*: allows administrators to create questions and answers (open, test types, multiple selection etc.) and launch the survey, as well as download the responses in CSV format. +* *Survey interface for participants*: allows participants to respond to survey questions. + +== Sortitions + +The *sortition* component allows to select a number of proposals (e.g. candidates for a jury) with random, yet reproducible, procedures that guarantees non-biased and uniform distributions. + +== Informative pages + +The *pages* component is used to create informative pages with rich text formatting, embedded pictures and videos. + +== Blogs + +The *blog* component makes possible the creation of posts or news associated with a participatory space, and to navigate them chronologically. + +*Comments associated* with blog entries will be treated like the platform’s other comments, as described below. + +== Newsletter + +The *newsletter* component makes possible to send emails to everyone registered in the platform or, more selectively, to those who participate in a specific space who have agreed, under the terms and conditions of use, to receive this information newsletter email. Personalised emails are sent out addressed directly to the name of the user in the language chosen by the user by default. + +Participants will automatically and directly be able to *unsubscribe* through the email itself by clicking on a link in it and it will also be possible to *track the number of visits* generated by the newsletter. + +== Meetings + +The *meeting* component offers organizations and participants the opportunity to: + +* convene meetings, defining its structure and content +* *categorise* the meeting within a space. +* create *proposals associated with meetings* +* *publish* minutes +* upload *photos* of the meeting + +Meetings relating to a participatory space (a specific process or an assembly) can be shown on a *map* and be *ordered by date or category*. Besides, all the meetings can be shown in *calendar mode*, with the possibility of exporting them to a mobile phone calendar or other apps. + +Some of the meeting component’s advanced features include: + +* *Registration and attendance system*: +** This allows to manage the *type of registration* (open and automatic, closed and accessible only to certain types of participants, etc.), to establish the **number of places **available for attendees, to reserve a place, to do *manual registrations*, sent out *Invitations*, to define the *conditions* that need to be accepted in order to be able to attend the meeting (e.g. image rights release), and *registering the attendance* of participants. +** It allows participants *to register* for a meeting, request *a family reconciliation service* (playroom, childcare space) and to obtain an *accreditation code* for attending at a meeting. +** Those registered who have attended a meeting will have *special access* enabling them to evaluate the meeting or make comments, etc. +** Participants or administrators will be able to receive *notifications* on registration-period openings, the number of places remaining for registrations, reminders of meetings, and the publication of minutes. +* *Managing agendas*: allows to define the duration of meetings, to create agenda’s items and sub-items, title, content, and estimated duration. Participants can propose agenda items. +* System for *drafting, publishing and validating meeting minutes* [IMPORTANT NOTE:This is currently implemented differently]: +** Minutes can be uploaded in video, audio or text format. +** Minutes in text mode are associated with a *collaborative writing board* integrated into Decidim. +** Minutes go through 4 *stages of preparation*: 1. Collaborative writing during the meeting; 2. Preparing the official draft of the minutes; 3. Draft-amendment stage; 4. Publication and final validation of the minutes. +** Minutes can be *commented on* using the comments component. +** *Accompanying documents* may also be added to the minutes. +* *Auto-convening*: verified participants will be able to convene meetings directly through the platform , with support from a certain number of other participants, the meeting will be publicly activated and convening participants will have access to the administration panel [IMPORTANT: not implemented yet] +* *Displaying and exporting meetings*: meetings can be displayed in map mode (for spaces or generally on the platform) or in calendar mode, and can be exported to agenda and calendar managers (in iCalendar format). + +== Search engine + +*The search engine* allows participants to perform searches across all of the platform’s indexable content, both generally and specifically, by searching within a specific participatory process or inside its components (proposals, results, etc.), through advanced searches. + +== Secondary components + +There are other components that only exist on top of basic components are. These components are: + +=== Comments + +The *comments* component enables participants to take part on a deliberative process on an issue or proposal. +Participants can respond to them, endorse them and receive notifications about responses. +Comments can be *ranked* in chronological order or by number of votes in favour. + +=== Participatory texts + +Participatory texts are defined as an ordered collection of proposals that make up a document with complete text. Participation in the text stems from interaction with the proposals that form it. This component basically allows three operations: + +* *Breaking down a text document into ordered proposals* from a document in ODT, XDOC, MarkDown and HTML formats. If the text is structured in sections and subsections, ordered proposals will be created from the lower level subsection; if the text is not structured, a proposal will be created for each paragraph of text. The interface allows proposals to be re-edited, merged, separated, given titles, etc. +* *Composition of proposals in a unified text*: based on a series of proposals, these may be ordered and generate a unified and downloadable text. +* *Viewing and interacting* with documents composed of proposals: A collection of proposals will be shown as a unified text and may be amended or comments can be added in the margin. + +=== Accountability + +The *accountability* component works like a project management system built into the platform. . It offers the possibility of: + +* subdividing results into projects or sub-projects +* defining and applying progress in implementation statuses (0% to 100% implemented) around their implementation +* displaying the extent of the results’ implementation grouped by categories and scopes + +Results, projects and statuses can be updated through a CVS, or manually by the administration interface. + +=== Conferences + +The *conference* component allows an organization to join up a series predefined meetings (chats, workshops etc.) related to a participatory space. + +Configuration settings include: + +* Conference-page generator, which enables the creation of an *internal website* with information about the event. +* The option to generate an *interactive and downloadable programme* on the event (where there are guest speakers, it will include their name, position, organisation, a small biography and links to other websites). +* Email *invitations*. +* Registration system +* *Automatic diploma and certificates of attendance creation* for those who request it, through a support panel that an administrator can verify. +* Links to the event *video and materials* platforms in the programme and documents. +* Automatic links to digital-media websites covering the event. +* The ability to following events through *social networks* (e.g. by incorporating a Twitter feed). + +== Participatory Spaces and Components + +*Participatory Spaces* and *Components* can be combined in different ways. +For example, the various phases of a Participatory Budgeting Process (Participatory Space) can combine *Components* like this: + +1. At an early phase public *Meetings* can be opened for citizens to analyze different needs classified by districts. +2. In turn these *Meetings* can lead to the design of a *Survey*. +3. The *Survey* results can then be used to define a set of categories for projects to be proposed. +4. The *Proposal* component can then be activated for Participants to create and publish their projects as solutions to the identified needs. +5. These *Proposals* can then be commented and, after two weeks of deliberation, *voting* can be activated to select among the projects with a budget-expenditure system. +6. Participants can then be called to a public *Meeting* to evaluate the results. +7. An assessment *Survey* can be launched afterwards for those who could not attend the *Meeting*. +8. Finally, the *Accountability* component may be activated to monitor the degree of execution of the selected projects, and people can comment on it. + +== Displaying components: Cards + +Component items have their individual page but are also displayed as *cards* throughout the platform. + +[#card-anatomy-fig] +._Decidim's proposal card anatomy._ +image::card-anatomy.png[] diff --git a/docs/en/modules/features/pages/general-description.adoc b/docs/en/modules/features/pages/general-description.adoc new file mode 100644 index 0000000000..1659edd73a --- /dev/null +++ b/docs/en/modules/features/pages/general-description.adoc @@ -0,0 +1,63 @@ += General description and introduction to how Decidim works +:page-partial: + +http://decidim.org[Decidim], from the Catalan for "let's decide", is a digital infrastructure for participatory democracy, built entirely and collaboratively as free software. More specifically, Decidim is a web environment (a _framework_) produced in _Ruby on Rails_ that allows users to create and configure a website platform or portal, to be used in the form of a social network, for democratic participation. The portal allows any organization (local city council, association, university, NGO,trade union, neighborhood or cooperative) to create massive democratic processes for strategic planning, participatory budgeting, collaborative regulatory design, urban spaces design and elections. It also enables the organization of in-person meetings, signing up for them, the publication of minutes, proposing points for the agenda and receiving notifications of the results. Decidim can also help organizing governing bodies, councils or assemblies, the convening of consultations and referendums or channeling citizen or member initiatives to impact different decision making processes. All together Decidim makes possible to digitally structure a complete system of participatory democratic governance for any organization. + +To understand in detail how Decidim operates, a distinction must be made between participatory _spaces_ and _components_ (see <>). + +[#functional-architecture-fig] +._Summary diagram of Decidim's functional architecture showing a combination of components in participatory spaces. The "Vote*" component allows a variety of voting systems, expressions of support or allegiance for a proposal._ +image::functional-architecture-en.svg[width=2000] + +* *Participatory spaces.* These are the frameworks that define how participation will be carried out, the _channels_ or means through which citizens or members of an organization can process requests or coordinate proposals and make decisions. _Initiatives_, _Processes_, _Assemblies_ and _Consultations are all participatory spaces. Specific examples of each of these include: a citizen initiative for directly changing a regulation (_Initiative_); a general assembly or workers’ council (_Assembly_); a participatory budgeting, strategic planning, or electoral process (_Processes_); a referendum or a call to vote “Yes” or “No” to change the name of an organization (_Consultation_). +* *Participatory components.* These are the participatory _mechanisms_ that allow a series of operations and interactions between the platform users within each of the participatory spaces. The following are participatory components: _comments, proposals, amendments, votes, results, debates, surveys, sortitions, pages, blogs, newsletters_ and _meetings_. Other components that build on top of basic components are: _participatory texts_, _accountability_ and _conferences_. + +[#spaces-components-fig] +._Decidim displays participatory spaces on the top menu (dark) and components are displayed on the bottom menu (white)._ +image::spaces-components.png[] + +The ways in which spaces and components interact is the following. Users of the platform (participants) interact through participatory mechanisms known as components which afford a variety of features for the various participatory _spaces_. In other words, participatory _spaces_ such as _Initiatives_, _Assemblies_, _Processes_ and _Consultations_ have components at their disposal which work together as participatory mechanisms. The more notable components include in-person _meetings_, _surveys_, _proposals_, _debates_, _results_ and _comments_. So, for example, the various phases of a participatory budgeting process can combine components in the following way: at an early phase public meetings can be opened for citizens to analyze different needs classified by districts. In turn these meetings can lead to the design of a survey. The survey results can then be used to define a set of categories for projects to be proposed. The proposal component can then be activated for participants to create and publish their projects as solutions to the identified needs. These proposals can then be commented and, after two weeks of deliberation, voting can be activated to select among the projects with a budget-expenditure system. Participants can then be called to a public meeting to evaluate the results, and an assessment survey can be launched afterwards for those who could not attend the meeting. Finally, the accountability component may be activated to monitor the degree of execution of the selected projects, and people can comment on it. What makes Decidim particularly powerful is this combination of components within spaces, which provides an organization with a complete toolkit to easily design and deploy a democratic system and adapt it to the organization's needs. + +Decidim's top navigation bar displays the different types of active *spaces* of the platform. *Processes* is a space that allows to create, activate/deactivate, and manage various participatory processes. These are distinguished from other spaces by being structured in different phases within which all of the components can be incorporated. Examples of participatory processes are: an election process for members of a committee, participatory budgeting, a strategic planning process, the collaborative writing of a regulation or norm, the design of an urban space or the production of a public policy plan. *Assemblies* is a space that offers the possibility of setting decision-making bodies or groups (councils, working groups, committees, etc.) that meet up periodically, detailing their composition, listing and geolocating their meetings, and allowing to take part in them (for instance: attending if the seating capacity and nature of the assembly so permits, adding items to the agenda, or commenting on the proposals and decisions taken by that body). *Consultations* is a space that makes it possible to coordinate referendums, trigger discussions and debates, get voting results published; it can be connected to a secure e-voting system. *Initiatives* is a space that allows participants to collaboratively create initiatives, define their trajectory and goals, gather endorsements, discuss, debate and disseminate initiatives and define meeting points where signatures can be collected from attendees or debates opened to other members of the organization. Initiatives is a special kind of space by which members of the organization can trigger actions that are generally restricted to elected bodies or platform administrators, by collecting (digital) signatures. The organization can define the types of initiatives and set up the number of signatures that are required to trigger the expected result (e.g. to call for a consultation). + +The *components* (also called features) are displayed as a second level menu with white background within spaces (as displayed in <>). The *collaborative draft* for proposals facilitates the collaborative creation of proposals as well as the monitoring and control of changes throughout the process. The *proposals* component allows a user to create a proposal using a creation wizard, compare it with existing ones, publish it in the platform and include additional information like geolocation or attached documents and images. This component also makes possible to navigate, filter and interact with a set of proposals. The proposal component has plenty of configuration options, and different features can be activated or de-activated in time. One such feature is *voting* or *support*: it offers organizations the possibility of activating different voting or support systems around proposals: unlimited, limited to a given threshold, weighted, cost-based, etc. Proposals can also be imported to a new phase, so they can be re-written or elaborated in different stages, where they can also be subject to *amends* which can be voted separately, accepted and merged or rejected, to improve proposals democratically. The *results* component is used to turn proposals into results and give official responses concerning their acceptance or rejection, merging various proposals into a single result or creating different results related to the same original proposal. The *accountability* component offers the possibility of subdividing results into projects, defining and applying progress statuses around their implementation, as well as displaying the extent of the results’ implementation grouped by categories and scopes. In this sense the accountability component works like a project management system built into the platform. The *surveys* component can be used to design and publish surveys and to display and download their results. The *sortition* component allows to select a number of proposals (e.g. candidates for a jury) with random, yet reproducible, procedures that guarantees non-biased and uniform distributions. The *comments* component enables users to add comments, to identify the comment as being in favor, against or neutral in relation to the commented object, to vote comments, respond to them and to receive notifications about responses. The *participatory texts* component can be used to convert lengthy text documents into various proposals or results and, vice versa, to compose and display a unified text based on a collection of proposals or results. This makes possible to work with a full document as continuous text in participatory manner. The *pages* component is used to create informative pages with rich text formatting, embedded pictures and videos. The *blog* component makes possible the creation of posts or news, and to navigate them chronologically. The *meeting* component offers organizations and participants the opportunity to convene meetings, determine their location and time, registration and management of attendees, to define the structure and content of the meeting as well as publishing the minutes, and the resulting proposals. The *conference* component allows an organization to create a website for a big event by joining up a series predefined meetings (chats, workshops etc.), putting together a unified program and managing attendees. The *newsletter* component makes possible to send emails to everyone registered in the platform or, more selectively, to those who participate in a specific space. + +Participants can carry on different *types of actions* within the platform: + +[start=0] +. They can *navigate* and search for information +. They can *create* contents of different types (e.g. proposals and debates). +. They can *vote, support or sign* all three modes allow for participants to aggregate their preference or will for a specific consultation question, proposal or initiative respectively (the difference between these three types of actions involve different levels of security and anonymity: signatures can be audited and attributed to a participant, supports cannot, in order to prevent coercion, while votes involve higher cryptographic guarantees than supports). +. They can *comment* on any object of the platform (proposals, debates, results, sortitions, etc.). +. They can *endorse* any content, meaning that they can publicly declare they support it or find it relevant, with the participants following it then receiving notifications. +. They can *follow* other participants, a participatory process, an initiative, a specific proposal, etc. and receive notifications. +. They can *sign up* for a meeting. +. They can also *share* and *embed* content out of the platform, sharing the link to other social networks and embedding content on other sites. + +Component items (e.g. a proposal, a blog post, a meeting) have their individual page but are also displayed as *cards* throughout the platform, cards being a major design interface to interact with components. <> displays a proposal card with the different types of data and interactions identified within the card. + +[#card-anatomy-fig] +._Decidim's proposal card anatomy._ +image::card-anatomy.png[] + +The users who participate in Decidim can be grouped into three different categories: + +* *Visitors* have access to all of the platform's content without having to sign up or provide any information. +* *Registered* participants can create content and comments, sign-up for meetings, endorse content, follow other participants and objects of the platform, customize their profile and receive notifications, mentions and private messages. By choosing a username and password, accepting the user agreement, and providing an email account (or using an account for several social networks) participants become registered. Registered participants can also have their account officialized (meaning their username is accompanied by a special symbol indicating they really are who they claim they are on their profile). +* *Verified* participants can make decisions. In order to fall under this category they must first be verified as members of the organization, citizens of the municipality, or constituents of the decision-making group (an association, community, collective etc.). Decidim offers different ways to carry out this verification. Once verified, participants will be able to take decisions by supporting proposals, signing initiatives and voting in consultations. + +Administrators can *manage permissions* for registered or verified users selectively. For example proposal creation can be activated for both registered and verified users but supports to proposals only for verified users. It is also possible (although rarely recommended) to consider all registered users as verified and to grant them decision making powers. + +There are different types of administrators: *administrators* of the whole platform or of specific spaces and components, they can also be *moderators* (with the exclusive power of moderating proposals, comments or debates) or *collaborators* that can read unpublished content, create notes and responses to proposals. + +Participants can register as an *individual* or as a *collective* (associations, working groups, etc. within the main organization). User *groups* might also be created so that individuals can be associated to a *group*. Decidim allows participants belonging to such a group to express or act individually or embodying the group identity: when an action is carried the platform prompts the participant to choose wether they want to act as themselves or as the group they belong to. + +Participants can not only navigate the content of Decidim through the top menu and move down the architectural hierarchy, from a space to its different components; they can also get information through the *search engine*, or via *notifications*. Participants can also talk to each other by internal messaging or *chat*. + +The participant's *profile* makes possible to read notifications, manage followers, and monitor different gamification and engagement badges. + +The *home page* of the platform is fully customizable: it can display different types of banners, call-to-action buttons, it can also display statistics and interactive visualizations, activity streams, and maps with the upcoming meetings. + +The content of the platform can be classified by different criteria. A participatory space and its contents (e.g. a participatory process or the proposals within) can be (independently) assigned a *scope*. Scopes are defined for the whole platform, and they can be thematic or territorial (for example, an assembly can be assigned to a specific theme or subject, like "ecology", and to a specific territory, like a district within a city). Content within a space-instance can be assigned to a *category* or sub-category (e.g. topics) that are specific for such a space-instance. For example, the categories "sport facilities", "parks" and "schools" can be created for a participatory budgeting process, and proposals will be assigned to these categories. *Hashtags* can also be freely created and introduced in the body text almost anywhere in the platform (proposals, debates, comments, process description, etc), both by participants and administrators, to classify content and make it searchable. + +Unlike other existing platforms, Decidim’s architecture is *modular*, *scalable*, easy to *configure*, and *integrated* with other tools or apps (data analysis, maps, SMS, mail, social networks, etc.). The platform has been designed in such a way that processes, assemblies and mechanisms can be set up easily and deployed from an administration panel. No knowledge of programming is required to install, configure and activate it. The participatory spaces and components can be developed, activated and deactivated independently. diff --git a/en/modules/features/pages/general-features.adoc b/docs/en/modules/features/pages/general-features.adoc similarity index 100% rename from en/modules/features/pages/general-features.adoc rename to docs/en/modules/features/pages/general-features.adoc diff --git a/en/modules/features/pages/participants.adoc b/docs/en/modules/features/pages/participants.adoc similarity index 73% rename from en/modules/features/pages/participants.adoc rename to docs/en/modules/features/pages/participants.adoc index e242b991d3..ec170e97f2 100644 --- a/en/modules/features/pages/participants.adoc +++ b/docs/en/modules/features/pages/participants.adoc @@ -1,15 +1,15 @@ = Participants :page-partial: -== Registration and verification +*Participants* of Decidim can be grouped into three different categories: -Any visitor can access all of the website’s content directly. However, anyone who wishes to submit proposals or comments will have to *register*. Users may register *directly* on the platform or through gateways of other *social networks* (Facebook, Twitter or Google+). To register directly, users will need to associate a email account and a password to the user-account. +* *Visitors* have access to all of the platform's content without having to sign up or provide any information. +* *Registered* participants can submit proposals and comments, sign-up for meetings, endorse content, follow other Participants and receive notifications, mentions and private messages. + Users may register *directly* on the platform or through gateways of other *social networks* (Facebook, Twitter or Google+). To register directly, users will need to associate a email account and a password to the user-account. + Registered participants can also have their account officialized (meaning their username is accompanied by a special symbol indicating they really are who they claim they are on their profile). +* *Verified* participants can make decisions. Decidim offers different ways to carry out this verification. -Decision-orientated features (endorsements, votes, etc.) require *verification*. The main verification method cross-checks against the municipal register or other databases of registered people with whom Decidim can communicate via API. Users may also be verified *by text* or using a special *code* sent by post or other means. A participant can also be *manually verified* from the administration dashboard. - -Besides the verification process, participants can also ask to have their user name *made official*. Once made official, their user name will appear with a symbol that allows third parties to acknowledge that this user name corresponds to the person it claims to be. - -*Associations and organisations* whose identity can be verified in some way can also be registered and verified. The official name status will be automatically verified. +Administrators can *manage permissions* for *Registered* users and *Verified* users selectively. For example, _proposal creation_ can be activated for both Registered and Verified users but _supports to proposals_ only for Verified users. == Public registration of administrative activity @@ -33,6 +33,12 @@ Besides automated notifications, participants can decide to **follow any element *Mentions* can also be added (in the comments section) to any registered user and a notification will be automatically sent. +== User groups + +Participants can register with the platform as members of one or several organisations/collectives. Once the organisation and membership status have been verified, participants can carry out actions (make proposals or submit comments, etc.), with their user or with the organisation name. + +User groups can also manage user permissions and administration roles assigned to groups, as well as private debate spaces or share information among group users, for example, who attended an in-person meeting. [Feature currently missing] + == Engagement Decidim has a series of features geared to _gamifying_ the platform, to *attract and keep a growing number of participants interested*, as well as to promote practices that boost democratic quality and collective intelligence in participation [the gamification system is expected for 2018Q2-3, AjB-Lote1]. @@ -44,9 +50,3 @@ The gamification system includes two modes, one centred on users and the other o The combination of these and other indicators is used for generating gamification routes for each user and defining threads such as: most participatory person in the district, leadership in discussions and debates, etc. * Gamification *centred on proposals/initiatives* allows promoters, signatories and followers to boost interaction with them by incorporating several *metrics* (number of times that the proposal is shared in social networks, degree of controversy (number of positive and negative comments), quality of deliberation (depth of observation tree), number of hits received, etc. - -== User groups - -Participants can register with the platform as members of one or several organisations/collectives. Once the organisation and membership status have been verified, participants can carry out actions (make proposals or submit comments, etc.), with their user or with the organisation name. - -User groups can also manage user permissions and administration roles assigned to groups, as well as private debate spaces or share information among group users, for example, who attended an in-person meeting. [Feature currently missing] diff --git a/en/modules/features/pages/participatory-spaces.adoc b/docs/en/modules/features/pages/participatory-spaces.adoc similarity index 100% rename from en/modules/features/pages/participatory-spaces.adoc rename to docs/en/modules/features/pages/participatory-spaces.adoc diff --git a/en/modules/publications/pages/catalan.adoc b/docs/en/modules/publications/pages/catalan.adoc similarity index 100% rename from en/modules/publications/pages/catalan.adoc rename to docs/en/modules/publications/pages/catalan.adoc diff --git a/en/modules/publications/pages/english.adoc b/docs/en/modules/publications/pages/english.adoc similarity index 86% rename from en/modules/publications/pages/english.adoc rename to docs/en/modules/publications/pages/english.adoc index d2cfc1f55a..69f102c9fc 100644 --- a/en/modules/publications/pages/english.adoc +++ b/docs/en/modules/publications/pages/english.adoc @@ -1,5 +1,8 @@ = English Publications +IMPORTANT: Barandiaran, X., Calleja-López, A. & Monterde, A. (2018). Decidim: political and technopolitical +networks for participatory democracy. __Decidim’s project white paper__. (You can http://ajbcn-meta-decidim.s3.amazonaws.com/uploads/decidim/attachment/file/2005/White_Paper.pdf[download an alpha version of the document here]) + == Academic * Borge, R., Balcells, J. , Padró-Solanet, A. (2019) "A model for the analysis of online citizen deliberation: Barcelona case study", International Journal of Communication. 13, pp. 5671–5695. https://ijoc.org/index.php/ijoc/article/view/10805/2873 diff --git a/en/modules/publications/pages/french.adoc b/docs/en/modules/publications/pages/french.adoc similarity index 100% rename from en/modules/publications/pages/french.adoc rename to docs/en/modules/publications/pages/french.adoc diff --git a/en/modules/publications/pages/german.adoc b/docs/en/modules/publications/pages/german.adoc similarity index 100% rename from en/modules/publications/pages/german.adoc rename to docs/en/modules/publications/pages/german.adoc diff --git a/en/modules/publications/pages/italian.adoc b/docs/en/modules/publications/pages/italian.adoc similarity index 100% rename from en/modules/publications/pages/italian.adoc rename to docs/en/modules/publications/pages/italian.adoc diff --git a/en/modules/publications/pages/spanish.adoc b/docs/en/modules/publications/pages/spanish.adoc similarity index 96% rename from en/modules/publications/pages/spanish.adoc rename to docs/en/modules/publications/pages/spanish.adoc index 603c5f6de4..9fc0bdf956 100644 --- a/en/modules/publications/pages/spanish.adoc +++ b/docs/en/modules/publications/pages/spanish.adoc @@ -2,6 +2,8 @@ == Academic +* Barandiaran, X. E., Calleja, A., Monterde, A., Aragón, P., Linares, J., Romero, C., & Pereira, A. (2017). Decidim: Redes políticas y tecnopolíticas para la democracia participativa. __Recerca__. Revista de pensament i anàlisi., 21, 137-150. https://doi.org/10.6035/Recerca.2017.21.8 + * Barandiaran, X. E. (2019). Tecnopolítica, municipalismo y radicalización democrática. In L. Roth, A. Monterde, & A. Calleja-López (Eds.), _Ciudades Democráticas. La revuelta municipalista en el ciclo post-15M_ (pp. 173–207). Icaria. http://ciudadesdemocraticas.tecnopolitica.net/ * Borge, R., Balcells, J., Padró-Solanet, A., Batlle, A., Orte, A., & Serra, R. (2018) La participación política a través de la plataforma Decidim: análisis de 11 municipios catalanes. Paper presentado en el IX Congreso Internacional en Gobierno, Administración y Políticas Públicas GIGAPP. Madrid, 24-27 Septiembre. https://dryfta-assets.s3-accelerate.amazonaws.com/assets/congreso2018/abstractfiles/1536574598Laparticipacion_politica_a_traves_de_la_plataforma_Decidim.pdf diff --git a/docs/en/modules/releases/pages/index.adoc b/docs/en/modules/releases/pages/index.adoc new file mode 100644 index 0000000000..5c2a9ec935 --- /dev/null +++ b/docs/en/modules/releases/pages/index.adoc @@ -0,0 +1,36 @@ += Release notes + +Here you can find all the blog posts for every minor release. + +You can find all the releases (with minor and patches) at +https://rubygems.org/gems/decidim/versions[RubyGems.org] and +https://github.com/decidim/decidim/releases[GitHub]. + +* https://decidim.org/blog/2024-09-12-new-version-0-29-0/[Version 0.29 (2024-09-12)] +* https://decidim.org/blog/2023-12-20-new-version-0-28-0/[Version 0.28 (2023-12-20)] +* https://decidim.org/blog/2022-09-30-new-version-0-27-0/[Version 0.27 (2022-09-30)] +* https://decidim.org/blog/2022-02-22-new-version-0-26-0/[Version 0.26 (2022-02-22)] +* https://decidim.org/blog/2021-10-07-new-version-0-25-0/[Version 0.25 (2021-10-07)] +** xref:develop:guide_migrate_webpacker_module.adoc[Migrate to Webpacker a module] +** xref:develop:guide_migrate_webpacker_app.adoc[Migrate to Webpacker an instance app] +* https://decidim.org/blog/2021-03-26-new-version-0-24-0/[Version 0.24 (2021-03-26)] +* https://decidim.org/blog/2020-11-12-new-version-0-23-0/[Version 0.23 (2020-11-12)] +* https://decidim.org/blog/2020-09-02-new-version-0-22-0/[Version 0.22 (2020-09-02)] +* https://decidim.org/blog/2020-04-12-new-version-0-21-0/[Version 0.21 (2020-04-12)] +* https://decidim.org/blog/2020-02-06-new-version-0-20-0/[Version 0.20 (2020-02-06)] +* https://decidim.org/blog/2019-10-21-release-0-19-0/[Version 0.19 (2019-10-21)] +* https://decidim.org/blog/2019-07-03-release-0-18-0/[Version 0.18 (2019-07-03)] +* https://decidim.org/blog/2019-03-25-release-0-17-0/[Version 0.17 (2019-03-25)] +* https://decidim.org/blog/2019-01-14-release-0-16-0/[Version 0.16 (2019-01-14)] +* https://decidim.org/blog/2018-12-13-release-0-15-0/[Version 0.15 (2018-12-13)] +* https://decidim.org/blog/2018-08-30-release-0-14-0/[Version 0.14 (2018-08-30)] +* https://decidim.org/blog/2018-07-11-release-0-13-0/[Version 0.13 (2018-07-11)] +* https://decidim.org/blog/2018-06-13-release-0-12-0/[Version 0.12 (2018-06-13)] +* https://decidim.org/blog/2018-04-27-release-0-11-0/[Version 0.11 (2018-04-27)] +* https://decidim.org/blog/2018-03-29-release-0-10-0/[Version 0.10 (2018-03-29)] +* https://decidim.org/blog/2018-02-06-release-0-9-0/[Version 0.9 (2018-02-06)] +* https://decidim.org/blog/2017-12-21-release-0-8-0/[Version 0.8 (2017-12-21)] +* https://decidim.org/blog/2017-11-21-release-0-7-0/[Version 0.7 (2017-11-21)] +* https://decidim.org/blog/2017-09-21-release-0-6-0/[Version 0.6 (2017-09-21)] +* https://decidim.org/blog/2017-08-29-release-0-5-0/[Version 0.5 (2017-08-29)] +* https://decidim.org/blog/2017-07-17-release-0-4-0/[Version 0.4 (2017-07-17)] diff --git a/en/modules/understand/assets/images/decidim_barcelona_homepage.png b/docs/en/modules/understand/assets/images/decidim_barcelona_homepage.png similarity index 100% rename from en/modules/understand/assets/images/decidim_barcelona_homepage.png rename to docs/en/modules/understand/assets/images/decidim_barcelona_homepage.png diff --git a/en/modules/understand/pages/about.adoc b/docs/en/modules/understand/pages/about.adoc similarity index 92% rename from en/modules/understand/pages/about.adoc rename to docs/en/modules/understand/pages/about.adoc index 52adcfc97a..467b1d0155 100644 --- a/en/modules/understand/pages/about.adoc +++ b/docs/en/modules/understand/pages/about.adoc @@ -69,7 +69,7 @@ This led Barcelona City Council to thoroughly reconsider the platform’s archit The Decidim platform project has been developed with free software (both at its initial stage, based on Consul, and after the code's complete rewrite) and all its development has been open, enabling its entire development to be traceable and followed right from the very beginning. -Its creation from free software refers to the fact that the platform's source code has a AGPL v3 Licence or GNU Affero General Public Licence,footnote:[https://github.com/AjuntamentdeBarcelona/decidim/blob/master/LICENSE-AGPLv3.txt] which means the code has to allow for the possibility of its being consulted, copied, amended and reused, so long as the same licence is kept in any work or product derived from it. This is one of the licences that provides most freedom and is copyleft footnote:[Copyleft stands for a whole range of licences that can be applied to IT, artistic and other creations. Copyleft's supporters see copyright as a way of restricting people's right to make and redistribute copies of a work.[2] A copyleft licence, in fact, uses actual copyright legislation to ensure that everyone who receives a copy or derived work can use, amend and even distribute both the work and any derivative versions. In a strictly non-legal sense, then, copyleft is the opposite of copyright. (Wikipedia, 2017).]. In this regard, it makes sense for public authorities to make a clear commitment to this type of software, given that it is through such licences that we can receive social return on our public investments. +Its creation from free software refers to the fact that the platform's source code has a AGPL v3 Licence or GNU Affero General Public Licence,footnote:[https://github.com/decidim/decidim/blob/develop/LICENSE-AGPLv3.txt] which means the code has to allow for the possibility of its being consulted, copied, amended and reused, so long as the same licence is kept in any work or product derived from it. This is one of the licences that provides most freedom and is copyleft footnote:[Copyleft stands for a whole range of licences that can be applied to IT, artistic and other creations. Copyleft's supporters see copyright as a way of restricting people's right to make and redistribute copies of a work.[2] A copyleft licence, in fact, uses actual copyright legislation to ensure that everyone who receives a copy or derived work can use, amend and even distribute both the work and any derivative versions. In a strictly non-legal sense, then, copyleft is the opposite of copyright. (Wikipedia, 2017).]. In this regard, it makes sense for public authorities to make a clear commitment to this type of software, given that it is through such licences that we can receive social return on our public investments. The fact that the software has been openly developed means that the entire development process is transparent and accessible, in other words, that anyone can see, right from the start of the software's development, every change, contribution, community of developers involved etc. By the same token, transparency is becoming a fundamental principle not just in citizen participation but in software development too. diff --git a/en/modules/understand/pages/background.adoc b/docs/en/modules/understand/pages/background.adoc similarity index 100% rename from en/modules/understand/pages/background.adoc rename to docs/en/modules/understand/pages/background.adoc diff --git a/docs/en/modules/understand/pages/social-contract-ca.adoc b/docs/en/modules/understand/pages/social-contract-ca.adoc new file mode 100644 index 0000000000..3b28041d00 --- /dev/null +++ b/docs/en/modules/understand/pages/social-contract-ca.adoc @@ -0,0 +1,64 @@ += Contracte Social de Decidim + +[NOTE] +==== +Pots llegir el Contracte Social de Decidim en altres idiomes: xref:understand:social-contract-es.adoc[Castellano] - xref:understand:social-contract.adoc[English] + +Si vols traduïr-ho al teu idioma sisplau https://decidim.org/contact[contacta amb nosaltres]. +==== + +Codi de garanties democràtiques i de col·laboració oberta + +Aquest és el contracte social que tots el membres del projecte Decidim es comprometen a seguir. + +La utilització de la plataforma Decidim per part de qualsevol ajuntament o qualsevol altre ens municipal o supramunicipal, així com altres organitzacions, comporta l'assumpció total i íntegra d'aquest codi. + +== Programari lliure i continguts oberts + +El codi de la plataforma, així com els mòduls, llibreries o qualsevol altre codi que es desenvolupi per al seu funcionament, serà sempre programari lliure amb llicència https://www.gnu.org/licenses/agpl-3.0.en.html[Affero GPLv3 o posterior] en el cas dels nous desenvolupaments, i de llicències compatibles amb aquesta en el cas de reutilització d’altres codis. + +Així mateix, els continguts, dades, APIS i/o interfícies que el Decidim faci servir per interactuar amb qualsevol tipus d’usuari, compliran amb estàndards oberts i interoperables (ex. OpenID, RSS, OStatus, etc.), tendint sempre al màxim nivell d’integració amb els estàndards oberts més estesos. + +De cara a maximitzar la transparència i la col·laboració ciutadana en els processos, òrgans i mecanismes de participació, el contingut de textos, gràfiques, fonts tipogràfiques, àudio, vídeo o altres elements de disseny, es farà públic amb una llicència https://creativecommons.org/licenses/by-sa/4.0/legalcode[Creative Commons By-Sa]. + +Igualment les dades de la plataforma, especialment totes aquelles que es puguin recollir de manera sistemàtica a través de scrappers o altres tècniques de consulta massiva, seran publicades amb llicències http://opendatacommons.org/licenses/odbl[Open Data Commons Open Database License], en formats estandarditzats i accessibles (tipus CSV, JSON, etc.) i, sempre que sigui possible, amb eines que facilitin l’anàlisi i visualizació d’aquestes dades. + +== Transparència, traçabilitat i integritat + +La plataforma, així com la seva configuració, desenvolupament, implementació i ús actual o futur han de garantir i maximitzar en tot moment la transparència, la traçabilitat i la integritat dels diagnòstics, propostes, debats, decisions, o qualsevol altre objecte, mecanisme o procés de participació. + +Per transparència entenem que totes les dades relacionades amb aquests mecanismes i processos estiguin disponibles per a baixar, analitzar i tractar, seguint els formats i estàndards de compartició més exigents (accessibilitat, multi-format, etc.). + +La transparència serà una condició necessària pel seguiment dels processos i mecanismes de participació, però mai, i en cap cas, pel tractament de dades personals que vagin contra la defensa de la privacitat de la persona participant en la plataforma. + +Entenem per traçabilitat de les propostes la possibilitat de realitzar un seguiment complet, cap enrere (passat) i cap endavant (futur), de tot el que ha passat amb les propostes, plans, reglaments o qualsevol altre tipus d'objecte de decisió o participació inclòs en un procés o mecanisme. La plataforma ha de mostrar en tot moment com, per què, per qui i amb quin tipus de garanties un determinat objecte d'un procés de participació va ser descartat, aprovat o bloquejat. + +Entenem per integritat l'autenticitat d'un determinat contingut, i la garantia que aquest no ha estat manipulat o modificat sense que aquesta modificació quedi clarament registrada i sigui visiblement verificable i contrastable, amb l'objecte d'evitar la manipulació de les propostes o resultats dels processos o mecanismes de participació. + +== Igualtat d’oportunitats i indicadors de qualitat + +Al costat de les garanties anteriorment definides, la plataforma es compromet a garantir la igualtat d'oportunitats per a totes les persones, així com les seves propostes o altres contribucions que pugui acollir. La plataforma oferirà les mateixes oportunitats de partida a tots els objectes participatius (propostes, debats, etc.) perquè siguin vistos, discutits, comentats, valorats o tractats, sense discriminació de cap tipus. En aquest sentit la identitat digital de les persones usuàries de la plataforma serà sempre personal i intransferible, la verificació que otorgui drets de decisió a la plataforma ha de ser a més única, i serà l’ens responsable l’encarregat de garantir la no-suplantació d’una persona física o jurídica. + +Amb l’objectiu de garantir la qualitat democràtica de la plataforma es fomentarà l’ús d’indicadors de qualitat a partir dels processos i mecanismes de participació, així com l’activitat de les persones usuàries de la plataforma. També es fomentarà la compartició de la configuració dels diferents components així com de les dades obertes per a la definició d’aquests indicadors. + +La igualtat en la participació política de la ciutadania és un dels principis fonamentals del sistema democràtic i la plataforma, no només ha de garantir la igualtat d’oportunitats pel que fa als usos i funcionalitats, sinó també el dret d’accés. En aquest sentit cada ens promotor de la plataforma es compromet a impulsar aquelles accions que avancin en la direcció de facilitar i acompanyar l’accés a la plataforma a tota la ciutadania per igual de manera universal, propocionant les eines i els recursos adients per a que la plataforma estigui a l’abast de qualsevol persona que en vulgui fer ús. + +== Confidencialitat de les dades + +Es garanteix la confidencialitat i la privacitat de les dades personals que els ciutadans aporten per a participar en qualsevol de les funcionalitats i/o possibilitats de participació que ofereixi la plataforma DECIDIM en tot moment. En cap cas es cediran aquestes dades personals a tercers. Tampoc es farà un ús de les mateixes que vagi més enllà de l'estrictament necessari per a la gestió del registre d'usuaris o millores de la usabilitat de la plataforma. Sempre que la tecnologia de la plataforma ho permeti les expressions de preferències polítiques en els processos de decisió romandran inaccessible fins i tot per l’ administrador/a de la plataforma o els servidors. + +== Rendiment de comptes i responsabilitat + +S’adopta un compromís davant la ciutadania de respondre totes les aportacions i consultes en el mínim temps possible. També s’adopta el compromís de donar seguiment als resultats dels processos de participació, així com de donar resposta a aquelles demandes que específicament ho sol·licitin. Finalment s’assumeix el compromís d’estudiar la incorporació d’indicadors de seguiment dels processos de participació un cop estiguin finalitzats, per tal de poder avaluar de manera sistemàtica el seu desplegament. + +== Millora contínua i col·laboració interinstitucional + +S’adoptaran mecanismes de revisió i avaluació periòdica per facilitar la millora contínua de la plataforma. + +Es prioritzarà la col·laboració i l’intercanvi d’experiències entre institucions involucrades en el projecte, amb l’objectiu de millorar, corregir i generar nous desenvolupaments que ajudin a la millora contínua de la plataforma. + +En aquest sentit es facilitaran les condicions i entorns de col·laboració a l’hora de tirar endavant millores que apuntin a un benefici comú del conjunt de la plataforma, habilitant mecanismes de coordinació interinstitucional quan sigui necessari. +Condicions d’ús + +Totes els punts d’aquest codi han de quedar reflectits en les condicions d’ús que cada ens redacti per a la seva plataforma i mai entraran en contradicció. + diff --git a/docs/en/modules/understand/pages/social-contract-es.adoc b/docs/en/modules/understand/pages/social-contract-es.adoc new file mode 100644 index 0000000000..8100862066 --- /dev/null +++ b/docs/en/modules/understand/pages/social-contract-es.adoc @@ -0,0 +1,64 @@ += Contrato social de Decidim + +[NOTE] +==== +Puedes leer el Contrato Social de Decidim en otros idiomas: xref:understand:social-contract-ca.adoc[Català] - xref:understand:social-contract.adoc[English] + +Si lo quieres traducir a tu idioma por favor https://decidim.org/contact[contáctanos]. +==== + +Código de garantías democráticas y colaboración democrática + +Este es el contrato social que todos los miembros del proyecto Decidim se comprometen a seguir. + +El uso y desarrollo de la plataforma Decidim por parte de una institución o grupo social de cualquier tipo implica la aceptación total e integral del presente contrato social y su compromiso con el mismo. + +== Software libre y contenido abierto + +El código de la plataforma, junto con los módulos, las bibliotecas o cualquier otro código que se desarrolle para su funcionamiento y utilización, será siempre un software de código abierto libre con una licencia de https://www.gnu.org/licenses/agpl-3.0.en.html[Affero GPLv3 o versiones posteriores], siempre que el código se cree de nuevo y con licencias que sean compatibles con el anterior código cuando este se reutilice. + +Del mismo modo, el contenido, los datos, las API o cualesquiera otras interfaces que se utilicen para interactuar con cualquier tipo de usuario debe seguir estándares abiertos e interoperables (OpenID, RSS, OStatus, etcétera), procurando siempre maximizar su integración con los estándares abiertos de uso más amplio. + +Con el fin de maximizar la transparencia y la colaboración ciudadana en procesos, órganos y mecanismos participativos, el contenido, así como texto, gráficos, fuentes, audio, vídeo u otros elementos de diseño se publicarán bajo una licencia https://creativecommons.org/licenses/by-sa/4.0/legalcode[Creative Commons By-SA]. + +Los datos disponibles en la plataforma, especialmente todos los datos que se pueden recopilar de manera sistemática a través de scrappers u otras técnicas de consulta masiva, se publicarán bajo licencia http://opendatacommons.org/licenses/odbl[Open Data Commons Open Database], en formatos estandarizados y accesibles (CSV, JSON, etcétera) y, siempre que sea posible, con herramientas que faciliten el análisis y la visualización de datos. + +== Transparencia, trazabilidad e integridad + +La plataforma y su configuración, desarrollo, implementación y uso actuales o futuros deben asegurar y maximizar en todo momento la transparencia, trazabilidad e integridad de documentos, propuestas, debates, decisiones o cualquier otro objeto, mecanismo o proceso participativo. + +Por transparencia entendemos que todos los datos relacionados con todos estos mecanismos y procesos participativos están disponibles para su descarga, análisis y tratamiento, siguiendo los estándares y formatos más exigentes para compartir información (accesibilidad, multiformato, etcétera). + +La transparencia es una condición necesaria para el seguimiento de los procesos y mecanismos participativos, pero en ningún caso debe aplicarse al tratamiento de los datos personales o contra la defensa de la privacidad de las personas que participan en la plataforma. + +Entendemos por trazabilidad la capacidad de hacer un seguimiento completo de propuestas, planes, regulaciones o cualquier otro objeto de participación o decisión, tanto pasados como futuros, incluidos en un proceso o mecanismo. La plataforma debe mostrar en todo momento cómo, por qué, a través de quién y con qué garantías se desestimó, se aprobó o se bloqueó un determinado tipo de objeto de un proceso participativo. + +Entendemos por integridad la autenticidad de un contenido específico, con la seguridad de que no ha sido manipulado o alterado sin que esta modificación esté claramente registrada y sea visiblemente verificable y auditable. El objetivo de la integridad es evitar la manipulación de propuestas o resultados de procesos o mecanismos participativos. + +== Igualdad de oportunidades e indicadores de calidad + +Junto con las garantías previamente definidas, la plataforma promete garantizar la igualdad de oportunidades para todas las personas, así como para sus propuestas u otras contribuciones que la plataforma pueda albergar. La plataforma ofrecerá iguales oportunidades de inicio a todos los objetos participativos (propuestas, debates, etcétera) para que se puedan conocer, debatir, comentar, evaluar o tratar sin que exista discriminación de ningún tipo. En este sentido, la identidad digital de los usuarios de la plataforma será siempre personal y no transferible, la verificación que confiere derechos de decisión sobre la plataforma también debe ser única y la responsable de asegurar la no representación de una persona o entidad será la entidad administrativa responsable de la plataforma. + +La plataforma debe promover, con el objetivo de garantizar su calidad democrática, el uso de indicadores de calidad desarrollados a partir de los datos obtenidos de los procesos participativos y los mecanismos y la actividad de los usuarios. Se promoverá que se comparta la configuración de los diferentes componentes, así como datos abiertos, para la definición de estos indicadores. + +La igualdad en la participación política de la ciudadanía es uno de los principios fundamentales de cualquier sistema democrático, y la plataforma no solo debe garantizar la igualdad de oportunidades con respecto a los usos y las funciones, sino también el derecho de acceso. En ese sentido, la entidad a cargo de la plataforma asume el compromiso de promover acciones enfocadas a proporcionar acceso y apoyo a la plataforma para todos los ciudadanos por igual de manera universal. Las herramientas y los recursos apropiados a la plataforma están disponibles para cualquiera que los quiera usar. + +== Confidencialidad de los datos + +Se garantizará en todo momento la confidencialidad y privacidad de los datos personales que las personas puedan proporcionar para participar en cualquiera de las funcionalidades o posibilidades de participación que la plataforma proporcione. Los datos personales no se transferirán, en ningún caso, a terceros. Tampoco se utilizarán más allá de lo estrictamente necesario para el registro de usuarios y mejoras en la usabilidad de la plataforma. Siempre que la tecnología de la plataforma lo permita, la expresión de las preferencias políticas o la voluntad en los procesos de toma de decisiones seguirá siendo inaccesible incluso para el administrador de la plataforma o el servidor o servidores que la alojan. + +== Compromiso y responsabilidad + +Se establecerá un compromiso con los ciudadanos para responder a todas las consultas y contribuciones en el menor tiempo posible. También se adoptará un compromiso para dar seguimiento a los resultados de los procesos participativos y responder a esas demandas específicamente. Por último, se adoptará el compromiso de estudiar la incorporación de indicadores para el seguimiento de los procesos de participación una vez finalizados con el fin de evaluar sistemáticamente su implementación. + +== Mejora continua y colaboración interinstitucional + +Se estipularán mecanismos de revisión y evaluación periódica para facilitar la mejora continua de la plataforma. + +Se dará prioridad a la colaboración y al intercambio de experiencias entre las instituciones involucradas en el proyecto con el objetivo de mejorar, fijar y construir nuevos desarrollos para la mejora continua de la plataforma. + +En este sentido, se facilitarán las condiciones y los entornos de colaboración cuando se avance en mejoras que apunten a un beneficio común de toda la plataforma, y se permitirán mecanismos de coordinación interinstitucionales cuando sea necesario. +Términos de uso + +Todos los puntos de este código deben reflejarse en el acuerdo de licencia de usuario final (EULA, por sus siglas en inglés), documento que cada organización que presta servicios utilizando Decidim establece con los usuarios y que nunca deberá ser contradicho. + diff --git a/en/modules/understand/pages/social-contract.adoc b/docs/en/modules/understand/pages/social-contract.adoc similarity index 96% rename from en/modules/understand/pages/social-contract.adoc rename to docs/en/modules/understand/pages/social-contract.adoc index 196871ae23..06d781dc02 100644 --- a/en/modules/understand/pages/social-contract.adoc +++ b/docs/en/modules/understand/pages/social-contract.adoc @@ -1,5 +1,12 @@ = Decidim's Social Contract +[NOTE] +==== +You can also read Decidim's Social Contract in other languages: xref:understand:social-contract-ca.adoc[Català] - xref:understand:social-contract-es.adoc[Castellano] + +If you want to translate it to your own language please https://decidim.org/contact[contact us]. +==== + Code for democratic guarantees and open collaboration This is the social contract that all members of the Decidim community are committed to follow. diff --git a/docs/en/modules/whitepaper/assets/images/decidim-in-context.svg b/docs/en/modules/whitepaper/assets/images/decidim-in-context.svg new file mode 100644 index 0000000000..68e1473310 --- /dev/null +++ b/docs/en/modules/whitepaper/assets/images/decidim-in-context.svg @@ -0,0 +1,1643 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + decentralized + centralized + private + public + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + GOVERNING INFRASTRUCTURES, GOODS & SERVICES + + + + + + citycouncils + + + + + + + + + + + + + state + + + + + + + +   + bigcorporations + Privatizations &(re)municipalizations +    + +     + + + + + + + + representative (and participatory)governing + participatorygoverning + Oligarchic and algorithmic governing + commonssolidarity economycooperatives + sharing economydistributed capitalism(Uber, AirBnB, etc.) + + + + + + + People +   + Copyleft 2016-18 by Xabier E. Barandiaran & Antonio Calleja, with GFDL & CreativeCommons By-SA 4.0 licenses: you are free to copy, modify and redistribute provided that this notice is preserved + Decidim +   +   + Oligarchic governing (lobbying) + + + + + + + + +   +   +   + Regulations +   + + diff --git a/en/modules/whitepaper/pages/decidim-a-brief-overview.adoc b/docs/en/modules/whitepaper/pages/decidim-a-brief-overview.adoc similarity index 91% rename from en/modules/whitepaper/pages/decidim-a-brief-overview.adoc rename to docs/en/modules/whitepaper/pages/decidim-a-brief-overview.adoc index 72e460fa25..67e7dfeeb8 100644 --- a/en/modules/whitepaper/pages/decidim-a-brief-overview.adoc +++ b/docs/en/modules/whitepaper/pages/decidim-a-brief-overview.adoc @@ -5,6 +5,10 @@ :page-partial: :source-highlighter: highlightjs + +IMPORTANT: The content of this section is a fragment of Barandiaran, X., Calleja-López, A. & Monterde, A. (2018). Decidim: political and technopolitical +networks for participatory democracy. __Decidim’s project white paper__, pp. 7-26. (You can http://ajbcn-meta-decidim.s3.amazonaws.com/uploads/decidim/attachment/file/2005/White_Paper.pdf[download an alpha version of the document here]) + *We have been busy building Decidim, it is now time to explain it*. The goal of this white paperfootnote:[A white paper is document that expresses the principles, vision, technical details and insights of a project with the goal of explaining, detailedly and contextually, its value, to help others understand, join and support the project.] is to explain in detail the nature of the Decidim project. The paper comes to fill a long lasting gap and outlines what the project is really about, why it is relevant, and how we (the Metadecidim community) have made it possible and developed it so far. It presents the Decidim platform, its features and design principles, but also other dimensions of the project, from the political to the technical. It also outlines the theoretical and political vision, as well as the practical and organizational work behind the project. This document also situates Decidim in a historical context defined by political struggle. Furthermore, it discusses some of the sociopolitical problems it tries to address and the possibilities it opens up looking forward. Authorship of this document entails not more, not less, than putting together, making explicit and elaborating a set of theoretical and practical principles and guidelines that have been developed by a multitude of participants in our community. *How to read this white paper and make it yours*. Readers might be interested on different dimensions of the project and we encourage you to find the chapter or section that best matches your interests. The introduction however is worth reading for any of you. We start with a brief explanation of what is Decidim, a definition of the project, how the platform works, the social contract that binds the project together, a description of the community and ecosystem behind it, the model of democracy that it embodies and the three dimensions of the project: the political, the technopolitical and the technical. We next move into the context in which Decidim has been developed to explain why we thought it was necessary to initiate or join this project, why it is relevant today both in the context of a crisis of democracy as we knew it and the context of an increasing control of social digital infraestructures by a few corporations. The rest of the paper is structured along the three planes or dimensions of the project: the political plane explains the model of democracy that Decidim embodies and makes possible, contrasting it with different limitations and models of contemporary democracy (representative democracy and party politics, technocracy and neoliberal models of governance, etc.) highlighting how Decidim makes possible to strengthen new and old forms of participatory democracy, collective intelligence and multitudinous political identities in public institutions and social organizations alike. The technopolitical planefootnote:[In short, by technopolitics we mean the intersection and hybridization of technology and politics. This is a conception of politics that focuses on the technical articulation of power, its structure and exercise, highlighting and intervening on devices, interfaces, codes, protocols, networks and methods in contrast with conceptions of politics that focuses on ideas, discourses, symbols and reasons. It is a conception of technology that focuses on its political dimensions, its mutability and its construction, highlighting and intervening in the power relationships, ideologies and logics in contrasts to views that understand it as value neutral and objective matters.] explains how this is made possible through the platform, its design principles, best configuration practices and the technological articulation of the project’s internal politics through the platform: the Metadecidim community. Finally, we extend into the details of the technical articulation of the project: how the software is produced, its architectural details, organizing protocols, legal licenses, collaborative practices, training programs, etc. diff --git a/en/modules/whitepaper/pages/what-is-decidim.adoc b/docs/en/modules/whitepaper/pages/what-is-decidim.adoc similarity index 78% rename from en/modules/whitepaper/pages/what-is-decidim.adoc rename to docs/en/modules/whitepaper/pages/what-is-decidim.adoc index db783d5404..a1668216ff 100644 --- a/en/modules/whitepaper/pages/what-is-decidim.adoc +++ b/docs/en/modules/whitepaper/pages/what-is-decidim.adoc @@ -4,12 +4,24 @@ :page-partial: :source-highlighter: highlightjs -.Video: https://youtu.be/zhMMW0TENNA[Decidim: Free Open-Source participatory democracy for cities and organizations]. +.Video: https://youtu.be/f6JMgJAQ2tc[Decidim: Free Open-Source participatory democracy for cities and organizations]. video::f6JMgJAQ2tc[youtube, width=720, height=390] -*Intro*. Decidim [http://decidim.org[http://decidim.org]], from the Catalan "let's decide" or “we decide”, is a digital infrastructure for participatory democracy, a digital platform, built entirely and collaboratively as https://en.wikipedia.org/wiki/Free_software[free software]. More specifically, Decidim is a web environment (a _framework_) produced in _Ruby on Rails_ (a programming language) that allows anybody to create and configure a website platform to be used in the form of a political network for democratic participation. The platform allows any organization (local city council, association, university, NGO, neighbourhood or cooperative) to create mass processes for strategic planning, participatory budgeting, public consultation, collaborative design for regulations, urban spaces and election processes, etc. It also makes possible to connect traditional in-person democratic meetings (assemblies, council meetings, etc.) with the digital world: sending meeting invites, managing registrations, facilitating the publication of minutes, etc. In addition, Decidim enables the structuring of government bodies or assemblies (councils, boards, working groups), the convening of consultations, referendums or channelling citizen or member initiatives to trigger different decision-making processes. Yet, the Decidim project is much more than that. +Decidim [http://decidim.org[http://decidim.org]], from the Catalan "let's decide" or “we decide”, is a digital platform for participatory democracy. +More specifically, Decidim is a web environment (a _framework_) produced in _Ruby on Rails_ (a programming language) that allows anybody to create and configure a website to be used in the form of a political network for democratic participation. It is built entirely and collaboratively as https://en.wikipedia.org/wiki/Free_software[free software]. -*Definition*: _Decidim is a public-common’s, free and open, digital infrastructure for participatory democracy_. It is convenient to explain the terms of this definition in inverse order. By “participatory democracy” we mean that form of “government of the people, for the people and by the people” in which people take part as equals or peers (from latin _pars_, part, and _capere_, to take). By taking part we mean that, under the current political model, that people take the part _of_ the sovereign power that belongs to them. And this should be an equal part for each. Moreover, we also mean, under an alternative model, to take part _in_ the autonomy of the social and political life, in the construction of collective potency: the capacity to coordinate and commit to collective action. The term “digital infrastructure” makes reference to a set of tools, resources, data-sets, documents, codes (legal, computer, etc.), interfaces and services that are digitalized or made accessible by digital means. This infrastructure is primarily a software platform for participatory democracy. Participants can create proposals, sign and support them, comment, receive notifications, attend public meetings or receive the minutes of the session. Administrators can design participatory processes, define the structure of democratic organs (like councils or committees), configure types of initiatives or set up consultations. The infrastructure also includes documentation, design (icons, images, logos, etc.), legal documents, datasets or training resources, among others. All these make possible to deploy a participatory democratic system in any organization (be it a municipality, a cooperative, an association, a union or a community). By “free and open” we mean that the project’s goods (the assets of the infrastructure) do no fall under the form of private property that excludes others from accessing, using, copying, modifying and re-publishing or reusing these resources but, instead, displays all the legal, technical and social means necessary to share them and open them to collaboration. Finally, the term “public-commons” indicates that the project is mostly financed and made possible by public institutions and is managed and designed by an open community constituted by public-servants, members of different associations, university researchers and students, activists and staff from foundations, workers from different companies or simply volunteers that commit to the principles of the project. For this infrastructure to be a common’s it is important that these partners organize democratically in relation to the project. In this sense Decidim is a reflexive infrastructure that uses the very infrastructure to democratize itself through the MetaDecidim community. +The platform allows any organization (local city council, association, university, NGO, neighbourhood or cooperative) to create mass processes for strategic planning, participatory budgeting, public consultation, collaborative design, etc. It also makes possible to connect traditional in-person democratic meetings with the digital world: sending meeting invites, managing registrations, facilitating the publication of minutes, etc. +In addition, Decidim enables the structuring of government bodies or assemblies (councils, boards, working groups), the convening of consultations, referendums or channelling citizen or member initiatives to trigger different decision-making processes. Yet, the Decidim project is much more than that. + +*Definition*: _Decidim is a public-common’s, free and open, digital infrastructure for participatory democracy_. + + - By “participatory democracy” we mean that form of “government of the people, for the people and by the people” in which people take part as equals or peers (from latin _pars_, part, and _capere_, to take). By taking part we mean that, under the current political model, people take the part _of_ the sovereign power that belongs to them. And this should be an equal part for each. Moreover, we also mean, under an alternative model, to take part _in_ the autonomy of the social and political life, in the construction of collective potency: the capacity to coordinate and commit to collective action. + - The term “digital infrastructure” makes reference to a set of tools, resources, data-sets, documents, codes (legal, computer, etc.), interfaces and services that are digitalized or made accessible by digital means. This infrastructure is primarily a software platform for participatory democracy. + + Participants can create proposals, sign and support them, comment, receive notifications, attend public meetings or receive the minutes of the session. Administrators can design participatory processes, define the structure of democratic organs (like councils or committees), configure types of initiatives or set up consultations. The infrastructure also includes documentation, design (icons, images, logos, etc.), legal documents, datasets or training resources, among others. All these make possible to deploy a participatory democratic system in any organization (be it a municipality, a cooperative, an association, a union or a community). + + - By “free and open” we mean that the project’s goods (the assets of the infrastructure) do no fall under the form of private property that excludes others from accessing, using, copying, modifying and re-publishing or reusing these resources but, instead, displays all the legal, technical and social means necessary to share them and open them to collaboration. + - Finally, the term “public-commons” indicates that the project is mostly financed and made possible by public institutions and is managed and designed by an open community constituted by public-servants, members of different associations, university researchers and students, activists and staff from foundations, workers from different companies or simply volunteers that commit to the principles of the project. For this infrastructure to be a common’s it is important that these partners organize democratically in relation to the project. In this sense, Decidim is a reflexive infrastructure that uses the very infrastructure to democratize itself through the MetaDecidim community. *Platform features and functional architecture*. Since the digital platform displays and embodies both the means of project organization and its democratic principles, it is important to explain how the platform works. Users of the platform (participants) interact through participatory mechanisms known as _components_ within different participatory _spaces_ that channel their democratic power to specific results. Participatory spaces are the frameworks that define how participation will be carried out, the _channels_ or means through which citizens or members of an organization can process requests or coordinate proposals and make decisions. _Initiatives_, _Processes_, _Assemblies_ and _Consultations_ are all participatory spaces. Specific examples of each of these include: a citizen initiative for directly changing a regulation (_Initiative_); a general assembly or workers’ council (_Assembly_); a participatory budgeting, strategic planning, or electoral process (_Processes_); a referendum or call to vote “Yes” or “No” to change the name of an organization (_Consultation_). The more notable components that are combined into spaces to deliver participatory mechanisms include in-person _meetings_, _proposals_, _blogs, debates, static information pages, surveys_, _results_ and _comments_. So, for example, the various phases of a participatory budgeting process (where members of an organization are called to decide how to spend a budget) can combine components in the following way: at an early phase, public meetings can be opened for citizens to analyze different needs classified by districts. In turn these meetings can lead to the design of a survey. The survey results can next be used to define a set of categories for projects to be proposed. The proposal component might then be activated for participants to create and publish their projects as solutions to the identified needs. These proposals can be commented on. After a period of deliberation, the voting component can be activated to select among the projects using a budget-expenditure system. Participants can then be called to a public meeting to evaluate the results and an assessment survey can then be launched for those who could not attend the meeting. Finally, the accountability component can be activated to monitor the degree of execution of the selected projects and people can comment on it. This is but one example of how components are combined in a space, but there are many other combinatorial possibilities. What makes Decidim particularly powerful is this combination of components within spaces, which provides an organization with a complete toolkit to easily design and deploy a democratic system adapted to its needs. diff --git a/en/modules/whitepaper/pages/why-decidim.adoc b/docs/en/modules/whitepaper/pages/why-decidim.adoc similarity index 100% rename from en/modules/whitepaper/pages/why-decidim.adoc rename to docs/en/modules/whitepaper/pages/why-decidim.adoc diff --git a/docs/es/modules/ROOT/nav.adoc b/docs/es/modules/ROOT/nav.adoc new file mode 100644 index 0000000000..ef8f361fc9 --- /dev/null +++ b/docs/es/modules/ROOT/nav.adoc @@ -0,0 +1,218 @@ +* xref:install:index.adoc[Getting started] +** xref:install:manual.adoc[Manual Installation] +** xref:install:checklist.adoc[Checklist] +** xref:install:update.adoc[Update] +* xref:configure:index.adoc[Configure] +** xref:configure:environment_variables.adoc[Environment Variables] +** xref:configure:initializer.adoc[Initializer] +** xref:customize:index.adoc[Customize] +*** xref:customize:authorizations.adoc[Authorizations] +*** xref:customize:code.adoc[Code] +*** xref:customize:data_consent.adoc[Data consent] +*** xref:customize:gemfile.adoc[Gemfile] +*** xref:customize:images.adoc[Images] +*** xref:customize:javascript.adoc[Javascript] +*** xref:customize:logic.adoc[Logic] +*** xref:customize:menu.adoc[Menu] +*** xref:customize:oauth.adoc[OAuth] +*** xref:customize:styles.adoc[Styles] +*** xref:customize:texts.adoc[Texts] +*** xref:customize:users_registration_mode.adoc[User registration mode] +*** xref:customize:views.adoc[Views] +** xref:services:index.adoc[Services] +*** xref:services:activejob.adoc[Active Job] +*** xref:services:activestorage.adoc[Active Storage] +*** xref:services:elections_bulletin_board.adoc[Elections Bulletin Board] +*** xref:services:etherpad.adoc[Etherpad] +*** xref:services:maps.adoc[Maps] +*** xref:services:sms.adoc[SMS] +*** xref:services:smtp.adoc[SMTP] +*** xref:services:social_providers.adoc[Social Providers] +* Admin +** xref:admin:index.adoc[Introduction] +*** xref:admin:system.adoc[System panel] +*** xref:admin:dashboard.adoc[Dashboard] +** Settings +*** xref:admin:configuration.adoc[Configuration] +*** xref:admin:appearance.adoc[Appearance] +*** xref:admin:homepage.adoc[Homepage] +*** xref:admin:scopes.adoc[Scopes] +*** xref:admin:areas.adoc[Areas] +*** xref:admin:help_sections.adoc[Help sections] +** xref:admin:pages.adoc[Pages] +** xref:admin:participants.adoc[Participants] +*** xref:admin:participants/admins.adoc[Admins] +*** xref:admin:participants/groups.adoc[Groups] +*** xref:admin:participants/participants.adoc[Participants] +*** xref:admin:participants/impersonations.adoc[Impersonations] +**** xref:admin:participants/verifications_conflicts.adoc[Verifications conflicts] +*** xref:admin:participants/reported_users.adoc[Reported users] +*** xref:admin:participants/authorizations.adoc[Authorizations] +**** xref:admin:participants/authorizations/identity_documents.adoc[Identity documents] +**** xref:admin:participants/authorizations/code_postal_letter.adoc[Code by postal letter] +**** xref:admin:participants/authorizations/census.adoc[Organization's census] +** xref:admin:spaces.adoc[Spaces] +*** xref:admin:spaces/processes.adoc[Participatory Processes] +**** xref:admin:spaces/processes/phases.adoc[Phases] +**** xref:admin:spaces/processes/components.adoc[Components] +**** xref:admin:spaces/processes/categories.adoc[Categories] +**** xref:admin:spaces/processes/attachments.adoc[Attachments] +**** xref:admin:spaces/processes/admins.adoc[Process admins] +**** xref:admin:spaces/processes/private_participants.adoc[Private participants] +**** xref:admin:spaces/processes/moderations.adoc[Moderations] +**** xref:admin:spaces/processes/groups.adoc[Process Groups] +*** xref:admin:spaces/assemblies.adoc[Assemblies] +**** xref:admin:spaces/assemblies/components.adoc[Components] +**** xref:admin:spaces/assemblies/categories.adoc[Categories] +**** xref:admin:spaces/assemblies/attachments.adoc[Attachments] +**** xref:admin:spaces/assemblies/members.adoc[Members] +**** xref:admin:spaces/assemblies/admins.adoc[Assembly admins] +**** xref:admin:spaces/assemblies/private_participants.adoc[Private participants] +**** xref:admin:spaces/assemblies/moderations.adoc[Moderations] +*** xref:admin:spaces/initiatives.adoc[Initiatives] +*** xref:admin:spaces/conferences.adoc[Conferences] +**** xref:admin:spaces/conferences/components.adoc[Components] +**** xref:admin:spaces/conferences/categories.adoc[Categories] +**** xref:admin:spaces/conferences/attachments.adoc[Attachments] +**** xref:admin:spaces/conferences/media_links.adoc[Media Links] +**** xref:admin:spaces/conferences/partners.adoc[Partners] +**** xref:admin:spaces/conferences/speakers.adoc[Speakers] +**** xref:admin:spaces/conferences/registrations.adoc[Registrations] +***** xref:admin:spaces/conferences/registrations/types.adoc[Registration Types] +***** xref:admin:spaces/conferences/registrations/users.adoc[User Registrations] +***** xref:admin:spaces/conferences/registrations/invites.adoc[Invites] +***** xref:admin:spaces/conferences/registrations/certificates.adoc[Certificate of Attendance] +**** xref:admin:spaces/conferences/admins.adoc[Conference admins] +**** xref:admin:spaces/conferences/moderations.adoc[Moderations] +*** xref:admin:spaces/consultations.adoc[Consultations] +*** xref:admin:spaces/votings.adoc[Votings] +** xref:admin:components.adoc[Components] +*** xref:admin:components/accountability.adoc[Accountability] +*** xref:admin:components/blog.adoc[Blog] +*** xref:admin:components/budgets.adoc[Budgets] +*** xref:admin:components/debates.adoc[Debates] +*** xref:admin:components/elections.adoc[Elections] +*** xref:admin:components/meetings.adoc[Meetings] +**** xref:admin:components/meetings/registrations.adoc[Registrations] +**** xref:admin:components/meetings/agenda.adoc[Agenda] +**** xref:admin:components/meetings/polls.adoc[Polls] +**** xref:admin:components/meetings/close.adoc[Close] +*** xref:admin:components/pages.adoc[Pages] +*** xref:admin:components/proposals.adoc[Proposals] +**** xref:admin:components/proposals/amendments.adoc[Amendments] +**** xref:admin:components/proposals/answers.adoc[Answers] +**** xref:admin:components/proposals/collaborative_drafts.adoc[Collaborative drafts] +**** xref:admin:components/proposals/participatory_texts.adoc[Participatory texts] +*** xref:admin:components/sortitions.adoc[Sortitions] +*** xref:admin:components/surveys.adoc[Surveys] +** Features +*** xref:admin:features/badges.adoc[Badges] +*** xref:admin:features/comments.adoc[Comments] +*** xref:admin:features/conversations.adoc[Conversations] +*** xref:admin:features/embed.adoc[Embed] +*** xref:admin:features/endorsements.adoc[Endorsements] +*** xref:admin:features/fingerprint.adoc[Fingerprint] +*** xref:admin:features/follows.adoc[Follows] +*** xref:admin:features/metrics.adoc[Metrics] +*** xref:admin:features/my_account.adoc[My account] +**** xref:admin:features/my_account/account.adoc[Account] +**** xref:admin:features/my_account/notifications_settings.adoc[Notifications settings] +**** xref:admin:features/my_account/authorizations.adoc[Authorizations] +**** xref:admin:features/my_account/groups.adoc[Groups] +**** xref:admin:features/my_account/my_interests.adoc[My interests] +**** xref:admin:features/my_account/my_data.adoc[My data] +**** xref:admin:features/my_account/delete_my_account.adoc[Delete my account] +*** xref:admin:features/my_public_profile.adoc[My public profile] +**** xref:admin:features/my_public_profile/timeline.adoc[Timeline] +**** xref:admin:features/my_public_profile/activity.adoc[Activity] +**** xref:admin:features/my_public_profile/badges.adoc[Badges] +**** xref:admin:features/my_public_profile/follows.adoc[Follows] +**** xref:admin:features/my_public_profile/followers.adoc[Followers] +**** xref:admin:features/my_public_profile/groups.adoc[Groups] +*** xref:admin:features/notifications.adoc[Notifications] +*** xref:admin:features/search.adoc[Search] +*** xref:admin:features/share.adoc[Share] +*** xref:admin:features/statistics.adoc[Statistics] +*** xref:admin:features/versions.adoc[Versions] +** xref:admin:newsletters.adoc[Newsletters] +** xref:admin:global_moderations.adoc[Global moderations] +** Deprecated +*** xref:admin:information-pages.adoc[Information pages] +* xref:contribute:index.adoc[Contribute] +** xref:contribute:governance.adoc[Governance] +** xref:contribute:translations.adoc[Translations] +** xref:contribute:documentation.adoc[Documentation] +* xref:develop:index.adoc[Develop] +** xref:develop:guide.adoc[Guide] +*** xref:develop:guide_example_apps.adoc[1. Example Applications] +*** xref:develop:guide_development_app.adoc[2. Development App] +*** xref:develop:guide_commands.adoc[3. Commands] +*** xref:develop:guide_conventions.adoc[4. Conventions] +*** xref:develop:guide_architecture.adoc[5. Architecture] +** xref:develop:security.adoc[Security] +** Advanced +*** Concerns +**** xref:develop:authorable.adoc[Authorable] +**** xref:develop:embeddable.adoc[Embeddable] +**** xref:develop:endorsable.adoc[Endorsable] +**** xref:develop:followable.adoc[Followable] +**** xref:develop:reportable.adoc[Reportable] +**** xref:develop:traceable.adoc[Traceable] +**** xref:develop:machine_translations.adoc[TranslatableResource aka Machine Translations] +**** xref:develop:share_tokens.adoc[Shareable with Tokens] +*** xref:develop:api.adoc[API] +*** xref:develop:components.adoc[Components] +*** xref:develop:content_processors.adoc[Content Processors] +*** xref:develop:custom_seed_data.adoc[Custom Seed Data] +*** xref:develop:deploy.adoc[Deploy] +*** xref:develop:docker.adoc[Docker] +*** xref:develop:fixing_locales.adoc[Fixing locales] +*** xref:develop:guide_github_projects.adoc[GitHub Projects Workflow] +*** xref:develop:maps.adoc[Maps] +*** xref:develop:managing_translations_i18n.adoc[i18n] +*** xref:develop:metrics.adoc[Metrics] +*** xref:develop:modules.adoc[Modules] +*** xref:develop:notifications.adoc[Notifications] +*** xref:develop:open-data.adoc[Open Data] +*** xref:develop:permissions.adoc[Permissions] +*** xref:develop:profiling.adoc[Profiling] +*** xref:develop:releases.adoc[Releases] +*** xref:develop:reminders.adoc[Reminders] +*** xref:develop:templates.adoc[Templates] +*** xref:develop:testing.adoc[Testing] +*** xref:develop:guide_development_with_localhost_ssl.adoc[Testing SSL and Tenants in Development] +*** xref:develop:turbolinks.adoc[Turbolinks] +*** Views +**** xref:develop:content_blocks.adoc[Content Blocks] +**** xref:develop:data-picker.adoc[Data Picker] +**** xref:develop:newsletter_templates.adoc[Newsletter Templates] +**** xref:develop:view_hooks.adoc[View Hooks] +**** xref:develop:view_models_aka_cells.adoc[View Models (Cells)] +* Understand +** xref:understand:about.adoc[About] +** xref:understand:background.adoc[Background] +** xref:features:general-description.adoc[Features] +*** xref:features:participatory-spaces.adoc[Participatory spaces] +*** xref:features:components.adoc[Components] +*** xref:features:participants.adoc[Participants] +*** xref:features:general-features.adoc[General features] ++ +// ** xref:understand:governance.adoc[Project governance] + +// ** xref:understand:history.adoc[History of the project] + +// ** xref:understand:research.adoc[Research] + +** xref:understand:social-contract.adoc[Social Contract] +*** xref:understand:social-contract-ca.adoc[Català] +*** xref:understand:social-contract-es.adoc[Castellano] +** Publications +*** xref:publications:catalan.adoc[Catalan] +*** xref:publications:english.adoc[English] +*** xref:publications:french.adoc[French] +*** xref:publications:german.adoc[German] +*** xref:publications:italian.adoc[Italian] +*** xref:publications:spanish.adoc[Spanish] +** Whitepaper +*** xref:whitepaper:decidim-a-brief-overview.adoc[Decidim: a brief overview] +* xref:releases:index.adoc[Release Notes] \ No newline at end of file diff --git a/docs/es/modules/ROOT/pages/index.adoc b/docs/es/modules/ROOT/pages/index.adoc new file mode 100644 index 0000000000..8ed5c4eb1d --- /dev/null +++ b/docs/es/modules/ROOT/pages/index.adoc @@ -0,0 +1,19 @@ += Welcome to Decidim Documentation + +This is the documentation site to Decidim, a participatory democracy platform created initially by Barcelona City Hall. + +Decidim is a framework that allows anybody to create and configure a website platform, to be used in the form of a political network for democratic participation. The platform allows any organization (local city council, association, university, NGO, neighbourhood or cooperative) to create mass processes for strategic planning, participatory budgeting, collaborative design for regulations, urban spaces and election processes. + +== New to Decidim? + +You’ve found the documentation for Decidim. Learn about the project at https://decidim.org[decidim.org]. + +// * Read the xref:ROOT:getting-started.adoc[Getting Started guide] + +The documentation covers xref:install:index.adoc[installing], xref:configure:index.adoc[configuring], and xref:admin:index.adoc[running] your own Decidim site. + +If you want to make changes to the source code, we have documentation for xref:develop:guide.adoc[developers] too. + +If you are an organisation who wants to use Decidim, or a developer who is interested in collaborating on the software, please https://decidim.org/contact[get in touch]. + +Decidim is a community effort, as such if you find any errors on these guides please let us know at hola [at] decidim [dot] org. Every help is welcome. If you've a GitHub user then you can even propose changes to this website with the Edit link on every page. \ No newline at end of file diff --git a/docs/es/modules/admin/pages/appearance.adoc b/docs/es/modules/admin/pages/appearance.adoc new file mode 100644 index 0000000000..3b42c76416 --- /dev/null +++ b/docs/es/modules/admin/pages/appearance.adoc @@ -0,0 +1,78 @@ += Appearance + +In this page you can configure the look and feel of your Decidim instance. + +Please mind that this would be incompatible with some of the changes that your implementers could change in your general installation. For instance if there were changes in the xref:customize:styles.adoc[Styles] this could not work. + +image::admin_appearance.png[Decidim Admin Appearance] + +--- + +NOTE: This is a legacy setting that will be removed in the next version. https://github.com/decidim/decidim/pull/6575[See PR]. + +* **Show statistics**: whether you want to show or not the statistics sections in the homepage. + +--- + +* **Description**: What's the description of this site. Used for metatags for Google and Twitter embeds. Also used by the "SubHero" ContentBlock in the Homepage. + +--- + +NOTE: These area legacy settings that will be removed in the next version. https://github.com/decidim/decidim/pull/6284[See PR]. + +* **Call To Action button path**: You can overwrite where the Call To Action button in the homepage links to. Use partial paths, not full URLs here. Accepts letters, numbers, dashes and slashes, and must start with a letter. The Call To Action button is shown in the homepage between the welcome text and the description. Example: https://meta.decidim.org/conferences/decidimfest2020/ +* **Call To Action button text**: You can overwrite the Call To Action button text in the homepage for each available language in your organization. If not set, the default value will be used. The Call To Action button is shown in the homepage between the welcome text and the description. + +--- + +NOTE: This is a legacy setting that will be removed in the next version. There's no PR yet. + +* **Highligted content banner** +** *Show the highlighted content banner* +** *Title* +** *Short description* +** *Action button title* +** *Action button subtitle* +** *Action button URL* +** *Image* + +--- + +* *Edit omnipresent banner* +** **Show omnipresent banner** +** **Title** +** **Short description** +** **URL** + +--- + +* **Edit layout appearance** + +This subsection defines the images for the layout that will be visible in almost all the pages. These are: + +** Icon +** Logo +** Official logo header +** Official logo footer +** Official organization URL + +// TODO: Add examples + +--- + +* **Organization colors**: What are the colors for your organization. Please notice that this could generate accessibility problems, for instance with people that doesn't have a good contrast notion. You can set +** Primary +** Secondary +** Success +** Warning +** Alert +** Highlight +** Highlight, alternative + +// TODO: Add examples + +--- + +* **Header snippets**: Use this field to add things to the HTML head. The most common use is to integrate third-party services that require some extra JavaScript or CSS. Also, you can use it to add extra meta tags to the HTML. Note that this will only be rendered in public pages, not in the admin section. + +// TODO: reference to HTML snippet setting \ No newline at end of file diff --git a/docs/es/modules/admin/pages/areas.adoc b/docs/es/modules/admin/pages/areas.adoc new file mode 100644 index 0000000000..b25b26c414 --- /dev/null +++ b/docs/es/modules/admin/pages/areas.adoc @@ -0,0 +1,11 @@ += Areas + +include::partial$deprecated.adoc[] + +Areas are all the sectors that an Organization can have. + +They are pretty similar to xref:admin:scopes.adoc[scopes], meaning that they are a way of allowing a better navigation and filtering in the spaces and components. + +We don't recommend using them, as probably in the future they will be removed. + +You can read more information about the history of Areas in this https://github.com/decidim/decidim/issues/3540#issuecomment-427324532[GitHub comment]. \ No newline at end of file diff --git a/docs/es/modules/admin/pages/components.adoc b/docs/es/modules/admin/pages/components.adoc new file mode 100644 index 0000000000..602089c849 --- /dev/null +++ b/docs/es/modules/admin/pages/components.adoc @@ -0,0 +1,5 @@ += Components + +Through components an administrator can enable and configure different participatory mechanisms. + +include::partial$components_list.adoc[] \ No newline at end of file diff --git a/docs/es/modules/admin/pages/components/accountability.adoc b/docs/es/modules/admin/pages/components/accountability.adoc new file mode 100644 index 0000000000..3657f8f81d --- /dev/null +++ b/docs/es/modules/admin/pages/components/accountability.adoc @@ -0,0 +1,10 @@ += Accountability + +The Accountability component allows people to follow project implementations. It works like a project management system built into the platform. It offers the following features: + +* creating results that represent projects to be implemented +* subdividing results into projects or sub-projects +* defining and applying progress in implementation statuses (0% to 100% implemented) around their implementation +* displaying the extent of the results’ implementation grouped by categories and scopes + +Results, projects and statuses can be updated through a CVS, or manually by the administration interface. \ No newline at end of file diff --git a/docs/es/modules/admin/pages/components/blog.adoc b/docs/es/modules/admin/pages/components/blog.adoc new file mode 100644 index 0000000000..78febc841b --- /dev/null +++ b/docs/es/modules/admin/pages/components/blog.adoc @@ -0,0 +1,145 @@ += Blog + +The Blog component allows people to read multiple posts ordered by date. + +Some examples of where this component was used: + +* https://meta.decidim.org/processes/roadmap/f/247/[News in Propose new functionalities for Decidim software] in https://meta.decidim.org[Metadecidim] + +image:components/blog/example01.png[Example of blog posts list] +image:components/blog/example02.png[Example of a blog post] + +To configure the Blog component: + +. Sign in as admin +. Go to admin panel +. In the main sidebar, click in the button for the space that you want to configure the component for. +For instance, it could be "Processes", "Assemblies" or "Conferences". +. Go to components +. Click on "Add component" button +. Click on "Blog" +. Fill the xref:_add_component[Add component] form + +== Add component + +image:components/blog/component.png[Add component form] + + +.Add component: Blog form +|=== +|Field |Type |Description + +|Name +|Required +|What is the title of this component. For instance, "Blogs" + +|Order position +|Optional +|Which order will it have in relation to the other blogs. Having a lower number means a higher priority. +For instance, if you have two blogs, "Blog a" with weight "10" and "Blog b" with weight "0", then "Blog b" will be first when ordering. +|=== + + +.Add component: Blog form - Global settings +|=== +|Field |Type |Description + +|Announcement +|Optional +|A general announcement that'll be visible on the general blogs landing page. + +|Comments enabled +|Optional +|Whether you want to have comments in the meetings. + +|Comments max length +|Optional +|What is the characters limit that participants will have when making comments. Leave 0 for default value. +|=== + +In the cases where the space that this component will be used has xref:admin:spaces/processes/phases.adoc[Phases], for instance, in +xref:admin:spaces/processes.adoc[Participatory Processes], then you can also define different behaviors per Step. + + +.Add component: Blogs form - Step settings +|=== +|Field |Type |Description + +|Announcement +|Optional +|A general announcement that'll be visible on the general blog landing page. + +|Comments blocked +|Optional +|Whether you want to enable comments creation for this phase. + +|Endorsements enabled +|Optional +|Whether you want to enable endorsements for this phase. + +|Endorsements blocked +|Optional +|Whether you want to disable adding new endorsements for this phase. +|=== + +== Permissions + +An administrator can choose which kind of xref:customize:authorizations.adoc[Authorizations] a participant need to have to make +certain actions in the blogs: + +* Comment +* Endorse + +== Manage posts + +image:components/blog/manage_posts.png[Manage posts table] + +=== New post form + +image:components/blog/new_post.png[New post form] + + +.New post form +|=== +|Field |Type |Description + +|Create post as +|Required +|Participant account or user group that will be the author of the post. + +|Title +|Required +|What is the title of this post. + +|Body +|Required +|What is the description of this post. +|=== + +==== Actions + + +.Actions +|=== +|Icon |Name |Definition + +|image:action_edit.png[Edit icon] +|Edit +|Edit form for this post. It's the same form as "New post". + +|image:action_folder.png[Folder icon] +|Folder +|For classifying Attachments. + +|image:action_attachments.png[Attachments icon] +|Attachments +|Documents that are related to the post. + +|image:action_permissions.png[Permissions icon] +|Permissions +|To handle the permissions of this post, depending on the verification a participant has. + +|image:action_delete.png[Delete icon] +|Delete +|To delete this post. +|=== \ No newline at end of file diff --git a/docs/es/modules/admin/pages/components/budgets.adoc b/docs/es/modules/admin/pages/components/budgets.adoc new file mode 100644 index 0000000000..e4e986f0b1 --- /dev/null +++ b/docs/es/modules/admin/pages/components/budgets.adoc @@ -0,0 +1,357 @@ += Budgets + +:page-toclevels: 4 + +The Budgets component allows people to vote by selecting projects of their choosing. Depending on the needs and normative +of the organization, this could be configured so people have assigned a total budget (for instance, 100.000 EUR) and then +every project has assigned a value (for instance, 10.000 EUR). Then when people vote on projects, they have a progress bar +where they see how much remaining budget they have to allocate in this voting. + +From this starting point, there could be other configurations, such as: + +* A minimum percentage of budget to be allocated +* A minimum number of projects to be allocated +* Multiple budgets, one for each district or neighborhood + +Some examples of where this component was used: + +* https://www.decidim.barcelona/processes/PressupostosParticipatius[2020/2021 Participatory Budgeting Process in Decidim Barcelona]. +The city of Barcelona (Spain) has allocated a budget of 30.000.000 EUR so people can present, define, prioritize, vote +and choose which investment projects the city goverment should execute. +* https://ecrivons.angers.fr/processes/BP2021[2021 Participatory Budgeting Process in Angers]. The city of Angers (France) has allocated +a budget of 1.000.000 EUR so people from 11 years can propose maximum of 3 ideas and then vote for their 5 favorite projects. +* https://omastadi.hel.fi/[2021 Participatory Budgeting Process in Helsinki]. Helsinki has allocated 8.8 million euros to realising +residents’ wishes. The ideas are developed together into proposals that Helsinki residents can vote on. The proposals with the +most votes are realised by the City. + +image:components/budgets/example01.png[Budgets example voting] +image:components/budgets/example02.png[Budgets example error messagge when exceding the amount of budget] +image:components/budgets/example03.png[Budgets vote confirmation] +image:components/budgets/example04.png[Budgets after voting] + +To configure the Budgets component: + +. Sign in as admin +. Go to admin panel +. In the main sidebar, click in the button for the space that you want to configure the component for. +For instance, it could be "Processes", "Assemblies" or "Conferences". +. Go to components +. Click on "Add component" button +. Click on "Budgets" +. Fill the xref:_add_component[Add component] form + +== Add component + +image:components/budgets/component.png[Add component form] + + +.Add component: Budgets form +|=== +|Field |Type |Description + +|Name +|Required +|What is the title of this component. For instance, "Budgets" + +|Order position +|Optional +|Which order will it have in relation to the other budgets. Having a lower number means a higher priority. +For instance, if you have two budgets, "Budget a" with weight "10" and "Budget b" with weight "0", then "Budget b" will be first when ordering. +|=== + + +.Add component: Budgets form - Global settings +|=== +|Field |Type |Description + +|Scopes enabled +|Optional +|Check if you want to have Scopes filtering in this component. + +|Scope +|Optional +|Which xref:admin:scopes.adoc[Scope] does this component belongs to. + +|Global scope +|Optional +| + +|xref:_workflows[Workflow] +|Required +|How the participants can vote if there are multiple budget sets. You can define your own xref:_workflows[Workflow] or use one of the availables. + +|Projects per page +|Required +|How many projects are displayed per page. + +|Enable rule: Minimum budget percentage +|Optional, but incompatible with "Minimum number of projects to be voted on" and "Selected projects with minimum and maximum number of projects to be voted on" +|Allows to define a "Vote threshold percent", a percent of the total budget that participants must reach to be able to vote. + +|Enable rule: Minimum number of projects to be voted on +|Optional, but incompatible with "Minimum budget percentage" and "Selected projects with minimum and maximum number of projects to be voted on" +|Allows to define a "Minimum number of projects to vote", a number of projects that participants must reach to be able to vote. + +|Enable rule: Selected projects with minimum and maximum number of projects to be voted on +|Optional, but incompatible with "Minimum budget percentage" and "Minimum number of projects to be voted on" +|Allows to define a "Minimum amount of projects to be selected" and a "Maximum amount of projects to be selected", the number of projects +that participants will need to vote as a minimum and maximum. + +|Comments enabled +|Optional +|Whether you want to have comments in the meetings. + +|Comments max length +|Optional +|What is the characters limit that participants will have when making comments. Leave 0 for default value. + +|Actions permissions can be set for each project +|Optional +|Whether you want to be able to set permissions for every one of the projects. Most of the time you will want to leave this option disabled. + +|Announcement +|Optional +|A general announcement that'll be visible on the general budgets landing page. + +|Budgets landing page +|Optional +|What message will be shown in the Budgets landing page when there are multiple budgets. + +|More information modal +|Optional +|What message will be shown when clicking on the "More information" link. +|=== + +In the cases where the space that this component will be used has xref:admin:spaces/processes/phases.adoc[Phases], for instance, in +xref:admin:spaces/processes.adoc[Participatory Processes], then you can also define different behaviors per Step. + + +.Add component: Budgets form - Step settings +|=== +|Field |Type |Description + +|Comments blocked +|Optional +|Whether you want to enable comments for this phase. + +|Voting +|Required +|Choose one of the following options depending in the moment of the process: Voting disabled, Voting enabled or Voting finished. + +|Show votes +|Optional +|Wheter the votes will be shown. We strongly recommend that you only check this option after the voting is finished. + +|Announcement +|Optional +|A general announcement that'll be visible on the general budgets landing page. + +|Budgets landing page +|Optional +|What message will be shown in the Budgets landing page when there are multiple budgets. + +|More information modal +|Optional +|What message will be shown when clicking on the "More information" link. +|=== + +== Permissions + +Edit permissions + +* Vote +* Comment + +== Workflows + +One neat feature of the Budgets component is the ability to define your own workflows. + +This means that you can define multiple Budgets, for instance one for every Neighberhood or District that a City has, and +you can also define multiple rullings regarding how people can vote on those Budgets. By default you have these workflows: + +* Vote in one: allows participants to vote in any budget, but only in one. +* Vote in all: allows participants to vote in all budgets. +* Vote in a random component: allows participants to vote only in one budget, selected randomly. + +But this can be extended in your application by a developer, by making your own Workflows. For instance for the +https://www.decidim.barcelona/processes/PressupostosParticipatius[2020/2021 Participatory Budgeting Process in Decidim Barcelona], +the people could vote in two districts: the one where they lived and one of their choosing. This was defined in the +https://github.com/AjuntamentdeBarcelona/decidim-barcelona/blob/743be2a210e8745d2dc443166642b285aed2b356/lib/budgets_workflow_pam2021.rb[decidim-barcelona application itself]. + +You can read more about Worfklows in https://github.com/decidim/decidim/blob/1ab5cd8fdabef48f5be94ff9c30c6bb3bc9a2f8f/decidim-budgets/README.md#budget-workflows[decidim-budgets README.md]. + +NOTE: You only want to have a voting without much complications? Like a city-wide vote? Don't worry: if you define only one +Budget, then people will go there directly when click in the Budgets section. + +== Manage budgets + +image:components/budgets/manage_budgets.png[Manage budgets table] + +This window also lets you see the votes that the various projects have received. (Number of votes) and the total number of votes (*Finished votes* and *Pending votes*, that is, that a participant has started voting but has still not cast their vote). + +=== Export all + +Allows to export the projects for this budget in different formats. + +* Projects as CSV +* Projects as JSON +* Projects as Excel + +=== New budget form + +image:components/budgets/new_budget.png[New budget form] + + +.New budget form +|=== +|Field |Type |Description + +|Title +|Required +|What is the title of this budget. For instance, "District A" + +|Order position +|Optional +|Which order will it have in relation to the other budgets. Having a lower number means a higher priority. +For instance, if you have two budgets, "Budget a" with weight "10" and "Budget b" with weight "0", then "Budget b" will be first when ordering. + +|Description +|Optional +|What is the description of this budget. + +|Total budget +|Required +|What is the total amount of money that people will have for assigning. +|=== + +==== Actions + + +.Actions +|=== +|Icon |Name |Definition + +|image:action_preview.png[Preview icon] +|Preview +|To see how it's shown in the frontend to participants. + +|image:action_list.png[Manage projects icon] +|xref:_manage_projects[Manage projects] +|Allows you to manage the projects of a budget. + +|image:action_edit.png[Edit icon] +|Edit +|Edit form for a budget. It's the same form as "New budget". + +|image:action_delete.png[Delete icon] +|Delete +|To delete this budget. Only can be done when there aren't any projects. +|=== + +==== Manage projects + +===== Import proposals to projects + +Depending in the normative, you could want to have a first phase where participants +make proposals, and those proposals are selected (by voting or by technical review), +then you can import those proposals and convert them to projects. + +For this to work: + +. The following settings in the proposals component need to be enabled: +.. Proposal answering enabled +.. Enable costs on proposal answers +. A valuator or administrator need to Answer proposals: +.. Review the proposals +.. Accept or reject them according to your normative +.. Add costs to the proposals if were accepted +. An administrator can Import proposals to projects + +image:components/budgets/import_proposals.png[Import proposals to projects] + +===== Export all + +Allows to export the projects for this budget in different formats. + +* Projects as CSV +* Projects as JSON +* Projects as Excel + +===== New project form + +image:components/budgets/new_project.png[New project form for a Budget] + + +.New project form +|=== +|Field |Type |Description + +|Title +|Required +|The title for this project. + +|Description +|Required +|A description of what this project is about. + +|Budget amount +|Required +|What's the budget amount for this project. How much money will it cost to implement this project? + +|Category +|Optional +|Which Category has the project. Used for filtering in the budgets list. + +|Proposals +|Optional +|Choose related proposals for this project. Automatic assingned when importing proposals. + +|Add an image gallery +|Optional +|Add multiple images illustrating what this project is about, or where it will be implemented. +|=== + +===== Actions + + +.Actions +|=== +|Icon |Name |Definition + +|image:action_preview.png[Preview icon] +|Preview +|To see how it's shown in the frontend to participants. + +|image:action_edit.png[Edit icon] +|Edit +|Edit form for a project. It's the same form as "New project". + +|image:action_folder.png[Folders icon] +|Folders +|For classifying Attachments. + +|image:action_attachments.png[Attachments icon] +|Attachments +|Documents that are related to the project. + +|image:action_delete.png[Delete icon] +|Delete +|To delete this project. +|=== + +== Results + +After the voting step has finished, then an administrator need to: + +. Change the Voting configuration for the Budget component to "Voting finished" +. Go to the Budgets and view the results +. On the projects that according to the normative have been selected, she'll need to go to each project, edit it and +then check the "Selected for implementation". + +image:components/budgets/results_unselected.png[Unselected projects after voting] +image:components/budgets/results_select_project.png[Select a project for implementation] +image:components/budgets/results_selected.png[Selected projects after voting] +image:components/budgets/results_selected_frontend.png[Selected projects after voting in the frontend] + +We strongly recommend that after you have selected projects then you enable the xref:components/accountability.adoc[Accountability] +component so participants can see the grade of impementation. \ No newline at end of file diff --git a/docs/es/modules/admin/pages/components/debates.adoc b/docs/es/modules/admin/pages/components/debates.adoc new file mode 100644 index 0000000000..6f62a9f8b5 --- /dev/null +++ b/docs/es/modules/admin/pages/components/debates.adoc @@ -0,0 +1,230 @@ += Debate + +The Debate component allows people to have discussions, without voting nor prioritzation. It also allows to close them, +by adding conclusions or a summary of what the discussion was about. + +From this starting point, there could be other configurations, such as: + +* To allow debates creation by participants +* To have debates with a fixed started and ending date or open +* To show endorsements (public supports) or not + +Some examples of where this component was used: + +* https://meta.decidim.org/processes/roadmap/f/219/[Propose new functionalities for Decidim software in Metadecidim] + +image:components/debates/example01.png[Debates listing example] +image:components/debates/example02.png[Debate example] + +To configure the Debate component: + +. Sign in as admin +. Go to admin panel +. In the main sidebar, click in the button for the space that you want to configure the component for. +For instance, it could be "Processes", "Assemblies" or "Conferences". +. Go to components +. Click on "Add component" button +. Click on "Debate" +. Fill the xref:_add_component[Add component] form + +== Add component + +image:components/debates/component.png[Add component form] + + +.Add component: Debate form +|=== +|Field |Type |Description + +|Name +|Required +|What is the title of this component. For instance, "Debates" + +|Order position +|Optional +|Which order will it have in relation to the other debates. Having a lower number means a higher priority. +For instance, if you have two debates, "Debate a" with weight "10" and "Debate b" with weight "0", then "Debate b" will be first when ordering. +|=== + + +.Add component: Debate form - Global settings +|=== +|Field |Type |Description + +|Scopes enabled +|Optional +|Check if you want to have Scopes filtering in this component. + +|Scope +|Optional +|Which xref:admin:scopes.adoc[Scope] does this component belongs to. + +|Global scope +|Optional +| + +|Comments enabled +|Optional +|Whether you want to have comments in the meetings. + +|Comments max length +|Optional +|What is the characters limit that participants will have when making comments. Leave 0 for default value. + +|Announcement +|Optional +|A general announcement that'll be visible on the general debates landing page. +|=== + +In the cases where the space that this component will be used has xref:admin:spaces/processes/phases.adoc[Phases], for instance, in +xref:admin:spaces/processes.adoc[Participatory Processes], then you can also define different behaviors per Step. + + +.Add component: Debates form - Step settings +|=== +|Field |Type |Description + +|Endorsements enabled +|Optional +|Check if you want that participants show public support for these debates. + +|Endorsements blocked +|Optional +| + +|Debate creation by participants enabled +|Optional +|Check if you want to allow the creation of new debates by participants. + +|Comments blocked +|Optional +|Whether you want to enable comments for this phase. + +|Announcement +|Optional +|A general announcement that'll be visible on the general debate landing page. +|=== + +== Permissions + +An administrator can choose which kind of xref:customize:authorizations.adoc[Authorizations] a participant need to have to make +certain actions in the debates: + +* Create +* Endorse + +== Manage debates + +image:components/debates/manage_debates.png[Manage debates table] + +=== Export all + +Allows exporting the comments in the debates in different formats. + +* Comments as CSV +* Comments as JSON +* Comments as Excel + +=== New debate form + +image:components/debates/new_debate_backend.png[New debate backend form] + + +.New debate form +|=== +|Field |Type |Description + +|Title +|Required +|What is the title of this debate. For instance, "How can we improve this process?" + +|Description +|Required +|What is the description of this debate. + +|Instructions to participate +|Required +|Add a message for the participants. + +|Information updates +|Optional +|Add a message for the participants. + +|xref:_debate_types[Debate type] +|Required +|Choose between Finite and Open. Finite means that the debate has a starting and ending date and time, Open means that +there isn't any timeframe. + +|Starts at +|Required if the debate type is Finite +|Expected format: dd/mm/yyyy hh:ii + +|Ends at +|Required if the debate type is Finite +|Expected format: dd/mm/yyyy hh:ii + +|Category +|Optional +|Which category has the debate. Used for filtering in the debates list. +|=== + +==== Debate types + +It's possible to have two kinds of debates: + +. Finite: with a start and end date +. Open: without a start and end date + +This is shown publically in the debate list. + +image:components/debates/debates_list.png[Debates list] +image:components/debates/debate_finite.png[Finite debate] + +==== Actions + + +.Actions +|=== +|Icon |Name |Definition + +|image:action_edit.png[Edit icon] +|Edit +|Edit form for a debate. It's the same form as "New debate". + +|image:action_close.png[Close icon] +|Close +|Close form for a debate. For adding conclusions. + +|image:action_permissions.png[Permissions icon] +|Permissions +|To handle the permissions of this debate, depending on the verification a participant has. + +|image:action_delete.png[Delete icon] +|Delete +|To delete this debate. Only can be done when there aren't any projects. +|=== + +=== Close debate form + +A debate can be closed. This is useful for adding conclusions. After a debate was closed it can't be edited nor commented any more + +image:components/debates/close_debate_backend.png[Close debate backend form] + +Take in account that if the debate was created by a participant then only that +participant can close it. + +image:components/debates/close_debate_frontend.png[Close debate frontend form] + + +.Close debate form +|=== +|Field |Type |Description + +|Conclusions +|Required +|What is the conclusion for this debate. +|=== + +The conclusions are shown publicly with the close date and time. + +image:components/debates/debate_closed.png[Closed debate] \ No newline at end of file diff --git a/docs/es/modules/admin/pages/components/elections.adoc b/docs/es/modules/admin/pages/components/elections.adoc new file mode 100644 index 0000000000..d8d661054c --- /dev/null +++ b/docs/es/modules/admin/pages/components/elections.adoc @@ -0,0 +1,3 @@ += Elections + +include::admin:partial$development.adoc[] \ No newline at end of file diff --git a/docs/es/modules/admin/pages/components/meetings.adoc b/docs/es/modules/admin/pages/components/meetings.adoc new file mode 100644 index 0000000000..96b29fa84e --- /dev/null +++ b/docs/es/modules/admin/pages/components/meetings.adoc @@ -0,0 +1,411 @@ += Meetings + +Meetings are where people come together to discuss or inform about a given topic. All the meetings have a given location +(where the meeting will happen) and start and end date and time (when the meeting will happen). + +Some examples of where this component was used are: + +* https://www.decidim.barcelona/processes/PAM2020/f/3734/[Procés participatiu del Programa d'Actuació Municipal (PAM) 2020-2023] +in https://www.decidim.barcelona/[Decidim Barcelona] +* https://lejourdapres.parlement-ouvert.fr/processes/ateliers/f/14/[Les ateliers] in https://lejourdapres.parlement-ouvert.fr/[Le jour d'après] + +image:components/meetings/example01.png[Meetings list in Decidim Barcelona] +image:components/meetings/example02.png[Example meeting detail 01 in Decidim Barcelona] +image:components/meetings/example03.png[Example meeting detail 02 in Decidim Barcelona] +image:components/meetings/example04.png[Meetings list in Le jour d'après] + +== Types + +Regarding the *location*, depending on the configuration of the component, you can have: + +* In-person meetings: where you get together in a given location +* Online meetings: where you get together using an external service (for instance Jitsi Meet) + +Depending in the *author* (who's the person that's making the call): + +* Official meetings: meetings created by the organization (created by an administrator through the panel) +* Citizens meetings: meetings created by a User participant (a User or an UserGroup). + +== Add the component + +image:components/meetings/component.png[Add a meetings component] + +For adding the component, you need to: + +. Sign in as admin +. Go to admin panel +. In the main sidebar, click in the button for the space that you want to configure the component for. +For instance, it could be "Processes", "Assemblies", or "Conferences" +. Go to components +. Click on "Add component" button +. Click on "Meetings" +. Fill the xref:_add_component[Add component] form + +== Add component + +For configuring the meeting component you have these settings: + + +.Add component - Meetings form +|=== +|Field |Type |Description + +|Name +|Required +|What is the name of this component. + +|Order position +|Optional +|Which order will it have in relation with the other components. Having a lower number means a higher priority. For instance, +if you have two components, "Proposals" with weight "10" and "Meetiings" with weight "0", then "Meetings" will be first when ordering. +|=== + + +.Add component - Meetings form: Global settings +|=== +|Field |Type |Description + +|Scopes enabled +|Optional +|Check if you want to have Scopes filtering in this process. + +|Scope +|Optional +|Which scope will be used for this component. + +|Announcement +|Optional +|A general announcement that'll be visible in the general meetings list. + +|Default registration terms +|Optional +|What'll be the registration terms of service that the participant would need to accept when registering. + +|Comments enabled +|Optional +|Whether you want to have comments in the meetings. + +|Comments max length +|Optional +|What is the characters limit that participants will have when making comments. Leave 0 for default value. + +|Registration code enabled +|Optional +|Check if you want to give registration codes to participants. Learn more in xref:components/meetings/registrations.adoc[Registrations]. + +|Actions permissions can be set for each meeting +|Optional +|If you want more granular permissions inside of every one of the Meetings. + +|Enable pads creation +|Optional +|If you want an Etherpad embedded in your meetings. Must have the xref:services:etherpad.adoc[Etherpad] integration configurated. + +|Participants can create meetings +|Optional +|Allows participants to create new meetings. See xref:_citizens_meetings[Citizens meetings] + +|Maps enabled +|Optional +|Wheter you want to show a map in the meetings in the meeting detail. +|=== + + +.Add component - Meetings form: Step settings +|=== +|Field |Type |Description + +|Announcement +|Optional +|A general announcement that'll be visible in the general meetings list. + +|Comments enabled +|Optional +|Whether you want to have comments in the meetings. +|=== + +== Create a new meeting + +=== Citizens meetings + +Meetings can be created by participants if the setting is "Participants can create meetings" is checked. + +If a participant belongs to a xref:admin:participants/groups.adoc[user group], then she'll be able to create meetings as that group also. + +image:components/meetings/new_meeting_form_frontend01.png[Create a new meeting form (frontend)] +image:components/meetings/new_meeting_form_frontend02.png[Create a new meeting form (frontend)] + + +.Create meeting - Frontend form +|=== +|Field |Type |Description + +|Title +|Required +|What is the title for this meeting. + +|Description +|Required +|A description of what will be discussed in this meeting, like the topics. + +|Type +|Required +|Choose one option between "In person", "Online" or "Booth" + +|Address +|Required if meeting type is "In person" or "Booth" +|Address: used by Geocoder to find the location + +|Location +|Required +|Location: message directed to the users implying the spot to meet at + +|Location hints +|Optional +|Location hints: additional info. Example: the floor of the building + +|Online meeting URL +|Optional +|Which URL will the meeting be held. + +|Show embedded iframe for this URL +|Optional +|Whether or not embed the iframe for this videoconference URL. Only a few services allow embedding (i.e. YouTube, Twitch...) + +|Start Time +|Required +|Which day and time will the meeting start. Expected format: dd/mm/yyyy hh:ii + +|End Time +|Required +|Which day and time will the meeting start. Expected format: dd/mm/yyyy hh:ii + +|Category +|Optional +|Which Category has the meeting. Used for filtering in the meetings list. + +|Registration type +|Required +|Choose one option between "Registration disabled", "On this platform", or "On a different platform" + +|Available slots for this meeting +|Required if "Registration type" is "On this platform" +|How many slots are available for this meeting? Leave it to 0 if you have unlimited slots available + +|Registration terms +|Required if "Registration type" is "On this platform" +|What terms of services participants need to accept to register or join the meeting. Specific to "Citizens meetings" + +|Registration URL +|Required if "Registration type" is "On a different platform" +|Must be an URL. Link to go on the external service that you are using for registrations. + +|Create meeting as +|Required if the participant belongs to a group +|With which identity she wants to create this meeting: as her user or as a group that she's reprensenting? +|=== + +After creating the meeting, participants can also edit and xref:components/meetings/close.adoc[close] it. + +=== Official meetings + +image:components/meetings/new_meeting_form_backend.png[Create a new meeting form (backend)] + + +.Create meeting - Backend form +|=== +|Field |Type |Description + +|Title +|Required +|What is the title for this meeting. + +|Description +|Required +|A description of what will be discussed in this meeting, like the topics. + +|Type +|Required +|Choose one option between "In person", "Online" or "Booth" + +|Address +|Required if meeting type is "In person" or "Booth" +|Address: used by Geocoder to find the location + +|Location +|Required +|Location: message directed to the users implying the spot to meet at + +|Location hints +|Optional +|Location hints: additional info. Example: the floor of the building + +|Online meeting URL +|Optional +|Which URL will the meeting be held. + +|Show embedded iframe for this URL +|Optional +|Whether or not embed the iframe for this videoconference URL. Only a few services allow embedding (i.e. YouTube, Twitch...) + +|Start Time +|Required +|Which day and time will the meeting start. Expected format: dd/mm/yyyy hh:ii + +|End Time +|Required +|Which day and time will the meeting start. Expected format: dd/mm/yyyy hh:ii + +|Category +|Optional +|Which Category has the meeting. Used for filtering in the meetings list. + +|Registration type +|Required +|Choose one option between "Registration disabled", "On this platform", or "On a different platform" + +|Available slots for this meeting +|Required if "Registration type" is "On this platform" +|How many slots are available for this meeting? Leave it to 0 if you have unlimited slots available + +|Registration URL +|Required if "Registration type" is "On a different platform" +|Must be an URL. Link to go on the external service that you are using for registrations. + +|Private meeting +|Optional +|Check if the meeting shouldn't be visible for all the visitors. Specific to "Official meetings". + +|Transparent +|Optional +|Related to "Private meeting", check if the meeting should be visible for all the visitors but they shouldn't be able to +participate in. Specific to "Official meetings". Specific to "Official meetings". + +|Customize registration email +|Optional +|Wheter you want to add a message in the registration email. Specific to "Official meetings". + +|Registration email custom content +|Required if "Customize registration email" is checked +|The content of the customized email. This text will appear in the middle of the registration confirmation email. Just +after the registration code. Specific to "Official meetings". +|=== + +You can also define *Services* inside of a Meeting. These are metadata that allows to comunicate, for instance, if there's +a place for children, deaf assistance, translations, etc. You can have multiple services inside of a meeting. + + +.Create meeting - Services +|=== +|Field |Type |Description + +|Title +|Required +|Title of the service. + +|Description +|Optional +|Description of the service. +|=== + +== Actions + +=== Citizens meetings + + +.Actions - Citizens meetings +|=== +|Icon |Name |Definition + +|image:action_preview.png[Preview icon] +|Preview +|To see how it's shown in the frontend to participants. + +|image:action_permissions.png[Permissions icon] +|Permissions +|To handle the permissions of this meeting, depending on the verification a participant has. Allows an admin to configure +who can *Join* a meeting. +|=== + +=== Official meetings + + +.Actions - Official meetings +|=== +|Icon |Name |Definition + +|image:action_publish.png[Publish icon] +|Publish +|To show publicly the meeting. + +|image:action_publish.png[Unpublish icon] +|Unpublish +|To not show publicly the meeting. + +|image:action_preview.png[Preview icon] +|Preview +|To see how it's shown in the frontend to participants. + +|image:action_duplicate.png[Duplicate icon] +|Duplicate +|Allows an admin to duplicate a meeting. + +|image:action_registrations.png[Registrations icon] +|xref:admin:components/meetings/registrations.adoc[Registrations] +|Allows to define who can register for attending to the meeting. + +|image:action_edit.png[Edit icon] +|Edit +|Edit form for a Meeting. It's the same form as "Create a new meeting". + +|image:action_agenda.png[Agenda icon] +|xref:admin:components/meetings/agenda.adoc[Agenda] +|To add the topics that will be discussed in the meeting. + +|image:action_list.png[Poll icon] +|xref:admin:components/meetings/polls.adoc[Polls] +|To manage the polls for this online meeting. + +|image:action_close.png[Close icon] +|xref:admin:components/meetings/close.adoc[Close] +|Allows and admin to Close the meeting and add extra information. + +|image:action_folder.png[Folders icon] +|Folders +|For classifying Attachments. + +|image:action_attachments.png[Attachments icon] +|Attachments +|Documents that are related to the meeting. + +|image:action_permissions.png[Permissions icon] +|Permissions +|To handle the permissions of this meeting, depending on the verification a participant has. Allows an admin to configure +who can *Join* a meeting. + +|image:action_delete.png[Delete icon] +|Delete +|To delete this meeting. +|=== + +== Meetings features + +There are different kinds of features that can be enabled in meetings, such as: + +* xref:admin:components/meetings/registrations.adoc[Registrations]: for managing how particpant can register to attend the meeting. +* xref:admin:components/meetings/agenda.adoc[Agenda]: for seeing the topics that will be discussed in the meeting by minutes. +* xref:admin:components/meetings/polls.adoc[Polls]: for quick voting during an online meeting. +* xref:admin:components/meetings/close.adoc[Close]: for adding the final report on what was discussed in the meeting. + +== Online meetings + +Depending in the moment and configuration of the meeting, there could be different messages that will be shown to the participants. + +. If the "Online meeting URL" ins't set, there'll be a message that says "Link available soon" +image:components/meetings/online_meeting_available_soon.png[Online meeting available soon] +. If the "Online meeting URL" is set, and a few minutes before the meeting start, the mesage will say "The link to join +the meeting will be available a few minutes before it starts" +image:components/meetings/online_meeting_available_before.png[Online meeting available before it starts] +. If the "Online meeting URL" is set, and the start time of the meeting has arrived, then there'll be a message that says +that "the meeting is happening right now", with a link to join the meeting. +image:components/meetings/online_meeting_happening.png[Online meeting available before it starts] \ No newline at end of file diff --git a/docs/es/modules/admin/pages/components/meetings/agenda.adoc b/docs/es/modules/admin/pages/components/meetings/agenda.adoc new file mode 100644 index 0000000000..5ec6d771ab --- /dev/null +++ b/docs/es/modules/admin/pages/components/meetings/agenda.adoc @@ -0,0 +1,91 @@ += Agenda + +The agenda feature allows an administrator to define the schedule for a meeting. It's possible to define agenda items and +sub-items, with every one of the topics that will be discussed in the meeting, along with a description and the duration +of every item and sub-item. + +image:components/meetings/agenda/agenda_frontend.png[Agenda in the frontend] + +== New agenda form + +To define an agenda for a meeting: + +. Sign in as admin +. Go to admin panel +. In the main sidebar, click in the button for the space that you want to configure the component for. +For instance, it could be "Processes", "Assemblies", or "Conferences" +. Click on "Meetings" +. Search the meeting that you want to add the agenda to +. Click on the "Agenda" button image:action_agenda.png[Agenda button] +. Fill the form + +image:components/meetings/agenda/new_agenda_form.png[New agenda form in the backend] + + +.New agenda form +|=== +|Field |Type |Description + +|Title +|Required +|Title for the agenda. For instance, "Schedule" + +|Visible +|Optional +|Check if you want to publish the agenda. + +|Agenda items +|Required +|List of agenda items. +|=== + +It's possible to create any number of Agenda items and sub-items. You can up or down the hierarchy of the agenda items. +It's also possible to remove and edit the agenda items. + + +.Agenda item form +|=== +|Field |Type |Description + +|Title +|Required +|Title for the agenda item + +|Duration +|Required +|How many minutes will the agenda item last. For instance, "15". + +|Description +|Optional +|Title for the agenda item + +|Agenda sub-items +|Optional +|List of agenda sub-items. +|=== + +The only limitation that agenda items and sub-items have is that they have to respect the duration of the parent. For instance, +if there's an Item that lasts 60 minutes, you can't create a sub-item that lasts 90 minutes. + +As an example, this agenda: + +image:components/meetings/agenda/agenda_frontend.png[Agenda in the frontend] + +Has the following configuration: + +* Title: "Schedule" +* Visible: true +* Agenda item #1: +** Title: Diagnosis +** Duration: 60 +* Agenda item #2: +** Title: Ideation +** Duration: 120 +** Agenda sub-item #2.1: +*** Title: Future thinking +*** Duration: 60 +*** Description: Imagining how we can solve the problem +** Agenda sub-item #2.2: +*** Title: Creating proposals +*** Duration: 60 +*** Description: In the platform \ No newline at end of file diff --git a/docs/es/modules/admin/pages/components/meetings/close.adoc b/docs/es/modules/admin/pages/components/meetings/close.adoc new file mode 100644 index 0000000000..f598ec1e90 --- /dev/null +++ b/docs/es/modules/admin/pages/components/meetings/close.adoc @@ -0,0 +1,103 @@ += Close + +After a meeting has passed it's possible and recommened to close the meeting. This allows to adds the minutes, the notes +that gives a summary on what was discussed during the meeting, the agreements reached, decisions made, etc. + +This allows to bring transparency to the meeting and also serves as a record of the different meetings. + +It's also possible to add other kind of metadata to the meeting, such as what organizations has attended, how many attendees +and contributions were, and what proposals were discussed. + +image:components/meetings/close/frontend.png[Close report in the frontend] + +== Close meeting form + +=== Official meetings + +To close a meeting: + +. Sign in as admin +. Go to admin panel +. In the main sidebar, click in the button for the space that you want to configure the component for. +For instance, it could be "Processes", "Assemblies", or "Conferences" +. Click on "Meetings" +. Search the meeting that you want to close +. Click on the "Close" button image:action_close.png[Close button] +. Fill the form + +image:components/meetings/close/form_backend.png[Close meeting form in the backend] + + +.Close meeting form (backend) +|=== +|Field |Type |Description + +|Minutes +|Required +|Description of what happened in the meeting. + +|List of organizations that attended +|Optional +|Metadata that gets shown in the sidebar of the meeting. + +|Number of attendees +|Required +|Metadata that gets shown in the sidebar of the meeting. Must be a number. + +|Number of contributions +|Optional +|Metadata that gets shown in the sidebar of the meeting. Must be a number. + +|Proposals +|Optional +|Choose proposals from this space that were discussed in this meeting + +|Video URL +|Optional +|It's not used for anything. It will be removed in the future. + +|Audio URL +|Optional +|It's not used for anything. It will be removed in the future. + +|Is visible +|Optional +|Check if you want to publish the close report +|=== + +=== Citizens meetings + +Just like participants can create meetings, they can also close a meeting. They have fewer fields to fill. + +To close a a meeting: + +. Sign in as the participant that created the meeting +. Go to the meeting page +. Click on "Close". This will only be visible after the meeting has passed +. Fill the form + +image:components/meetings/close/form_frontend.png[Close meeting form in the frontend] + + +.Close meeting form (frontend) +|=== +|Field |Type |Description + +|Minutes +|Required +|Description of what happened in the meeting. + +|Number of attendees +|Required +|Metadata that gets shown in the sidebar of the meeting. Must be a number. + +|Proposals +|Optional +|Choose proposals from this space that were discussed in this meeting +|=== + +== Proposals + +If you relate a proposal to a meeting, the meeting also will be shown in the proposal. + +image:components/meetings/close/related_proposal.png[Related meeting in a proposal] \ No newline at end of file diff --git a/docs/es/modules/admin/pages/components/meetings/polls.adoc b/docs/es/modules/admin/pages/components/meetings/polls.adoc new file mode 100644 index 0000000000..99c7b70291 --- /dev/null +++ b/docs/es/modules/admin/pages/components/meetings/polls.adoc @@ -0,0 +1,29 @@ += Polls + +CAUTION: this feature is still in active development and can't be used in production yet. + +Through the manage polls feature is possible to define a poll that will be displayed when an online meeting is ocurring. +This is useful to see quick feedback and make a decision inside the meeting without having to leave the meeting and use +other kind of tools (like surveys or proposals). + +With this feature an administrator can define questions and also manage when these questions and its results will be shown +to participants. + +== Enable polls for a meeting + +To enable polls for a meeting: + +. Sign in as admin +. Go to admin panel +. In the main sidebar, click in the button for the space that you want to configure the component for. +For instance, it could be "Processes", "Assemblies", or "Conferences" +. Click on "Meetings" +. Search the meeting that you want to define polls for +. Click on the "Manage polls" button image:action_list.png[Manage polls button] +. Fill the form + +The form is pretty much the Decidim form builder, with one caveat: you can only define Single and Multiple option questions. + +image:components/meetings/polls/backend.png[Backend for meeting polls] + +image:components/meetings/polls/backend_question.png[Definining a question in meeting polls] \ No newline at end of file diff --git a/docs/es/modules/admin/pages/components/meetings/registrations.adoc b/docs/es/modules/admin/pages/components/meetings/registrations.adoc new file mode 100644 index 0000000000..71f3b3adb2 --- /dev/null +++ b/docs/es/modules/admin/pages/components/meetings/registrations.adoc @@ -0,0 +1,105 @@ += Registrations + +Through registrations you can have capacity control of the attendance for a meeting. With this feature for instance you can +limit how many people could attend to the meeting, or you can know before the start of a meeting if you need to find a bigger +room to have the meeting. + +Enabling this feature will add a button so that participants can express their wish to go to the meeting. Depending in how +this feature is configured, then: + +. it's possible to define how many slots are available for controling the maximum capacity for this meeting +. a xref:_registration_form[custom registration form] for asking information to participants can be configured +. administrators can make xref:_invitations[invitations] to other participants or people that isn't registered in the platform +. it's possible to control attendance to the meeting through xref:_registration_code[registration codes] + +image:components/meetings/registrations/frontend_join_meeting.png[Join a meeting sidebar button] + +Once participants confirm joining a meeting they get asked if they're reprensenting a group and if they want to show publicly that they're attending. + +image:components/meetings/registrations/frontend_confirm.png[Join a meeting confirm modal] + +== Enable registrations for a meeting + +To enable registrations for a meeting: + +. Sign in as admin +. Go to admin panel +. In the main sidebar, click in the button for the space that you want to configure the component for. +For instance, it could be "Processes", "Assemblies", or "Conferences" +. Click on "Meetings" +. Search the meeting that you want to enable registrations for +. Click on the "Edit" button image:action_edit.png[Edit button] +. Change the "Registration type" field to "On this platform" +. Define how many slots are available in "Available slots for this meeting" +. Click on the "Update" button +. Click on the "Registrations" button image:action_registrations.png[Registrations button] +. Check the "Registrations enabled" checkbox +. Fill the form + +== Registrations settings form + +image:components/meetings/registrations/backend.png[Registrations settings in a meeting] + + +.Registrations settings form +|=== +|Field |Type |Description + +|Registrations enabled +|Required +|Check to enable the registration for this meeting. + +|Registration form enabled +|Optional +|Check if you want to enable the registration form + +|Available slots for this meeting +|Required +|How many slots are available. Leave it to 0 if you have unlimited slots available. + +|Reserved slots +|Required +|How many slots are already reserved. Leave it to 0 if you don't have reserved slots + +|Registration terms +|Required +|What terms of services participants need to accept to register or join the meeting. +|=== + +== Registration form + +This feature allows you to define a custom form like the xref:admin:components/surveys.adoc[Surveys] component to ask participants +for registration information. + +== Export all + +It's possible to export registrations in multiple formats: CSV, JSON and XLSX (Excel). + +The exported data will have these fields: + +* id: The registration id +* code: the xref:_registration_code[registration code] (if this feature is enabled) +* user/name: the name of the user +* user/email: the email of the user +* user/user_group: the group of the user if she has selected that's representing a group when registering + +== Invitations + +This feature allows you to invite attendes to a meeting. These could be already registered or non-existing participants +in the platform. + +image:components/meetings/registrations/invite_attendee.png[Invite attendee for registration in a meeting] + +== Registration code + +This feature allows you to check if the attendee is registered in the meeting. She needs to provide her code, that gets +entered in this form and it's checked against the database. + +image:components/meetings/registrations/backend_w_registration_code.png[Registration code form in a meeting] + +image:components/meetings/registrations/frontend_confirmed_w_code.png[Registration code in a meeting frontend] + +It can receive two kind of responses: + +* Registration code successfully validated. +* This registration code is invalid. \ No newline at end of file diff --git a/docs/es/modules/admin/pages/components/pages.adoc b/docs/es/modules/admin/pages/components/pages.adoc new file mode 100644 index 0000000000..6739927552 --- /dev/null +++ b/docs/es/modules/admin/pages/components/pages.adoc @@ -0,0 +1,85 @@ += Page + +The Page component allows people to get information about a space. It's similar to the general xref:admin:pages.adoc[Pages] admin section, with +the main difference is that this component allows to define pages in a space, and the general Pages admin section allows to +define pages for all the platform (for instance, help pages, terms of services, or FAQs), that aren't associated to a space. + +From this starting point, there could be other configurations, such as: + +Some examples of where this component was used: + +* https://www.decidim.barcelona/processes/PressupostosParticipatius/f/4691/[More information page in 2020 Participatory Budgeting process in Decidim Barcelona] + +image:components/page/example01.png[More information page in 2020 Participatory Budgeting process in Decidim Barcelona - Frontend] +image:components/page/example02.png[More information page in 2020 Participatory Budgeting process in Decidim Barcelona - Backend] + +To configure the Page component: + +. Sign in as admin +. Go to admin panel +. In the main sidebar, click in the button for the space that you want to configure the component for. +For instance, it could be "Processes", "Assemblies", or "Conferences" +. Go to components +. Click on "Add component" button +. Click on "Page" +. Fill the xref:_add_component[Add component] form + +== Add component + +image:components/page/component.png[Add component form] + + +.Add component: Page form +|=== +|Field |Type |Description + +|Name +|Required +|What is the title of this component. For instance, "More information". + +|Order position +|Optional +|Which order will it have in relation to the other pages. Having a lower number means a higher priority. +For instance, if you have two pages, "Page a" with weight "10" and "Page b" with weight "0", then "Page b" will be first when ordering. +|=== + + +.Add component: Page form - Global settings +|=== +|Field |Type |Description + +|Announcement +|Optional +|A general announcement that'll be visible on the general pages landing page. +|=== + +In the cases where the space that this component will be used has xref:admin:spaces/processes/phases.adoc[Phases], for instance, in +xref:admin:spaces/processes.adoc[Participatory Processes], then you can also define different behaviors per Step. + + +.Add component: Pages form - Step settings +|=== +|Field |Type |Description + +|Announcement +|Optional +|A general announcement that'll be visible on the general page landing page. +|=== + +== Permissions + +As this component doesn't allow to do anything, there are no permissions to set up. + +=== New page form + +image:components/page/new_page.png[New page form] + + +.New page form +|=== +|Field |Type |Description + +|Body +|Required +|What is the body for the page. +|=== \ No newline at end of file diff --git a/docs/es/modules/admin/pages/components/proposals.adoc b/docs/es/modules/admin/pages/components/proposals.adoc new file mode 100644 index 0000000000..5d2b652324 --- /dev/null +++ b/docs/es/modules/admin/pages/components/proposals.adoc @@ -0,0 +1,445 @@ += Proposals + +The Proposals component allows people to create, comment, endorse, and give support to proposals. + +From this starting point, there could be other configurations, such as: + +* how many proposals a participant can create +* how many supports as a maximum a participant can give to proposals +* how many supports as a minimum a participant must give to proposals so their supports are valid +* whether you want to enable that participants comment on proposals +* whether you want that proposals have images, attachments, WYSIWYG editor, geolocated address, scopes, etc. + +Some examples of where this component was used: + +* https://futureu.europa.eu/[Conference of the Future of Europe] +* https://meta.decidim.org/processes/roadmap/f/122/[Propose new functionalities for Decidim software] in https://meta.decidim.org/[Metadecidim] + +image:components/proposals/example01.png[Proposals list example in COFE] +image:components/proposals/example02.png[Proposals list example in Metadecidim] +image:components/proposals/example03.png[Proposal detail example in Metadecidim] + +To configure the Proposals component: + +. Sign in as admin +. Go to admin panel +. In the main sidebar, click in the button for the space that you want to configure the component for. +For instance, it could be "Processes", "Assemblies", or "Conferences" +. Go to components +. Click on "Add component" button +. Click on "Proposals" +. Fill the xref:_add_component[Add component] form + +== Add component + +image:components/proposals/component.png[Add component form] + + +.Add component: Proposals form +|=== +|Field |Type |Description + +|Name +|Required +|What is the title of this component. For instance, "Proposals" + +|Order position +|Optional +|Which order will it have in relation to the other components. Having a lower number means a higher priority. +For instance, if you have two components, "Proposals" with weight "10" and "Meetings" with weight "0", then "Meetings" will be first when ordering. +|=== + + +.Add component: Proposals form - Global settings +|=== +|Field |Type |Description + +|Scopes enabled +|Optional +|Check if you want to have Scopes filtering in this component. + +|Scope +|Optional +|Which xref:admin:scopes.adoc[Scope] does this component belongs to. + +|Support limit per participant +|Optional +|Must be a number. How much supports a participant can give to proposals. + +|Minimum supports per user +|Optional +|Must be a number. How many supports does a participant needs to give to proposals so their supports are counted. If she doesn't +reach this number, her supports will not be taken in account. + +|Proposal limit per participant +|Optional +|Must be a number. How many proposals a participant can create. + +|Maximum proposal body length +|Optional +|Must be a number. How many characters a proposal body can have as maximum. + +|Proposal editing +|Required +|Choose one of these two options: "Allow editing of proposals within a specific timeframe" or "Allow editing proposals +for an infinite amount of time". In case it's within a specific timeframe, you must specify the time in "Proposals can be +edited by authors before this many minutes passes". Note that if you xref:components/proposals/answers.adoc[answer a proposal] +then it can't be edited anymore. + +|Proposals can be edited by authors before this many minutes passes +|Required if "Proposal editing" is "Allow editing of proposals within a specific timeframe" +|Must be a number. How many minutes after the creation of a proposal it can be edited by its author. + +|Threshold per proposal +|Optional +|Must be a number. How many supports a proposal needs to have to be considered as "validated". See <>. + +|Can accumulate supports beyond threshold +|Optional. Only applies if "Threshold per proposal" is configured. +|Whether the proposal can accumulate more supports than the threshold. + +|Proposal answering enabled +|Optional +|Whether administrators or valuators can answer proposals. + +|Official proposals enabled +|Optional +|Wheter administrators can create official proposals. + +|Comments enabled +|Optional +|Whether you want to have comments in the meetings. + +|Comments max length +|Optional +|What are the characters limit that participants will have when making comments. Leave 0 for the default value. + +|Geocoding enabled +|Optional +|Wheter participants can define a geocoding address for their proposals. Need to have xref:configure:geocoding[Geocoding] enabled. See <>. + +|Allow attachments +|Optional +|Check to allow participants to attach files to their proposals. + +|Allow card image +|Optional +|Check to show a card image when participants attach images to their proposals. See <>. + +|Actions permissions can be set for each proposal +|Optional +|Whether you want to be able to set permissions for every one of the proposals. Most of the time you will want to leave this option disabled. + +|Collaborative drafts enabled +|Optional +|Check to enable xref:components/proposals/collaborative_drafts.adoc[collaborative drafts] in proposals. + +|Participatory texts enabled +|Optional +|Check to enable xref:components/proposals/participatory_texts.adoc[participatory texts] in proposals. + +|Amendments enabled +|Optional +|Check to enable xref:components/proposals/amendments.adoc[amendments] in proposals. If active, configure Amendment features for each step. + +|Amendments Wizard help text +|Optional. Visible if the "Amendments enabled" option is checked. +|What's the help text visible when creating new amendments. + +|Announcement +|Optional +|A general announcement that'll be visible on the general proposals landing page. + +|New proposal body template +|Optional +|A pre-defined text that will be used when creating new proposals. Useful if you want to define a format that participants need to +follow when creating new proposals. + +|New proposal help text +|Optional +|What's the help text visible when creating new proposals. + +|Proposal wizard "Create" step help text +|Optional +|What's the help text visible when creating new proposals in the "Create" step. + +|Proposal wizard "Compare" step help text +|Optional +|What's the help text visible when creating new proposals in the "Compare" step. + +|Proposal wizard "Complete" step help text +|Optional +|What's the help text visible when creating new proposals in the "Complete" step. + +|Proposal wizard "Publish" step help text +|Optional +|What's the help text visible when creating new proposals in the "Publish" step. +|=== + +[#setting-threshold] +*Example of threshold setting* + +image::components/proposals/setting_threshold01.png[Example of threshold setting] + +image::components/proposals/setting_threshold02.png[Example of threshold setting] + +[#setting-card-image] +*Example of card image setting* + +image::components/proposals/setting_card_image.png[Example of card image setting] + +[#setting-geocoding] +*Example of geocoding setting* + +image::components/proposals/setting_geocoding.png[Example of geocoding setting] + +--- + +In the cases where the space that this component will be used has xref:admin:spaces/processes/phases.adoc[Phases], for instance, in +xref:admin:spaces/processes.adoc[Participatory Processes], then you can also define different behaviors per Step. + + +.Add component: Proposals form - Step settings +|=== +|Field |Type |Description + +|Announcement +|Optional +|A general announcement that'll be visible on the general proposal landing page. + +|Endorsements enabled +|Optional +|Check if you want that participants show public support for these proposals. + +|Endorsements blocked +|Optional +|Whether participants will be able to see the endorsments but don't make any. + +|Supports enabled +|Optional +|Whether participants will be able to support proposals in this step. + +|Supports blocked +|Optional +|Whether participants will be able to support proposals in this step. + +|Supports hidden +|Optional +|If supports are enabled, checking this will hide the number of supports. + +|Comments blocked +|Optional +|Whether you want to enable comments for this phase. + +|Proposal creation enabled +|Optional +|Whether you want to enable proposal creation by participants for this phase. See xref:_new_proposal_form[New proposal form] + +|Proposal answering enabled +|Optional +|Whether you want to enable xref:components/proposals/answers.adoc[proposal answering]. + +|Publish proposal answers immediately +|Optional +|Wheter you want that the answers of proposals are published at the same time that you're xref:components/proposals/answers.adoc[answering] them or you want to control when to publish the answers. + +|Enable costs on proposal answers +|Optional +|Wheter you want to add economical costs to proposal answers. Useful for importing to xref:components/budgets.adoc[budgets]. + +|Amendment creation enabled +|Optional. Visible if "Amendments enabled" option is checked. +|Participant can amend proposals. See xref:components/proposals/amendments.adoc[Amendments]. + +|Amendment reaction enabled +|Optional. Visible if "Amendments enabled" option is checked. +|Proposal's authors will be able to accept or reject Participant's emendations. + +|Amendment promotion enabled +|Optional. Visible if "Amendments enabled" option is checked. +|Emandation authors will be able to promote to Proposal the rejected emendation. + +|Amendments visibility +|Required. Visible if "Amendments enabled" option is checked. +|Choose one of "Amendments are visible to all" or "Amendments are visible only to their authors" + +|Announcement +|Optional +|A general announcement that'll be visible on the general proposals landing page. + +|Hashtags added to all proposals +|Optional +|Automatically add a hashtag to every proposal. See <>. + +|Hashtags suggested to participants for new proposals +|Optional +|Suggest hashtags to participants for new proposals. Participants can select more than one hashtag. See <>. +|=== + +[#setting-hashtags] +*Example of hashtags setting* + +image::components/proposals/setting_hashtag.png[Example of hashtag setting] + +== Permissions + +An administrator can choose which kind of xref:customize:authorizations.adoc[Authorizations] a participant need to have to make +certain actions in the proposals: + +* Endorse +* Support +* Create +* Withdraw +* Amend +* Comment +* Vote comment + +== Manage proposals + +image:components/proposals/manage_proposals.png[Manage proposals table] + +=== Export + +Allows exporting the proposals in different formats. + +* Proposals as CSV +* Proposals as JSON +* Proposals as Excel +* Comments as CSV +* Comments as JSON +* Comments as Excel + +=== Import + +* Import from another component +* Import from a file + +=== New proposal form + +==== Citizens proposals + +image:components/proposals/new_proposal_frontend.png[New proposal form] + +Proposals can be created by participants if the setting is "Proposal creation enabled" is checked for the active phase. + +If a participant belongs to a xref:admin:participants/groups.adoc[user group], then she'll be able to create proposals as that group also. + +This form depends a lot in which settings you've enabled in this component. It can be really short (with only a Title and +Body by default) or very long (Title, Body, Hashtags, Address, Scope, Category, Image and Attachment). + + +.New proposal form - default (by a participant) +|=== +|Field |Type |Description + +|Title +|Required +|What is the title of this proposal. For instance, "Bike lane in Main Street". Must have at least 15 characters as minimum +and 150 characters as maximum. Must start with a capital letter. + +|Body +|Optional +|What is the full description for this proposal. Must have at least 15 characters as minimum and 450 characters as maximum +by default but can be changed with the setting "Maximum proposal body length". +|=== + +To detect duplicated proposals before publishing them, the proposal creation has a wizard form with multiple steps. This also +allows participants to save proposals drafts (unpublished) in case they need to fill too many fields. + +image:components/proposals/new_proposal_frontend_compare.png[New proposal form (by a participant) - Compare] + +As an example of what the form could look depending in the settings enabled, here's a screenshot of the form for a proposal +with the following settings: "Hashtags added to all proposals", "Hashtags suggested to participants for new proposals", +"Geocoding enabled", "Allow attachments", "Allow card image" and "Scopes enabled". + +image:components/proposals/new_proposal_frontend_complete.png[New proposal form (by a participant) - Complete] + +After completing these fields the participant can see a preview of their proposal before publishing. They can also modify +the proposal before publishing it. + +image:components/proposals/new_proposal_frontend_publish.png[New proposal form (by a participant) - Publish] + +image:components/proposals/new_proposal_frontend_published.png[Published proposal made by a participant] + +==== Official proposals + +Administrators can create official proposals. There will be a filter to show only official proposals in the proposals navigation page. + +image:components/proposals/new_proposal_backend01.png[New proposal form - default (official proposals)] + + +.New proposal form - default (official proposals) +|=== +|Field |Type |Description + +|Title +|Required +|What is the title of this proposal. For instance, "Bike lane in Main Street". Must have at least 15 characters as minimum +and 150 characters as maximum. Must start with a capital letter. + +|Body +|Optional +|What is the full description of this proposal. Must have at least 15 characters as minimum and 450 characters as maximum +by default but can be changed with the setting "Maximum proposal body length". + +|This proposal comes from a meeting +|Optional +|Check if this proposal comes from a meeting. + +|Select a meeting +|Required if the "This proposal comes from a meeting" checkbox is checked +|Dropdown selector with all the meetings of this space. The author of the proposal will be the meeting. +|=== + +As an example of what the form could look like depending on the settings enabled, here's a screenshot of the form for a proposal +with the following settings: "Hashtags added to all proposals", "Hashtags suggested to participants for new proposals", +"Geocoding enabled", "Allow attachments", "Allow card image" and "Scopes enabled". + +image:components/proposals/new_proposal_backend02.png[New proposal form - with multiple settings (official proposals)] + +==== Actions + + +.Actions +|=== +|Icon |Name |Definition + +|image:action_edit.png[Edit icon] +|Edit +|Edit form for a proposal. It's the same form as "New proposal". Only visible when the proposal is an xref:_official_proposals["Official proposal"]. + +|image:action_answer.png[Answer proposal icon] +|xref:components/proposals/answers.adoc[Answer proposal] +|Allows you to answer a proposal. + +|image:action_permissions.png[Permissions icon] +|Permissions +| + +|image:action_preview.png[Preview icon] +|Preview +|To see how it's shown in the frontend to participants. +|=== + +== Origin filter + +When navigating in the proposals listing, you can filter the proposals by origin. + +image:components/proposals/origin_filter.png[Proposals origin filter] + +There are five origin options: + +* All: select all the origins +* xref:_official_proposals[Official]: proposals created by administrators +* xref:_citizens_proposals[Citizens]: proposals created by participants +* Groups: proposals created by participants that belong to a user group and choose that option when creating the proposal +* Meetings: proposals created by administrators that have checked this option when creating the proposal + +== Proposal types and mechanisms + +There are different kind of proposals mechanisms that can be enabled in proposals, such as: + +* xref:admin:components/proposals/amendments.adoc[Amendments] +* xref:admin:components/proposals/answers.adoc[Answers] +* xref:admin:components/proposals/collaborative_drafts.adoc[Collaborative drafts] +* xref:admin:components/proposals/participatory_texts.adoc[Participatory texts] \ No newline at end of file diff --git a/docs/es/modules/admin/pages/components/proposals/amendments.adoc b/docs/es/modules/admin/pages/components/proposals/amendments.adoc new file mode 100644 index 0000000000..be89e58eb5 --- /dev/null +++ b/docs/es/modules/admin/pages/components/proposals/amendments.adoc @@ -0,0 +1,94 @@ += Amendments + +With the amendment feature, participants can propose changes to an already published proposal. + +It's useful to propose improvements or corrections, specially useful when redacting laws or normatives with xref:components/proposals/participatory_texts.adoc[Participatory Texts]. + +It has similarities with xref:components/proposals/collaborative_drafts.adoc[Collaborative Drafts], but the main difference +is that with amendments there is no need to trust the other authors intentions, as every change is reviewed and must be +approved by the author of the original proposal. + +image:components/proposals/amendments/amendment.png[Amendment of a proposal] + +To configure "Amendments" in proposals component: + +. Sign in as admin +. Go to admin panel +. In the main sidebar, click in the button for the space that you want to configure the component for. +For instance, it could be "Processes", "Assemblies", or "Conferences" +. Go to components +. Click on "Add component" button +. Click on "Proposals" +. Check the "Amendments enabled" setting +. Review and configure the following related settings: "Amendments Wizard help text" in global component settings and "Amendment creation enabled", "Amendment reaction enabled", "Amendment promotion enabled", and "Amendments visibility" in the step component settings. +. Save the component + +== How it works + +. A participant (Alice) has created a proposal +. Another participant (Bob) has seen the proposal and wants to make some changes +image:components/proposals/amendments/proposal_to_amend.png[] +. Bob click on the "Amend proposal" button +. Bob makes the changes in the "Create amendment draft" form +image:components/proposals/amendments/create_amendment_draft.png[] +. Bob checks if there is any similar amendment +. Bob edits the amendment draft +image:components/proposals/amendments/edit_amendment_draft.png[] +. Bob publishes the amendment draft +image:components/proposals/amendments/publish_amendment_draft.png[] +. Anyone can see the amendment draft +image:components/proposals/amendments/proposal_amendmed.png[] +image:components/proposals/amendments/amendment_list.png[] +image:components/proposals/amendments/amendment_view_side_by_side.png[] +. It's also possible to filter the amended proposals +image:components/proposals/amendments/amendment_list_filter.png[] +. Alice receives a notification that Bob has proposed an amendment to her original proposal +image:components/proposals/amendments/proposal_amendmed_notification.png[] +. Alice can see the amendment proposal +image:components/proposals/amendments/proposal_amendmed_to_review.png[] +. Alice can review the amendment proposal +image:components/proposals/amendments/proposal_amendmed_review.png[] +. Alice can approve the amendment proposal +image:components/proposals/amendments/proposal_amendmed_accepted.png[] +. Anyone can see the final proposal +image:components/proposals/amendments/proposal_amendmed_final.png[] +image:components/proposals/amendments/proposal_amendmed_amendment_list.png[] +. Anyone can see the versions history of the proposal +image:components/proposals/amendments/proposal_amendmed_versions.png[] + +== Relevant component settings + + +.Proposals component form - Settings related to amendments +|=== +|Field |Type |Description + +|Amendments enabled +|Global +|Check to enable xref:components/proposals/amendments.adoc[amendments] in proposals. Other settings visible when enabling one. + +|Amendments Wizard help text +|Global +|What's the help text visible when creating new amendments. + +|Amendment creation enabled +|Step +|Participant can amend proposals. See xref:components/proposals/amendments.adoc[Amendments]. + +|Amendment reaction enabled +|Step +|Proposal's authors will be able to accept or reject Participant's emendations. + +|Amendment promotion enabled +|Step +|Emandation authors will be able to promote to Proposal the rejected emendation. + +|Amendments visibility +|Step +|Choose one of "Amendments are visible to all" or "Amendments are visible only to their authors" +|=== + +== Promotion + +If a proposal is rejected and the "Amendment promotion enabled" is enabled, then the author that have made the rejected +amendment will be able to promote to a new proposal the rejected emendation. \ No newline at end of file diff --git a/docs/es/modules/admin/pages/components/proposals/answers.adoc b/docs/es/modules/admin/pages/components/proposals/answers.adoc new file mode 100644 index 0000000000..8e1d8238b1 --- /dev/null +++ b/docs/es/modules/admin/pages/components/proposals/answers.adoc @@ -0,0 +1,113 @@ += Answers + +Proposals answers allow an administrator or valuator to review a proposal and give it an official response. + +image:components/proposals/proposal_answer_state_accepted.png[Proposal answer state: Accepted] + +For answering a proposal: + +. Sign in as admin or valuator +. Go to admin panel +. In the main sidebar, click in the button for the space that you want to configure the component for. +For instance, it could be "Processes", "Assemblies", or "Conferences" +. Click in the "Proposals" component +. Search the proposal you want to answer +. Click in the "Proposal answer" button image:action_answer.png[Answer proposal icon] +. Fill the form + +Alternatively, you could also: + +. Sign in as admin or valuator +. Navigate to the proposal you want to answer +. Click in the proposal answer button in the header image:components/proposals/answer_button_header.png[Answer proposal button] +. Fill the form + +== Answer page + +The answer page has three sections: + +=== Metadata + +It has general information about the proposal, like the link, who is the author, the proposal body, how many supports, endorsements, comments, and so on. + +=== Private notes + +Allows an administrator or valuator to leave notes that will not be visible to the public. + +=== Answer for proposal + +Allows an administrator to answer a proposal. + +image:components/proposals/proposal_answer.png[Proposal answer form] + + +.Answer for proposal form +|=== +|Field |Type |Description + +|Internal state +|Required +|Choose one of the following: Accepted, Rejected, or Evaluating + +|Answer +|Optional +|An explanation on why the proposal was accepted, rejected, or evaluated + +|Cost +|Required if "Enable costs on proposal answers" is enabled in the proposals component settings and if it's accepted +|A number that indicates the cost of the proposal + +|Cost report +|Required if "Enable costs on proposal answers" is enabled in the proposals component settings and if it's accepted +|An explanation of the cost of the proposal + +|Execution period +|Required if "Enable costs on proposal answers" is enabled in the proposals component settings and if it's accepted +|How much time the proposal will take to be executed +|=== + +== States + +If the proposals component setting "Publish proposal answers immediately" is checked, then the response of the proposal will be visible to the public immediately. + +The state is visible on the proposal page and card. + +image:components/proposals/proposal_answer_state_accepted_card.png[Proposal card answer state: Accepted] + +=== Evaluating + +image:components/proposals/proposal_answer_state_evaluating.png[Proposal answer state: Evaluating] + +=== Accepted + +After proposals have been accepted, they can be imported to the xref:components/budgets.adoc[budgets] component. + +image:components/proposals/proposal_answer_state_accepted.png[Proposal answer state: Accepted] + +=== Rejected + +image:components/proposals/proposal_answer_state_rejected.png[Proposal answer state: Rejected] + +== Publication + +You can control when the answers will be published by using the "Publish proposal answers immediately" checkbox. + +For enabling automatic publication, you'll need to check it. + +On the other hand, if you want to control when to publish the answer a proposal or multiple proposals, you'll need to follow these steps: + +. Sign in as admin or valuator +. Go to admin panel +. In the main sidebar, click in the button for the space that you want to configure the component for. +For instance, it could be "Processes", "Assemblies", or "Conferences" +. Click in the "Proposals" component +. Search the proposal you want to answer +. Click in the left checkbox of the proposal that you want to publish +. Click on the "Actions" button +. Click on the "Publish answers" option +image:components/proposals/proposal_answer_publish.png[Proposal answer publication: action] +. Click on "Publish" button +image:components/proposals/proposal_answer_publish_button.png[Proposal answer publication: publish button] + +NOTE: If you have unchecked the "Publish proposal answers immediately", answered the proposals and then checked the option again, the answers will not be +published automatically. You'll still need to publish the answers manually with the "Actions" button. \ No newline at end of file diff --git a/docs/es/modules/admin/pages/components/proposals/collaborative_drafts.adoc b/docs/es/modules/admin/pages/components/proposals/collaborative_drafts.adoc new file mode 100644 index 0000000000..9c26ef25e2 --- /dev/null +++ b/docs/es/modules/admin/pages/components/proposals/collaborative_drafts.adoc @@ -0,0 +1,70 @@ += Collaborative draft + +With the collaborative draft feature participants can make a proposal with multiple authors. + +It's useful to propose improvements or corrections. + +It has similarities with xref:components/proposals/amendments.adoc[Amendments] but the main difference is that with collaborative +drafts there is a need to trust other authors, as they can make any change to the original proposal without approval by the +original author, although the original author can decide if she promotes the collaborative draft as a proposal. + +image:components/proposals/collaborative_drafts/collaborative_draft_request_access.png[Collaborative draft with request access button] + +To configure "Collaborative Drafts" in Proposals component: + +. Sign in as admin +. Go to admin panel +. In the main sidebar, click in the button for the space that you want to configure the component for. +For instance, it could be "Processes", "Assemblies", or "Conferences" +. Go to components +. Click on "Add component" button +. Click on "Proposals" +. Check the "Collaborative drafts enabled" setting +. Save the component + +== How it works + +. A participant (Alice) wants to create a collaborative draft. For that, she goes to the proposals list page. +. Alice clicks in the "Access collaborative drafts" button +image:components/proposals/collaborative_drafts/proposals_list01.png[] +. Alice clicks in "New collaborative draft" button +image:components/proposals/collaborative_drafts/list_empty.png[] +. Alice fills the form and submits it +image:components/proposals/collaborative_drafts/create_form.png[] +. Once the collaborative draft is created, Alice can: edit, withdraw or publish the collaborative draft and approve or +reject collaboration requests +image:components/proposals/collaborative_drafts/collaborative_draft.png[] +. Another participant (Bob) has seen the collaborative draft and wants to make some changes +image:components/proposals/collaborative_drafts/collaborative_draft_request_access.png[] +. Bob clicks in the "Request access" button +image:components/proposals/collaborative_drafts/access_requested.png[] +. Alice receives the notification +image:components/proposals/collaborative_drafts/notification.png[] +. Alice goes to the collaborative draft. There she can accept or reject the collaboration request +image:components/proposals/collaborative_drafts/author_sidebar.png[] +. Alice approves the collaboration request. Once a request is approved it can't be rejected +. Now the collaborative draft has multiple authors +image:components/proposals/collaborative_drafts/multiple_authors.png[] +. Bob can edit the collaborative draft by clicking in the "Edit collaborative draft" button +image:components/proposals/collaborative_drafts/edit_collaborative_draft.png[] +image:components/proposals/collaborative_drafts/edit_form.png[] +. Once the collabrative draft is edited, then it's possible to see the old versions and its changes +image:components/proposals/collaborative_drafts/collaborative_draft_edited.png[] +image:components/proposals/collaborative_drafts/collaborative_draft_edited_versions.png[] +image:components/proposals/collaborative_drafts/collaborative_draft_edited_versions_show_v2_01.png[] +image:components/proposals/collaborative_drafts/collaborative_draft_edited_versions_show_v2_02.png[] +. Once Alice is satisfied with the collaborative draft, she can publish it by click in the "Publish" button +image:components/proposals/collaborative_drafts/publish_modal.png[] +. When it's published it becomes a proposal +image:components/proposals/collaborative_drafts/proposal.png[] +image:components/proposals/collaborative_drafts/proposals_list02.png[] +. And the collaborative draft is still visible although it can't be edited anymore +image:components/proposals/collaborative_drafts/collaborative_draft_published.png[] + +== Important aspects + +- A collaborative draft can has any number of authors. +- Only the original author can approve or reject the collaboration requests. +- Only the original author can publish the collaborative draft. +- Only the original author can withdraw the collaborative draft. +- Once a collaboration request is approved, it can't be rejected. \ No newline at end of file diff --git a/docs/es/modules/admin/pages/components/proposals/participatory_texts.adoc b/docs/es/modules/admin/pages/components/proposals/participatory_texts.adoc new file mode 100644 index 0000000000..c5573a6e6d --- /dev/null +++ b/docs/es/modules/admin/pages/components/proposals/participatory_texts.adoc @@ -0,0 +1,88 @@ += Participatory texts + +This feature allows you to navigate the proposals as text. It's useful for discussing normatives, plans, or other kinds of texts. + +Every paragraph is split into a proposal, so it's possible to discuss it in a more granular way. + +Some examples of where this feature was used are: + +* https://concertation.greenpeace.fr/processes/vision-greenpeace/f/8/[Vision Greenpeace] in https://concertation.greenpeace.fr/[Greenpeace France Concertation] +* https://www.decidim.barcelona/processes/PAM2020/f/3771/[Procés participatiu del Programa d'Actuació Municipal (PAM) 2020-2023] in https://www.decidim.barcelona/[Decidim Barcelona] + +image:components/proposals/participatory_texts/example01.png[Vision Greenpeace] + +image:components/proposals/participatory_texts/example02.png[PAM 2020-2023 in Decidim Barcelona] + +To configure the "Participatory texts" in proposals component: + +. Sign in as admin +. Go to admin panel +. In the main sidebar, click in the button for the space that you want to configure the component for. +For instance, it could be "Processes", "Assemblies", or "Conferences" +. Go to components +. Click on "Add component" button +. Click on "Proposals" +. Check the "Participatory texts enabled" setting +. Save the component +. Click in the "Participatory texts" button in the empty proposals component +image:components/proposals/participatory_texts/manage_proposals.png[Manage proposals] +. Click in the "Import document" button in the empty Preview participatory text panel +image:components/proposals/participatory_texts/preview_participatory_text_empty.png[Preview empty participatory text] +. Fill the xref:_add_document_form[Add document form] +image:components/proposals/participatory_texts/add_document_form.png[Add document form] +. xref:_preview_the_document[Preview the document] and make corrections +image:components/proposals/participatory_texts/preview_participatory_text.png[Preview participatory text] +. Click on publish the document +image:components/proposals/participatory_texts/imported_document_proposals.png[Imported document proposals] +. Publish the proposal component + +Notice that this feature could break existing proposals, so if there is any proposal it will not work. You'll see the +following message in the components settings: + +==== +Cannot interact with this setting if there are existing proposals. Please, create a new `Proposals component` if you want +to enable this feature or discard all imported proposals in the `Participatory Texts` menu if you want to disable it. +==== + +== Add document form + +Although it's possible to work with both Markdown (.MD) and ODT (.ODT) files, we recommend working with Markdown as it's +easier to see the formatting. + +link:{attachmentsdir}/participatory_text.md[Download the example participatory text]. + +image:components/proposals/participatory_texts/add_document_form.png[Add document form] + + +.Add document form +|=== +|Field |Type |Description + +|Title +|Required +|What's the title of the document? + +|Description +|Optional +|Description for the document + +|Document +|Required +|File. Add a document lesser than 2MB, each section until 3 levels deep will be parsed into proposals. Supported formats are: Markdown, ODT +|=== + +== Preview the document + +After the document is initially imported you have three options: + +. Discard +. Save draft +. Publish document + +== Frontend + +Once the document is imported and the proposals component published, you'll be able to navigate the document: + +image:components/proposals/participatory_texts/frontend.png[Frontend] +image:components/proposals/participatory_texts/frontend_hover.png[Frontend hover in proposal] +image:components/proposals/participatory_texts/frontend_proposal.png[Frontend proposal detail] \ No newline at end of file diff --git a/docs/es/modules/admin/pages/components/skeleton.adoc b/docs/es/modules/admin/pages/components/skeleton.adoc new file mode 100644 index 0000000000..a0bbfcdb51 --- /dev/null +++ b/docs/es/modules/admin/pages/components/skeleton.adoc @@ -0,0 +1,167 @@ += Skeleton + +The Skeleton component allows people to XXX + +From this starting point, there could be other configurations, such as: + +* + +Some examples of where this component was used: + +* + +image:components/skeleton/example01.png[] +image:components/skeleton/example02.png[] +image:components/skeleton/example03.png[] +image:components/skeleton/example04.png[] + +To configure the Skeleton component: + +. Sign in as admin +. Go to admin panel +. In the main sidebar, click in the button for the space that you want to configure the component for. +For instance, it could be "Processes", "Assemblies" or "Conferences". +. Go to components +. Click on "Add component" button +. Click on "Skeleton" +. Fill the xref:_add_component[Add component] form + +== Add component + +image:components/skeleton/component.png[Add component form] + + +.Add component: Skeleton form +|=== +|Field |Type |Description + +|Name +|Required +|What is the title of this component. For instance, "Skeletons" + +|Order position +|Optional +|Which order will it have in relation to the other skeletons. Having a lower number means a higher priority. +For instance, if you have two skeletons, "Skeleton a" with weight "10" and "Skeleton b" with weight "0", then "Skeleton b" will be first when ordering. +|=== + + +.Add component: Skeleton form - Global settings +|=== +|Field |Type |Description + +|Scopes enabled +|Optional +|Check if you want to have Scopes filtering in this component. + +|Scope +|Optional +|Which xref:admin:scopes.adoc[Scope] does this component belongs to. + +|Global scope +|Optional +| + +|Comments enabled +|Optional +|Whether you want to have comments in the meetings. + +|Comments max length +|Optional +|What is the characters limit that participants will have when making comments. Leave 0 for default value. + +|Actions permissions can be set for each skeleton +|Optional +|Whether you want to be able to set permissions for every one of the skeletons. Most of the time you will want to leave this option disabled. + +|Announcement +|Optional +|A general announcement that'll be visible on the general skeletons landing page. +|=== + +In the cases where the space that this component will be used has xref:admin:spaces/processes/phases.adoc[Phases], for instance, in +xref:admin:spaces/processes.adoc[Participatory Processes], then you can also define different behaviors per Step. + + +.Add component: Skeletons form - Step settings +|=== +|Field |Type |Description + +|Comments blocked +|Optional +|Whether you want to enable comments for this phase. + +|Announcement +|Optional +|A general announcement that'll be visible on the general skeleton landing page. +|=== + +== Permissions + +An administrator can choose which kind of xref:customize:authorizations.adoc[Authorizations] a participant need to have to make +certain actions in the skeletons: + +* Create +* Endorse + +== Manage skeletons + +image:components/skeleton/manage_skeletons.png[Manage skeletons table] + +=== Export all + +Allows exporting the skeletons in different formats. + +* Skeletons as CSV +* Skeletons as JSON +* Skeletons as Excel +* Comments as CSV +* Comments as JSON +* Comments as Excel + +=== New skeleton form + +image:components/skeleton/new_skeleton.png[New skeleton form] + + +.New skeleton form +|=== +|Field |Type |Description + +|Title +|Required +|What is the title of this skeleton. For instance, "District A" + +|Order position +|Optional +|Which order will it have in relation to the other skeletons. Having a lower number means a higher priority. +For instance, if you have two skeletons, "Skeleton a" with weight "10" and "Skeleton b" with weight "0", then "Skeleton b" will be first when ordering. + +|Description +|Optional +|What is the description of this skeleton. +|=== + +==== Actions + + +.Actions +|=== +|Icon |Name |Definition + +|image:action_preview.png[Preview icon] +|Preview +|To see how it's shown in the frontend to participants. + +|image:action_list.png[Manage projects icon] +|xref:_manage_projects[Manage projects] +|Allows you to manage the projects of a skeleton. + +|image:action_edit.png[Edit icon] +|Edit +|Edit form for a skeleton. It's the same form as "New skeleton". + +|image:action_delete.png[Delete icon] +|Delete +|To delete this skeleton. Only can be done when there aren't any projects. +|=== \ No newline at end of file diff --git a/docs/es/modules/admin/pages/components/sortitions.adoc b/docs/es/modules/admin/pages/components/sortitions.adoc new file mode 100644 index 0000000000..c436fe225f --- /dev/null +++ b/docs/es/modules/admin/pages/components/sortitions.adoc @@ -0,0 +1,3 @@ += Sortitions + +The Sortitions component allows to select a number of proposals (e.g. candidates for a jury) with random, yet reproducible, procedures that guarantees non-biased and uniform distributions. \ No newline at end of file diff --git a/docs/es/modules/admin/pages/components/surveys.adoc b/docs/es/modules/admin/pages/components/surveys.adoc new file mode 100644 index 0000000000..2b4fc6689a --- /dev/null +++ b/docs/es/modules/admin/pages/components/surveys.adoc @@ -0,0 +1,256 @@ += Survey + +The Survey component allows people to answer questionnaires. This is useful when an organization wants to receive private +feedback, although it's possible to publish the answers manually as well. It allows defining a set of questions with multiple kinds of answers. + +From this starting point, there could be other configurations, such as: + +* if the answering is limited to a time period +* what answer types should have the questions, like short (one line), long (multiple lines), single or multiple options, +sorting through a list, etc. +* if there's an answer validation like how many characters as maximum should have an answer +* if there's a maximum number of options to select in multiple options questions + +Some examples of where this component was used: + +* https://consultation.quebec.ca/processes/donneesquebec/f/82/[Data Quebec: participate in its improvement! (Données Québec : participez à son amélioration!) in Québec consultations] +* https://meta.decidim.org/conferences/decidimfest2020/f/1403/?locale=en[DecidimFest2020 Assessment Survey] + +image:components/surveys/example01.png[Example of a survey] + +To configure the Survey component: + +. Sign in as admin +. Go to admin panel +. In the main sidebar, click in the button for the space that you want to configure the component for. +For instance, it could be "Processes", "Assemblies" or "Conferences". +. Go to components +. Click on "Add component" button +. Click on "Survey" +. Fill the xref:_add_component[Add component] form + +Once a survey is already answered by some users it's not possible to modify its questions, as that would affect the integrity +of the answers. If it's needed to modify the questions, then it's needed to create a new survey and unpublish the original one. + +== Add component + +image:components/surveys/component.png[Add component form] + + +.Add component: Survey form +|=== +|Field |Type |Description + +|Name +|Required +|What is the title of this component. For instance, "Surveys" + +|Order position +|Optional +|Which order will it have in relation to the other surveys. Having a lower number means a higher priority. +For instance, if you have two surveys, "Survey a" with weight "10" and "Survey b" with weight "0", then "Survey b" will be first when ordering. +|=== + + +.Add component: Survey form - Global settings +|=== +|Field |Type |Description + +|Scopes enabled +|Optional +|Check if you want to have Scopes filtering in this component. + +|Scope +|Optional +|Which xref:admin:scopes.adoc[Scope] does this component belongs to. + +|Answers accepted from +|Optional +|Start date when you want to receive answers. Leave blank for no specific date. Expected format: dd/mm/yyyy hh:ii + +|Answers accepted until +|End date when you want to stop receiving answers. Leave blank for no specific date. Expected format: dd/mm/yyyy hh:ii +|Announcement + +|Optional +|A general announcement that'll be visible on the general surveys landing page. +|Delete answers when publishing the survey +|=== + +In the cases where the space that this component will be used has xref:admin:spaces/processes/phases.adoc[Phases], for instance, in +xref:admin:spaces/processes.adoc[Participatory Processes], then you can also define different behaviors per Step. + + +.Add component: Surveys form - Step settings +|=== +|Field |Type |Description + +|Allow answers +|Optional +|Check if you want to receive answers in this survey. + +|Allow unregistered users to answer the survey +|Optional +|If active, no login will be required in order to answer the survey. This may lead to poor or unreliable data and it will +be more vulnerable to automated attacks. Use with caution! Mind that this option only allows an answer by browser session, +but participants can use the Private navigation option and make multiple answers with the same device. + +|Announcement +|Optional +|A general announcement that'll be visible on the general survey landing page. +|=== + +== Permissions + +An administrator can choose which kind of xref:customize:authorizations.adoc[Authorizations] a participant need to have to make +certain actions in the surveys: + +* Answer + +== New survey form + +When you create a new survey you'll need to fill the form with the following fields: + +image:components/surveys/edit_form.png[Edit survey form] + +NOTE: Do you have repetitive surveys? For instance the same feedback form for every process? You can have a survey that +gets copied and is used as a blueprint for so you don't have to manually configure the same survey everytime. Learn more +about xref:_templates[Templates]. + + +.New survey form +|=== +|Field |Type |Description + +|Title +|Required +|What is the title of this survey. For instance, "Feedback" + +|Description +|Optional +|What is the description of this survey. + +|Terms of service +|Required +|Legal conditions that the participants must agree to in order to answer the survey. +|=== + +In the bottom of this form there's a button that allows you to "Add question". + +image:components/surveys/add_question_button.png[] + +You can add multiple questions per survey, and reorder or delete them. It's possible to also add separators between questions. + +Every question has to have a statement and a type as a minimum. + +image:components/surveys/question_form.png[] + + +.Add question form +|=== +|Field |Type |Description + +|Statement +|Required +|The question itself. For instance, "What is your age category?" + +|Description +|Optional +|Explanation of the question being made. + +|Mandatory +|Optional +|Check if this question is required to respond to submit the answer. + +|Character limit +|Optional +|How many characters has as a maxim the answer to this question. Leave to 0 if no limit. Compatible with Short and Long answer question types. + +|Type +|Required +|One of the following: Short answer, Long answer, Single option, Multiple option, Sorting, Files, Matrix (Single option) +or Matrix (Multiple option). See xref:_question_types[Question types] for more information. +|=== + +Depending in the question type, it's possible to add validations to the answers, like if the question is mandatory (participants +would need to provide an answer in order to submit the form) or if the answer is limited to a certain number of characters as maximum in +short and long answers. + +image:components/surveys/question_form_limits_backend.png[] + +image:components/surveys/question_form_limits_frontend.png[] + +== Question types + +A survey can have multiple questions with different types, such as: + +- Short answer +- Long answer +- Single option +- Multiple option +- Sorting +- Files +- Matrix (Single option) +- Matrix (Multiple option) + + +.Question types (click to view image in detail) +|=== +|Type |Frontend |Backend |Description + +|Short answer +|image:components/surveys/type_short_answer_frontend.png[Short answer type - frontend,link=../_images/components/surveys/type_short_answer_frontend.png] +|image:components/surveys/type_short_answer_backend.png[Short answer type - backend,link=../_images/components/surveys/type_short_answer_backend.png] +|Compatible with "Character limit" validation + +|Long answer +|image:components/surveys/type_long_answer_frontend.png[Long answer type - frontend,link=../_images/components/surveys/type_long_answer_frontend.png] +|image:components/surveys/type_long_answer_backend.png[Long answer type - backend,link=../_images/components/surveys/type_long_answer_backend.png] +|Compatible with "Character limit" validation + +|Single option +|image:components/surveys/type_single_option_frontend.png[Single option type - frontend,link=../_images/components/surveys/type_single_option_frontend.png] +|image:components/surveys/type_single_option_backend.png[Single option type - backend,link=../_images/components/surveys/type_single_option_backend.png] +|Participants will have to choose a single option, with radio buttons. At least 2 options always. It's possible to define a "Free text" option, so participants can submit their own answer. + +|Multiple option +|image:components/surveys/type_multiple_option_frontend.png[Multiple option type - frontend,link=../_images/components/surveys/type_multiple_option_frontend.png] +|image:components/surveys/type_multiple_option_backend.png[Multiple option type - backend,link=../_images/components/surveys/type_multiple_option_backend.png] +|Participants will have to choose multiple options, with checkboxes. At least 2 options always. It's possible to add a validation, with the maximum number of choices. It's possible to define a "Free text" option, so participants can submit their own answer. + +|Sorting +|image:components/surveys/type_sorting_frontend.png[Sorting type - frontend,link=../_images/components/surveys/type_sorting_frontend.png] +|image:components/surveys/type_sorting_backend.png[Sorting type - backend,link=../_images/components/surveys/type_sorting_backend.png] +|At least 2 options always. Participants will click in order of preference to sort. + +|Files +|image:components/surveys/type_files_frontend.png[Files type - frontend,link=../_images/components/surveys/type_files_frontend.png] +|image:components/surveys/type_files_backend.png[Files type - backend,link=../_images/components/surveys/type_files_backend.png] +|Participants will be able to upload files. + +|Matrix (Single option) +|image:components/surveys/type_matrix_single_option_frontend.png[Matrix (Single option) type - frontend,link=../_images/components/surveys/type_matrix_single_option_frontend.png] +|image:components/surveys/type_matrix_single_option_backend.png[Matrix (Single option) type - backend,link=../_images/components/surveys/type_matrix_single_option_backend.png] +|Participants will have to choose between rows and columns of single options, with radio buttons. + +|Matrix (Multiple option) +|image:components/surveys/type_matrix_multiple_option_frontend.png[Matrix (Multiple option) type - frontend,link=../_images/components/surveys/type_matrix_multiple_option_frontend.png] +|image:components/surveys/type_matrix_multiple_option_backend.png[Matrix (Multiple option) type - backend,link=../_images/components/surveys/type_matrix_multiple_option_backend.png] +|Participants will have to choose between rows and columns of multiple options, with checkboxes. +|=== + +== Templates + +For the cases where administrators need to define multiple surveys that are mostly the same but used in different contexts, +it's possible to define a template. When there's one defined for a survey, then it'll ask to select the Template and create +the survey based on this one or in the other hand if there's no need to use a template, then it's possible to Skip the template +selection. + +image:components/surveys/edit_questionnaire.png[Choose template form] + +== Export answers + +It's possible to export the survey participant answers to different formats: CSV, JSON, XLSX (Excel) or PDF. + +Note that the platform doesn't handle the answers processing nor presenting results or summary to the users, that need to be +done externally. \ No newline at end of file diff --git a/docs/es/modules/admin/pages/configuration.adoc b/docs/es/modules/admin/pages/configuration.adoc new file mode 100644 index 0000000000..eae6e6a6e3 --- /dev/null +++ b/docs/es/modules/admin/pages/configuration.adoc @@ -0,0 +1,53 @@ += Configuration + +In this page you can configure general settings from Decidim. + +image::admin_configuration.png[Decidim Admin Configuration] + +These are: + +* **Name**. Required. The name that the platform has. Visible at title, emails, etc. +* **Social**. Social handlers for different social networks. Visible at the footer in every page. This are: +** Twitter +** Facebook +** Instagram +** YouTube +** GitHub + +image::settings_configuration_social.png[Social networks configuration in Decidim] + +* **Default locale**. Required. +* **Time Zone**. Required. In which Time Zone is your organization. Used by things like calendars in Meetings. +* **Reference prefix**. Required. +* **Enable badges**. Whether you want or not that your participants have badges as a gamification mechanism, for instance for creating proposals or making comments. +* **Enable groups**. Whether you want or not that your participants have the possibility to create xref:participants/groups.adoc[User Groups]. Useful for example for associations or other collectives. +* **Enable rich text editor for participants**. Whether you want or not that your participants have the possibility to have a https://en.wikipedia.org/wiki/WYSIWYG[What You See Is What You Get (WYSIWYG) editor]. In some text areas, participants will be able to insert some HTML tags by using the rich text editor. +* **Send welcome notification**. Whether you want or not that your participants receive a notification when their first created their account. If enabled you can customize this notification. +** **Customize welcome notification**. +** **Welcome notification subject**. +** **Welcome notification body**. + +.Welcome notification +==== +Hi {\{name}}, thanks for joining {\{organization}} and welcome! + +If you want to get a quick idea of what you can do here, have a look at the Help section. +Once you have read it you will get your first badge. Here's a list of all the badges you can get as you participate in {\{organization}} + +Last but not least, join other people, share with them the experience of being engaged and participating in {\{organization}}. Make proposals, comments, debate, think about how to contribute to the common good, provide arguments to convince, listen and read to be convinced, express your ideas in a concrete and direct way, respond with patience and decision, defend your ideas and keep an open mind to collaborate and join other people's ideas. +==== + +image::settings_configuration_welcome.png[Welcome notification configuration in Decidim] + +* **Admin terms of use body**. Which message an Administrator user will see when accessing for the first time to the Administration panel. + +.Admin terms of use +==== +ADMIN TERMS OF USE + +We trust you have received the usual lecture from the local System Administrator. It usually boils down to these three things: + +* Respect the privacy of others. +* Think before you click. +* With great power comes great responsibility. +==== \ No newline at end of file diff --git a/docs/es/modules/admin/pages/dashboard.adoc b/docs/es/modules/admin/pages/dashboard.adoc new file mode 100644 index 0000000000..bf2fc64564 --- /dev/null +++ b/docs/es/modules/admin/pages/dashboard.adoc @@ -0,0 +1,23 @@ += Dashboard + +For your first time accessing to a Decidim plaform as Admin, you'll receive an invitation email so you can finish setting up your account with your nickname, name and password. + +Once you've finished and you're logged-in, you'll be able to access the Admin panel, starting with the Dashboard page. For this you'll need to click on your username, and click on "Admin dashboard". + +image::admin_dashboard_menu.png[Decidim Admin Dashboard in user menu] + +Here, you'll have a summary of the last activity of the platform. + +image::admin_dashboard.png[Decidim Admin Dashboard] + +You'll have three blocks: + +1. Activity: participants and admins that had logged in in last month, last week and last day. +1. Metrics: the graphics for the evolution of multiple things inside of Decidim: +* Participants +* Proposals +* Comments +* Meetings +* Accepted proposals +* Results +1. Admin log: last actions made by Administrator users in the platform. \ No newline at end of file diff --git a/docs/es/modules/admin/pages/features/badges.adoc b/docs/es/modules/admin/pages/features/badges.adoc new file mode 100644 index 0000000000..6cf9a138d3 --- /dev/null +++ b/docs/es/modules/admin/pages/features/badges.adoc @@ -0,0 +1,76 @@ += Badges + +Badges are recognitions to participant actions and progress in the platform. As participants start discovering, participating +and interacting in the platform, they will earn different badges. Here is the list of badges and some ways participants can earn them. + +It's a https://en.wikipedia.org/wiki/Gamification[gamification] mechanism to improve the engagement of the participants in a ludic way. + +The badges a participant has are visible in her account. There's also a general explanation page with a short description of every badge. + +image:features/badges/example01.png[Example of badges in profile] + +When a participant earns a badge she receives a notification. + +image:features/badges/notification.png[Example of badges notification] + +Badges have multiple levels, depending in the number of times she has made the action. For instance, for Proposals badge +she'll receive the first level badge when arriving at 1 follower, the second level at 15 followers, the third level at 30 followers, +the fourth level at 60 and the fifth level at 100. + + +.Badges +|=== +|Image |Title |Description |How it's earned |Levels + +|image:features/badges/accepted_proposals_badge.png[Accepted proposals badge] +|Accepted proposals +|Granted when particiapnts actively participate with new proposals and these are accepted. +|The participant needs to choose the participation space of her interest with submission for proposals enabled and try to +make proposals that can be carried out. This way they are more likely to be accepted. +|1, 5, 15, 30, 50 + +|image:features/badges/attended_meetings_badge.png[Attended meetings badge] +|Attended meetings +|Granted when participants attend several face-to-face meetings. +|The participant needs to register for the meetings she want to attend +|1, 3, 5, 10, 30 + +|image:features/badges/debates_badge.png[Debates badge] +|Debates +|Granted when participants actively participate in the different debates by leaving comments. +|The participant needs to take part in debates. +|1, 5, 10, 30, 50 + +|image:features/badges/followers_badge.png[Followers badge] +|Followers +|Granted when participant reach a certain number of followers. The platform is a social and political network, so +participants ned to weave their web to communicate with other people in the platform. +|The participant needs to be be active and follow other people. That will surely make other people follow her. +|1, 15, 30, 60, 100 + +|image:features/badges/published_initiatives_badge.png[Published initiatives badge] +|Published initiatives +|Granted when a participant launch new initiatives, partnering with others to carry them out. +|The participant needs to go to the participation space of Intiatives and follow the steps to create a new initiative. +|1, 5, 15, 30, 50 + +|image:features/badges/invitations_badge.png[invitations badge] +|Invitations +|Granted when participants invite some people and they have become participants. +|The participant needs to use the “invite friends” link on her user page to invite her friends. She can customize the +message she's sending. She’ll level up by sending invitations and getting them registered. Note that this feature is disabled +and this badge is not available, so it'll be removed in the future. +|1, 5, 10, 30, 50 + +|image:features/badges/proposal_supports_badge.png[Proposal supports badge] +|Proposal supports +|Granted when participants support other people's proposals. +|The participant needs to browse and spend some time reading other people's proposals and give support to the proposals she like or find interesting. +|5, 15, 50, 100, 500 + +|image:features/badges/proposals_badge.png[Proposals badge] +|Proposals +|Granted when participants actively participate with new proposals. +|The participant needs to choose the participation space of her interest with submission for proposals enabled and create a new proposal. +|1, 5, 10, 30, 60 +|=== \ No newline at end of file diff --git a/docs/es/modules/admin/pages/features/comments.adoc b/docs/es/modules/admin/pages/features/comments.adoc new file mode 100644 index 0000000000..43bd35408c --- /dev/null +++ b/docs/es/modules/admin/pages/features/comments.adoc @@ -0,0 +1,64 @@ += Comments + +Comments are public messages left to the rest of the community. It allows participants to share information or opinions +about a proposal, debate, meeting, initiative, etc. + +image:features/comments/example01.png[Comments example] + +== Create a comment + +. Sign in as a participant +. Go to the content that you want to leave a comment +. Go to the bottom of the page +. Fill the "Add comment" form + +Depending on the component settings, this feature can be disabled. + +image:features/comments/form.png[Comments form] + +=== Form + +It's possible to: + +. mention a participant or user group (like @admin). They'll receive a notification +. add a hashtag (like #Example). This will link to the general search +. make a quote of a comment (like > this is a quote) +. if an URL is entered, then it'll be linked automatically +image:features/comments/rich_text_write.png[Comments with rich text (write)] +image:features/comments/rich_text_read.png[Comments with rich text (read)] +image:features/comments/hashtag_search.png[Hashtags in comments] +. if HTML is added, it'll be escaped and not shown +image:features/comments/xss_write.png[XSS in comments (write)] +image:features/comments/xss_read.png[XSS in comments (read)] +. add emojis to comments +image:features/comments/emoji_selector.png[Emoji selector in comments] + +== Sort + +Comments can be sorted by "Best rated", "Recent", "Older" or "More discussed". + +image:features/comments/order_by.png[Order comments] + +== Actions + +After a comment is created, the author can "Reply", "Report", "Get link", "Edit" and "Delete". Other participants can "Reply", "Report" and "Get link". Some of these actions are visible in the three dots menu: + +image:features/comments/actions.png[Comments actions] + +=== Reply + +It's possible to reply to comments until the 4th anidation level. + +image:features/comments/anidation_levels.png[Anidation levels for comments] + +=== Delete + +Once a comment is deleted is not longer visible. + +image:features/comments/deleted_comment.png[Deleted comment] + +=== Edit + +Once a comment is edited then it's shown that was edited. It doesn't have a version history of the changes made. + +image:features/comments/edited_comment.png[Edited comment] \ No newline at end of file diff --git a/docs/es/modules/admin/pages/features/conversations.adoc b/docs/es/modules/admin/pages/features/conversations.adoc new file mode 100644 index 0000000000..4165c50e1d --- /dev/null +++ b/docs/es/modules/admin/pages/features/conversations.adoc @@ -0,0 +1,57 @@ += Conversations + +With conversations, participants can have private messaging with each other. Only the participants who are in the +conversation can see each others messages. + +A conversation can be started with any participant or group registered on the platform. + +image:features/conversations/conversation.png[Example of a conversation] + +To start a conversations: + +. Sign in as participant +. Go to the participant profile that you want to start a conversation with +image:features/conversations/profile.png[Participant profile] +. Click on the contact icon image:icon_envelope.png[Envelope icon] +. Fill the form +image:features/conversations/start_a_conversation_form.png[Start a conversation form] + +Alternatively, you could also: + +. Sign in as participant +. Click on the conversation icon in the header image:icon_envelope_off.png[Conversations icon] +. Click on the "Start conversation" button +. Search the participant or group that you want to start a conversation with +. Fill the form + +If there are new messages in a conversation, then the participant will see the icon with a color image:icon_envelope_on.png[Conversation icon with color] + +image:features/conversations/conversations.png[Conversations list] + +== Multiple participants in a conversation + +It's possible to have multiple participants in a conversation. + +For this, you need to: + +. Sign in as participant +. Click on the conversation icon in the header image:icon_envelope_off.png[Conversations icon] +. Click on the "Start conversation" button +. Search the participants or groups that you want to start a conversation with +. Fill the form + +image:features/conversations/new_conversation_modal.png[New conversation modal] + +== Group converations + +Just like with participants, is possible to have converstaions with groups. + +image:features/conversations/group_conversations.png[Group conversations list] +image:features/conversations/conversations_group_counter.png[Conversations group counter] + +== Notes + +Some things to consider about conversations: + +* It's not possible to delete a conversation. +* It's not possible to edit a message in a conversation. \ No newline at end of file diff --git a/docs/es/modules/admin/pages/features/embed.adoc b/docs/es/modules/admin/pages/features/embed.adoc new file mode 100644 index 0000000000..c35bf2bca7 --- /dev/null +++ b/docs/es/modules/admin/pages/features/embed.adoc @@ -0,0 +1,23 @@ += Embed + +Sometimes you want to embed some content to an external page. For this you can use the `Embed` feature. + +image:features/embed/example.png[A proposal card embeded in another page] + +== How to embed + +. Navigate to the content you want to embed. +. Click on the `Embed` link in the sidebar. image:features/embed/link.png[] +image:features/embed/sidebar.png[] +. Copy the code from the modal. +image:features/embed/modal.png[] +. Paste that code in the external page where you want to embed it. The CMS or platform that you're using needs to supports +changing HTML code. + +An example of this code is: + +[source,html] +---- + + +---- \ No newline at end of file diff --git a/docs/es/modules/admin/pages/features/endorsements.adoc b/docs/es/modules/admin/pages/features/endorsements.adoc new file mode 100644 index 0000000000..b407e0ca97 --- /dev/null +++ b/docs/es/modules/admin/pages/features/endorsements.adoc @@ -0,0 +1,17 @@ += Endorsements + +Through endorsements, participants can publicly show that they want to support a particular content, for instance, a proposal. + +image:features/endorsements/list.png[List of endorsements] + +This is done through the button in the sidebar. Administrators can enable or disable them by step in a given participatory process, and they can also define permissions with authorizations. + +image:features/endorsements/sidebar.png[Endorsement button in sidebar] + +When a participant belongs to a verified group she can also endorse like that group by selecting the identity. + +image:features/endorsements/modal.png[Select identity modal] + +By default the endorsements list is collapsed. To see it fully visitors need too click in the "(see more)" link. + +image:features/endorsements/full_list.png[Full list of endorsements] \ No newline at end of file diff --git a/docs/es/modules/admin/pages/features/fingerprint.adoc b/docs/es/modules/admin/pages/features/fingerprint.adoc new file mode 100644 index 0000000000..0a4c43d309 --- /dev/null +++ b/docs/es/modules/admin/pages/features/fingerprint.adoc @@ -0,0 +1,29 @@ += Fingerprint + +Although the platform should show the xref:admin:features/versions.adoc[Versions] for almost all of the contents, it'd be +still possible to manipulate the content by directly editing the database. + +As mitigation for this risk, the platform shows a fingerprint for some important fields, for instance, a proposal body and title. + +image:features/fingerprint/modal.png[Check fingerprint modal] + +Its goal is to provide a way to give an informal "receipt" to a participant to they can detect tampering. A fingerprint is +a hashed representation of the content. It's useful to ensure the content hasn't been tampered with, as a single modification +would result in a totally different value. It's calculated using a SHA256 hashing algorithm. In order to replicate it +yourself, you can use a http://www.md5calc.com/sha256[MD5 calculator online] and copy-paste the source data. + +== Check fingerprint + +. Go to the content that you want to check the fingerprint +. Click in the "Check fingerprint" link in the sidebar +image:features/fingerprint/sidebar.png[Check fingerprint link in sidebar] +. Follow the modal instructions + +image:features/fingerprint/md5calc.png[MD5calc.com screenshot] + +It's possible to check the fingerprint with other tools, such as the sha256sum command line tool. + +[source,bash] +---- +echo -n '{"body":{"en":"

**Is your feature request related to a problem? Please describe.**

It would be useful to set a character limit on questionnaire answers to provide guidance for users regarding how long their answers should be.


**Describe the solution you\'d like**

To have a number input field next to each question in the admin, labeled \\"Character limit\\", by default set to zero (no limit), which determines the maximum characters the user answers to those questions can have.


**Describe alternatives you\'ve considered**

Another possibility could be to define this globally for the questionnaire, setting the character limit for each type of question.


**Additional context**

-


**Could this issue impact on users private data?**

No


**Funded by**

Fundació Bosch i Guimpera

"},"title":{"en":"Maximum characters for questionnaire text answers"}}' | sha256sum +---- \ No newline at end of file diff --git a/docs/es/modules/admin/pages/features/follows.adoc b/docs/es/modules/admin/pages/features/follows.adoc new file mode 100644 index 0000000000..faab047d79 --- /dev/null +++ b/docs/es/modules/admin/pages/features/follows.adoc @@ -0,0 +1,27 @@ += Follows + +Most of the contents in Decidim allows to be followed. This means that you'll receive xref:features/notifications.adoc[notifications] +of the activity being made by the thing you're following. + +You can control these notifications in the xref:features/my_account/notifications_settings.adoc[settings of your account]. + +The activity of the things that you're following is visible in your xref:features/my_public_profile/timeline.adoc[profile timeline]. + +For following a thing: + +. Navigate to whatever you want to follow. +. Click in the "Follow" button. +image:button_follow.png[Follow button] +. You'll see the "Follow" button disappear and the "Stop following" button appear. + +To unfollow a thing: + +. Navigate to whatever you want to unfollow. +. Click in the "Stop following" button. +image:button_stop_following.png[Stop following button] +. You'll see the "Stop following" button disappear and the "Follow" button appear. + +Administrators by default follow all the new spaces that are created in the Decidim platform. + +A participant can also follow another participants. This is public and it's visible in the profile sections +xref:features/my_public_profile/follows.adoc[follows] and xref:features/my_public_profile/followers.adoc[followers]. \ No newline at end of file diff --git a/docs/es/modules/admin/pages/features/hashtags.adoc b/docs/es/modules/admin/pages/features/hashtags.adoc new file mode 100644 index 0000000000..2d332d6537 --- /dev/null +++ b/docs/es/modules/admin/pages/features/hashtags.adoc @@ -0,0 +1,5 @@ += Hashtags + +Hashtags are a way to categorize content globally on the platform and make it more easily searchable through these categorizations. It allows different related contents to be easily discoverable under the same topic. Similar functionality is often used in other social media platforms. + +Hashtags can be set for different records within the platform, such as participatory spaces. They can also be generated for content created by the participants to allow easier discovery of the content. Some components may also allow setting suggested hashtags or specific hashtags for all records submitted by the participants. \ No newline at end of file diff --git a/docs/es/modules/admin/pages/features/metrics.adoc b/docs/es/modules/admin/pages/features/metrics.adoc new file mode 100644 index 0000000000..0e98422d88 --- /dev/null +++ b/docs/es/modules/admin/pages/features/metrics.adoc @@ -0,0 +1,15 @@ += Metrics + +NOTE: Looking for how to enable this feature technically? Go to xref:develop:metrics.adoc[Metrics in Developers guide] + +With Metrics participants can see the evolution in time of some resources, such as Proposals, Supports, Endorsements, Followers, Participants, Accepted propsoals, Comments, etc. You can see a real world example of this in https://meta.decidim.org/processes/roadmap/all-metrics[Metadecidim Roadmap process]. + +For this to work it needs to be first xref:develop:metrics.adoc[configured technically] and also enabled by the setting in the participatory space (`Show metrics` checkbox). + +Then this section will be visible in the space landing page. + +image:features/metrics/example.png[Example of metrics] + +By clicking in "Show all metrics", visitors can see other metrics and download this data in CSV format. + +image:features/metrics/page.png[Metrics page] \ No newline at end of file diff --git a/docs/es/modules/admin/pages/features/my_account.adoc b/docs/es/modules/admin/pages/features/my_account.adoc new file mode 100644 index 0000000000..f15dc1f51e --- /dev/null +++ b/docs/es/modules/admin/pages/features/my_account.adoc @@ -0,0 +1,19 @@ += My account + +My account is all the pages where a participant can change her personal data that is displayed in her xref:admin:features/my_public_profile.adoc[My public profile] page, change her notifications settings, see which groups she belongs, etc. + +To go to this section: + +. Sign in as a participant +. Click in the name of the participant in the header +. Click in "My account" + +The actions that she can do are: + +* xref:admin:features/my_account/account.adoc[Account] +* xref:admin:features/my_account/notifications_settings.adoc[Notifications settings] +* xref:admin:features/my_account/authorizations.adoc[Authorizations] +* xref:admin:features/my_account/groups.adoc[Groups] +* xref:admin:features/my_account/my_interests.adoc[My interests] +* xref:admin:features/my_account/my_data.adoc[My data] +* xref:admin:features/my_account/delete_my_account.adoc[Delete my account] \ No newline at end of file diff --git a/docs/es/modules/admin/pages/features/my_account/account.adoc b/docs/es/modules/admin/pages/features/my_account/account.adoc new file mode 100644 index 0000000000..9eb98b406b --- /dev/null +++ b/docs/es/modules/admin/pages/features/my_account/account.adoc @@ -0,0 +1,47 @@ += Account + +In this section is possible to make modifications that will be visible in the participants xref:features/my_public_profile.adoc[public profile] and also modify the email address or the language that the platform will use with the user. + +. Sign in as a participant +. Click in the name of the participant in the header +. Click in "My account" + +image:features/my_account/account.png[My account form] + + +.Participant settings - My account form +|=== +|Field |Type |Description + +|Avatar +|Optional +|Avatar or picture for the participant. Guidance for image: Preferrably a landscape image that does not have any text. +The service crops the image. Maximum file size: 5MB + +|Your name +|Required +|The name of the participant. + +|Nickname +|Required +|The nickname of the participant. + +|Your email +|Required +|The email of the participant, where she'll receive notifications, password recovery, etc. If it's changed it needs to be +confirmed. + +|Personal URL +|Optional +|Metadata that is displayed in the participant's profile. + +|About +|Optional +|Metadata that is displayed in the participant's profile. + +|Locale +|Required +|Choose the language you want to use to browse and receive notifications in Decidim +|=== + +From this page is possible to also modify the participant's password. \ No newline at end of file diff --git a/docs/es/modules/admin/pages/features/my_account/authorizations.adoc b/docs/es/modules/admin/pages/features/my_account/authorizations.adoc new file mode 100644 index 0000000000..3838e35959 --- /dev/null +++ b/docs/es/modules/admin/pages/features/my_account/authorizations.adoc @@ -0,0 +1,23 @@ += Authorizations + +In this section participants will be able to review their Authorizations and see some metadata, like when it was granted +or the status of the authorization. + +It depends on how it's configured for the organization, as depending in the context (like normative or laws) it could work +in different ways. For more information about Authorizations see xref:admin:participants/authorizations.adoc[authorizations +in admin manual] and xref:customize:authorizations.adoc[authorizations in customize guide]. + +image:features/my_account/authorizations.png[Authorizations] + +To go to this section: + +. Sign in as a participant +. Click in the name of the participant in the header +. Click in "My account" +. Click in "Authorizations" in the sidebar + +For any given authorization, you can see the following information: + +* If it's not finished, when the authorization process started +* If it has finished and has been granted, the date when it was granted +* If the authorization provides it, some metadata, such as the scope of the authorization \ No newline at end of file diff --git a/docs/es/modules/admin/pages/features/my_account/delete_my_account.adoc b/docs/es/modules/admin/pages/features/my_account/delete_my_account.adoc new file mode 100644 index 0000000000..8ba403a53e --- /dev/null +++ b/docs/es/modules/admin/pages/features/my_account/delete_my_account.adoc @@ -0,0 +1,21 @@ += Delete my account + +In this section participants will be able to delete their own accounts. This means that they will be unable to access the system anymore. This action is irreversible. All the contributions will be anonymized. + +image:features/my_account/delete_my_account.png[Delete my account form] + +To delete the account: + +. Sign in as a participant +. Click in the name of the participant in the header +. Click in "My account" +. Click in "Delete my account" in the sidebar +. Optionally, she can provide a reason for the deletion +. Click in "Delete my account" +. Click in "Yes, I want to delete my account" + +image:features/my_account/delete_my_account_confirm.png[Confirm account deletion] + +After the account has been deleted, the contributions (such as comments, proposals, etc), will be still visible but all the authorship information will be anonymized, belonging to an special kind of author called "Participant deleted": + +image:features/my_account/delete_my_account_deleted.png[Deleted participant contribution] \ No newline at end of file diff --git a/docs/es/modules/admin/pages/features/my_account/groups.adoc b/docs/es/modules/admin/pages/features/my_account/groups.adoc new file mode 100644 index 0000000000..5bccbd4987 --- /dev/null +++ b/docs/es/modules/admin/pages/features/my_account/groups.adoc @@ -0,0 +1,18 @@ += Groups + +In this section participants can see which Groups they belong to. + +NOTE: Want to create a new group? Go to the xref:admin:features/my_public_profile.adoc[My public profile] page. + +image:features/my_account/groups.png[Groups] + +To go to this section: + +. Sign in as a participant +. Click in the name of the participant in the header +. Click in "My account" +. Click in "Groups" in the sidebar + +Here you can see in which date the group was created and which status does it have (`pending` or `verified`). + +Read more about xref:admin:participants/groups.adoc[Groups in admin manual]. \ No newline at end of file diff --git a/docs/es/modules/admin/pages/features/my_account/my_data.adoc b/docs/es/modules/admin/pages/features/my_account/my_data.adoc new file mode 100644 index 0000000000..657fe4af9b --- /dev/null +++ b/docs/es/modules/admin/pages/features/my_account/my_data.adoc @@ -0,0 +1,29 @@ += My data + +In this section participants can request a file with all the data that they've provided to the platform. + +image:features/my_account/my_data.png[My data] + +To request the data: + +. Sign in as a participant +. Click in the name of the participant in the header +. Click in "My account" +. Click in "My data" in the sidebar +. Click in "Request data" +. Wait a couple of minutes so the files are generated. It could depend in how many proposals, comments, etc you've made +. Go to your email account and find the received email +. Click in "Download" +. Open it with a support zip software +. Enter the password that you've received in the email +. Unzip or extract the contents + +image:features/my_account/my_data_email.png[My data] + +== Zip applications + +For opening the zip file, the software that you use need to support encryption with the AES-256 algorithm. Depending on your operating system you have multiple alternatives. + +* Windows: https://www.7-zip.org/[7-Zip] +* Mac: https://www.keka.io[Keka] +* GNU/Linux: File Roller (available through your package manager) or https://peazip.github.io/[PeaZip] \ No newline at end of file diff --git a/docs/es/modules/admin/pages/features/my_account/my_interests.adoc b/docs/es/modules/admin/pages/features/my_account/my_interests.adoc new file mode 100644 index 0000000000..df77a4d79b --- /dev/null +++ b/docs/es/modules/admin/pages/features/my_account/my_interests.adoc @@ -0,0 +1,15 @@ += My interests + +In this section participants can choose which interests they have to receive more information about. + +By default what they see here is a list of all the xref:admin:scopes.adoc[Scopes] of the organization. Those selections +can be used by administrators when segmenting for the xref:admin:newsletters.adoc[Newsletters]. + +image:features/my_account/my_interests.png[My interests] + +To go to this section: + +. Sign in as a participant +. Click in the name of the participant in the header +. Click in "My account" +. Click in "My interests" in the sidebar \ No newline at end of file diff --git a/docs/es/modules/admin/pages/features/my_account/notifications_settings.adoc b/docs/es/modules/admin/pages/features/my_account/notifications_settings.adoc new file mode 100644 index 0000000000..ff949d0ad4 --- /dev/null +++ b/docs/es/modules/admin/pages/features/my_account/notifications_settings.adoc @@ -0,0 +1,26 @@ += Notifications + +In this section participants can choose which kind of notifications they'll receive. For instance, depending in the activity of the installation and spaces, most people would want to disable the "Everything I follow" + +image:features/my_account/notifications_settings.png[Notifications settings] + +To go to this section: + +. Sign in as a participant +. Click in the name of the participant in the header +. Click in "My account" +. Click in "Notifications settings" in the sidebar + +The options available are: + +* I want to get notifications about +** My own activity, like when someone comments in my proposal or mentions me +** Everything I follow +* Send notifications by email +** I want to receive an email every time I receive a notification +* Newsletters +** I want to receive newsletters +* Receive direct messages from anyone +** Allow anyone to send me a direct message, even if I don't follow them +* Administrators +** I want to receive an email every time something is reported for moderation \ No newline at end of file diff --git a/docs/es/modules/admin/pages/features/my_public_profile.adoc b/docs/es/modules/admin/pages/features/my_public_profile.adoc new file mode 100644 index 0000000000..ad704dea44 --- /dev/null +++ b/docs/es/modules/admin/pages/features/my_public_profile.adoc @@ -0,0 +1,18 @@ += My public profile + +Every participant has a public profile that shows details about them and their activity on the website. + +To go to this section: + +. Sign in as a participant +. Click in the name of the participant in the header +. Click in "My public profile" + +The sections available under the public profile are: + +* xref:admin:features/my_public_profile/timeline.adoc[Timeline] +* xref:admin:features/my_public_profile/activity.adoc[Activity] +* xref:admin:features/badges.adoc[Badges] +* xref:admin:features/my_public_profile/follows.adoc[Follows] +* xref:admin:features/my_public_profile/followers.adoc[Followers] +* xref:admin:features/my_public_profile/groups.adoc[Groups] \ No newline at end of file diff --git a/docs/es/modules/admin/pages/features/my_public_profile/badges.adoc b/docs/es/modules/admin/pages/features/my_public_profile/badges.adoc new file mode 100644 index 0000000000..3d44427d06 --- /dev/null +++ b/docs/es/modules/admin/pages/features/my_public_profile/badges.adoc @@ -0,0 +1,5 @@ += Badges + +The public profile's badges shows which badges the participant has accumulated and what their current level is for each badge. + +More information about badges is available on the xref:admin:features/badges.adoc[Badges feature page]. \ No newline at end of file diff --git a/docs/es/modules/admin/pages/features/my_public_profile/followers.adoc b/docs/es/modules/admin/pages/features/my_public_profile/followers.adoc new file mode 100644 index 0000000000..6c12a0f330 --- /dev/null +++ b/docs/es/modules/admin/pages/features/my_public_profile/followers.adoc @@ -0,0 +1,3 @@ += Followers + +The followers section contains a list of participants and groups that are following the participant that the profile belongs to. \ No newline at end of file diff --git a/docs/es/modules/admin/pages/features/my_public_profile/follows.adoc b/docs/es/modules/admin/pages/features/my_public_profile/follows.adoc new file mode 100644 index 0000000000..c9c686c277 --- /dev/null +++ b/docs/es/modules/admin/pages/features/my_public_profile/follows.adoc @@ -0,0 +1,3 @@ += Follows + +The follows section contains a list of participants and groups the participant is currently following. By following another participant or a group on the platform, the participant will receive notifications about the activity done by those other participants or groups on the platform. Some participants may also require that they need to be following the other participant before they can exchange private messages with each other. \ No newline at end of file diff --git a/docs/es/modules/admin/pages/features/my_public_profile/groups.adoc b/docs/es/modules/admin/pages/features/my_public_profile/groups.adoc new file mode 100644 index 0000000000..52885e4050 --- /dev/null +++ b/docs/es/modules/admin/pages/features/my_public_profile/groups.adoc @@ -0,0 +1,3 @@ += Groups + +The groups section contains all the groups that the user belongs to. More information about the groups feature is available at the xref:admin:features/my_account/groups.adoc[User groups page]. \ No newline at end of file diff --git a/docs/es/modules/admin/pages/features/my_public_profile/timeline.adoc b/docs/es/modules/admin/pages/features/my_public_profile/timeline.adoc new file mode 100644 index 0000000000..99909163f4 --- /dev/null +++ b/docs/es/modules/admin/pages/features/my_public_profile/timeline.adoc @@ -0,0 +1,3 @@ += Timeline + +The timeline view displays the participants activity on the website, including the activity items that should be only visible to the participant currently logged in. This section is not visible to any other user than the participant themselves because it can also contain items that should be visible only to that participant. \ No newline at end of file diff --git a/docs/es/modules/admin/pages/features/my_public_profile/tmp_notifications.adoc b/docs/es/modules/admin/pages/features/my_public_profile/tmp_notifications.adoc new file mode 100644 index 0000000000..2aabfc9b49 --- /dev/null +++ b/docs/es/modules/admin/pages/features/my_public_profile/tmp_notifications.adoc @@ -0,0 +1,5 @@ += Notifications + +In this section participants can see the notifications that the system has sent to them. For instance, if the participant is followign a participatory space or a proposal, they get related notifications about the actions that happen in these sections of the platform. + +This section can be accessed through the bell icon in the header bar of the platform. The bell icon shows highlighted as active when there are notifications and dimmer when there are no new notifications for the user right now. \ No newline at end of file diff --git a/docs/es/modules/admin/pages/features/notifications.adoc b/docs/es/modules/admin/pages/features/notifications.adoc new file mode 100644 index 0000000000..18006f9c47 --- /dev/null +++ b/docs/es/modules/admin/pages/features/notifications.adoc @@ -0,0 +1,16 @@ += Notifications + +Most of the actions in the platform generate notifications so particpants can know when there are new things to watch. + +This is accessible from the `Notifications` menu item (image:icon_bell.png[Notification icon]) in the header, after a participant has logged in. + +To see the notifications: + +. Sign in as participant +. Click in the notifications icon in the header + +If there are notifications, then the participant will see the icon with a color image:icon_bell_on.png[Notification icon with color] + +image:features/notifications/notifications.png[Example of notifications page when there are notifications] + +image:features/notifications/no_notifications_yet.png[Example of notifications page when there aren't notifications] \ No newline at end of file diff --git a/docs/es/modules/admin/pages/features/search.adoc b/docs/es/modules/admin/pages/features/search.adoc new file mode 100644 index 0000000000..c774f2e53c --- /dev/null +++ b/docs/es/modules/admin/pages/features/search.adoc @@ -0,0 +1,3 @@ += Search engine + +*The search engine* allows participants to perform searches across all of the platform’s indexable content, both generally and specifically, by searching within a specific participatory process or inside its components (proposals, results, etc.), through advanced searches. \ No newline at end of file diff --git a/docs/es/modules/admin/pages/features/share.adoc b/docs/es/modules/admin/pages/features/share.adoc new file mode 100644 index 0000000000..845476edb6 --- /dev/null +++ b/docs/es/modules/admin/pages/features/share.adoc @@ -0,0 +1,3 @@ += Share + +Different content on the platform can be easily shared through the share links available on the site. The share links allow easier sharing to different social media services that can be configured for Decidim through the configuration files. \ No newline at end of file diff --git a/docs/es/modules/admin/pages/features/statistics.adoc b/docs/es/modules/admin/pages/features/statistics.adoc new file mode 100644 index 0000000000..416e405100 --- /dev/null +++ b/docs/es/modules/admin/pages/features/statistics.adoc @@ -0,0 +1,3 @@ += Statistics + +Decidim provides general statistics about the whole platform and different participatory spaces can also provide statistics related to that participatory space only. These are generic numbers that indicate the website activity and may also encourage other people to join the platform as they see it being popular. \ No newline at end of file diff --git a/docs/es/modules/admin/pages/features/versions.adoc b/docs/es/modules/admin/pages/features/versions.adoc new file mode 100644 index 0000000000..63b7ca2f13 --- /dev/null +++ b/docs/es/modules/admin/pages/features/versions.adoc @@ -0,0 +1,24 @@ += Versions + +The versions feature allows a visitor to see the evolution of the different versions of resources that can be edited, +like proposals or results. + +With versions it's possible to see who made the change, when the change has been made and exactly what has changed. + +image:features/versions/side_by_side_escaped.png[Versions in resources] + +== See the versions + +. Go to the content that you want to see the version of. +. Click in the "see other versions" link in the sidebar +image:features/versions/sidebar.png[See other versions link in sidebar] +. Click in the past version that you want to see +image:features/versions/list.png[List of versions] +. From there you can change the visualiation of the version differences +image:features/versions/unified_unescaped.png[Unified unescaped view] + +It's possible to view the diffs of the versions in in two formats: side by side or unified. In case that the contents are +in HTML then it's also possible to see the diff unescaped and escaped, and see the full HTML code. + +image:features/versions/side_by_side_unescaped.png[Side by side unescaped view] +image:features/versions/unified_escaped.png[Unified escaped view] \ No newline at end of file diff --git a/docs/es/modules/admin/pages/global_moderations.adoc b/docs/es/modules/admin/pages/global_moderations.adoc new file mode 100644 index 0000000000..bb3d553310 --- /dev/null +++ b/docs/es/modules/admin/pages/global_moderations.adoc @@ -0,0 +1,121 @@ += Global moderations + +The *Global moderations* function allows you to moderate different kind of contents and +ensure that the dialog in your platform is democratic and constructive. Making +use of this function, administrators, collaborators and moderators of a space can +hide the contents/contributions that have been reported, where the complaint is +deemed appropriate, or delete the complaint. + +NOTE: Looking for how to report users? See xref:participants/reported_users.adoc[Reported users]. + +For instance, in the case of https://www.decidim.barcelona/[Decidim Barcelona], +the https://www.decidim.barcelona/pages/terms-and-conditions[Terms of Service] says: + +> It is not allowed to add any illegal or unauthorized content to the site, such +> as information with the following features: +> +> * be it false or misleading; +> * to infringe any law of the City Council or any third party, such as copyright, +> trademarks or other intellectual and industrial property rights or related rights; +> * attacking the privacy of a third party, such as publishing personal details +> of participants, such as name, address, phone number, email, photos or any other +> personal information; +> * containing viruses, Trojans, robots or other programs that may harm the website +> or the City Hall systems, or the website or system of any third party, or which +> intend to circumvent the technical measures designed for the proper functioning +> of the platform; +> * to send spam to users or overload the system; +> * which has the character of message chain, pyramidal game or random game; +> * for commercial purposes, such as publishing job offers or ads; +> * that it is not in keeping with public decency; consequently, content must not +> incite hatred, discriminate, threaten, provoke, have no sexual, violent, coarse or +> offensive meaning or character; +> * to infringe the law or applicable regulation; +> * to campaign by promoting mass voting for other proposals not related to the +> process and the framework for discussion, and +> * to create multiple users by pretending to be different people (astroturfing). + +Anyone can propose a moderation in Decidim, through the "Flag" icon in the participant +profile. After a participant has clicked in this action then she needs to provide a +reason why she's making this report: + +* Contains clickbait, advertising, scams or script bots. +* Contains racism, sexism, slurs, personal attacks, death threats, suicide requests or any form of hate speech. +* Contains illegal activity, suicide threats, personal information, or something else you think doesn't belong on [This organization]. + +Participants can also add extra information regarding their report. + +image:moderation_modal.png[Give reason for moderation modal] + +After a participant has reported a content, it'll be shown in two sections of the +administration panel: + +* Global moderations panel +* Participatory space moderation panel + +To go to the Global moderations panel, you need to: + +. Sign in as administrator +. Go to administration panel +. Click in Global moderations in the sidebar + +There you'll find first all the unprocessed reports if there's any: + +image:global_moderations_list_unhidden.png[Show all the moderated content list] + +It's also possible to filter by the type of content that was moderated and the +state of the reported content (if it was hidden or not). + +* *Id*: unique identificator of the reported content. +* *Type*: which kind of content it was reported, for instance a *Proposal* or a *Comment*. +* *Participatory Space*: which space this content belongs to. +* *Count*: Number of times it has been reported by different users. +* *Reported content URL*: link for seeing the content reported and see the context of the complaint. +* *Reports*: why it has been reported. If the participant that made the report has given extra +information it's possible to see it by hovering it. +* *Creation date*: when it was originally reported. +* *Actions*: you can *Expand*, *Unreport* or *Hide*. + +== Actions (when the report wasn't accepted yet) + +|=== +|Icon |Name |Definition + +|image:action_expand.png[Expand icon] +|Expand +|To see the full metadata of the reported content. + +|image:action_hide.png[Hide icon] +|Hide +|Allows an admin or moderator to hide this content (accepting the report). + +|image:action_unreport.png[Unreport icon] +|Unreport +|Allows an admin or moderator to keep showing this content (rejecting the report). +|=== + +== Actions (after the content is hidden) + +|=== +|Icon |Name |Definition + +|image:action_expand.png[Expand icon] +|Expand +|To see the full metadata of the reported content. + +|image:action_unhide.png[Unhide icon] +|Unhide +|Allows an admin or moderator to unhide this content (showing it publicly again). +|=== + +If the report was "Unreported" and it was a mistake, meaning that for instance the +content was spam but it was a mistake not accepting the report, then you'll need +to find that again in the public view and report it yourself so you can moderate it. + +== Expand + +To see all the metadata of a report, you can see it Expanded. + +image:global_moderations_report01.png[Expanded moderation 01] + +image:global_moderations_report02.png[Expanded moderation 02] \ No newline at end of file diff --git a/docs/es/modules/admin/pages/help_sections.adoc b/docs/es/modules/admin/pages/help_sections.adoc new file mode 100644 index 0000000000..7e942f55d7 --- /dev/null +++ b/docs/es/modules/admin/pages/help_sections.adoc @@ -0,0 +1,23 @@ += Help sections + +The first time a visitor goes to any Space page she'll see an information box about what's this Space about. + +This is how the information box is shown to participants and visitors: + +image:help_sections_frontend.png[Help sections: frontend] + +They can hide this box by clicking in the close button [X]. This gets remembered by the application. They can open this box again by clicking in [Help: ?]. + +image:help_sections_frontend_hide.png[Help sections: hide] + +As this is something that depends on your given installation, an administrator can customize these *Help sections*, adapting them to your needs. + +image:help_sections_backend.png[Help sections: backend] + +== Disable + +You can disable these information boxes by leaving the contents all empty for every language: + +image:help_sections_disable_backend.png[Disable help section in admin] + +image:help_sections_disable_frontend.png[Disabled help section] \ No newline at end of file diff --git a/docs/es/modules/admin/pages/homepage.adoc b/docs/es/modules/admin/pages/homepage.adoc new file mode 100644 index 0000000000..b5811167d9 --- /dev/null +++ b/docs/es/modules/admin/pages/homepage.adoc @@ -0,0 +1,101 @@ += Homepage + +include::partial$under-construction.adoc[] + +You can control how it's the Homepage of your organization. To do so you have the Settings -> Homepage section through the Administration panel: + +image::admin_homepage.png[Decidim Admin Homepage] + +--- + +== How this works + +This means that every section in the Homepage is called **content block**. + +For instance, this is the *How to participate* content block: + +image::homepage_how_to_participate.png[How to participate example] + +For managing these contents you need to Drag and Drop the contents between the two columns, on the left are the Active and in the Right are the Inactive content blocks. + +As an example, here you can see how your page will look with only the *Hero image* content block: + +// TODO: add screenshot + +At the admin this is handled with: + +// TODO: add screenshot + +In your installation you could have other content blocks, as this depends on which modules you have active. Please contact your system administrator if you see something different here, like a missing content block. + +== Content blocks + +These are the different content blocks enabled with the official Decidim modules: + +=== Hero image + +image::homepage_hero_image_back.png[Hero image in Homepage backend content block] + +image::homepage_hero_image_front.png[Hero image in Homepage frontend content block] + +=== Sub hero banner + +Displays the description text of the instance. See xref:admin:appearance.adoc[Appearance]. + +image::homepage_sub_hero_banner.png[Sub hero banner in Homepage content block] + +=== Footer sub hero banner + +// TODO: I think this should be changed with an HTML text and probably removed + +image::homepage_footer_sub_hero_banner.png[Hero image in Homepage content block] + +=== How to participate + +// TODO: I think this should be changed with an HTML text and probably removed + +image::homepage_how_to_participate.png[How to participate in Homepage content block] + +=== Upcoming meetings + +image::homepage_upcoming_meetings.png[Upcoming meetings in Homepage content block] + +=== Last activity + +image::homepage_last_activity.png[Last activity in Homepage content block] + +=== HTML block + +image::homepage_html_block.png[HTML block in Homepage content block] + +=== Highlighted processes + +image::homepage_highlighted_processes.png[Highlighted processes in Homepage content block] + +=== Highlighted assemblies + +image::homepage_highlighted_assemblies.png[Highlighted assemblies in Homepage content block] + +=== Highlighted initiatives + +image::homepage_highlighted_initiatives.png[Highlighted initiatives in Homepage content block] + +=== Highlighted consultations + +image::homepage_highlighted_consultations.png[Highlighted consultations in Homepage content block] + +=== Highlighted conferences + +image::homepage_highlighted_conferences.png[Highlighted conferences in Homepage content block] + +=== Highlighted content banner + +image::homepage_highlighted_content_banner.png[Highlighted content banner in Homepage content block] + +=== Organization statistics + +image::homepage_organization_statistics.png[Organizations statistics in Homepage content block] + +=== Organization metrics + +image::homepage_organization_metrics.png[Organzation metrics in Homepage content block] \ No newline at end of file diff --git a/docs/es/modules/admin/pages/index.adoc b/docs/es/modules/admin/pages/index.adoc new file mode 100644 index 0000000000..4c3b2a0763 --- /dev/null +++ b/docs/es/modules/admin/pages/index.adoc @@ -0,0 +1,27 @@ += Introduction + +Deploying Decidim means taking account of all the activities that play a part in the configuration of the platform and the deployment of the participatory processes. Acquiring knowledge in administering Decidim enables control over fundamental matters such as: + +* configuring a participatory process +* activating a consultation and receiving votes +* moderating the platform +* managing associated legal texts (as the privacy policy) +* managing authorization from the administrators +* monitoring and verifying organizations + +None of these aspects are strictly technical but they do involve a series of political decisions over how we want Decidim to be, what messages and contents it has to contain, what the moderation policy for comments and debates has to be and, above all, how a specific participatory platform has to be, and what functions it has to have active. This is why it is essential to understand the socio-technical implications of the Decidim platform’s administration and management when it comes to deploying the platform. + +To understand how Decidim works, we need to distinguish between xref:spaces.adoc[*spaces*] and xref:components.adoc[*components*]. The participatory spaces are the channels that citizens can participate through when public decisions are being taken. These are participatory processes, initiatives, consultations and assemblies. +Whereas participatory components are mechanisms that enable interaction between users of the platform and the various participatory spaces. These include meetings, pages, proposals and surveys. + +image:introduction.png[Spaces and components] + +Therefore, a participatory space as a participatory process, in the various stages, can incorporate several components such as face-to-face meetings, proposals, surveys and results and the monitoring of these. + +image:introduction_process.png[Components in a participatory process] + +So, participatory spaces are configured by defining (and configuring) the components they are going to have. It is important to bear in mind that these participatory components and the various functions are repeated in the various spaces, offering many opportunities when it comes to configuring the various spaces. This simplifies learning as once a space has been configured, it is then easier to configure another. + +This section provides a full description of how to configure the Decidim platform for any kind of organization and how to configure, manage and administer the various participatory processes. A description has been given in tutorial format, to help with understanding administration tasks, following Decidim’s literal fields and enclosing screenshots to facilitate their interpretation. + +Managing (administering) the Decidim platform is relatively simple and intuitive and no specific IT knowledge is required. The administrators of a Decidim platform, in other words, those with the necessary authorization for managing the platform, can configure the platform in a general way (images, information pages, etc.,) and manage the various participatory processes (configuring, editing, analysing and concluding). \ No newline at end of file diff --git a/docs/es/modules/admin/pages/information-pages.adoc b/docs/es/modules/admin/pages/information-pages.adoc new file mode 100644 index 0000000000..b92b94229d --- /dev/null +++ b/docs/es/modules/admin/pages/information-pages.adoc @@ -0,0 +1,153 @@ += Information pages + +include::partial$legacy.adoc[] + +Here we offer you three informative pages that you can use as a template or re-use replacing the text highlighted in yellow with the correct text. You can find the same documents in spanish or catalan in their respective Administering Decidim document. + +== Information/FAQs + +[[t.6a4146f0a2c8ecae39afa2642bcb7f700ef842af]][[t.0]] + +[width="100%", cols="100%"] +|=== +|_FAQS (EN)_ + +a|If you’d like to take part in participatory processes and have your say, register! Note that to use some of the functions of certain processes (such as voting and prioritising) you will have to verify that you are registered with #Name of the Municipality/ Organization#, by following a very simple step. + +*What is #Name of the Municipality/ Organization?#* + +A platform for building a more participatory #Name of the Municipality/ Organization#, with a shared vision and for delving deeper into local participatory democracy. + +#Platformname# is a participatory platform based on open code. Citizens can see how it is built and can reuse or improve it. https://www.google.com/url?q=https://github.com/AjuntamentdeBarcelona/decidim.barcelona&sa=D&ust=1526042251888000[Check out the code here on GitHub]. + +*How can I participate in Platformname?* + +Get informed + +* Consult the active participatory processes. +* Browse through the proposals made by other citizens +* Access the face-to-face meetings' data and documents and the discussions and debates held there. +* Search contents of interest to you, by district, subject matter and tags. + +Take part + +* Make new proposals. +* Offer arguments in favour or against, or your general thoughts. +* Share the proposals on social media. + +a|Follow the existing proposals + +* Follow the existing proposals: those started on the platform and those generated by face-to-face meetings. +* After the face-to-face meetings have taken place, you can follow the progress of the discussions and debates as well as the contributions generated. +* Tick a proposal of interest to you and follow its entire progress, from the comments made by others to the final documents. + +*What are...?* + +*Participatory processes* + +*#Platformname#* activities that involve citizens and which are carried out in several stages: information, diagnosis, contributions, decisions, results and evaluation of the proposals. + +*Assemblies* + +Permanent participatory channels and bodies. + +*Face-to-face meetings:* + +Meetings and work sessions for contributing to active participatory processes. + +*Surveys* + +Questionnaire for providing information and sharing your opinion. + +*Discussions and debates* + +Digital spaces for getting informed and deciding on the proposals in the processes that have this function enabled. + +*Proposals* + +Contributions you can make as a user. In some cases you will be able to receive votes from other users. Some of them will have a decision-taking function and others a merely consultative function. Each process will have its own characteristic rules. + +*Comments* + +Contributions you can make as a user in response to a proposal or discussion and debate. + +*My residency verification doesn't work.* + +Check the following possibilities: + +* Have you entered your national ID number or document without spaces between the digits, including the final letter? +* Are you sure you are a registered resident in the municipality of #Name of the Municipality/ Organization#? (The municipality is geographically smaller than the Barcelona Metropolitan Area and the Province of Barcelona) +* There may be a problem with your data in the residency register. Consult your nearest CITIZEN HELP AND INFORMATION OFFICE and confirm that your registration information is correct. + +If all the above steps do not solve the problem, email us at #Email# or come to the face-to-face discussions and debates for each process. + +*I am not a registered resident in #Name of the Municipality/ Organization#; why can't I vote for the proposals?* + +Only registered residents in #Name of the Municipality/ Organization# are allowed to vote in processes where proposals can be voted on. When it comes to questions that affect decisions to be taken that are specific to the city, it is the city’s residents who need to take part in such decision-taking. + +It is true that there are people not registered #Name of the Municipality/ Organization# residents who may still be affected by these decisions, but the Register is the broadest available census that we have in #Name of the Municipality/ Organization#: it allows us to reach the maximum number of people while also guaranteeing that the participatory process is secure. On the other hand, not all the processes launched from the platform require their participants to be registered residents in the city. + +*I am not a registered #Name of the Municipality/ Organization# resident. Can I participate?* + +Yes, you can take part even when you are not a registered resident. You can take part in several enabled processes, in face-to-face discussions and debates, and you can launch a proposal, without having to be a registered resident. It is only in some processes that voting for proposals is limited to registered residents, just as only registered residents can vote at municipal elections. + +*Why do I have to verify my account?* + +You need a user account to use the platform. You can do more or fewer things depending on the degree of verification: + +* If you register with the website through an email address without providing any further information (so the verification process is not carried out), you will be able to comment on and debate proposals. +* If after registering, you have carried out the basic verification, i.e. you have verified your residence through the platform (more info at "How do I create and verify my account?"), you can vote for proposals in processes that are feasible (in certain processes). +* You can always take part in person and at any of the face-to-face meetings there are for each participatory process. Contributions that are made face to face will be collected, published and accessible to the platform. + +*Do I need a mobile phone or access to internet to take part?* + +No. You can carry out any action relating to the proposals - whether for creating, supporting, voting for or getting informed about them - face to face at any of the discussions and debates that are held. You can also create a completely verified user account if you wish to use the platform. + +*How do I create and verify my account?* + +The first step is to create an account. Create the account and fill in the information you are asked for. You are required to tick the box stating that you accept our user terms and conditions. On creating a new account, an email will be sent to the address you have specified, and you will have to click on the link it contains (the "Confirm my account" link) to complete the creation of the account. + +Once your basic account has been created and you have logged in using your email and password, the system will give you the option of carrying out a basic verification. To do this, click on the "My account" link on the top right and then click on the "Verify my account" button. + +Some processes, where necessary, will also require you to enter your residency data, to verify you are a registered resident in #Name of the Municipality/ Organization# (it is important to enter the document number along with the letter and your date of birth, and tick the box stating you accept access to the Municipal Register). If your data is correct, your account will allow you to support the proposals. + +*I've forgotten my password and my account doesn't work. What can I do?* + +You can request a new password, which will be sent to your email address. If the above solution does not work, you can email us at #Email#, and we will solve the problem associated with your account. Processes that include face-to-face meetings are open to you to attend and take part in, without the need for you to register with the platform. + +*How can I change my email address, my user name, my password, unsubscribe or activate/deactivate the notifications that are sent to email address?* + +Click on the "Enter" link, enter your email address and password, and click on the "Enter" button. Once you have done so, click on the "My account" link, where you will find all the options, allowing you to change your email address or user name, unsubscribe, or activate/deactivate notifications. Once you have made the appropriate changes, make sure you click on the "Save changes" button. + +*I am unable to create my account correctly.* + +Review the section "My residency verification doesn't work", in case the problem lies in this step; generally speaking, this is the most frequent problem. If this does not solve your problem, review the section "How to create and verify my account", to ensure that your are following the steps correctly. If the problem persists, email us at #Email#, and you will be given assistance. +|=== + +[[h.mkf6otb3mhlh]] +== Terms and conditions of use + +[[t.0c2d2bc083254e4010a82a1ac81ebd7f18f135ee]][[t.1]] + +[width="100%", cols="100%"] +|=== +|_Terms and conditions of use (EN)_ + +a|Legal aspects and conditions of use for the #Platformname# participatory platform at #Name of the Municipality/ Organization# City Council. + +(the ones that the legal services recommend you. You can use the https://www.google.com/url?q=https://decidim.barcelona/pages/terms-and-conditions&sa=D&ust=1526042251902000[Decidim.Barcelona terms and conditions of use] as a model). +|=== + +[[h.3oy7u29]] +== How the platform works + +[[t.44b67a895959076674b8c3aa044e22bbd448f440]][[t.2]] + +[width="100%", cols="100%"] +|=== +|_Accessibility (EN)_ + +a|This refers to the webpage's design and contents, which have to be accessible (without any visual or technological obstacles and for the largest number of users possible), and to standard regulations (WAI, Web Accessibility Initiative). + +Decidim.Barcelona example https://www.google.com/url?q=https://www.decidim.barcelona/pages/accessibility&sa=D&ust=1526042251903000[Accessibility]. +|=== \ No newline at end of file diff --git a/docs/es/modules/admin/pages/initiatives_initializer.adoc b/docs/es/modules/admin/pages/initiatives_initializer.adoc new file mode 100644 index 0000000000..80f663fc2c --- /dev/null +++ b/docs/es/modules/admin/pages/initiatives_initializer.adoc @@ -0,0 +1,174 @@ += Initiatives Initializer + +For using the initiatives module, you'll want to review the configurations that are in the initializer. See the xref:configure:initializer.adoc[general Initializer configuration] for more information regarding this file. + +You'll need to change in the `config/initializer/decidim.rb` file. You could also create an ad-hoc file for these configurations, like `config/initializer/initiatives.rb`. + +After making changes to this file you'll need to also restart your application server. + +== Creation enabled + +Setting that defines whether creation is allowed to any validated user or not. Defaults to true. + +[source,ruby] +.... + config_accessor :creation_enabled do + true + end +.... + +== Similarity threshold + +Setting that defines the similarity minimum value to consider two +initiatives similar. Defaults to 0.25. + +[source,ruby] +.... + config_accessor :similarity_threshold do + 0.25 + end +.... + +== Similarity limit + +Setting that defines how many similar initiatives will be shown. +Defaults to 5. + +[source,ruby] +.... + config_accessor :similarity_limit do + 5 + end +.... + +== Minimum committee members + +Minimum number of committee members required to pass the initiative to +technical validation phase. Only applies to initiatives created by +individuals. + +[source,ruby] +.... + config_accessor :minimum_committee_members do + 2 + end +.... + +== Default signature time period length + +Number of days available to collect supports after an initiative has been +published. + +[source,ruby] +.... + config_accessor :default_signature_time_period_length do + 120 + end +.... + +== Default components + +Components enabled for a new initiative + +[source,ruby] +.... + config_accessor :default_components do + [:pages, :meetings] + end +.... + +== First notification percentage + +Notifies when the given percentage of supports is reached for an +initiative. + +[source,ruby] +.... + config_accessor :first_notification_percentage do + 33 + end +.... + +== Second notification percentage + +Notifies when the given percentage of supports is reached for an +initiative. + +[source,ruby] +.... + config_accessor :second_notification_percentage do + 66 + end +.... + +== Stats cache expiration time + +Sets the expiration time for the statistic data. + +[source,ruby] +.... + config_accessor :stats_cache_expiration_time do + 5.minutes + end +.... + +== Max time in validating state + +Maximum amount of time in validating state. +After this time the initiative will be moved to +discarded state. + +[source,ruby] +.... + config_accessor :max_time_in_validating_state do + 60.days + end +.... + +== Print enabled + +Print functionality enabled. Allows the user to get +a printed version of the initiative from the administration +panel. + +[source,ruby] +.... + config_accessor :print_enabled do + true + end +.... + +== Timestamp service + +Set a service to generate a timestamp on each vote. The +attribute is the name of a class whose instances are +initialized with a string containing the data to be +timestamped and respond to a timestamp method. + +[source,ruby] +.... + config_accessor :timestamp_service +.... + +== PDF signature service + +Set a service to add a signature to pdf of signatures. +The attribute is the name of a class whose instances are +initialized with the document to be signed and respond to a +signed_pdf method with the signature added. + +[source,ruby] +.... + config_accessor :pdf_signature_service +.... + +== Do no require authorization + +This flag allows creating authorizations to unauthorized users. + +[source,ruby] +.... + config_accessor :do_not_require_authorization do + false + end +.... \ No newline at end of file diff --git a/docs/es/modules/admin/pages/newsletters.adoc b/docs/es/modules/admin/pages/newsletters.adoc new file mode 100644 index 0000000000..7c3c069551 --- /dev/null +++ b/docs/es/modules/admin/pages/newsletters.adoc @@ -0,0 +1,164 @@ += Newsletters + +Newsletters are emails sent to the organization's participants with the news. They are +sent to participants that have checked the "Receive an occasional newsletter +with relevant information" when the participant signed up or after in their account. + +image::newsletter_contact_permission.png[Contact permission in participant registration] + +image::newsletter_participant_notifications_settings.png[Contact permission in participant account] + +Some examples of when you can and should sent a newsletter are: + +* When a new process could be interesting for all the citizens in a city, +for instance a Participatory Budgeting process. +* When there are the results published for a given process. +* When an assembly has a important point for discussion. +* When there's a new voting planned. +* When there's a new conference published + +To create a new newsletter, as an administrator you need to: + +. Go to newsletter menu +. Click in the button "New newsletter" +. Select the template that you want to use +. Fill the form with the newsletter contents +. Preview the newsletter +. Select recipients to deliver +. Deliver the newsletter + +== 1. Go to newsletter menu + +It's on the main sidebar of the admin panel. + +image::newsletter_menu.png[Newsletter admin menu] + +== 2. Click in the button "New newsletter" + +In this page you'll have a list of all the sent newsletters, along with the status +(if it was sent already or not) and how many participants have received it. + +image::newsletter_list.png[Newsletter list] + +In the secondary sidebar or in the top of the list you have the button for "New +newsletter". + +== 3. Select template of new newsletter + +Depending on what you want to sent, if it's just a quick update or if it's something +a little more elaborated (with an image and a button), then you can choose for +which kind of template you want to use: + +* Basic (only text) +* Text, image and Call to Action button + +image::newsletter_templates.png[Newsletter new templates selection] + +== 2. Fill the form with the newsletter contents + +Depending in which template you've choosen, you have two different forms for +filling: + +=== Basic (only text) newsletter form + +image::newsletter_new_basic.png[Newsletter new template basic form] + +image::newsletter_new_basic_example.png[Newsletter new template basic form filled] + +[NOTE] +==== +You can use "%\{name}" anywhere in the body or subject and it will be +replaced by the recipient's name. +==== + + +.New Newsletter "basic (only text)" form +|=== +|Field |Type |Description + +|Subject +|Required +|Subject of the email. + +|Body +| +|Body of the email. +|=== + +=== Text, image and Call to Action button newsletter form + +image::newsletter_new_cta01.png[Newsletter new template text, image and CTA form 1] + +image::newsletter_new_cta02.png[Newsletter new template text, image and CTA form 2] + + +.New Newsletter "Image, text and Call To Action button" form +|=== +|Field |Type |Description + +|Subject +|Required +|Subject of the email. + +|Introduction +| +|Body of the email. + +|Call To Action button text +| +|What will the button say. For instance, it could be "Participate" + +|Call To Action button URL +| +|Where will the button link to. For instance, it could be the complete URL of a participatory process. + +|Body +| +|Body of the email. + +|Main image +| +|Guidance for image: Preferrably a landscape image that does not have any text. The service crops the image. Allowed file extensions: jpg jpeg gif png bmp ico +|=== + +== 3. Preview the newsletter + +After you've filled the contents of the newsletter, you can preview it. Until you've +sent it you can go back and edit it anytime you want. + +image::newsletter_preview_basic_example.png[Newsletter new template basic form preview] + +== 4. Select recipients to deliver + +If you want to only communicate about a given space, one useful way of doing this +is through the "Select recipients to deliver". Here you can choose between: + +* Sending the newsletter to all confirmed users +* Sending the newsletter to all confirmed users that have participated in any of +the selected participatory spaces in the list +* Sending the newsletter to all confirmed users that have followed any of +the selected participatory spaces in the list +* Sending the newsletter to all the participants that have selected an scope in +their "My interests" settings in their account. + +It's important to note that even if a participant has confirmed its account and +is following the space, the system will not send her a newsletter email if she +haven't activated the "I want to receive newsletters". + +image::newsletter_select_recipients.png[Newsletter select recipients] + +If you select the "Sent do participants" or "Send to followers" of a given space, +then you can choose which spaces are relevant: + +image::newsletter_select_recipients_spaces.png[Newsletter select recipients spaces] + +== 5. Deliver the newsletter + +Finally if you click in the "Deliver newsletter" button, the newsletter will be +sent to all the selected recipients. + +[NOTE] +==== +Once a newsletter was sent it can't be undone nor edited. If you have multiple +languages active, be careful with reviewing all the languages well before sending. +==== \ No newline at end of file diff --git a/docs/es/modules/admin/pages/pages.adoc b/docs/es/modules/admin/pages/pages.adoc new file mode 100644 index 0000000000..70e77220cd --- /dev/null +++ b/docs/es/modules/admin/pages/pages.adoc @@ -0,0 +1,125 @@ += Pages + +You can configure static Pages, which contains general information to the participants of the platform. + +As an example, some of these pages could refer to: + +* What's this platform? Who's the organization? +* How can I participate here? +* How can I create and verify my account? +* What are the terms of conditions and the legal information about this platform? + +These pages will be available to all the participants through the **Help** top menu section and also at the footer sections. You can define **Topics** to categorize all of these pages. + +As the platform enables the Participants to sign up (register) and save some of their personal data, it's important that there's an especial page, called **Terms and Conditions**. This is where you need to put your legal terms, for instance which entity has control of this data, how much time does this data will be saved, etc. This should be (ideally) written and (at least) reviewed by a lawyer. + +== Create a new page + +For creating a new page, you need to: + +. Sign in as admin +. Click in Pages in the sidebar menu +. Click in "Create page" + +image::pages_backend_form.png[Backend: new page form] + + +.New page form +|=== +|Field |Type |Description + +|Title +|Required +|Title of this page. For instance: "How to participate?" + +|URL Slug +|Required +|String that will be used on the URL. Use partial paths, not full URLs here. Accepts letters, numbers, dashes and slashes, and must start with a letter. For instance if the slug is "hello-world" and your domain is "https://example.org", your page will be at "https://example.org/hello-world" + +|Content +|Required +|All the text of the page. + +|Topic +|Optional +|In which Topic it'll be in. + +|Weight +|Optional +|Which order will it have in relation with the other pages. Having a lower number means a higher priority. For instance, if you have two pages, "Page a" with weight "10" and "Page b" with weight "0", then "Page b" will be first when ordering. + +|Show in the footer +|Optional +|Wether you want to show this page in the general footer (available in every page). +|=== + +image::pages_frontend_footer.png[Frontend: example of a page in the footer] + +== Create a new topic + +For creating a new topic, you need to: + +. Sign in as admin +. Click in Pages in the sidebar menu +. Click in "Create topic" + +image::pages_backend_topic_form.png[Backend: new topic form] + + +.New topic form +|=== +|Field |Type |Description + +|Title +|Required +|Title of this topic. For instance: "Help" + +|Description +|Optional +|What's this topic is about. + +|Weight +|Optional +|Which order will it have in relation with the other topics. Having a lower number means a higher priority. For instance, if you have two topics, "Topic a" with weight "10" and "Topic b" with weight "0", then "Topic b" will be first when ordering. + +|Show in the footer +|Optional +|Wether you want to show this topic in the general footer (available in every page). +|=== + +== Special "Terms and Conditions" page + +This is where you need to put your legal terms, for instance which entity has control of this data, how much time does this data will be saved, etc. This should be (ideally) written and (at least) reviewed by a lawyer. + +It's generated by default in a new installation. It can't be deleted, and it has a few special details related with its legal nature: + +. It's shown in the text area sign up form +. If there are meaningful changes, it has a field that can allow an admin when it's necessary that the participants accept the "Terms and Conditions" again, in the next sign in. + +image::pages_backend_tos_change.png[Backend: ToS change] + +image::pages_frontend_tos_change.png[Frontend: ToS change] + +If a participant rejects to accept the terms, then she has three options: + +. To review this again later. It signs her out automatically. +. To download their personal data +. To delete her account + +image::pages_frontend_tos_reject.png[Frontend: ToS reject] + +== Examples + +=== Pages + +image::pages_frontend_show.png[Frontend: show a page] + +image::pages_backend_edit.png[Backend: edit a page] + +image::pages_backend_list.png[Backend: list pages] + +=== Topics + +image::pages_frontend_list_topics.png[Frontend: list topics of pages] + +image::pages_backend_list_topics.png[Backend: list topics of pages] \ No newline at end of file diff --git a/docs/es/modules/admin/pages/participants.adoc b/docs/es/modules/admin/pages/participants.adoc new file mode 100644 index 0000000000..a7efde5673 --- /dev/null +++ b/docs/es/modules/admin/pages/participants.adoc @@ -0,0 +1,29 @@ += Participants + +Sometimes as an administrator you'll need to make certain tasks with participants, among them: + +* To give permissions to other administrators so they can manage platform's content +* To verify user groups (organizations or collectives) +* To verify participants +* To recognize that a participant has a special status in the platform, with Officializations +* To authenticate that a person has the right to vote, with Authorizations +* To contact a participant + +You can access this section on the main sidebar of the admin panel. + +image:participants_menu.png[Participants menu] + +Once you're in you can see all the different kind of participants and actions that you can do: + +image:participants_sidebar_menu.png[Participants sidebar menu] + +* xref:admin:participants/admins.adoc[Admins] +* xref:admin:participants/groups.adoc[Groups] +* xref:admin:participants/participants.adoc[Participants] +* xref:admin:participants/impersonations.adoc[Impersonations] +** xref:admin:participants/verifications_conflicts.adoc[Verifications conflicts] +* xref:admin:participants/reported_users.adoc[Reported users] +* xref:admin:participants/authorizations.adoc[Authorizations] +** xref:admin:participants/authorizations/identity_documents.adoc[Identity documents] +** xref:admin:participants/authorizations/code_postal_letter.adoc[Code by postal letter] +** xref:admin:participants/authorizations/census.adoc[Organization's census] \ No newline at end of file diff --git a/docs/es/modules/admin/pages/participants/admins.adoc b/docs/es/modules/admin/pages/participants/admins.adoc new file mode 100644 index 0000000000..f88bcff92b --- /dev/null +++ b/docs/es/modules/admin/pages/participants/admins.adoc @@ -0,0 +1,21 @@ += Admins + +In the administrator listing page you can see all the administrators of the platform: + +image:admins.png[Admins list] + +Here you can: + +* invite new administrators +* revoke administrators permissions +* see when was the last time an administrator logged in + +For inviting a new administrator, you need to go to the button "New user" and fill +the form with the admin username, email and which role will she have: + +* Admin: to give full access to the platform +* Participant manager: to give permission to only do xref:admin:participants/impersonations.adoc[Impersonations] + +image:admins_invite.png[Invite participant as administrator form] + +You can invite an already registered or a non registered participant. \ No newline at end of file diff --git a/docs/es/modules/admin/pages/participants/authorizations.adoc b/docs/es/modules/admin/pages/participants/authorizations.adoc new file mode 100644 index 0000000000..3937fffc92 --- /dev/null +++ b/docs/es/modules/admin/pages/participants/authorizations.adoc @@ -0,0 +1,40 @@ += Authorizations + +This section allows you to manage participants' authorizations. It depends on which Authorizations you have configured and +enabled by your developers. To understand more what are authorizations and how to configure them, please refer to the +xref:customize:authorizations.adoc[Authorizations section in the Customize Guide]. + +With authorizations an administrator can define different permissions so participants can make some actions in a component. +For instance you can configure that only participants who have verified herselves by their identity documents can vote on +proposals in a participatory process. + +A participant can see which authorizations does she have available in her account settings. + +image:authorizations_account.png[Authorizations in participants account] + +== Authorizations revocation + +A default Decidim installation will not have verified participants. + +image:authorizations_admin_default.png[Authorizations in a default installation] + +In the moment that there are some participants verified, an administrator can revoke all the authorizations, as the attributes +that give permissions to those participants could be changed in time and the platform didn't receive these changes in the +participants statuses. For instance, an identity document of a participant could be expired, or if a participant have been +authorized by the "code by postal letter", that participant could move in the meantime. + +image:authorizations_admin_revocation.png[Authorizations revocation] + +It's possible to revoke all the authorizations with "Revoke all", or to only revoke authorizations before a given date. +Another possiblity is to revoke only the xref:admin:participants/impersonations.adoc[impersonated participants]. + +== Verification methods + +Some of the available authorizations by default are: + +* xref:admin:participants/authorizations/identity_documents.adoc[Identity documents] +* xref:admin:participants/authorizations/code_postal_letter.adoc[Code by postal letter] +* xref:admin:participants/authorizations/census.adoc[Organization's census] + +If any of these authorizations are not useful for your needs, talk with your implementer to see other alternatives. Learn +more about xref:customize:authorizations.adoc[Authorizations in the Customize Guide section]. \ No newline at end of file diff --git a/docs/es/modules/admin/pages/participants/authorizations/census.adoc b/docs/es/modules/admin/pages/participants/authorizations/census.adoc new file mode 100644 index 0000000000..b7e2cfbb9d --- /dev/null +++ b/docs/es/modules/admin/pages/participants/authorizations/census.adoc @@ -0,0 +1,34 @@ += Organization's census authorization + +The process is as follows: + +. Admins upload a CSV with the emails of the accepted participants +. Participants go to its accounts and requests to be verified +. Only participants with an email in that CSV file can get verified + +NOTE: is this too simple and you need more features related to CSV census imports? +Check all the CSV or file based authorizations in our https://decidim.org/modules/[Modules page]. + +== 1. An administrator uploads the CSV of the participants + +In the admin panel, the administrator can review the request by going to the "Organization's census" in the "Participants" section. + +image:authorizations_organization_census.png[Organization's census in admin panel] + +After the CSV is imported then the administrator can see how many participants where imported. She can also delete this +imported census. + +image:authorizations_organization_census_imported.png[Imported CSV] + +== 2. A participant requests to be verified + +By going to the authorization section in its profile, or by clicking on the action button if this permission is requested, +a participant can request to be verified. + +image:authorizations_organization_census_account.png[Organization's census in participant's accounts] + +== 3. The participant is verified (or not) + +After is verified, as with other verifications, she can see it in her account settings. + +image:authorizations_organization_census_verified.png[Verified by organization's census] \ No newline at end of file diff --git a/docs/es/modules/admin/pages/participants/authorizations/code_postal_letter.adoc b/docs/es/modules/admin/pages/participants/authorizations/code_postal_letter.adoc new file mode 100644 index 0000000000..953c5c0eb0 --- /dev/null +++ b/docs/es/modules/admin/pages/participants/authorizations/code_postal_letter.adoc @@ -0,0 +1,57 @@ += Code by postal letter authorization + +This authorization allows a participant to request for a verification code to be sent to its address, to confirm that she +lives or works in this place. She'll need to then fill the code in the platform. + +The process is: + +. Participants request a verification code to be sent to their address. +. An administrator sends the letter to their address with the verification code. +. An administrator marks the letter as sent. +. Once you mark the letter as sent, the participant will be able to introduce the code. +. If this code matchs, then she gets verified. + +== 1. A participant request the verification code + +By going to the authorization section in its profile, or by clicking on the action button if this permission is requested, +a participant can see the form for filling in her full address to request the verification code. + +image:authorizations_code_postal_letter_request.png[Code by postal letter request by participant] + +If she tries to edit it, she'll see this message: + +image:authorizations_code_postal_letter_edit.png[Edit the postal letter request] + +This is because the letter could be in the process of being sent. If this needs to be corrected, then the participant needs +to contact to the organization. + +== 2. An administrator review this request and sent the letter + +In the admin panel, the administrator can review the request by going to the "Code by postal letter" in the "Participants" section. + +image:authorizations_code_postal_letter_ongoing.png[Code by postal letter ongoing panel in admin] + +Here she can see the verification code and can send it to the participant by mail. After the code is sent she can mark it +as sent with the icon image:action_mark_as_sent.png[Mark as sent]. It'll also show when the letter was sent. + +== 3. A participant fills in the verification code + +After the participant has received the code, she can go to it's account settings and click in the "Code by postal letter" +verfication method. + +image:authorizations_code_postal_letter_verify.png[Code by postal letter ongoing in the participant account] + +Then she'll see the form for confirming the code. + +image:authorizations_code_postal_letter_confirm.png[Code by postal letter confirmation form] + +== 4. The verification code matches or not + +If the verification code matches, then the participant will see the message "Congratulations. You've been successfully verified". + +On the other hand, if the verification code doesn't match, then the participant will see the message "Your verification +code doesn't match ours. Please double-check the letter we sent to you." + +After is verified, as with other verifications, she can see it in her account settings. + +image:authorizations_code_postal_letter_verified.png[Verified by code by postal letter] \ No newline at end of file diff --git a/docs/es/modules/admin/pages/participants/authorizations/identity_documents.adoc b/docs/es/modules/admin/pages/participants/authorizations/identity_documents.adoc new file mode 100644 index 0000000000..2502903d6a --- /dev/null +++ b/docs/es/modules/admin/pages/participants/authorizations/identity_documents.adoc @@ -0,0 +1,141 @@ += Identity documents authorization + +This authorization allows a participant to upload its identity documents. These documents depend on the organization, +they could be a driver's license, a passport, a national identity card, a club membership card, etc. + +These documents will be reviewed by an administrator to accept or reject them. It's possible to do this process in two ways: Online or Offline. + +* Online: the participant will be asked to upload the documents, and the administrator will review these documents. +* Offline: the participant will be asked to fill in some data, and then she'll need to go to a presential place to show her documents face to face. + +== Configuration + +By clicking on the btn:[Config] button in this section, an administrator can configure the settings for this authorization. + +image:authorizations_id_document_configuration.png[ID document authorization configuration] + +NOTE: As you can see, this authorization is based in the original implementers reality, in this case in the Spanish identities document types. +For instance, we're giving as options for document types "DNI, NIE or Passport" or we're asking for "Document number (with letter)" +You can change this by xref:customize:code.adoc[code customizing or overriding] these things. We also accept xref:contribute:governance.adoc[Pull Request contributions] +so it's possible to configure this. + + +.ID Documents authorization configuration +|=== +|Field |Type |Description + +|Available methods +|Required +|At least one method must be selected. Options: Online and/or Offline. + +|Instructions for offline verification +|Required (if offline is selected) +|Directions that participants need to follow to verify their documents when offline verification is selected. For instance, +do they need to go to a specific place to show their documents? Is this place open some days of the week? Is it open +for certain hours? +|=== + +== Online + +The process is: + +. Participants fill in their document type and number and upload a copy of their document. +. An administrator fills in the information present in the uploaded image. +. The information should match whatever the user filled in. +. If the administrator can't clearly see the information or she can't get it verified, she can reject the request and +the user will be able to fix it. + +=== 1. A participant fill in the document information and upload a copy of her document + +By going to the authorization section in its profile, or by clicking on the action button if this permission is requested, +a participant can see the form for uploading a copy of her document. She also needs to fill in her document type and number. + +image:authorizations_id_document_online.png[ID document authorization online form] + +=== 2. An administrator review this document + +After this document is uploaded, an administrator can review it by going to the Identity documents section in the admin +panel. + +image:authorizations_id_document_online_pending.png[ID document authorization pending online verification] + +After clicking on the document, the administrator needs to see the image and fill in the document number. This needs to match +with the one provided by the participant. + +image:authorizations_id_document_online_confirm.png[ID document authorization online confirmation form] + +=== 3. The request is accepted or rejected + +There are two actions an admin can do: + +* Accept: the participant will be fully authorized. +* Reject: the participant will be prompted to amend her documents + +If the request is rejected then the participant can provide other pictures or document. + +image:authorizations_id_document_online_rejected.png[ID document authorization rejected online verification] + +== Offline + +The process is: + +. Participants fill in their document type and number. +. Participants follow the instructions provided to them. For instance, if they need to go to a specific place in a +specific time to show their documents. +. An administrator go to the "Offline verification" panel and fills in the information present in the physical documents. +. The information should match whatever the user filled in. +. If the administrator can't clearly see the information or she can't get it verified, she can reject the request and +the user will be able to fix it. + +For this authorization to work, an administrator need to first configure it in the admin panel with the instructions explaining +what the participant need to do to finish the verification process. + +image:authorizations_id_document_configuration_offline.png[ID document authorization configuration: offline instructions] + +=== 1. A participant fill in the document information and follow the instructions + +By going to the authorization section in its profile, or by clicking on the action button if this permission is requested, +a participant can see the form for filling in her document type and number. + +image:authorizations_id_document_offline_request.png[ID document authorization offline form] + +=== 2. An administrator review this request + +In the admin panel, the administrator can review the request by clicking in the "Offline verification" button. + +image:authorizations_id_document_offline_button.png[ID document authorization offline button in admin] + +Then she'll need to fill some data provided by the participant and by reviewing the document physically provided by her. + +image:authorizations_id_document_offline_confirm.png[ID document authorization offline confirmation form in admin] + + +.ID Documents authorization offline flow +|=== +|Field |Type |Description + +|Participant email +|Required +|Email of the registered participant + +|Type of the document +|Required +|Can be: DNI, NIE or Passport + +|Document number (with letter) +|Required +|Document number of the participant. For instance, "12345678Z" +|=== + +=== 3. The request is accepted or rejected + +In the cases where the verifications don't match (meaning that the email or the document number provided by the +participant and the ones filled by the administrators aren't the same), then the participant need to ammend it with her +user account. + +== Both + +It's also possible to enable both of these verifications methods. In this case, the participant will be asked to choose +which kind of verification she wants to do. + +image:authorizations_id_document_account_choose.png[Choose ID document verification kind] \ No newline at end of file diff --git a/docs/es/modules/admin/pages/participants/groups.adoc b/docs/es/modules/admin/pages/participants/groups.adoc new file mode 100644 index 0000000000..3201f6fac9 --- /dev/null +++ b/docs/es/modules/admin/pages/participants/groups.adoc @@ -0,0 +1,116 @@ += User Groups + +An user group is a group of participants. Depending in the installation and the context of the organization it could be disabled. This is enabled or disabled in the administration dashboard, in Settings -> Configuration -> Edit organization -> Enable groups. + +== Creation + +This action is done by **a participant**. She needs to go to their profile and in the sidebar there's a button that says "Create group": + +image:user_sidebar.png[User sidebar] + +When clicked it'll open the "New group form": + +image:user_group_new_form.png[New user group form] + + +.New group form +|=== +|Field |Type |Description + +|Name +|Required +|Name of your organization, association, collective, group, etc. + +|Nickname +|Required +|Nickname of your organization, association, collective, group, etc. Do not use spaces nor accents. 20 characters maximum. + +|Email +|Required +|Email of your organization, association, collective, group, etc. + +|Avatar +|Optional +|Guidance for image: Preferably a landscape image that does not have any text. The service crops the image. Maximum file size: 5MB. Allowed file extensions: jpg jpeg gif png bmp ico + +|About +|Optional +|Description of what's this group. + +|Document number +|Optional +|Used for verifications. Do not use dashes nor spaces. + +|Phone +|Optional +|Used for verifications. Do not use dashes nor spaces. +|=== + +== Membership + +After a group has been created, it's possible to invite participants to become members of the group. After a participant has accepted to be part of this group then she can become an admin. + +The actions that can be done by a participant in the user group are: + +* Edit group profile +* Manage members +* Manage admins +* Invite participant +* Leave group + +image:user_group_invite_participant.png[User groups: invite a participant] + +== Group verifications + +image:admin_user_group_verification.png[Admin panel: user group verifications] + +This action is done by **an administrator**. A group can be: +* Pending +* Verified +* Rejected + +This can be done with the buttons at the sidebar: + +image:admin_user_group_verification_actions.png[Admin panel: user group verifications actions] + +When a user group is pending it can be verified or rejected. Once is verified it can be rejected and once is rejected it can be verified. + +If you want to verify multiple user groups at the same time you can do so with the option "Verify via CSV": + +image:admin_user_group_verification_csv.png[Admin panel: user group verifications CSV] + +.... +Upload your CSV file. It must have the official emails of the groups in your organization in the first column of the file, without headers. Only groups that have confirmed their email and that have an email appearing in the CSV file will be validated. +.... + +After a group is verified this is publicly visible in their nickname in the platform and there's a message in its profile: "This group is publicly verified, its name has been verified to correspond with its real name". + +image:user_group_verified.png[User group: verified icon] + +== Actions + +As a verified user group, there's some options that your participant account can do in behalf of the group, such as: + +=== Create a Debate, Proposal or Meeting + +There's a dropdown in the form during the creation process: + +image:user_group_create_debate.png[User group: create a debate] + +=== Make a comment + +There's a dropdown in the form when making a comment: + +image:user_group_make_comment.png[User group: make a comment] + +=== Endorse + +When making an Endorse there's a modal window asking who do you want to make the endorse with: + +image:user_group_endorse.png[User group: endorse] + +=== Conversations + +You can also have Conversations as a group. This is in the group profile page: + +image:user_group_conversation.png[User group: conversations] \ No newline at end of file diff --git a/docs/es/modules/admin/pages/participants/impersonations.adoc b/docs/es/modules/admin/pages/participants/impersonations.adoc new file mode 100644 index 0000000000..9cd1788be5 --- /dev/null +++ b/docs/es/modules/admin/pages/participants/impersonations.adoc @@ -0,0 +1,42 @@ += Participants Impersonations + +For participants that don't have the knowledge or don't have an email for registering +an account, there's the Impersonation feature. + +This allows an 'Administrator' or 'Participant manager' to search through a +Verification system for an already existing participant and also to create a +participant without email. + +NOTE: At the code and the User Interface we say both *Impersonation* and *Managed +Participants*. It's the same thing. + +== Panel + +image::participants_impersonations.png[Admin's Impersonations panel] + +This is the panel where you can find all the participants: + +* by filtering by managed or not managed participants +* by searching by name + +After you've clicked in `Manage new participant` you'll go to the form to enter +the personal data to check against the verification: + +image::participants_impersonations_form.png[Admin's Impersonations form] + +NOTE: If you don't see the `Manage new participant` button, is because this feature +only works when you have a Verification of kind `direct` (also known +as `form authorizations`). See in your xref:admin:system.adoc[system panel] which +`Available authorizations` are enabled. You can learn more regarding how to program +your form authorization in https://github.com/decidim/decidim/blob/develop/decidim-verifications/README.md[decidim-verification README]. + +After this data is confirmed then there'll be a session for the participant for +30 minutes: + +image::participants_impersonations_user.png[Impersonated user session] + +Finally, it's also possible to Promote a participant, meaning that after a +participant has been managed, an administrator can add the email and send her +an Invitation: + +image::participants_impersonations_promotion.png[Admin's promotion Impersonations] \ No newline at end of file diff --git a/docs/es/modules/admin/pages/participants/participants.adoc b/docs/es/modules/admin/pages/participants/participants.adoc new file mode 100644 index 0000000000..e76ab358b4 --- /dev/null +++ b/docs/es/modules/admin/pages/participants/participants.adoc @@ -0,0 +1,90 @@ += Participants + +In this page an administrator can: + +* Block a participant, for instance because she's spamming or acting against the Terms of Service +* Contact a participant with Decidim private messages (Conversations) +* Officialize a participant +* See its email + +image:participants_participants.png[Participants list] + +== Actions + +image:participants_participants_actions.png[Participants actions] + +|=== +|Icon |Name |Definition + +|image:action_block.png[Block user] +|xref:_block_user[Block user] +|To block or moderate a participant. + +|image:action_show_email.png[Show email] +|xref:_show_email_address[Show email address] +|To show an email of a participant. + +|image:action_contact.png[Contact] +|xref:_contact[Contact] +|To contact a participant with Decidim private messages (Conversations) + +|image:action_officialize.png[Officialize] +|xref:_officialize[Officialize] +|To recognize that a participant has a special status in the platform + +|image:action_reofficialize.png[Reoffficialize] +|Reoffficialize +|To change an officialization. See xref:_officialize[Officialize] + +|image:action_unofficialize.png[Unofficialize] +|Unofficialize +|To revoke an officialization. See xref:_officialize[Officialize] +|=== + +=== Block user + +After clicking in this option you'll need to provide a justification why you're +blocking this participant: + +image:participants_block_user_justification.png[Justificate the blocked user action] + +Once a blocked participant tries to log-in she'll see an error message: + +image:participants_block_user_alert.png[Message shown to blocked user] + +After a participant was blocked its name is changed to "Blocked user". + +See more at xref:admin:participants/reported_users.adoc[Reported users] + +=== Show email address + +After clicking this option, the admin will see a modal. She'll have to click in +button "Show email address". + +image:participants_show_email.png[Modal in show email] +image:participants_showed_email.png[Modal after the email is shown] + +This action will be logged in the Admin actvity log. + +image:participants_showed_email_admin_log.png[Admin activity log for show email] + +=== Contact + +By clicking on this option, it will open the private messaging (Conversation) for +this participant. + +image:participants_conversation.png[Conversation with a participant]. + +=== Officialize + +This option is useful to recognize that a participant has a special status in the +platform. For instance, if someone is the City Mayor, a City Councillor or the +President of an Association in an organization context. + +After Officializing a participant you can: + +- Change the Officialization text with "Reofficialize" +- Revoke the Officialization status with "Unofficialize" + +image:participants_officialize.png[Officialize a participant] +image:participants_participants_actions_officialize.png[Officialize a participant] \ No newline at end of file diff --git a/docs/es/modules/admin/pages/participants/reported_users.adoc b/docs/es/modules/admin/pages/participants/reported_users.adoc new file mode 100644 index 0000000000..6616b10c2b --- /dev/null +++ b/docs/es/modules/admin/pages/participants/reported_users.adoc @@ -0,0 +1,33 @@ += Reported users + +There are cases where participants could go against the Terms of Service of the +platform, so it's useful to have the option for reporting and blocking users. You +can read more about how moderation and reporting contents work in xref:global_moderations.adoc[Global moderations]. + +A participant can be blocked from the xref:participants/participants.adoc[participants +section in the admin panel] or through this "Reported users" section. + +Anyone can propose a moderation in Decidim, through the "Flag" icon in the participant +profile. After a participant has clicked in this action she needs to provide a +reason why she's making this report: + +* Contains clickbait, advertising, scams or script bots. +* Contains racism, sexism, slurs, personal attacks, death threats, suicide requests +or any form of hate speech. +* Contains illegal activity, suicide threats, personal information, or something +else you think doesn't belong on Demo. +* Other (and add it) + +image:reported_participant_modal.png[Give reason for reporting a participant modal] +image:reported_participant_flag.png[Flag in sidebar profile] + +After clicking in this option you'll need to provide a justification why you're +blocking this participant: + +image:participants_block_user_justification.png[Justificate the blocked user action] + +Once a blocked participant tries to log-in she'll see an error message: + +image:participants_block_user_alert.png[Message shown to blocked user] + +After a participant was blocked its name is changed to "Blocked user". \ No newline at end of file diff --git a/docs/es/modules/admin/pages/participants/verifications_conflicts.adoc b/docs/es/modules/admin/pages/participants/verifications_conflicts.adoc new file mode 100644 index 0000000000..1e14b977f6 --- /dev/null +++ b/docs/es/modules/admin/pages/participants/verifications_conflicts.adoc @@ -0,0 +1,38 @@ += Verification's conflicts + +There are cases depending on which kind of verifications you've enabled that there could be verification's conflicts. + +For instance: + +. A participant get xref:admin:participants/impersonations.adoc[impersonated], and she doesn't provide an email +. Then she creates an account and tries to verify herself with the Census verification + +For security, we try to be extra cautious in these cases, and we want that an administrator reviews these verifications. +As you can see, this depends a lot on which kind of verifications you've enabled in your organization, so it's easy to say +that most of the time an organization will not see any conflicts in this panel. + +image:verifications_conflicts.png[Verification's conflicts panel] + +== Transfer user + +An administrator can review these conflicts by clicking in the Transfer user image:action_transfer_user.png[Transfer user] icon. + +Then she'll see the Transfer user form, where she can provide a reason for the transfer. + +image:verifications_conflicts_transfer_user.png[] + + +.Transfer user form +|=== +|Field |Type |Description + +|Reason +|Required +|Why you want to transfer the user + +|Email +|Required +|The email of the user to transfer +|=== + +After the user is transferred, both accounts (the original and the new one) will be merged. \ No newline at end of file diff --git a/docs/es/modules/admin/pages/scopes.adoc b/docs/es/modules/admin/pages/scopes.adoc new file mode 100644 index 0000000000..e189ca92cb --- /dev/null +++ b/docs/es/modules/admin/pages/scopes.adoc @@ -0,0 +1,105 @@ += Scopes + +Scopes are the set of territories or subjects that an Organization has. A scope may have child scopes. + +For instance, in the case of the city of Barcelona the scopes are its districts, and the children of a district are its neighborhoods. They can also have types, so it can be configured, for example, by thematic and also territorial scopes. + +Most of the components and spaces in Decidim allow you to configure Scopes in one way or another. There are mainly three ways of using Scopes: + +To configure Scope on the Decidim platform, go to menu:Settings[Scopes] in the admin sidebar menu. A list will appear with the existing scopes if there are any: + +image:scopes_list.png[Scopes list] + +If you need so, you need to first configure the Scope type. + +== Form + +image:scopes_types_new_form.png[New scope type form] + + +.Admin New Scope Type form +|=== +|Field |Type |Description + +|Singular +|Required +|Name of the scope type in singular. + +|Plural +|Required +|Name of the scope type in plural. +|=== + +image:scopes_new_form.png[New scope form] + + +.Admin New Scope Form +|=== +|Field |Type |Description + +|Name +|Required +|Name of the scope. + +|Code +|Required +|(Internal) name of the scope. + +|Scope type +|Required +|Which type of scope it's. +|=== + +== Actions + +You have 3 possible actions in this list after a Scope is created: + +|=== +|Icon |Name |Definition + +|image:action_browse.png[Browse icon] +|Browse +|See and configure the children scopes for this Scope. + +|image:action_edit.png[Edit icon] +|Edit +|Edit form for a Scope. It's the same form as "Create a new scope". + +|image:action_delete.png[Delete icon] +|Delete +|To delete this scope. +|=== + +== Features + +The main features related with scopes are: + +. Filtering +. User interests and Newsletters + +=== Filtering + +For filtering. Most of the spaces and components allows an administrator or a participant to associate them to a scope. This allows to filter by scopes when exploring them. + +image:scopes_filter_initiatives.png[Initiatives scopes filtering] + +image:scopes_filter_processes.png[Processes scopes filtering] + +Some examples: + +* With Accountability module, so it's possible to filter Results +* Assemblies and Processes can have Scopes. It's used for filtering multiple assemblies in the main listing page (/assemblies or /processes). These can be hidden by unchecking the "Enable participatory space filters" in the xref:admin:configuration.adoc[admin's configuration page]. +* Filtering in the sidebar is possible in Budgets Projects, Initiatives and Proposals. In some of these components you can control if these filters are shown with the "Scopes enabled" checkbox in the component settings. This will also enable or disable the scope selector in the resource creation form. + +You can also configure a participatory space so the filtering will only concern one scope and its children scopes. For example, let's imagine your organization have 3 different scopes for 3 cities, each of them having children scopes for the cities neighbourhoods. +On a participatory space which concerns only one of the cities, you will be able to select only this scope and its children so that users do not see the scopes of other cities in the filter options. + +=== User interests and Newsletters + +A Participant can choose which Scopes she wants to follow in its account. + +image:account_my_interests.png[Account: my interests] + +This is used by the xref:admin:newsletters.adoc[Newsletters], in the "Select recipients to deliver" step, "Filter for users having activated any selected scope in their account's My Interests settings." section. + +image:newsletter_select_recipients.png[Newsletter: select recipients] \ No newline at end of file diff --git a/docs/es/modules/admin/pages/spaces.adoc b/docs/es/modules/admin/pages/spaces.adoc new file mode 100644 index 0000000000..6e3fcfab76 --- /dev/null +++ b/docs/es/modules/admin/pages/spaces.adoc @@ -0,0 +1,12 @@ += Spaces + +The participatory spaces are the channels that citizens can participate through when public decisions are being taken. By default +the platform is provided with participatory processes, initiatives, consultations, conferences, votings and assemblies, but +any organization can develop its own mechanisms through xref:develop:modules.adoc[Modules]. + +They are accessible through the main sidebar in the administration panel, and also through the main navigation menu in the +public interface. + +image:spaces_admin.png[Spaces in admin sidebar] + +image:spaces_visitor.png[Spaces visible in the public interface] \ No newline at end of file diff --git a/docs/es/modules/admin/pages/spaces/assemblies.adoc b/docs/es/modules/admin/pages/spaces/assemblies.adoc new file mode 100644 index 0000000000..82c7e1d8a0 --- /dev/null +++ b/docs/es/modules/admin/pages/spaces/assemblies.adoc @@ -0,0 +1,308 @@ += Assemblies + +An assembly is a group of members of an organization who meet periodically to make decisions about a specific area or +scope of the organization. + +Assemblies hold meetings, some are private and some are open. If they are open, it is possible to participate in them +(for example: attending if the capacity allows it, adding points to the agenda, or commenting on the proposals and decisions taken by this organ). + +Examples: A general assembly (which meets once a year to define the organisation's main lines of action as well as its +executive bodies by vote), an equality advisory council (which meets every two months to make proposals on how to improve +gender relations in the organisation), an evaluation commission (which meets every month to monitor a process) or a guarantee +body (which collects incidents, abuses or proposals to improve decision-making procedures) are all examples of assemblies. + +The main difference between xref:admin:spaces/processes.adoc[participatory processes] and assemblies is that assemblies don't +have phases, meaning that they don't have timelines. + +You can see a real world usage of assemblies in https://www.decidim.barcelona/assemblies[Decidim Barcelona], where you +can see the different Participation Organs, that are the regular spaces where the City Council meets with citizens and organizations +to get feedback. + +In this section, we'll explain how we can configure an Assembly in Decidim. + +== List + +To configure assemblies on the Decidim platform, click on btn:[Assemblies] in the admin sidebar menu. A list +will appear with the existing assemblies if there are any: + +image:assemblies_list.png[Assemblies list] + +You can filter by the ones that are: + +* Published / Unpublished +* Public / Private + +image:assemblies_list_filter.png[Assemblies list filtered] + +You can also search by title and control how many elements are in the list. + +You have 4 possible actions in this list after an Assembly is created: + +. Export: send by email the configuration for a given assembly. Can be imported in other Decidim installation. +. Duplicate: to duplicate this assembly. +. Configure: to edit the metadata and configuration for a assembly. +. Assemblies: to manage all the children assemblies for a assembly. +. Preview: how it will look once published. + +== New assembly form + +image:assemblies_new_form.png[New assembly form] + + +.New assembly form: General information +|=== +|Field |Type |Description + +|Title +|Required +|Title of the assembly. For instance, "General Committee". + +|Subtitle +|Required +|Subtitle. For instance, "Let's decide our priorities together" + +|Order position +|Required +|Which order will it have in relation with the other assemblies. Having a lower number means a higher priority. For instance, +if you have two assemblies, "Assembly a" with weight "10" and "Assembly b" with weight "0", then "Assembly b" will be first when ordering. + +|URL slug +|Required +|URL slugs are used to generate the URLs that point to this assembly. Only accepts letters, numbers and dashes, and must +start with a letter. Example: if your domain is 'example.org' and your slug 'general-committee' then your URL will +be https://example.org/assemblies/general-committee + +|Hashtag +|Optional +|Hashtag for Twitter + +|Short description +|Required +|A short explanation of what's your participatory process about. + +|Description +|Required +|A long explanation of what's your assembly about. + +|Purpose of action +|Optional +|Internal field that doesn't get shown publicly. To be removed in a future version. + +|Composition +|Optional +|Internal field that doesn't get shown publicly. To be removed in a future version. + +|Internal organisation +|Optional +|Internal field that doesn't get shown publicly. To be removed in a future version. + +|Announcement +|Optional +|The text you enter here will be shown to the user right below the assembly information. +|=== + + +.New assembly form: Duration +|=== +|Field |Type |Description + +|Date created +|Optional +|Information that's displayed in the assembly metadata sidebar. Expected format: dd/mm/yyyy + +|Included at +|Optional +|Information that's displayed in the assembly metadata sidebar. The date when this assembly was added to Decidim. It does +not necessarily have to be the same as the creation date. Expected format: dd/mm/yyyy + +|Duration +|Optional +|Information that's displayed in the assembly metadata sidebar. If the duration of this assembly is limited, select the +end date. Otherwise, it will appear as indefinite. Expected format: dd/mm/yyyy + +|Closing date +|Optional +|Information that's displayed in the assembly metadata sidebar. When this assembly closed. Expected format: dd/mm/yyyy + +|Closing date reason +|Optional +|Information that's displayed in the assembly metadata sidebar. Why this assembly closed. +|=== + + +.New assembly form: Images +|=== +|Field |Type |Description + +|Home image +|Optional +|Image that will be used in presentation cards of this assembly. Guidance for file: Has to be an image or a document. +For images, use preferably landscape images that does not have any text, the service crops the image. Maximum file size: 10MB +Allowed file extensions: jpeg jpg png + +|Banner image +|Optional +|Image that will be used inside of the assembly. Guidance for file: Has to be an image or a document. +For images, use preferably landscape images that does not have any text, the service crops the image. Maximum file size: 10MB +Allowed file extensions: jpeg jpg png +|=== + + +.New assembly form: Filters +|=== +|Field |Type |Description + +|Scopes enabled +|Optional +|Check if you want to have Scopes filtering in this assembly. + +|Scope +|Optional +|Which xref:admin:scopes.adoc[Scope] does this assembly belongs to. + +|Area +|Optional +|Which xref:admin:areas.adoc[Area] does this assembly belongs to. +|=== + + +.New assembly form: Metadata +|=== +|Field |Type |Description + +|What is decided +|Optional +|Information that's displayed in the assembly metadata sidebar. + +|How is it decided +|Optional +|Information that's displayed in the assembly metadata sidebar. + +|Scope metadata +|Optional +|Information that's displayed in the assembly metadata sidebar. + +|Promoter group +|Optional +|Information that's displayed in the assembly metadata sidebar. + +|Organization area +|Optional +|Information that's displayed in the assembly metadata sidebar. + +|Who participates +|Optional +|Information that's displayed in the assembly metadata sidebar. +|=== + + +.New assembly form: Visibility +|=== +|Field |Type |Description + +|Parent assembly +|Optional +|What is the assembly that this assembly belongs to. For instance in Metadecidim, the https://meta.decidim.org/assemblies/coordination-committee[Coordination Committee] +has the parent assembly of the https://meta.decidim.org/assemblies/general-assembly-association[General%20Assembly%20of%20the%20Decidim%20Association]. + +|Highlighted +|Optional +|Check if you want the assembly to have more visibility in the Assemblies public list. It'll also be visible in the +Assembly Content Block in the xref:admin:homepage.adoc[Homepage] configuration. + +|Private space +|Optional +|Check if this assembly should only be accessible by xref:admin:spaces/assemblies/private_participants.adoc[Private Participants] + +|Is transparent +|Optional +|Check if this assembly is private but should be visible to all the rest of participants. This means that other participants +or visitors will see it but they won't be able to interact with it. +|=== + + +.New assembly form: Other +|=== +|Field |Type |Description + +|Created by +|Optional +|Choose one of "City Council", "Public" or "Other". If it's Other, you can specify the name of the organization that created +this assembly. + +|Assembly type +|Optional +|Which xref:_assemblies_types[assembly type] is this assembly. + +|Related processes +|Optional +|Select other participatory processes that are related to this assembly. + +|Social +|Optional +|Which social networks profile does this assembly has. Can be Twitter, Facebook, Instagram, YouTube and/or GitHub. It's +displayed in the assembly metadata sidebar. + +|Show statistics +|Optional +|Check if you want to show the Statistics section. +|=== + +After you've initially created your assembly you have a submenu where you need to keep configuring more information +about your assembly. + +image:assembly_submenu.png[Assembly submenu in admin] + +Here you can keep configuring your process: + +. Info: the same form that we explained in this page. +. xref:admin:spaces/assemblies/components.adoc[Components] +. xref:admin:spaces/assemblies/categories.adoc[Categories] +. xref:admin:spaces/assemblies/attachments.adoc[Attachments] +. xref:admin:spaces/assemblies/members.adoc[Members] +. xref:admin:spaces/assemblies/admins.adoc[Assembly admins] +. xref:admin:spaces/assemblies/private_participants.adoc[Private participants] +. xref:admin:spaces/assemblies/moderations.adoc[Moderations] + +== Assemblies types + +For clasyfing the assemblies in different kinds, you can define Assembly types. These types can be filtered in the public +assemblies page. + +image:assemblies_type_filters.png[Filter by assembly type] + +image:assemblies_new_type_form.png[New assembly type form] + + +.New assembly type form +|=== +|Field |Type |Description + +|Title +|Required +|Title of the this assembly type. For instance, "Consultative". +|=== + +== Settings + +At the moment there's only a setting for configuring the general behaviour of assemblies. + +image:assemblies_settings.png[Assemblies settings] + + +.Settings for assemblies form +|=== +|Field |Type |Description + +|Enable organization chart +|Checkbox +|Whether you want to show the organization chart in the assemblies list. +|=== + +The organization chart is shown in the bottotm of the assemblies page. + +image:assemblies_organization_chart.png[Assemblies organization chart] + +It allows a navigation in the assemblies tree, with the possibility to see the sub-assemblies that belongs to a parent assembly. + +image:assemblies_organization_chart_filtered.png[Assemblies organization chart filtered] \ No newline at end of file diff --git a/docs/es/modules/admin/pages/spaces/assemblies/admins.adoc b/docs/es/modules/admin/pages/spaces/assemblies/admins.adoc new file mode 100644 index 0000000000..59313271ef --- /dev/null +++ b/docs/es/modules/admin/pages/spaces/assemblies/admins.adoc @@ -0,0 +1 @@ +include::partial$page_admins.adoc[] \ No newline at end of file diff --git a/docs/es/modules/admin/pages/spaces/assemblies/attachments.adoc b/docs/es/modules/admin/pages/spaces/assemblies/attachments.adoc new file mode 100644 index 0000000000..493f7dc8c8 --- /dev/null +++ b/docs/es/modules/admin/pages/spaces/assemblies/attachments.adoc @@ -0,0 +1 @@ +include::partial$page_attachments.adoc[] \ No newline at end of file diff --git a/docs/es/modules/admin/pages/spaces/assemblies/categories.adoc b/docs/es/modules/admin/pages/spaces/assemblies/categories.adoc new file mode 100644 index 0000000000..3ee4fc09cc --- /dev/null +++ b/docs/es/modules/admin/pages/spaces/assemblies/categories.adoc @@ -0,0 +1 @@ +include::partial$page_categories.adoc[] \ No newline at end of file diff --git a/docs/es/modules/admin/pages/spaces/assemblies/components.adoc b/docs/es/modules/admin/pages/spaces/assemblies/components.adoc new file mode 100644 index 0000000000..7a204dda0b --- /dev/null +++ b/docs/es/modules/admin/pages/spaces/assemblies/components.adoc @@ -0,0 +1 @@ +include::partial$page_components.adoc[] \ No newline at end of file diff --git a/docs/es/modules/admin/pages/spaces/assemblies/members.adoc b/docs/es/modules/admin/pages/spaces/assemblies/members.adoc new file mode 100644 index 0000000000..64a7159a8f --- /dev/null +++ b/docs/es/modules/admin/pages/spaces/assemblies/members.adoc @@ -0,0 +1,72 @@ += Assembly members + +Assembly members allow showing all the people or groups that belong to a given assembly. It's useful for being transparent. + +You can see an example in https://meta.decidim.org/assemblies/coordination-committee/members[Decidim Coordination Commitee Assembly in Metadecidim]. + +image:assembly_members.png[Assembly members of the Coordination Committee] + +== New assembly member form + +image:assembly_members_list.png[Assembly members admin list] + +For creating a new phase of a participatory process: + +. Sign in as administrator +. Go to the assemblies section in the sidebar +. Click on the assembly Edit action +. Click on the Members link in the sidebar +. Click on the "New member" button +. Fill the form + +image:assembly_members_new_form.png[Assembly members new form] + + +.New assembly member form +|=== +|Field |Type |Description + +|Participant type +|Required +|Wheter this assembly member is non-participant or existing participant. Does she already have an account created on the platform? + +|Full name +|Required if it's non-participant. +| + +|User or group +|Required if it's an existing participant. +|Type at least three characters to search. + +|Position +|Required +|Choose one of President, Vice president, Secretary, or Other. In case it's other, you can fill in the position title. + +|Weight +|Optional +|Which order will it have in relation to the other members. Having a lower number means a higher priority. For instance, if you have two members, "Member a" with weight "10" and "Member b" with weight "0", then "Member b" will be first when ordering. + +|Designation date +|Required +|When was this person or group assigned as a member of this assembly. Expected format: dd/mm/yyyy + +|Designation mode +|Optional +|How was this person designed. + +|Ceased date +|Optional +|When was this person or group ceased to be a member of this assembly. Expected format: dd/mm/yyyy + +|Gender +|Optional +|Which gender does this person most identify with. + +|Birthday +|Optional +|When was this person born. Expected format: dd/mm/yyyy + +|Birthplace +|Optional +|Where was this person born. +|=== \ No newline at end of file diff --git a/docs/es/modules/admin/pages/spaces/assemblies/moderations.adoc b/docs/es/modules/admin/pages/spaces/assemblies/moderations.adoc new file mode 100644 index 0000000000..12d6ac0858 --- /dev/null +++ b/docs/es/modules/admin/pages/spaces/assemblies/moderations.adoc @@ -0,0 +1 @@ +include::partial$page_moderations.adoc[] \ No newline at end of file diff --git a/docs/es/modules/admin/pages/spaces/assemblies/private_participants.adoc b/docs/es/modules/admin/pages/spaces/assemblies/private_participants.adoc new file mode 100644 index 0000000000..16c939dfa3 --- /dev/null +++ b/docs/es/modules/admin/pages/spaces/assemblies/private_participants.adoc @@ -0,0 +1 @@ +include::partial$page_private_participants.adoc[] \ No newline at end of file diff --git a/docs/es/modules/admin/pages/spaces/conferences.adoc b/docs/es/modules/admin/pages/spaces/conferences.adoc new file mode 100644 index 0000000000..405be42fa8 --- /dev/null +++ b/docs/es/modules/admin/pages/spaces/conferences.adoc @@ -0,0 +1,169 @@ += Conferences + +A conference is a collection of meetings arranged in a program, with a number of people invited as speakers, and other +information fields typical of large congresses or social events (registration, list of organizations that support or sponsor the +event, etc.). A conference can be a relevant event for an organization and its members, or take place as part of a participatory +process or follow a consultation. + +Examples: + +* A general assembly for an organization +* The annual meeting of a cooperative + +As a real world example you can see the anual Metadecidim conferences: + +image:spaces/conferences/example01.png[Decidim Fest 2020] + +* https://meta.decidim.org/conferences/decidimfest19[Decidim Fest 2019] +* https://meta.decidim.org/conferences/decidimfest2020[Decidim Fest 2020] +* https://meta.decidim.org/conferences/DecidimFest21[Decidim Fest 2021] + +== Create a new conference + +For adding a new conference, you need to: + +image:spaces/conferences/menu.png[Conferences menu] + +. Sign in as admin +. Go to admin panel +. In the main sidebar, click in the button "Conferences" +. Click in the button "Create a new conference" +. Configure the conference by filling the form + +image:spaces/conferences/new_conference.png[Create a new conference form] + + +.Create a new conference +|=== +|Field |Type |Description + +|Title +|Required +|What is the title of this conference. For instance "Decidim Fest 2021" + +|Slogan +|Required +|A subtitle for this conference. For instance, "Democracy, Technology and Global Justice" + +|URL slug +|Required +|URL slugs are used to generate the URLs that point to this conference. Only accepts letters, numbers, and dashes, and +must start with a letter. Example: if your domain is 'example.org' and your slug 'DecidimFest21' then your URL will be +https://example.org/conferences/DecidimFest21 + +|Hashtag +|Optional +|Hashtag for Twitter + +|Highlighted +|Optional +|Should this conference be more prominent than others? For instance, is this an ongoing or a conference that has happened years ago? + +|Short description +|Required +|A short explanation of what's your conference about. + +|Description +|Required +|A long explanation of what's your conference about. + +|Objectives +|Optional +|What are the objectives or goals for this conference? + +|Location +|Optional +|Where will this conference take place? + +|Home image +|Optional +|Preferrably a landscape image that does not have any text. The service crops +the image. Maximum file size: 10MB. Allowed file extensions: jpeg jpg png + +|Banner image +|Optional +|Preferrably a landscape image that does not have any text. The service crops +the image. Maximum file size: 10MB. Allowed file extensions: jpeg jpg png + +|Scopes enabled +|Optional +|Check if you want to have Scopes filtering in this conference + +|Scope +|Optional +|Which xref:admin:scopes.adoc[Scope] does this conference belongs to. + +|Show statistics +|Optional +|Check if you want to show the Statistics section. + +|Start date +|Required +|When will this conference start. Expected format: dd/mm/yyyy + +|End date +|Required +|When will this conference end. Expected format: dd/mm/yyyy + +|Registrations enabled +|Optional +|Check if you want to handle registrations on the platform. + +|Available slots +|Optional +|Leave it to 0 if you have unlimited slots available. + +|Registration terms +|Required if "Registrations enabled" is checked +|What are the terms of service or conditions that a participant must accept for registering in this conference? + +|Related participatory processes +|Optional +|Select the processes that are related to this conference. Use the *ctrl* function to select more than one option. + +|Related Assemblies +|Optional +|Select the assemblies that are related to this conference. Use the *ctrl* function to select more than one option. + +|Related Consultations +|Optional +|Select the consultations that are related to this conference. Use the *ctrl* function to select more than one option. +|=== + +== Creating the program + +For creating the program of the conference you need to create a new xref:components/meetings.adoc[Meeting component] with the +dates and times of the different talks, workshops, sessions, etc. After publishing the meetings, it will be visible in the landing page +and there'll be a special navigation for these meetings so they're ordered by date and time. + +image:spaces/conferences/program_frontend.png[Conferences program (frontend)] + +image:spaces/conferences/program_backend.png[Conferences program (backend)] + +Also if you they are "In person" meetings with a location then you'll have a list of the venues. + +image:spaces/conferences/program_venues_frontend.png[Conferences venues (frontend)] + +== Menu + +image:spaces/conferences/manage_conferences.png[Conferences list at admin panel] + +After you’ve initially created your conference you have a submenu where you need +to keep configuring more information about it. + +image:spaces/conferences/sidebar.png[Conferences sidebar] + +. Info: the same form that we explained in this page. +. xref:admin:spaces/conferences/components.adoc[Components] +. xref:admin:spaces/conferences/categories.adoc[Categories] +. xref:admin:spaces/conferences/attachments.adoc[Attachments] +. xref:admin:spaces/conferences/media_links.adoc[Media Links] +. xref:admin:spaces/conferences/partners.adoc[Partners] +. xref:admin:spaces/conferences/speakers.adoc[Speakers] +. xref:admin:spaces/conferences/registrations.adoc[Registrations] +.. xref:admin:spaces/conferences/registrations/types.adoc[Registration Types] +.. xref:admin:spaces/conferences/registrations/users.adoc[User Registrations] +.. xref:admin:spaces/conferences/registrations/invites.adoc[Invites] +.. xref:admin:spaces/conferences/registrations/certificates.adoc[Certificate of Attendance] +. xref:admin:spaces/conferences/admins.adoc[Conference admins] +. xref:admin:spaces/conferences/moderations.adoc[Moderations] \ No newline at end of file diff --git a/docs/es/modules/admin/pages/spaces/conferences/admins.adoc b/docs/es/modules/admin/pages/spaces/conferences/admins.adoc new file mode 100644 index 0000000000..59313271ef --- /dev/null +++ b/docs/es/modules/admin/pages/spaces/conferences/admins.adoc @@ -0,0 +1 @@ +include::partial$page_admins.adoc[] \ No newline at end of file diff --git a/docs/es/modules/admin/pages/spaces/conferences/attachments.adoc b/docs/es/modules/admin/pages/spaces/conferences/attachments.adoc new file mode 100644 index 0000000000..d36f3e32d1 --- /dev/null +++ b/docs/es/modules/admin/pages/spaces/conferences/attachments.adoc @@ -0,0 +1,81 @@ += Attachments + +Attachments allow an administrator to upload static files to a conference. + +When a conference is launched, it is important to provide citizens with as much information as possible about them so +that they can participate with knowledge. That is why it is helpful to add files (Attachments) with the information that +is considered relevant. + +Optionally, these documents can be grouped in *Folders*. + +They can be found on the Conference "Media and links" section: + +image:spaces/conferences/attachments.png[Conferences attachments (backend)] + +image:spaces/conferences/media_links_frontend.png[Conferences attachments (frontend)] + +Read more about this in xref:admin:spaces/conferences/media_links.adoc[Media links]. + +== Create a new attachment + +image:spaces/attachments_admin.png[View the attachments of a conference in the admin interface] + +For creating a new phase of a conference: + +. Sign in as administrator +. Go to the conference section in the sidebar +. Click on the conference Edit action +. Click on the Attachments link in the sidebar +. Click on the "New attachment" button + +image:spaces/attachments_new_form.png[Create a new attachment form] + + +.Create attachment +|=== +|Field |Type |Description + +|Attachment or image name +|Required +|What is the title for this attachment. + +|Weight +|Optional +|Which order will it have in relation to the other attachments. Having a lower number means a higher priority. For instance, if you have two categories, "Attachment a" with weight "10" and "Attachment b" with weight "0", then "Attachment b" will be first when ordering. + +|Description +|Required +|A long description explaining what this file is about. + +|Folder +|Optional +|Which folder this attachment belongs to. + +|File +|Required +|Upload the file. Guidance for file: Has to be an image or a document. For images, use preferrably landscape images, the +service crops the image. For CSV files, the separator between columns must be a comma (","). Maximum file size: 10MB. Allowed +file extensions depends in your server configuration. +|=== + +== Create a new folder + +image:spaces/attachments_new_folder_form.png[Create a new folder for attachments form] + + +.Create folder +|=== +|Field |Type |Description + +|Name +|Required +|Name of the folder + +|Weight +|Optional +|Which order will it have in relation to the other folders. Having a lower number means a higher priority. For instance, if you have two folders, "Folder a" with weight "10" and "Folder b" with weight "0", then "Folder b" will be first when ordering. + +|Description +|Required +|A long description explaining what this folder is about. +|=== \ No newline at end of file diff --git a/docs/es/modules/admin/pages/spaces/conferences/categories.adoc b/docs/es/modules/admin/pages/spaces/conferences/categories.adoc new file mode 100644 index 0000000000..3ee4fc09cc --- /dev/null +++ b/docs/es/modules/admin/pages/spaces/conferences/categories.adoc @@ -0,0 +1 @@ +include::partial$page_categories.adoc[] \ No newline at end of file diff --git a/docs/es/modules/admin/pages/spaces/conferences/components.adoc b/docs/es/modules/admin/pages/spaces/conferences/components.adoc new file mode 100644 index 0000000000..7a204dda0b --- /dev/null +++ b/docs/es/modules/admin/pages/spaces/conferences/components.adoc @@ -0,0 +1 @@ +include::partial$page_components.adoc[] \ No newline at end of file diff --git a/docs/es/modules/admin/pages/spaces/conferences/media_links.adoc b/docs/es/modules/admin/pages/spaces/conferences/media_links.adoc new file mode 100644 index 0000000000..d39ad23e1d --- /dev/null +++ b/docs/es/modules/admin/pages/spaces/conferences/media_links.adoc @@ -0,0 +1,45 @@ += Media links + +Conferences can have a section called "Media and links". It shows a list of media files and links that are associated to the conference. + +The media files are the files from the xref:admin:spaces/conferences/attachments.adoc[attachments] sections. +The media links are defined in a section in the admin panel of the conference. + +image:spaces/conferences/media_links_frontend.png[Conferences media links (frontend)] + +== Create a new media link + +image:spaces/conferences/media_links_backend.png[Conferences media links] + +For creating a new media link of a conference: + +. Sign in as administrator +. Go to the conferences section in the sidebar +. Click on the conference Edit action +. Click on the "Media links" link in the sidebar +. Click on the "New Media Link" button +. Fill the form + +image:spaces/conferences/new_media_link.png[Create a new conferences media link] + + +.New media link form +|=== +|Field |Type |Description + +|Title +|Required +|The title of the link + +|Link +|Required +|URL of the link + +|Date +|Required +|Published date of the link + +|Weight +|Optional +|Which order will it have in relation to the other links. Having a lower number means a higher priority. For instance, if you have two links, "Link a" with weight "10" and "Link b" with weight "0", then "Link b" will be first when ordering. +|=== \ No newline at end of file diff --git a/docs/es/modules/admin/pages/spaces/conferences/moderations.adoc b/docs/es/modules/admin/pages/spaces/conferences/moderations.adoc new file mode 100644 index 0000000000..12d6ac0858 --- /dev/null +++ b/docs/es/modules/admin/pages/spaces/conferences/moderations.adoc @@ -0,0 +1 @@ +include::partial$page_moderations.adoc[] \ No newline at end of file diff --git a/docs/es/modules/admin/pages/spaces/conferences/partners.adoc b/docs/es/modules/admin/pages/spaces/conferences/partners.adoc new file mode 100644 index 0000000000..e9d5fd13d6 --- /dev/null +++ b/docs/es/modules/admin/pages/spaces/conferences/partners.adoc @@ -0,0 +1,47 @@ += Partners + +The partners are the sponsors or supporters of a conference. They are listed on the Conference landing page. + +image:spaces/conferences/partners_frontend.png[Conferences partners (frontend)] + +== Create a new partner + +image:spaces/conferences/partners.png[Conferences partners] + +For creating a new partner of a conference: + +. Sign in as administrator +. Go to the conferences section in the sidebar +. Click on the conference Edit action +. Click on the Partners link in the sidebar +. Click on the "New partner" button +. Fill the form + +image:spaces/conferences/new_partner.png[Conferences partners form] + + +.New partner form +|=== +|Field |Type |Description + +|Name +|Required +|What is the name of this partner. + +|Partner type +|Required +|Choose one of these options: Main promotor or Collaborator + +|Weight +|Optional +|Which order will it have in relation to the other partners. Having a lower number means a higher priority. For instance, if you have two partners, "Partner a" with weight "10" and "Partner b" with weight "0", then "Partner b" will be first when ordering. + +|Link +| +| + +|Logo +|Required +|Guidance for image: Preferably a landscape image that does not have any text. The service crops the image. Maximum file size: 5MB +Allowed file extensions: jpg jpeg gif png bmp ico +|=== \ No newline at end of file diff --git a/docs/es/modules/admin/pages/spaces/conferences/registrations.adoc b/docs/es/modules/admin/pages/spaces/conferences/registrations.adoc new file mode 100644 index 0000000000..0aa2935425 --- /dev/null +++ b/docs/es/modules/admin/pages/spaces/conferences/registrations.adoc @@ -0,0 +1,12 @@ += Registrations + +As an administrator of a conference you can manage the registrations for the conference from the platform. + +For doing so, you have these admin sections: + +. xref:admin:spaces/conferences/registrations/types.adoc[**Registrations Types**] allows you to define which ways of registering participants +will have. For instance if there are a number of prices depending if the attendees are students or workers. +. xref:admin:spaces/conferences/registrations/users.adoc[**User Registrations**] allows you to confirm the requests for attending the conference. +. xref:admin:spaces/conferences/registrations/invites.adoc[**Invites**] allows you to invite participants to the conference. +. xref:admin:spaces/conferences/registrations/certificates.adoc[**Certificates of Attendance**] allows you to configure and send certificates +of attendance in PDF format to people that has gone to the conference. \ No newline at end of file diff --git a/docs/es/modules/admin/pages/spaces/conferences/registrations/certificates.adoc b/docs/es/modules/admin/pages/spaces/conferences/registrations/certificates.adoc new file mode 100644 index 0000000000..2e526c32a2 --- /dev/null +++ b/docs/es/modules/admin/pages/spaces/conferences/registrations/certificates.adoc @@ -0,0 +1,39 @@ += Certificates of Attendance + +Administrators can create Certificates of Attendance to participants. + +image:spaces/conferences/certificates_of_attendance.png[Conferences Certificate of Attendance (backend)] + + +.Certificate of Attendance form +|=== +|Field |Type |Description + +|Main logo +|Required +|Logo of the conference of the organization that makes the certificate of attendance. + +|Signature +|Required +|Image of the person that signs the certificate. + +|Sign date +|Required +|Date of the signature. Expected format: dd/mm/yyyy + +|Signature name +|Required +|Name of the person that signs the certificate. +|=== + +After the form is filled then there's a button to "Send certificates of attendance" to all the confirmed xref:admin:spaces/conferences/registrations/users.adoc[registrations] of the conference. + +image:spaces/conferences/certificates_of_attendance_button.png[Conferences Certificate of Attendance send button] + +Once it's sent it can't be resent. + +image:spaces/conferences/certificates_of_attendance_button_disabled.png[Conferences Certificate of Attendance send disabled button] + +The certificates of attendance are sent to the participants by email in PDF format. + +image:spaces/conferences/certificates_of_attendance_pdf.png[Conferences Certificate of Attendance (frontend)] \ No newline at end of file diff --git a/docs/es/modules/admin/pages/spaces/conferences/registrations/invites.adoc b/docs/es/modules/admin/pages/spaces/conferences/registrations/invites.adoc new file mode 100644 index 0000000000..bd02c5da95 --- /dev/null +++ b/docs/es/modules/admin/pages/spaces/conferences/registrations/invites.adoc @@ -0,0 +1,38 @@ += Invites + +Administrators can invite participants to join the conference. + +image:spaces/conferences/invites.png[Conferences user invites (backend)] + +== Flow + +. An administrator sends an invitation to join the conference to a non-existing or existing participant +. The participant accepts the invitation + +image:spaces/conferences/invite_participant_form.png[Invite a participant form] + + +.Invite participant form +|=== +|Field |Type |Description + +|Attendee type +|Required +|Wheter this invited person is a non-existing or existing participant. Does she already have an account created on the platform? + +|Name +|Required if it's a non-existing participant. +|Name of the invited person. + +|Email +|Required if it's a non-existing participant. +|Email of the invited person. + +|User +|Required if it's an existing participant. +|Type at least three characters to search. + +|xref:admin:spaces/conferences/registrations/types.adoc[Registration type] +|Required +|What xref:admin:spaces/conferences/registrations/types.adoc[registration type] does this participant will have. +|=== \ No newline at end of file diff --git a/docs/es/modules/admin/pages/spaces/conferences/registrations/types.adoc b/docs/es/modules/admin/pages/spaces/conferences/registrations/types.adoc new file mode 100644 index 0000000000..1625887826 --- /dev/null +++ b/docs/es/modules/admin/pages/spaces/conferences/registrations/types.adoc @@ -0,0 +1,56 @@ += Registration types + +You can enable registrations in conferences, so it's easier to register to the whole conference, or by days, rather than +going meeting by meeting to enable registration for that particular event. + +After enabling registrations participants will have a button to register to the conference in the landing and the conference's header. + +image:spaces/conferences/registration_landing01.png[Registration button on landing page] + +image:spaces/conferences/registration_landing02.png[Registration button on landing page] + +If you want to enable registration you'll need to define and publish at least one registration type. + +image:spaces/conferences/registration_types_frontend_wo_user.png[Select registration type without a user account] + +== Create a new registration type + +For adding a new registration type, you need to: + +. Sign in as administrator +. Go to the conferences section in the sidebar +. Click on the conference Edit action +. Click on the "Registration types" link in the sidebar +. Click on the "New Registration type" button +. Fill the form +. Publish the registration type + +image:spaces/conferences/new_registration_type.png[Create a new registration type form] + +image:spaces/conferences/registration_types_backend.png[Manage registration types] + + +.Create a new registration type +|=== +|Field |Type |Description + +|Title +|Required +|What is the title of this registration type. + +|Weight +|Which order will it have in relation to the other types. Having a lower number means a higher priority. For instance, if you have two types, "Day 1" with weight "10" and "Day 2" with weight "0", then "Day 2" will be first when ordering. +|Description + +|Required +|Description for this registration type +|Price + +|Optional +|Define a price for this registration type. If you don't define a price, the price will be "Free". +|Select conference meetings +|=== + +If the participant is already logged in then she'll see her username and email in the registration page. + +image:spaces/conferences/registration_types_frontend_w_user.png[Select registration type with user account] \ No newline at end of file diff --git a/docs/es/modules/admin/pages/spaces/conferences/registrations/users.adoc b/docs/es/modules/admin/pages/spaces/conferences/registrations/users.adoc new file mode 100644 index 0000000000..33dc8d6b46 --- /dev/null +++ b/docs/es/modules/admin/pages/spaces/conferences/registrations/users.adoc @@ -0,0 +1,27 @@ += User registrations + +After participants have registered, they will appear in this section. + +image:spaces/conferences/user_registrations.png[Conferences user registrations (backend)] + +As an administrator, you can: + +* Export the registrations +* Confirm a registration + +== Export + +It's possible to export the registrations in multiple formats: CSV, JSON, and XLSX (Excel). + +== Flow + +. A participant registers to the conference +. She receives a pending registration notification +image:spaces/conferences/user_registration_pending_notification.png[Notification for pending user registration] +. She receives a pending registration email +image:spaces/conferences/user_registration_pending_email.png[Email for pending user registration] +. An administrator reviews and confirms the registration with the image:action_check.png[Confirm] button +. The participant receives a confirmed registration notification +image:spaces/conferences/user_registration_confirmed_notification.png[Notification for confirmed user registration] +. She receives a confirmed registration email with an calendar file (.ICS). +image:spaces/conferences/user_registration_confirmed_email.png[Email for confirmed user registration] \ No newline at end of file diff --git a/docs/es/modules/admin/pages/spaces/conferences/speakers.adoc b/docs/es/modules/admin/pages/spaces/conferences/speakers.adoc new file mode 100644 index 0000000000..f62160a3e8 --- /dev/null +++ b/docs/es/modules/admin/pages/spaces/conferences/speakers.adoc @@ -0,0 +1,68 @@ += Speakers + +The speakers are people that are going to talk at the conference. + +image:spaces/conferences/speakers_frontend.png[Conferences speakers (frontend)] + +== Create a new speaker + +image:spaces/conferences/speakers.png[Conferences speakers] + +For creating a new speaker of a conference: + +. Sign in as administrator +. Go to the conferences section in the sidebar +. Click on the conference Edit action +. Click on the Speakers link in the sidebar +. Click on the "New Conference Speaker" button +. Fill the form + +image:spaces/conferences/new_speaker.png[Conferences speakers] + + +.New conference speaker form +|=== +|Field |Type |Description + +|Participant type +|Required +|Wheter this speaker is a non-participant or existing participant. Does she already have an account created on the platform? + +|Full name +|Required if it's non-participant. +|Name of the speaker. + +|User or group +|Required if it's an existing participant. +|Type at least three characters to search. + +|Related meetings +|Optional +|Which meetings does this speaker attend and participates actively? + +|Position +|Required +|Metadata for showing extra information about the speaker. + +|Affiliation +|Required +|Metadata for showing extra information about the speaker. + +|Short Bio +|Optional +|Metadata for showing extra information about the speaker. + +|Twitter handle +|Optional +|Metadata for showing extra information about the speaker. + +|Personal URL +|Optional +|Metadata for showing extra information about the speaker. + +|Avatar +|Optional +|Metadata for showing extra information about the speaker. + +Default image +|=== \ No newline at end of file diff --git a/docs/es/modules/admin/pages/spaces/consultations.adoc b/docs/es/modules/admin/pages/spaces/consultations.adoc new file mode 100644 index 0000000000..452763a87f --- /dev/null +++ b/docs/es/modules/admin/pages/spaces/consultations.adoc @@ -0,0 +1,3 @@ += Consultations + +include::partial$deprecated.adoc[] \ No newline at end of file diff --git a/docs/es/modules/admin/pages/spaces/initiatives.adoc b/docs/es/modules/admin/pages/spaces/initiatives.adoc new file mode 100644 index 0000000000..7abb57a326 --- /dev/null +++ b/docs/es/modules/admin/pages/spaces/initiatives.adoc @@ -0,0 +1,408 @@ += Initiatives + +An initiative is a special type of participatory process that can be promoted by anyone (independently of other channels or participation spaces) through the collection of (online and in-person) signatures for the organization to carry out a specific action (modify a regulation, initiate a project, change the name of a department or a street, etc.). + +The promoters of an initiative can define its objectives, gather support, debate, disseminate it and define meeting points where signatures can be collected from the attendees or debates open to other participants. + +Examples: An initiative can collect signatures to call for a consultation among all the people of an organization, or to create an assembly, or to call for a process of budget increase for a territory or area of the organization. During the process of collecting signatures, more people can add to this demand and carry it forward in the organization. + +Initiatives are to be distinguished from the other participation spaces because they can be used as a participatory tool or mechanism promoted by participants. In other words, the initiatives are mechanisms for semi-direct democracy through which participants can promote a certain action of common interest to the organization, by collecting a specific number of signatures. In this case, what the organization has to do is enable the promotion of these initiatives and offer the necessary technical support and advice to the people concerned. The role of the platform’s administrator, then, is somewhat different from that of the other participation spaces. + +In the first place, you will have to configure the various forms of initiatives. This could be specified in a regulation (like a municipal normative or state law), specifying the number of signatures required for processing the various types of initiatives. For example, an initiative for incorporating one or several items into the Municipal Council’s agenda evidently requires fewer signatures than another initiative for promoting a binding consultation. + +== 0. Initiative setup + +How initiatives work depends on two things: how the initiative module is configured through the xref:admin:initiatives_initializer.adoc[initializer] (in code) and how the initiative type is configured in the administration panel. + +Regarding initiatives type, **an administrator** needs to define one. For Initiatives to work on an organization there must be at least one initiative type created and configured with at least one initiative type scope. If there's only one type then the participant will not get the possibility to choose the initiative type, this step will be skipped in the initiative creation wizard. + +Some real examples from the city of Barcelona are: + +* To add an item to the Municipal Council or Districts agendas +* To perform a participatory process +* To create a new assembly +* To approve or modify a regulation +* To request the holding of a citizen consultation +* To call for assemblies (neighborhood councils or public audiences) + +=== New initiative type form + +image:admin_initiative_type.png[New initiative type form] + + +.Admin new initiative type form: General information +|=== +|Field |Type |Description + +|Title +|Required +|Title of the initiative type. For instance, "New park at city center". + +|Description +|Required +|Explanation of what can be done with this initiative type. + +|Banner image +|Required +|An image for this initiative type. NOTE: At the moment this is not used. +|=== + + +.Admin new initiative type form: Options +|=== +|Field |Type |Description + +|Signature type +|Optional +|Which kind of signature type will be allowed. Options are: Online, In-person and Mixed. The Mixed option allows a participant to choose which signature type will have the initiative. + +|Enable attachments +|Optional +|Whether it'll allow to upload attachments to initiatives. + +|Enable participants to undo their online signatures +|Optional +|Can a participant undo its signature when they already signed? + +|Enable authors to choose the end of the signature collection period +|Optional +|Can the authors of an initiative change the end of the signature collection period? + +|Enable authors to choose the area for their initiative +|Optional +|Can the authors choose the area of their initiative? + +|Enable child scope signatures +|Optional +|This config flag doesn't support offline votes, it enables sub-scopes and works with an authorization handler that associates a scope to the user, make sure you select that authorization, bellow in authorization settings. For it to work, scopes need to be configured in a hierarchical way : 1 Parent - N Child. + +|Only allow global scope initiatives creation +|Optional +|Tick this flag if you enabled "Child scope signature" and configured the global scope as your parent scope. By enabling this, scope selection will be skipped in the initiative creation wizard. + +|Enable promoting committee +|Optional +|Whether it will only allow individual initiatives (made by only one person) or allow collective initiatives (multiple promoters, being multiple individuals or a user group). + +|Minimum of committee members +|Optional +|When "Enable promoting committee" option is checked, defines the minimum number of promoter's committee member to send the initiative to technical validation + +|Collect participant personal data on signature +|Optional +|Adds a step to the signature process. When a participant clicks on the signature button, she'll be redirected to a form asking for some personal data. This will be used with the PDF export action after the recollection period has ended. + +|Legal information about the collection of personal data +|Depends on whether the option "Collect participant personal data on the signature" is checked +|Privacy notice and terms of use for the participant personal data during the signature process. +|=== + + +.Admin new initiative type form: Authorization settings +|=== +|Field |Type |Description + +|Authorization to verify document number on signatures +|Optional +|When a participant is making the signature process, will she be asked for an authorization? + +|Add SMS code validation step to the signature process +| +|During the signature process, will it ask for SMS validation? See xref:services:sms.adoc[configuration of SMS service]. +|=== + +=== New initiative type scope form + +An initiative type can also have scopes associated. For Initiatives it needs at least one scope configured. + +image:admin_initiative_type_scope.png[New initiative type form] + + +.Admin new initiative type scope form +|=== +|Field |Type |Description + +|Scopes +|Required +|A Scope. An author can choose this scope in the creation of the initiative. + +|Signatures required +|Required +|Number of signatures the initiative need to have before the end period so it can be accepted. +|=== + +== 1. Create an initiative + +This action is done by **the author**. The author is a participant that creates the initiative. Depending on how the initiatives module is configured in the initializer or how the initiative type is configured, it may need to ask for authorization, or it will even not show the "New initiative" button. + +image:initiative_list.png[Initiatives list] + +For creating an initiative, a participant must click in the "New initiative" button. Then she'll have a wizard with multiple steps: + +=== 1.1 Choose the initiative type + +image:initiative_new_step1.png[Initiative creation: step 1] + +=== 1.2 Add title and description + +image:initiative_new_step2.png[Initiative creation: step 2] + +=== 1.3 [Optional] Similarity comparison + +Checks the rest of the initiatives if there are other similar initiatives. If there are, the system will show them before continuing. This is a way to avoid duplicates. + +=== 1.4 Finish + +image:initiative_new_step3.png[Initiative creation: step 3] + +image:initiative_new_step4.png[Initiative creation: step 4] + +=== Actions after it was created + +After the initiative was created, a participant can see the initiative page, but until the initiative is reviewed and accepted by an administrator, through the technical validation, it will not be published and visible for all the participants. + +image:initiative_show.png[Initiative show] + +In the sidebar a participant can make some actions: Edit, Print and Send to technical validation. + +image:initiative_actions.png[Initiative actions] + +==== Edit + +After the initiative was created and before it was sent to technical validation, **an author** can edit and correct the initiative if it has any error. + +image:initiative_edit.png[Initiative edit] + +==== Print + +An author can also print the initiative. + +image:initiative_print.png[Print an initiative] + +==== Technical validation + +After the author has reviewed how the initiative will look, she can send it to technical validation. + +image:initiative_send_to_technical_validation.png[Send initiative to technical validation] + +== 2. Send initiative to technical validation + +This action is done by **the author**. + +After it has been reviewed by the author, it can be sent to "Technical validation", but it depends in the configuration of the initiative type, in whether the options "Enable promoting committee" and "Minimum of committee members" are configured. + +=== Promoter's committee + +An initiative type can optionally be supported by a promoter's committee, with a minimum number of committee members. Once the user has created the initiative and before it can be sent for technical validation they need to invite committee members to promote it. + +When the user has created the initiative they will be given a link to share with possible committee members, which will look something like `/initiatives/.../committee_requests/new` + +When a prospective committee member opens the link, they can click a button which allows them to request to be part of the committee. The initiative author then needs to approve each request. The author can approve them by clicking on the "Edit" button of their initiative at the bottom of the form they can approve or reject committee members. + +image:initiative_commitee_members_send_to_technical_false.png[Initiative promotor committee: edit screen] + +The initiative cannot be sent to technical validation until it meets the minimum number of committee members required. You can find the invitation link in the edit form. + +image:initiative_edit_commitee_members.png[Initiative promotor committee: edit screen] + +Share the invitation link with the people you'd like to have on your committee. + +image:initiative_commitee_members_ask.png[Initiative promotor committee: edit screen] + +The people invited with the link will be able to read the initiative and ask to be part of the committee. + +image:initiative_commitee_members_sent.png[Initiative promotor committee: edit screen] + +The request is sent and the author can then and accept or refuse it in the initiative edit form. + +image:initiative_commitee_members_approve.png[Initiative promotor committee: edit screen] + +image:initiative_commitee_members_send_to_technical_true.png[Initiative promotor committee: edit screen] + +Once enough people have joined the promoter committee the initiative author can send it for +technical validation. + +== 3. Publish an initiative + +This action is done by **an administrator**. + +After the initiative was sent to technical validation by a participant, an administrator can view all the initiatives in the admin panel and make some corrections. + +image:initiative_admin_list.png[Admin initiatives list] + +=== Actions + +Regarding the actions in an initiative, an administrator can "Preview", "Edit", "Answer" or "Print" an initiative: + +image:initiative_admin_list_actions.png[Initiative admin list actions] + +|=== +|Icon |Name |Definition + +|image:action_preview.png[Preview icon] +|Preview +|To see how it's shown in the frontend to participants. + +|image:action_edit.png[Edit icon] +|Edit +|Edit form for Initiative. + +|image:action_answer.png[Answer icon] +|Answer +|Allows to answer an Initiative. + +|image:action_print.png[Print icon] +|Print +|Allows to print. +|=== + +=== Components + +Once an initiative has been created it gets the Meetings and Page component enabled by +default. The initiative author has no control over these - an admin will need to manage +them. All of the other usual components may be added by an admin too. + +image:initiative_admin_show.png[Admin initiative show page] + +There are also other features inside initiatives, like Attachments and Moderations for the comments. + +image:initiative_admin_sidebar.png[Admin initiative sidebar] + +=== Publish + +After the initiative was reviewed and technically approved by an admin, for instance for checking that what the initiative is asking is legal or abides to the normative (ie it's municipal competency), then it can be published: + +image:initiative_admin_actions.png[Admin initiative actions] + +== 4. Sign an initiative + +This action is done by **a participant**. + +After the initiative was published, it'll be visible in the initiatives listing page (/initiatives): + +image:initiative_list_published.png[Initiative list after it was published] + +image:initiative_admin_show_published.png[Admin initiative show after it was published] +image:initiative_show_published.png[Initiative show after it was published] + +And authorized participants can sign it: + +image:initiative_admin_show_published_detail.png[Admin initiative show after it was published (detail)] + +image:initiative_show_signed.png[Initiative show after it was signed] + +== 5. Export signatures + +This action is done by **an administrator**. After the initiative has started to get signatures, there's an option for exporting a PDF of the signatures: + +image:initiative_actions_export.png[Initiative actions with Export to PDF] + +image:initiative_actions_export_pdf.png[Initiative exported PDF] + +== 6. Answer an initiative + +After the initiative has collected all the signatures then it can be answered by an administrator. An initiative answer don't have different types. + +image:initiative_backend_answer.png[Initiative backend answer] + +image:initiative_frontend_answer.png[Initiative frontend answer] + +== Initiative statuses + +For better understanding all the status, this is a summary: + +|=== +|Status |Explanation + +|Created +|The initiative has been created but is not yet public for every visitor or the rest of the participants. + +|Technical validation +|The initiative needs to be reviewed by an administrator. From here, it can be "discarded" or "published" + +|Expired +|The initiative wasn't reviewed by an administrator and wasn't approved, and the maximum time for validation has passed. + +|Discarded +|The initiative was reviewed by an administrator and was discarded, so it's not published. + +|Published +|The initiative was reviewed by an administrator and was approved, so it's published. + +|Rejected +|The period for signature recollection has ended and there weren't enough signatures. + +|Accepted +|The period for signature recollection has ended and there were enough signatures. +|=== + +[plantuml] +@startuml +:Created; +:Technical validation; +if (has passed the maximum validation time?) then (yes) + #pink:Expired; + kill; +elseif (validated?) then (no) + #pink:Discarded; + kill; +else (yes) + #palegreen:Published; + if (enough signatures?) then (no) + #pink:Rejected + (not enough signatures); + kill; + else (yes) + #palegreen:Accepted + (enough signatures); + stop; + endif; +endif +@enduml + +Finally, these are all the relevant settings in every moment in the initiatives life cicle: + +[plantuml] +@startuml +(*) --> "Create a new initiative" +if "Has only one type?" then +--> [Yes] "Fill initiative form" +else +--> [No] "Select initiative type" +--> "Fill initiative form" +Endif +partition Created { + if "Is the User a UserGroup?" then + --> [Yes] "Send to Technical Validation" + else + --> [No] Collect the minimum number of committee members (2 by default) + --> "Send to Technical Validation" + Endif +} +partition Validating { + if "Has passed the maximum time for validation (60 days by default)?" then + --> [Yes] "Expired" + else + --> [No] if "Is accepted by an administrator?" then + --> [No] "Discarded" + else + --> [Yes] "Publish" + endIf + endIf +} +partition Published { + --> "Signature process" + if "Has passed the configured time window for validation (60 days by default)?" + --> [Yes] "Expired" + else + --> [No] Export PDF to signatures + --> Check signatures with offline signatures for duplicates (if the Initiative has them) + --> if "Has the initiative get the number of signatures required?" then + --> [No] Rejected + else + --> [Yes] Accepted + endIf + endIf +} +--> (*) +@enduml \ No newline at end of file diff --git a/docs/es/modules/admin/pages/spaces/processes.adoc b/docs/es/modules/admin/pages/spaces/processes.adoc new file mode 100644 index 0000000000..f833ec1522 --- /dev/null +++ b/docs/es/modules/admin/pages/spaces/processes.adoc @@ -0,0 +1,242 @@ += Processes + +A participatory process is a sequence of participatory activities (e.g. first filling out a survey, then making proposals, +discussing them in face-to-face or virtual meetings, and finally prioritizing them) with the aim of defining and making a decision on a specific topic. + +Examples of participatory processes are: a process of electing committee members (where candidatures are first presented, +then debated and finally a candidacy is chosen), participatory budgets (where proposals are made, valued economically, +and voted on with the money available), a strategic planning process, the collaborative drafting of a regulation or norm, +the design of an urban space or the production of a public policy plan. + +A really important concept for making good use of Decidim is to understand the relationship between Phases and Components +in a participatory process in Decidim: + +image::process_steps_components.png[Relation between Steps and Components in a Process in Decidim] + +What this diagram is showing is that for a participatory process you can have 7 phases: + +. Configuration & Presentation +. Diagnostic +. Proposal Creation +. Proposal Selection +. Results +. Evaluation +. Monitoring + +Inside of every one of these Phases, there are some components (like Blog, Meetings, Survey, Debates, Proposals, Results). +Some of these Components allow some features depending on the Phase that we are. + +In this section, we'll explain how we can configure a Participatory Process in Decidim. + +== List + +To configure participatory processes on the Decidim platform, click on btn:[Processes] in the admin sidebar menu. A list +will appear with the existing processes if there are any: + +image::processes_list.png[Participatory processes list] + +You can filter by the ones that are: + +* Published / Unpublished +* Public / Private + +image::processes_list_filter.png[Participatory processes list filtered] + +You can also search by title and control how many elements are in the list. + +You have 4 possible actions in this list after a Participatory Process is created: + +1. Export: send by email the configuration for a given process. Can be imported in other Decidim installation. +1. Duplicate: to duplicate this process. +1. Configure: to edit the metadata and configuration for a process. +1. Preview: how it will look once published. + +== New process form + +image::processes_new_form.png[New participatory process form] + + +.New participatory process form: General information +|=== +|Field |Type |Description + +|Title +|Required +|Title of the participatory process. For instance, "Participatory Budgeting 2020". + +|Subtitle +|Required +|Subtitle. For instance, "Let's decide our priorities together" + +|URL slug +|Required +|URL slugs are used to generate the URLs that point to this process. Only accepts letters, numbers and dashes, and must +start with a letter. Example: if your domain is 'example.org' and your slug 'participatory-budget-2020' then your URL will +be https://example.org/processes/participatory-budget-2020 + +|Hashtag +|Optional +|Hashtag for Twitter + +|Short description +|Required +|A short explanation of what's your participatory process about. + +|Description +|Required +|A long explanation of what's your participatory process about. + +|Announcement +|Optional +|The text you enter here will be shown to the user right below the process information. +|=== + + +.New participatory process form: Duration +|=== +|Field |Type |Description + +|Start date +|Optional +|When this process start. You have a calendar widget to choose the day. Expected format: dd/mm/yyyy + +|End date +|Optional +|When this process start. You have a calendar widget to choose the day. Expected format: dd/mm/yyyy +|=== + + +.New participatory process form: Images +|=== +|Field |Type |Description + +|Home image +|Optional +|Image that will be used in presentation cards of this process. Guidance for file: Has to be an image or a document. +For images, use preferably landscape images, the service crops the image. Maximum file size: 10MB + +|Banner image +|Optional +|Image that will be used inside of the process. Guidance for file: Has to be an image or a document. +For images, use preferably landscape images, the service crops the image. Maximum file size: 10MB +|=== + + +.New participatory process form: Metadata +|=== +|Field |Type |Description + +|Promoter group +|Optional +|Information that's displayed in the process metadata sidebar. + +|Organization area +|Optional +|Information that's displayed in the process metadata sidebar. + +|Scope metadata +|Optional +|Information that's displayed in the process metadata sidebar. + +|Who participates +|Optional +|Information that's displayed in the process metadata sidebar. + +|What is decided +|Optional +|Information that's displayed in the process metadata sidebar. + +|How is it decided +|Optional +|Information that's displayed in the process metadata sidebar. +|=== + +image::process_frontend_metadata.png[Process frontend metadata] + +image::process_backend_metadata.png[Process backend metadata] + + +.New participatory process form: Filters +|=== +|Field |Type |Description + +|Scopes enabled +|Optional +|Check if you want to have Scopes filtering in this process. + +|Scope +|Optional +|Which xref:admin:scopes.adoc[Scope] does this process belongs to. + +|Scope filter depth +|Optional +|Restrict the scope filter depth; The filter will show from general to the selected scope type. This is only relevant if +you have complex relations in Scopes children (like a Russian Doll). For instance if you have a Grandmother -> Mother -> +Child, this setting allows you to choose the Mother, so the participants can only choose the Child. This would be the +case for instance if you have Provinces -> Cities -> Districts, and the process is about a particular City. + +|Area +|Optional +|Which xref:admin:areas.adoc[Area] does this process belongs to. +|=== + + +.New participatory process form: Visibility +|=== +|Field |Type |Description + +|Processes group +|Optional +|Enables to make groups of multiple participatory processes. Ideally for processes that are related between them, for +instance multiple squares in a City or multiple documents using the same participatory rules. + +|Private space +|Optional +|Check if this process should only be accessible by xref:admin:spaces/processes/private_participants.adoc[Private Participants] + +|Promoted +|Optional +|Check if you want the process to have more visibility in the Process public list. It'll also be visible in the +Participatory Process Content Block in the xref:admin:homepage.adoc[Homepage] configuration. This is accessible in the +btn:[Edit] action in a Process. +|=== + + +.New participatory process form: Filters +|=== +|Field |Type |Description + +|Related processes +|Optional +|Select other participatory processes that are related to this one. +|=== + + +.New participatory process form: Filters +|=== +|Field |Type |Description + +|Show statistics +|Optional +|Check if you want to show the Statistics section. + +|Show metrics +|Optional +|Check if you want to show the Metrics section. +|=== + +After you've initially created your process you have a submenu where you need to keep configuring more information +about your participatory process. + +image::process_submenu.png[Process submenu in admin] + +Here you can keep configuring your process: + +. Info: the same form that we explained in this page. +. xref:admin:spaces/processes/phases.adoc[Phases] +. xref:admin:spaces/processes/components.adoc[Components] +. xref:admin:spaces/processes/categories.adoc[Categories] +. xref:admin:spaces/processes/attachments.adoc[Attachments] +. xref:admin:spaces/processes/admins.adoc[Process admins] +. xref:admin:spaces/processes/private_participants.adoc[Private participants] +. xref:admin:spaces/processes/moderations.adoc[Moderations] \ No newline at end of file diff --git a/docs/es/modules/admin/pages/spaces/processes/admins.adoc b/docs/es/modules/admin/pages/spaces/processes/admins.adoc new file mode 100644 index 0000000000..59313271ef --- /dev/null +++ b/docs/es/modules/admin/pages/spaces/processes/admins.adoc @@ -0,0 +1 @@ +include::partial$page_admins.adoc[] \ No newline at end of file diff --git a/docs/es/modules/admin/pages/spaces/processes/attachments.adoc b/docs/es/modules/admin/pages/spaces/processes/attachments.adoc new file mode 100644 index 0000000000..493f7dc8c8 --- /dev/null +++ b/docs/es/modules/admin/pages/spaces/processes/attachments.adoc @@ -0,0 +1 @@ +include::partial$page_attachments.adoc[] \ No newline at end of file diff --git a/docs/es/modules/admin/pages/spaces/processes/categories.adoc b/docs/es/modules/admin/pages/spaces/processes/categories.adoc new file mode 100644 index 0000000000..3ee4fc09cc --- /dev/null +++ b/docs/es/modules/admin/pages/spaces/processes/categories.adoc @@ -0,0 +1 @@ +include::partial$page_categories.adoc[] \ No newline at end of file diff --git a/docs/es/modules/admin/pages/spaces/processes/components.adoc b/docs/es/modules/admin/pages/spaces/processes/components.adoc new file mode 100644 index 0000000000..7a204dda0b --- /dev/null +++ b/docs/es/modules/admin/pages/spaces/processes/components.adoc @@ -0,0 +1 @@ +include::partial$page_components.adoc[] \ No newline at end of file diff --git a/docs/es/modules/admin/pages/spaces/processes/groups.adoc b/docs/es/modules/admin/pages/spaces/processes/groups.adoc new file mode 100644 index 0000000000..315bedeaa7 --- /dev/null +++ b/docs/es/modules/admin/pages/spaces/processes/groups.adoc @@ -0,0 +1,113 @@ += Process groups + +A group of processes proves useful for subdividing large participatory processes into subprocesses according to a criteria, +for instance the xref:admin:scopes.adoc[scope] of every process. + +As an example you can see the https://www.decidim.barcelona/processes_groups/4[Barcelona City Council's Neighborhoods Plan, Pla de Barris]. +This is is a 150 million euro shock plan that aims to reduce inequalities within the city. There are 10 related processes, one for each involved neighborhood. + +image::processes_group_example.png[Participatory process group example] + +== New process group form + +For creating a new process group: + +. Sign in as administrator +. Go to the Processes section in the sidebar +. Click on the Process groups link in the sidebar +. Click on the "New process group" button +. Fill in the form + +image::processes_group_list.png[Participatory process groups list] + +image::processes_group_new_form.png[New participatory process group form] + + +.New participatory process group form: General information +|=== +|Field |Type |Description + +|Title +|Required +|Title of the participatory process group. For instance, "Participatory Budgeting". + +|Description +|Required +|A long explanation of what's your participatory process about. + +|Related processes +|Optional +|Which are the processes that are related to this one? They will be used for populating +the Content Blocks in the Landing page of this Process group. For selecting multiple you'll +need to use the *ctrl* function. + +|Image +|Optional +|Image that will be used in presentation cards of this process group. Guidance for image: +Preferably a landscape image that does not have any text. The service crops the image. +Maximum file size: 10MB. Allowed file extensions: jpeg jpg png +|=== + + +.New participatory process group form: Metadata +|=== +|Field |Type |Description + +Hashtag +Website + +|Promoter group +|Optional +|Information that's displayed in the process metadata content block. + +|Organization area +|Optional +|Information that's displayed in the process metadata content block. + +|Scope metadata +|Optional +|Information that's displayed in the process metadata content block. + +|Who participates +|Optional +|Information that's displayed in the process metadata content block. + +|What is decided +|Optional +|Information that's displayed in the process metadata content block. + +|How is it decided +|Optional +|Information that's displayed in the process metadata content block. +|=== + + +.New participatory process group form: Visibility +|=== +|Field |Type |Description + +|Promoted +|Optional +|Check if you want the process to have more visibility in the Process public list. It'll also be visible in the +ParticpipatoryProcess Content Block in the xref:admin:homepage.adoc[Homepage] configuration. This is accessible in the btn:[Edit] action in a Process. +|=== + +== Landing page + +One of the main features of a process group is to be able to configure the Lnading page, through Content blocks, just like +the general homepage of the platform. This means that you can enable or disable different sections of the landing page and also +configure some fo these sections. + +image::processes_group_landing.png[Participatory process group landing page] + +* Title, description and hashtag +* Metadata +* Image, text and Call to Action button. Configurable. +* Proposals. You can configure how the elements will be sorted: by most recent or random. +* Results. You can configure how the elements will be sorted: by most recent or random. +* Upcoming events +* Statistics +* Participatory processes +* First HTML block +* Second HTML block +* Third HTML block \ No newline at end of file diff --git a/docs/es/modules/admin/pages/spaces/processes/moderations.adoc b/docs/es/modules/admin/pages/spaces/processes/moderations.adoc new file mode 100644 index 0000000000..12d6ac0858 --- /dev/null +++ b/docs/es/modules/admin/pages/spaces/processes/moderations.adoc @@ -0,0 +1 @@ +include::partial$page_moderations.adoc[] \ No newline at end of file diff --git a/docs/es/modules/admin/pages/spaces/processes/phases.adoc b/docs/es/modules/admin/pages/spaces/processes/phases.adoc new file mode 100644 index 0000000000..c9c58c5173 --- /dev/null +++ b/docs/es/modules/admin/pages/spaces/processes/phases.adoc @@ -0,0 +1,89 @@ += Phases + +A participatory process is a sequence of phases ordered in time. Depending on which phase of the process timeline you +are, then you can enable or disable some features. + +Ideally, the Phases of a Participatory Process are always the same and are not changed, so participants can know what are +the rules and timeframe and can organize their lives to know when it'd be best for them to participate in this process. + +As a guideline, the standard structure of a participatory process may be as follows: + +. Presentation +. Diagnosis +. Proposal creation and debate +. Proposals prioritization +. Proposals evaluation +. Monitoring + +Participants can find the link to different phases of a participatory process in the header of the participatory process, +in the link "Process phases". Here they can see the full description and explanation of the phases. The active phase +will be highlighted. + +image:process_phases_header.png[Header with processes phases link] + +image:process_phases.png[Process phases explanation] + +== Create a new phase + +image:process_phases_list.png[Phases of a participatory process] + +For creating a new phase of a participatory process: + +. Sign in as administrator +. Go to the participatory process section in the sidebar +. Click on the participatory process Edit action +. Click on the Phases link in the sidebar +. Click on the "New phase" button + +image:process_phases_new_form.png[Create a new participatory process phase form] + + +.Create meeting +|=== +|Field |Type |Description + +|Title +|Required +|What is the title for this phase. + +|Description +| +|A long description explaining what's this phase for. + +|Start date +| +|Which day this phase will start. Expected format: dd/mm/yyyy + +|End date +| +|Which day this phase will end. Expected format: dd/mm/yyyy + +|Call to Action path +| +|Where will the button link to. For instance, it could point to the new proposal creation form. Use partial paths, not full +URLs here. Accepts letters, numbers, dashes, and, slashes, and must start with a letter. If not set, the button will not be shown. + +|Call to Action text +| +|What will the button say. For instance, it could be "Create a proposal". If not set, the button will not be shown. +|=== + +== Actions + +After a phase was created you have these actions: + +|=== +|Icon |Name |Definition + +|image:action_activate.png[Activate icon] +|Activate +|To make this phase the active one. + +|image:action_edit.png[Edit icon] +|Edit +|To edit this phase. + +|image:action_delete.png[Delete icon] +|Delete +|To delete this phase. +|=== \ No newline at end of file diff --git a/docs/es/modules/admin/pages/spaces/processes/private_participants.adoc b/docs/es/modules/admin/pages/spaces/processes/private_participants.adoc new file mode 100644 index 0000000000..16c939dfa3 --- /dev/null +++ b/docs/es/modules/admin/pages/spaces/processes/private_participants.adoc @@ -0,0 +1 @@ +include::partial$page_private_participants.adoc[] \ No newline at end of file diff --git a/docs/es/modules/admin/pages/spaces/votings.adoc b/docs/es/modules/admin/pages/spaces/votings.adoc new file mode 100644 index 0000000000..4ee78af415 --- /dev/null +++ b/docs/es/modules/admin/pages/spaces/votings.adoc @@ -0,0 +1,3 @@ += Votings + +include::admin:partial$development.adoc[] \ No newline at end of file diff --git a/docs/es/modules/admin/pages/system.adoc b/docs/es/modules/admin/pages/system.adoc new file mode 100644 index 0000000000..da7be84a79 --- /dev/null +++ b/docs/es/modules/admin/pages/system.adoc @@ -0,0 +1,106 @@ += System + +Every Decidim is multi-tenant by default. That means that you can have multiple organizations inside of your same installation. This is being used for instance for the Barcelona and Girona Provincials Governments, for offering Decidim installations to many small cities, or by the City of Barcelona, for giving service to lots of organizations (NGOs, cooperatives, etc). + +Even if you only have one Organization you also need to create one through the System Panel. It's available after you've installed Decidim, at `/system`. For instance if you domain is `example.org`, then it should be available at `http://example.org/system`. + +After you've freshly installed Decidim, you'll be redirected to the System panel log-in page: + +image::system-log_in.png[system panel log in] + +== 1. Create an admin account + +For logging in to this dashboard, you'll need to create a system admin account from your terminal: + +[source, console] +.... +bin/rails decidim_system:create_admin +.... + +You'll be asked for an email and a password. For security, the password will not get displayed back at you and you'll need to confirm it. + +== 2. Access the Dashboard + +With the email and password that you've added in the past step, you'll be able to log in. After you've logged in, you'll see an empty dashboard: + +image::system-dashboard.png[system empty dashboard] + +== 3. Create a new organization + +Inside of the system panel, you need to create your Organization through the form: + +TIP: Please mind that some of these fields can't change through the System Form, as changing them could potentially leave your database in a broken state. You can change it through the console, but you'll be on your own. + + +.System New Organization form +|=== +|Field |Type |Description + +|Name +|Required +|Name of your organization. For instance, "Decidim Barcelona". + +|Reference prefix +|Required +|The reference prefix is used to uniquely identify resources across all organizations. It's for identifying different resources inside of Decidim. For instance, "BCN". You can change how it's created this reference through xref:configure:initializer.adoc[Decidim's initializer] (see **Custom resource reference**). + +|Host +|Required +|Fully qualified domain name. For instance, "example.org" or "decidim.barcelona". + +|Secondary hosts +|Optional +|Others domains or subdomains that point to this same installation. Normally this shouldn't be used. Enter each one of them in a new line. For instance, "example.com" + +|Organization admin name +|Required +|Name of the admin account. For instance, "Admin" + +|Organization admin email +|Required +|Email for the admin account. For instance, "admin@example.org" + +|Organization locales +|Required +|You'll need to configure at least one language. Decidim is multilanguage, meaning that you can have most of the admin contents with any number of languages. For seeing other languages you'll need to configure first the xref:configure:initializer.adoc[Decidim's initializer]. + +|Force authentication +|Optional +|Check if you want to **Force users to authenticate before access organization**. That means that they don't see any published content and they only have access to the log-in form. + +|Users registration mode +|Optional +|Control how you want the login / participant register or signup to work. See below. + +|Available authorizations +|Optional +|How you want to authorize and verify that your participants are who they say they are. It depends a lot on your Organization, country, etc. See xref:customize:authorizations.adoc[Authorizations customization]. + +|SMTP settings +|Optional +|Allows you to configure different SMTP servers for every Organzation in this installation. See xref:services:smtp.adoc[SMTP configuration]. + +|Omniauth settings +|Optional +|Allows you to configure through external OAUTH providers for every Organization in this installation. See xref:services:social_providers.adoc[Social providers configuration]. +|=== + +=== Users registration mode + +==== Allow participants to register and login + +Most of the installations use this setting. Means that everyone can register a participant account and login, without restrictions, only with an email account confirmation (and you can disable that confirmation also if you want to through xref:configure:initializer.adoc[Decidim's initializer]) + +==== Don't allow participants to register, but allow existing participants to login + +This is for when you make a manual import of participants' accounts. + +==== Access only can be done with external accounts + +In the case where you have an external provider configured (like the `Omniauth settings`) and you want to have accounts from only this provider. + +== [Optional] 4. Edit an organization + +Finally, you can also Edit an organization, although some fields can not be changed as some contents in the database depends on them. + +For accessing your newly created Organization, you can do it going to the domain or subdomain that you've configured in `Host`. \ No newline at end of file diff --git a/docs/es/modules/admin/partials/components_list.adoc b/docs/es/modules/admin/partials/components_list.adoc new file mode 100644 index 0000000000..f410a9f6b6 --- /dev/null +++ b/docs/es/modules/admin/partials/components_list.adoc @@ -0,0 +1,18 @@ +The platform currently have the following official components: + +* xref:admin:components/accountability.adoc[*Accountability*]: allows to keep track of the results execution of a space. +It allows administrators to also relate them to the proposals and meetings that originated them. +* xref:admin:components/blog.adoc[*Blog*]: allows administrators to publish posts with news regarding a space. +* xref:admin:components/budgets.adoc[*Budgets*]: allows participants to vote in projects with amounts predefined. Used for +participatory budgeting processes. Allows to define different kind of rules, for instance a minimum percentage of the total budget or a minimum amount of projects. +* xref:admin:components/debates.adoc[*Debates*]: allows participants to have debates. Debates can be time limited or not. +* xref:admin:components/elections.adoc[*Elections*]: to have end-to-end auditable elections in a space. Uses the same +external system as xref:admin:spaces/votings.adoc[Votings] space. +* xref:admin:components/meetings.adoc[*Meetings*]: gatherings in person or online through videoconferences platforms. +* xref:admin:components/pages.adoc[*Page*]: static pages with multi-language support. +* xref:admin:components/proposals.adoc[*Proposals*]: contributions posted by participants which can be given support. +* xref:admin:components/sortitions.adoc[*Sortitions*]: this allows different kind of proposals to be selected randomly. +For instance the proposals could be candidates who form part of a group (such as a committee). +* xref:admin:components/surveys.adoc[*Survey*]: for conducting surveys with different kinds of questions. + +In the cases where your needs are not covered by one of the above components, you can create your own component through a xref:develop:modules.adoc[Module]. \ No newline at end of file diff --git a/docs/es/modules/admin/partials/deprecated.adoc b/docs/es/modules/admin/partials/deprecated.adoc new file mode 100644 index 0000000000..ceaa4f0f37 --- /dev/null +++ b/docs/es/modules/admin/partials/deprecated.adoc @@ -0,0 +1,4 @@ +[CAUTION] +==== +This feature is deprecated and will be removed in the future. If you really depend in this feature and can't find an alternative way of working with this, please put in touch with us at hola [at] decidim [dot] +==== \ No newline at end of file diff --git a/docs/es/modules/admin/partials/development.adoc b/docs/es/modules/admin/partials/development.adoc new file mode 100644 index 0000000000..1309f6aa16 --- /dev/null +++ b/docs/es/modules/admin/partials/development.adoc @@ -0,0 +1,4 @@ +[CAUTION] +==== +This feature is in active development. It is not ready for production use. +==== \ No newline at end of file diff --git a/docs/es/modules/admin/partials/legacy.adoc b/docs/es/modules/admin/partials/legacy.adoc new file mode 100644 index 0000000000..22c10a6058 --- /dev/null +++ b/docs/es/modules/admin/partials/legacy.adoc @@ -0,0 +1,4 @@ +[CAUTION] +==== +This section hasn't been updated. It shows the content of an old version of Decidim. You can collaborate to improving the Documentation, please put in touch with us at hola [at] decidim [dot] org +==== \ No newline at end of file diff --git a/docs/es/modules/admin/partials/page_admins.adoc b/docs/es/modules/admin/partials/page_admins.adoc new file mode 100644 index 0000000000..e4527970ba --- /dev/null +++ b/docs/es/modules/admin/partials/page_admins.adoc @@ -0,0 +1,67 @@ += Space Admins + +You can give permissions to users with special rights in a space, +so they can only have access to some of the administration pages in this space. +These roles are administrators, moderators, collaborators, or valuators. + +* Administrators: they can administer the space and change the space settings. +* Collaborators: they can see the space and its components before it's published and view the space settings. +They can't change anything. +* Moderators: they can see the reported contents of the space and hide or unhide them. +* Valuators: they can evaluate proposals. Used by participatory budgeting processes. + +To invite them, in the space's submenu, go to *Space admins* and click on *New space admin*. This depends in the kind of space +that you're, for instance for participatory processes it'd be *Process admins* and *New process admin*. + +== New space admin form + +image:spaces/admins_form.png[New space admin form] + + +.New space admin form +|=== +|Field |Type |Description + +|Name +|Required +|What is the name of the new admin. + +|Email +|Required +|What is the email of the new admin, so she can receive the invitation. + +|Role +|Required +|Which role does this admin will have in the participatory process? Can be any of Administrator, Collaborator, Moderator, or Valuator. +|=== + +== Roles + +=== Administrators + +A space administrator can administer the space and change the space settings. It can also invite new space administrators. + +image:spaces/admins_role_admin01.png[Process administrators view 01] + +image:spaces/admins_role_admin02.png[Process administrators view 02] + +=== Collaborators + +A space collaborator can only see the space before it's published. + +image:spaces/admins_role_collaborator.png[Process collaborators view] + +=== Moderators + +A space moderator can review the reported contents of the space and hide or unhide them. + +image:spaces/admins_role_moderator.png[Process moderators view] + +=== Process valuators + +A space valuator can review the proposals of the space. She can: + +* change the status of the proposals, by accepting or rejecting them +* add a monetary value to the proposals, so they can be voted with the budget component. + +image:spaces/admins_role_valuator.png[Process valuators view] \ No newline at end of file diff --git a/docs/es/modules/admin/partials/page_attachments.adoc b/docs/es/modules/admin/partials/page_attachments.adoc new file mode 100644 index 0000000000..0b7fab6042 --- /dev/null +++ b/docs/es/modules/admin/partials/page_attachments.adoc @@ -0,0 +1,77 @@ += Attachments + +Attachments allow an administrator to upload static files to a space. + +When a space is launched, it is important to provide citizens with as much information as possible about them so that they can participate with knowledge. That is why it is helpful to add files (Attachments) with the information that is considered relevant. + +Optionally, these documents can be grouped in *Folders*. For example, for a participatory process of remodeling a square, folders could be created with information about possible uses, with plans, with economic information, etc. + +They can be found on the Space homepage: + +image:spaces/attachments_folder.png[View the folder attachments in the public interface] + +image:spaces/attachments.png[View the attachments in the public interface] + +== Create a new attachment + +image:spaces/attachments_admin.png[View the attachments in the admin interface] + +For creating a new attachment of a space: + +. Sign in as administrator +. Go to the space section in the sidebar +. Click on the space Edit action +. Click on the Attachments link in the sidebar +. Click on the "New attachment" button + +image:spaces/attachments_new_form.png[Create a new attachment form] + + +.Create attachment +|=== +|Field |Type |Description + +|Attachment or image name +|Required +|What is the title for this attachment. + +|Weight +|Optional +|Which order will it have in relation to the other attachments. Having a lower number means a higher priority. For instance, if you have two categories, "Attachment a" with weight "10" and "Attachment b" with weight "0", then "Attachment b" will be first when ordering. + +|Description +|Required +|A long description explaining what this file is about. + +|Folder +|Optional +|Which folder this attachment belongs to. + +|File +|Required +|Upload the file. Guidance for file: Has to be an image or a document. For images, use preferrably landscape images, the +service crops the image. For CSV files, the separator between columns must be a comma (","). Maximum file size: 10MB. Allowed +file extensions depends in your server configuration. +|=== + +== Create a new folder + +image:spaces/attachments_new_folder_form.png[Create a new folder for attachments form] + + +.Create folder +|=== +|Field |Type |Description + +|Name +|Required +|Name of the folder + +|Weight +|Optional +|Which order will it have in relation to the other folders. Having a lower number means a higher priority. For instance, if you have two folders, "Folder a" with weight "10" and "Folder b" with weight "0", then "Folder b" will be first when ordering. + +|Description +|Required +|A long description explaining what this folder is about. +|=== \ No newline at end of file diff --git a/docs/es/modules/admin/partials/page_categories.adoc b/docs/es/modules/admin/partials/page_categories.adoc new file mode 100644 index 0000000000..8314cf9ab6 --- /dev/null +++ b/docs/es/modules/admin/partials/page_categories.adoc @@ -0,0 +1,56 @@ += Categories + +Categories (and subcategories) are used for classifying resources inside of a space. + +An administrator can define them, can be assigned to when creating resources, and then participants can filter the +different resources by these categories. For instance, they can be set up in proposals, meetings and debates. + +As an example of this mechanism in action you can see it in https://meta.decidim.org/processes/roadmap/f/122/[Propose new functionalities for Decidim software] process: + +. Administrators have defined the categories in the process. +. Participants can create proposals that have one category. +. Participants can filter by these categories and navigate among all the proposals. + +image:spaces/categories_sidebar.png[Filter categories in proposals] + +image:spaces/categories_form.png[Select a category when creating a proposal] + +NOTE: Once a category is in use it cannot be removed, as there are resources that are using it. + +Decidim has other ways to classify resources, for instance xref:admin:scopes.adoc[Scopes] and xref:admin:features/hashtags.adoc[Hashtags]. +The main difference is that Categories can be defined in a given space, Scopes are global for all the platform, and Hashtags +are defined by the participants. + +Categories can be nested, meaning that a category can have subcategories. + +== Create a new category + +For configuring a new category, go to the space admin panel and click on the "Categories" tab. + +image:spaces/categories.png[View categories in a space admin page] + +Then click in "Add category" and fill the form. + +image:spaces/categories_new_form.png[Create a new category form] + + +.Create category +|=== +|Field |Type |Description + +|Name +|Required +|What is the name for this category. + +|Weight +|Optional +|Which order will it have in relation to the other categories. Having a lower number means a higher priority. For instance, if you have two categories, "Category a" with weight "10" and "Category b" with weight "0", then "Category b" will be first when ordering. + +|Description +|Required +|A long description explaining what this category is about. + +|Parent +|Optional +|What is the parent category. +|=== \ No newline at end of file diff --git a/docs/es/modules/admin/partials/page_components.adoc b/docs/es/modules/admin/partials/page_components.adoc new file mode 100644 index 0000000000..5544cc7a1e --- /dev/null +++ b/docs/es/modules/admin/partials/page_components.adoc @@ -0,0 +1,52 @@ += Components + +include::partial$components_list.adoc[] + +To configure components, click on *Components* from the space submenu. A list will appear showing the components +that have already been configured for the space. + +image::spaces/components.png[Components of space] + +To configure a new component, click on *Add component* from the upper right part of the screen and select the type of +component you wish to configure from the drop-down menu. + +image::spaces/components_new_dropdown.png[Add a component in a space] + +== Actions + +|=== +|Icon |Name |Definition + +|image:action_manage.png[Manage icon] +|Manage +|To manage all the resources inside of a component. For instance, all the Proposals of a Proposal component, the Meetings +in a Meeting component, etc. + +|image:action_publish.png[Publish icon] +|Publish +|To publish a component. This means that the component will be visible to the public. + +|image:action_unpublish.png[Unpublish icon] +|Unpublish +|To unpublish a component. This means that the component will be invisible to the public. + +|image:action_configure.png[Configure icon] +|Configure +|To configure a component with the specific rules. Depends in the component type. For instance, in the case of Meetings: +are comments enabled, participants can create meetings, etc. + +|image:action_permissions.png[Permissions icon] +|Permissions +|To configure which xref:customize:authorizations.adoc[Authorization] will be necessary to make certain actions in +this component. For instance, in the case of Proposals, which Verification will be necessary to create a new proposal or +to give supports. + +|image:action_share.png[Share icon] +|Share +|To share privately before publishing this component. Useful for reviewing with other people inside of your organization. + +|image:action_delete.png[Delete icon] +|Delete +|To delete this component. If there are contents most of the components will not let you delete them so it doesn't break +relations with other resources. In those cases it's recommended to just unpublish the component. +|=== \ No newline at end of file diff --git a/docs/es/modules/admin/partials/page_moderations.adoc b/docs/es/modules/admin/partials/page_moderations.adoc new file mode 100644 index 0000000000..aeed3aac33 --- /dev/null +++ b/docs/es/modules/admin/partials/page_moderations.adoc @@ -0,0 +1,9 @@ += Moderation + +Moderations inside of a space work like xref:global_moderations.adoc[Global moderations]. + +The main difference is that if you want so you can invite Moderators of this specific +space and they will only have access to the reports made for +contents of this space. + +Moderators are a kind of space admins. See it for instance for xref:spaces/processes/admins.adoc[participatory processes admins]. \ No newline at end of file diff --git a/docs/es/modules/admin/partials/page_private_participants.adoc b/docs/es/modules/admin/partials/page_private_participants.adoc new file mode 100644 index 0000000000..90580396be --- /dev/null +++ b/docs/es/modules/admin/partials/page_private_participants.adoc @@ -0,0 +1,75 @@ += Private participants + +There are cases where you want to have a closed census of the participants in a space. For instance this could be a space +for a small group of people, or the members of a comission inside of a big organization. For these cases you can +use the private participants feature. + +image:spaces/private_participants.png[Private participants list] + +For inviting private participants of a space: + +. Sign in as administrator +. Go to the space's section in the sidebar +. Click on the space Edit action +. Click on the "Private participants" link in the sidebar +. Click on the "New participatory space private user" or "Import via CSV" buttons + +== New participatory space private user + +image:spaces/private_participants_new_form.png[New private participant form] + + +.New participatory space private user form +|=== +|Field |Type |Description + +|Name +|Required +|What is the name of the new participant. + +|Email +|Required +|What is the email of the new participant. +|=== + +== Import via CSV + +image:spaces/private_participants_csv_import.png[Import private participants via CSV] + +This form allows you to bulk import the participants of a space. + +It must have two columns with email in the first column of the file and the name in the last column of the file (email, name) +of the users that you want to add to the participatory space. Some tips: + +* The file should not have headers. That means that you do not have to add a column that says "email, name" +* You must avoid using invalid chars like `<>?%&^*#@()[]=+:;"{}\|` in user name. +* The separator between columns must be a comma (",") + +== Actions + +After the participants has been invited, you can resend or delete the invitation. + +image:spaces/private_participants_actions.png[Private participants actions] + +|=== +|Icon |Name |Definition + +|image:action_resend_invitation.png[Resend invitation] +|Resend invitation +|If the invitation wasn't accepted, send it again to the user + +|image:action_delete.png[Delete invitation] +|Delete invitation +|Revoke the invitation sent to the user +|=== + +== Invitation + +When a participant was invited she'll get an email with a link for accepting the invitation: + +image:spaces/private_participants_email_invite.png[Email invitation of a private participant] + +After clicking in this email, she'll have to fill a form for setting her password, accepting the Terms of Service and giving +her consent if she wants to receive newsletters. + +image:spaces/private_participants_user_registration_form.png[User registration form of a private participant] \ No newline at end of file diff --git a/docs/es/modules/admin/partials/under-construction.adoc b/docs/es/modules/admin/partials/under-construction.adoc new file mode 100644 index 0000000000..8af7720c26 --- /dev/null +++ b/docs/es/modules/admin/partials/under-construction.adoc @@ -0,0 +1,4 @@ +[NOTE] +==== +This section hasn't been written yet. You can collaborate to improving the Documentation, please put in touch with us at hola [at] decidim [dot] org +==== \ No newline at end of file diff --git a/docs/es/modules/contribute/pages/documentation.adoc b/docs/es/modules/contribute/pages/documentation.adoc new file mode 100644 index 0000000000..ba8b6938b5 --- /dev/null +++ b/docs/es/modules/contribute/pages/documentation.adoc @@ -0,0 +1,19 @@ += Documentation + +To contribute to the documentation (for instance, this same page that you're reading), you can do it through two ways: editing on GitHub directly or editing locally. + +== Edit on GitHub + +This is the recomended way if you just want to make a quick fix (for instance, a typo or some clarification on a single page). For doing this you'll need to click in the "Edit this page" link in the top of every page. + +image::documentation-edit.png[Edit this page link] + +It'll open the page for editing in GitHub interface and after you've finished it'll guide you to make a Pull Request so maintainers can review your contribution. + +== Edit locally + +If you want to propose lots of changes in the documentation, or if you want to review your changes locally before sending them because you want to review things like formatting, you can install the environment for having the documentation site locally. + +Then you'll need to fork the repository, make a branch and propose your changes as a Pull Request so maintainers can review it. As you see this can be a hassle if you want to make small changes, so the prefered way would be to do it initially with the "Edit this page" link mehod. + +Read the full instructions on how to install this documentation website locally in the https://github.com/decidim/documentation/[Decidim Documentation GitHub repository]. \ No newline at end of file diff --git a/docs/es/modules/contribute/pages/governance.adoc b/docs/es/modules/contribute/pages/governance.adoc new file mode 100644 index 0000000000..c1617e40e9 --- /dev/null +++ b/docs/es/modules/contribute/pages/governance.adoc @@ -0,0 +1,45 @@ += Governance + +== About the code + +For making new features, you can made a https://decidim.org/modules[new module] for your own application. If you want to publish it on the website, you can https://decidim.org/contact[send us an message]. + +If you want to add a new feature or a change on the codebase, the process is: + +. Suggest your change in https://meta.decidim.barcelona/processes/roadmap[Metadecidim] +. Wait until Product Team reviews and accept the feature, as it's important to be consistent with the rest of the software, comply with the Social Contract, etc. +. Then you can make the Pull Request. +. The PR will get reviewed by: +.. Product Team: will review the functionality +.. Mantainers: will review the code quality + +image::workflow-features.png[new feature workflow process] + +Some things that you need to take in account about this process: + +* If you make the PR without Product Team approval then you could get rejected (after investing lots of time on developing). +* Proposals can receive endorsements, although these are not decisive for a proposal to be included on the roadmap. The endorsements serve as indicators of the interest of the proposal or the need it covers. The comments to the proposals are also enabled, to collectively elaborate the initial idea and bring it to a productive result. +* Every Thursday the Product team reviews all new proposals that have been published the previous week +* If no funding is available it is included in the backlog of the corresponding component or module. + +== About the organization + +Decidim was initially created by the city of Barcelona, but quickly it evolved through the help of Localret and other entities and administrations from Catalonia, such as Diputació de Barcelona (Barcelona Provincial Government), and other catalan cities: Terrassa, Sabadell, Gavà, L'Hospitalet de Llobregat, Badalona and Sant Cugat. You can read more about the history in xref:understand:about.adoc[About]. + +Since our first version in 2017 we've detected that it's necessary for the sustainability of the project to not depend in a given institution such as the city of Barcelona, as that could be problematic for the future. Other open source projects made by public institutions that didn't have a strong community or a sustainability strategy get shut down or slowly die without funding. + +Making this kind of open source software from the public institutions and through public contracting law is really difficult and one other issue that we want to tackle with this new organization is about having resources for contracting in-house developers. + +With all this on mind, we started with the https://meta.decidim.org/processes/decidim-gov[Metadecidim Governance participatory process] starting in November 2017: + +**** +A process open to the entire Community regarding the decision-making and representative bodies that we must equip ourselves with in order to build an autonomous, transparent and democratic organisation for the Decidim Project. + +The objective is to define an organizational and representation system (internal organs and how they are chosen) that can be transformed into an autonomous entity or association from which the whole community participates and can manage the project at multiple levels + +The Decidim project needs a system of its own governance that allows it to enjoy sufficient autonomy to continue growing in a sustainable manner, which is why it has to be provided with decision-making and conflict resolution bodies. +**** + +As a result of this participatory process, on February 2019 the Decidim Free Software Association (_Associació de Software Lliure Decidim_ in catalan) was created. You can read more about the https://meta.decidim.org/assemblies/general-assembly-association[General Assembly of the Decidim Association]. + +On 2021, the Decidim Association https://decidim.org/blog/2021-02-09-the-government-of-catalonia-barcelona-city-council-and-the-free-software-association-decidim-sign-a-collaboration-agreement-to-promote-democratic-participation-with-free-and-open-technologies/[has signed a collaboration agreement with the Government of Catalonia and Barcelona City Council to promote the development of the platform]. \ No newline at end of file diff --git a/docs/es/modules/contribute/pages/index.adoc b/docs/es/modules/contribute/pages/index.adoc new file mode 100644 index 0000000000..d16f3f107a --- /dev/null +++ b/docs/es/modules/contribute/pages/index.adoc @@ -0,0 +1,9 @@ += Contribute + +You don't need to know how to code to contribute to Decidim, just having available time and attitude. + +Learn more about https://github.com/decidim/decidim/blob/develop/CONTRIBUTING.adoc[How to contribute to Decidim] in GitHub. + +* xref:contribute:governance.adoc[Governance] +* xref:contribute:translations.adoc[Translations] +* xref:contribute:documentation.adoc[Documentation] \ No newline at end of file diff --git a/docs/es/modules/contribute/pages/translations.adoc b/docs/es/modules/contribute/pages/translations.adoc new file mode 100644 index 0000000000..a06acc9fb4 --- /dev/null +++ b/docs/es/modules/contribute/pages/translations.adoc @@ -0,0 +1,55 @@ += Translations + +For translating Decidim we use a web platform called Crowdin, accesible in https://translate.decidim.org/ + +At the moment is translated in more than 18 languages: Catalan, Czech, Dutch, Finnish, French, German, Greek, Hungarian, +Italian, Japanese, Latvian, Norwegian, Polish, Portuguese, Romanian, Slovak, Spanish and Swedish. + +As Decidim is a living and in constant development process is necessary to maintain, improve and specially update the translations when there's a new release. For doing so: + +== Existing language + +You can ask for permission in the language of your choosing, for instance for Esperanto: + +image::translation-join-01.png[Join to Decidim Translations] + +image::translation-join-02.png[Message in Join Decidim Translations] + +== New language + +If your language isn't created yet, then we need to do it as it's necessary to make some adjustments. You need to contact us by the https://decidim.org/contact[contact form]. + +== How it works + +If you're curios, in the technical level we have a bot (the great decidim-bot) that periodically makes a PR to the relevant branches (last releases and develop). + +image::translation-bot.png[Decidim Bot in GitHub] + +If you want to try a new translation before it gets released, then you can do so by pointing to the xref:install:update.adoc#_from_git_repositories[relevant branch], for instance `chore/l10n/develop`. + +=== Checking locales + +You can make sure new translations are complete for all languages in your application with: + +[source,console] +---- +bin/rails decidim:check_locales +---- + +By default this will check against develop branch. If you're pointing to other branch in your Gemfile, then you can use the TARGET_BRANCH environment variable: + +[source,console] +---- +TARGET_BRANCH=release/0.22-stable bin/rails decidim:check_locales +---- + +Be aware that this task might not be able to detect everything, so make sure you also manually check your application before upgrading. + +If you have 100% in your Crowdin language then you can be pretty sure that everything is translated. + +== Rules + +* All the translations always start from English. If you want to propose changes to the English language then you need to do it in the Ruby on Rails translations files directly (like `decidim-core/config/locales/en.yml`) +* For every language (except English), you can't do changes in the Ruby on Rails translations files directly (for instance `decidim-core/config/locales/es.yml`) as these translations could get invalidated by decidim-bot in the future. See "How it works" section. +* We try to speak of Participants instead of Users when it's possible +* On Spanish and Catalan we follow https://en.wikipedia.org/wiki/Gender_neutrality_in_Spanish[Gender Neutrality] \ No newline at end of file diff --git a/docs/es/modules/features/pages/components.adoc b/docs/es/modules/features/pages/components.adoc new file mode 100644 index 0000000000..2e847c7acf --- /dev/null +++ b/docs/es/modules/features/pages/components.adoc @@ -0,0 +1,183 @@ += Components + +:page-partial: + +*Components* are participatory mechanisms that allow interactions among the platform Participants within each of the Participatory Spaces. + +== Proposals + +*Proposals* are Decidim's most important component. They can be defined as the minimum decision unit. + +Proposals can be made by any of the following *types of creators*: + +* by the *official organisation* managing the platform +* by registered *individual participants* +* by a *group* of registered participants +* from a *meeting* as a result of a discussion or collective deliberation + +Once a proposal has been published, it can be *moderated*, *amended* or *withdrawn* by its author(s). + +Proposals can be *accepted*, *rejected* or kept in an *evaluating* state. Proposals can also be imported to a new phase, so they can be re-written or elaborated in different stages. + +Other features associated with proposals include: + +* *Proposal creation wizard*: While a proposal is being created, the participant is accompanied through the process, which is divided into different steps, with contextual help and previews before the proposal is published. +* *Modification and withdrawal of proposals*: a proposal’s author can modify and/or withdraw it before the support stage opens. +* *Version control*: this makes it possible to keep a record of all the changes made to a proposal, as well as code-generation to verify the proposal’s integrity. +* *Detecting similarities*: This allows anyone making a new proposal to find similar ones previously made on the platform, thereby avoiding duplications. +* *Connections between proposals*: proposals made can be connected to one another using links in the comments section, showing related proposals as cards and giving notifications on the existence of a new connection. +* *Endorsement of proposals*: participants and collectives can endorse proposals and such public endorsement will be shown within the proposal. Followers of the endorsers will be notified that the followed endorsed the proposal. +* *Amendments*: any participant can edit a proposal’s text and a sub-proposal will be created in Amendment Mode (as Pull Request in Github). This sub-proposal can gather endorsements and supports. Besides, the proposal’s author can accept or reject the amendment (or sub-proposal). Where a sub-proposal is rejected, its author can convert it into an official proposal. +* *Collaborative draft for proposals*: Decidim permits collaboration and co-creation over proposals. It incorporates the following features: +** Creating rough drafts with numerous authors. +** Listing of collaborative drafts +** Comments in drafts +** Asking for help from and accepting the help of other collaborators + +== Endorsements + +include::admin:partial$development.adoc[] + +Participants can endorse proposals. Such endorsements can be interpreted as votes, signatures or any other format that demonstrates a positive agreement in accordance with the political will itself. +Participants can issue a single endorsement for each proposal they wish. The number of endorsements can be limited for each participant. +There is no limit to the number of proposals that can be endorsed. + +If the endorsement is a vote, it is possible to configure from the administration panel the *display settings for the voting results*, either during or solely after the voting period. + +There is a *special form used to vote for participatory budgets* which allows participants to vote by "spending" an amount equivalent to the budget in question among the proposed projects. The number of votes is limited here by the selected projects’ accumulated spending amount. + +== Results + +The *results* component is used to turn proposals into results and give official responses to them. +It is possible to merge various proposals into a single result or to create different results related to the same original proposal. + +Results gather information about the original proposal(s), like the meetings where they were created, discussed and debated and the endorsements received. + +== Debates + +Discussions and debates can be opened on questions and specific issues established by administrators or participants. + +== Surveys + +The *surveys* component can be used to design and publish surveys and to display and download their results. + +* *Survey configuration tool*: allows administrators to create questions and answers (open, test types, multiple selection etc.) and launch the survey, as well as download the responses in CSV format. +* *Survey interface for participants*: allows participants to respond to survey questions. + +== Sortitions + +The *sortition* component allows to select a number of proposals (e.g. candidates for a jury) with random, yet reproducible, procedures that guarantees non-biased and uniform distributions. + +== Informative pages + +The *pages* component is used to create informative pages with rich text formatting, embedded pictures and videos. + +== Blogs + +The *blog* component makes possible the creation of posts or news associated with a participatory space, and to navigate them chronologically. + +*Comments associated* with blog entries will be treated like the platform’s other comments, as described below. + +== Newsletter + +The *newsletter* component makes possible to send emails to everyone registered in the platform or, more selectively, to those who participate in a specific space who have agreed, under the terms and conditions of use, to receive this information newsletter email. Personalised emails are sent out addressed directly to the name of the user in the language chosen by the user by default. + +Participants will automatically and directly be able to *unsubscribe* through the email itself by clicking on a link in it and it will also be possible to *track the number of visits* generated by the newsletter. + +== Meetings + +The *meeting* component offers organizations and participants the opportunity to: + +* convene meetings, defining its structure and content +* *categorise* the meeting within a space. +* create *proposals associated with meetings* +* *publish* minutes +* upload *photos* of the meeting + +Meetings relating to a participatory space (a specific process or an assembly) can be shown on a *map* and be *ordered by date or category*. Besides, all the meetings can be shown in *calendar mode*, with the possibility of exporting them to a mobile phone calendar or other apps. + +Some of the meeting component’s advanced features include: + +* *Registration and attendance system*: +** This allows to manage the *type of registration* (open and automatic, closed and accessible only to certain types of participants, etc.), to establish the **number of places **available for attendees, to reserve a place, to do *manual registrations*, sent out *Invitations*, to define the *conditions* that need to be accepted in order to be able to attend the meeting (e.g. image rights release), and *registering the attendance* of participants. +** It allows participants *to register* for a meeting, request *a family reconciliation service* (playroom, childcare space) and to obtain an *accreditation code* for attending at a meeting. +** Those registered who have attended a meeting will have *special access* enabling them to evaluate the meeting or make comments, etc. +** Participants or administrators will be able to receive *notifications* on registration-period openings, the number of places remaining for registrations, reminders of meetings, and the publication of minutes. +* *Managing agendas*: allows to define the duration of meetings, to create agenda’s items and sub-items, title, content, and estimated duration. Participants can propose agenda items. +* System for *drafting, publishing and validating meeting minutes* [IMPORTANT NOTE:This is currently implemented differently]: +** Minutes can be uploaded in video, audio or text format. +** Minutes in text mode are associated with a *collaborative writing board* integrated into Decidim. +** Minutes go through 4 *stages of preparation*: 1. Collaborative writing during the meeting; 2. Preparing the official draft of the minutes; 3. Draft-amendment stage; 4. Publication and final validation of the minutes. +** Minutes can be *commented on* using the comments component. +** *Accompanying documents* may also be added to the minutes. +* *Auto-convening*: verified participants will be able to convene meetings directly through the platform , with support from a certain number of other participants, the meeting will be publicly activated and convening participants will have access to the administration panel [IMPORTANT: not implemented yet] +* *Displaying and exporting meetings*: meetings can be displayed in map mode (for spaces or generally on the platform) or in calendar mode, and can be exported to agenda and calendar managers (in iCalendar format). + +== Search engine + +*The search engine* allows participants to perform searches across all of the platform’s indexable content, both generally and specifically, by searching within a specific participatory process or inside its components (proposals, results, etc.), through advanced searches. + +== Secondary components + +There are other components that only exist on top of basic components are. These components are: + +=== Comments + +The *comments* component enables participants to take part on a deliberative process on an issue or proposal. +Participants can respond to them, endorse them and receive notifications about responses. +Comments can be *ranked* in chronological order or by number of votes in favour. + +=== Participatory texts + +Participatory texts are defined as an ordered collection of proposals that make up a document with complete text. Participation in the text stems from interaction with the proposals that form it. This component basically allows three operations: + +* *Breaking down a text document into ordered proposals* from a document in ODT, XDOC, MarkDown and HTML formats. If the text is structured in sections and subsections, ordered proposals will be created from the lower level subsection; if the text is not structured, a proposal will be created for each paragraph of text. The interface allows proposals to be re-edited, merged, separated, given titles, etc. +* *Composition of proposals in a unified text*: based on a series of proposals, these may be ordered and generate a unified and downloadable text. +* *Viewing and interacting* with documents composed of proposals: A collection of proposals will be shown as a unified text and may be amended or comments can be added in the margin. + +=== Accountability + +The *accountability* component works like a project management system built into the platform. . It offers the possibility of: + +* subdividing results into projects or sub-projects +* defining and applying progress in implementation statuses (0% to 100% implemented) around their implementation +* displaying the extent of the results’ implementation grouped by categories and scopes + +Results, projects and statuses can be updated through a CVS, or manually by the administration interface. + +=== Conferences + +The *conference* component allows an organization to join up a series predefined meetings (chats, workshops etc.) related to a participatory space. + +Configuration settings include: + +* Conference-page generator, which enables the creation of an *internal website* with information about the event. +* The option to generate an *interactive and downloadable programme* on the event (where there are guest speakers, it will include their name, position, organisation, a small biography and links to other websites). +* Email *invitations*. +* Registration system +* *Automatic diploma and certificates of attendance creation* for those who request it, through a support panel that an administrator can verify. +* Links to the event *video and materials* platforms in the programme and documents. +* Automatic links to digital-media websites covering the event. +* The ability to following events through *social networks* (e.g. by incorporating a Twitter feed). + +== Participatory Spaces and Components + +*Participatory Spaces* and *Components* can be combined in different ways. +For example, the various phases of a Participatory Budgeting Process (Participatory Space) can combine *Components* like this: + +1. At an early phase public *Meetings* can be opened for citizens to analyze different needs classified by districts. +1. In turn these *Meetings* can lead to the design of a *Survey*. +1. The *Survey* results can then be used to define a set of categories for projects to be proposed. +1. The *Proposal* component can then be activated for Participants to create and publish their projects as solutions to the identified needs. +1. These *Proposals* can then be commented and, after two weeks of deliberation, *voting* can be activated to select among the projects with a budget-expenditure system. +1. Participants can then be called to a public *Meeting* to evaluate the results. +1. An assessment *Survey* can be launched afterwards for those who could not attend the *Meeting*. +1. Finally, the *Accountability* component may be activated to monitor the degree of execution of the selected projects, and people can comment on it. + +== Displaying components: Cards + +Component items have their individual page but are also displayed as *cards* throughout the platform. + +[#card-anatomy-fig] +._Decidim's proposal card anatomy._ +image::card-anatomy.png[] \ No newline at end of file diff --git a/docs/es/modules/features/pages/general-description.adoc b/docs/es/modules/features/pages/general-description.adoc new file mode 100644 index 0000000000..c54b27a835 --- /dev/null +++ b/docs/es/modules/features/pages/general-description.adoc @@ -0,0 +1,63 @@ += General description and introduction to how Decidim works +:page-partial: + +http://decidim.org[Decidim], from the Catalan for "let's decide", is a digital infrastructure for participatory democracy, built entirely and collaboratively as free software. More specifically, Decidim is a web environment (a _framework_) produced in _Ruby on Rails_ that allows users to create and configure a website platform or portal, to be used in the form of a social network, for democratic participation. The portal allows any organization (local city council, association, university, NGO,trade union, neighborhood or cooperative) to create massive democratic processes for strategic planning, participatory budgeting, collaborative regulatory design, urban spaces design and elections. It also enables the organization of in-person meetings, signing up for them, the publication of minutes, proposing points for the agenda and receiving notifications of the results. Decidim can also help organizing governing bodies, councils or assemblies, the convening of consultations and referendums or channeling citizen or member initiatives to impact different decision making processes. All together Decidim makes possible to digitally structure a complete system of participatory democratic governance for any organization. + +To understand in detail how Decidim operates, a distinction must be made between participatory _spaces_ and _components_ (see <>). + +[#functional-architecture-fig] +._Summary diagram of Decidim's functional architecture showing a combination of components in participatory spaces. The "Vote*" component allows a variety of voting systems, expressions of support or allegiance for a proposal._ +image::functional-architecture-en.svg[width=2000] + +* *Participatory spaces.* These are the frameworks that define how participation will be carried out, the _channels_ or means through which citizens or members of an organization can process requests or coordinate proposals and make decisions. _Initiatives_, _Processes_, _Assemblies_ and _Consultations are all participatory spaces. Specific examples of each of these include: a citizen initiative for directly changing a regulation (_Initiative_); a general assembly or workers’ council (_Assembly_); a participatory budgeting, strategic planning, or electoral process (_Processes_); a referendum or a call to vote “Yes” or “No” to change the name of an organization (_Consultation_). +* *Participatory components.* These are the participatory _mechanisms_ that allow a series of operations and interactions between the platform users within each of the participatory spaces. The following are participatory components: _comments, proposals, amendments, votes, results, debates, surveys, sortitions, pages, blogs, newsletters_ and _meetings_. Other components that build on top of basic components are: _participatory texts_, _accountability_ and _conferences_. + +[#spaces-components-fig] +._Decidim displays participatory spaces on the top menu (dark) and components are displayed on the bottom menu (white)._ +image::spaces-components.png[] + +The ways in which spaces and components interact is the following. Users of the platform (participants) interact through participatory mechanisms known as components which afford a variety of features for the various participatory _spaces_. In other words, participatory _spaces_ such as _Initiatives_, _Assemblies_, _Processes_ and _Consultations_ have components at their disposal which work together as participatory mechanisms. The more notable components include in-person _meetings_, _surveys_, _proposals_, _debates_, _results_ and _comments_. So, for example, the various phases of a participatory budgeting process can combine components in the following way: at an early phase public meetings can be opened for citizens to analyze different needs classified by districts. In turn these meetings can lead to the design of a survey. The survey results can then be used to define a set of categories for projects to be proposed. The proposal component can then be activated for participants to create and publish their projects as solutions to the identified needs. These proposals can then be commented and, after two weeks of deliberation, voting can be activated to select among the projects with a budget-expenditure system. Participants can then be called to a public meeting to evaluate the results, and an assessment survey can be launched afterwards for those who could not attend the meeting. Finally, the accountability component may be activated to monitor the degree of execution of the selected projects, and people can comment on it. What makes Decidim particularly powerful is this combination of components within spaces, which provides an organization with a complete toolkit to easily design and deploy a democratic system and adapt it to the organization's needs. + +Decidim's top navigation bar displays the different types of active *spaces* of the platform. *Processes* is a space that allows to create, activate/deactivate, and manage various participatory processes. These are distinguished from other spaces by being structured in different phases within which all of the components can be incorporated. Examples of participatory processes are: an election process for members of a committee, participatory budgeting, a strategic planning process, the collaborative writing of a regulation or norm, the design of an urban space or the production of a public policy plan. *Assemblies* is a space that offers the possibility of setting decision-making bodies or groups (councils, working groups, committees, etc.) that meet up periodically, detailing their composition, listing and geolocating their meetings, and allowing to take part in them (for instance: attending if the seating capacity and nature of the assembly so permits, adding items to the agenda, or commenting on the proposals and decisions taken by that body). *Consultations* is a space that makes it possible to coordinate referendums, trigger discussions and debates, get voting results published; it can be connected to a secure e-voting system. *Initiatives* is a space that allows participants to collaboratively create initiatives, define their trajectory and goals, gather endorsements, discuss, debate and disseminate initiatives and define meeting points where signatures can be collected from attendees or debates opened to other members of the organization. Initiatives is a special kind of space by which members of the organization can trigger actions that are generally restricted to elected bodies or platform administrators, by collecting (digital) signatures. The organization can define the types of initiatives and set up the number of signatures that are required to trigger the expected result (e.g. to call for a consultation). + +The *components* (also called features) are displayed as a second level menu with white background within spaces (as displayed in <>). The *collaborative draft* for proposals facilitates the collaborative creation of proposals as well as the monitoring and control of changes throughout the process. The *proposals* component allows a user to create a proposal using a creation wizard, compare it with existing ones, publish it in the platform and include additional information like geolocation or attached documents and images. This component also makes possible to navigate, filter and interact with a set of proposals. The proposal component has plenty of configuration options, and different features can be activated or de-activated in time. One such feature is *voting* or *support*: it offers organizations the possibility of activating different voting or support systems around proposals: unlimited, limited to a given threshold, weighted, cost-based, etc. Proposals can also be imported to a new phase, so they can be re-written or elaborated in different stages, where they can also be subject to *amends* which can be voted separately, accepted and merged or rejected, to improve proposals democratically. The *results* component is used to turn proposals into results and give official responses concerning their acceptance or rejection, merging various proposals into a single result or creating different results related to the same original proposal. The *accountability* component offers the possibility of subdividing results into projects, defining and applying progress statuses around their implementation, as well as displaying the extent of the results’ implementation grouped by categories and scopes. In this sense the accountability component works like a project management system built into the platform. The *surveys* component can be used to design and publish surveys and to display and download their results. The *sortition* component allows to select a number of proposals (e.g. candidates for a jury) with random, yet reproducible, procedures that guarantees non-biased and uniform distributions. The *comments* component enables users to add comments, to identify the comment as being in favor, against or neutral in relation to the commented object, to vote comments, respond to them and to receive notifications about responses. The *participatory texts* component can be used to convert lengthy text documents into various proposals or results and, vice versa, to compose and display a unified text based on a collection of proposals or results. This makes possible to work with a full document as continuous text in participatory manner. The *pages* component is used to create informative pages with rich text formatting, embedded pictures and videos. The *blog* component makes possible the creation of posts or news, and to navigate them chronologically. The *meeting* component offers organizations and participants the opportunity to convene meetings, determine their location and time, registration and management of attendees, to define the structure and content of the meeting as well as publishing the minutes, and the resulting proposals. The *conference* component allows an organization to create a website for a big event by joining up a series predefined meetings (chats, workshops etc.), putting together a unified program and managing attendees. The *newsletter* component makes possible to send emails to everyone registered in the platform or, more selectively, to those who participate in a specific space. + +Participants can carry on different *types of actions* within the platform: + +[start=0] +. They can *navigate* and search for information +. They can *create* contents of different types (e.g. proposals and debates). +. They can *vote, support or sign* all three modes allow for participants to aggregate their preference or will for a specific consultation question, proposal or initiative respectively (the difference between these three types of actions involve different levels of security and anonymity: signatures can be audited and attributed to a participant, supports cannot, in order to prevent coercion, while votes involve higher cryptographic guarantees than supports). +. They can *comment* on any object of the platform (proposals, debates, results, sortitions, etc.). +. They can *endorse* any content, meaning that they can publicly declare they support it or find it relevant, with the participants following it then receiving notifications. +. They can *follow* other participants, a participatory process, an initiative, a specific proposal, etc. and receive notifications. +. They can *sign up* for a meeting. +. They can also *share* and *embed* content out of the platform, sharing the link to other social networks and embedding content on other sites. + +Component items (e.g. a proposal, a blog post, a meeting) have their individual page but are also displayed as *cards* throughout the platform, cards being a major design interface to interact with components. <> displays a proposal card with the different types of data and interactions identified within the card. + +[#card-anatomy-fig] +._Decidim's proposal card anatomy._ +image::card-anatomy.png[] + +The users who participate in Decidim can be grouped into three different categories: + +* *Visitors* have access to all of the platform's content without having to sign up or provide any information. +* *Registered* participants can create content and comments, sign-up for meetings, endorse content, follow other participants and objects of the platform, customize their profile and receive notifications, mentions and private messages. By choosing a username and password, accepting the user agreement, and providing an email account (or using an account for several social networks) participants become registered. Registered participants can also have their account officialized (meaning their username is accompanied by a special symbol indicating they really are who they claim they are on their profile). +* *Verified* participants can make decisions. In order to fall under this category they must first be verified as members of the organization, citizens of the municipality, or constituents of the decision-making group (an association, community, collective etc.). Decidim offers different ways to carry out this verification. Once verified, participants will be able to take decisions by supporting proposals, signing initiatives and voting in consultations. + +Administrators can *manage permissions* for registered or verified users selectively. For example proposal creation can be activated for both registered and verified users but supports to proposals only for verified users. It is also possible (although rarely recommended) to consider all registered users as verified and to grant them decision making powers. + +There are different types of administrators: *administrators* of the whole platform or of specific spaces and components, they can also be *moderators* (with the exclusive power of moderating proposals, comments or debates) or *collaborators* that can read unpublished content, create notes and responses to proposals. + +Participants can register as an *individual* or as a *collective* (associations, working groups, etc. within the main organization). User *groups* might also be created so that individuals can be associated to a *group*. Decidim allows participants belonging to such a group to express or act individually or embodying the group identity: when an action is carried the platform prompts the participant to choose wether she wants to act as herself or as the group she belong to. + +Participants can not only navigate the content of Decidim through the top menu and move down the architectural hierarchy, from a space to its different components; they can also get information through the *search engine*, or via *notifications*. Participants can also talk to each other by internal messaging or *chat*. + +The participant's *profile* makes possible to read notifications, manage followers, and monitor different gamification and engagement badges. + +The *home page* of the platform is fully customizable: it can display different types of banners, call-to-action buttons, it can also display statistics and interactive visualizations, activity streams, and maps with the upcoming meetings. + +The content of the platform can be classified by different criteria. A participatory space and its contents (e.g. a participatory process or the proposals within) can be (independently) assigned a *scope*. Scopes are defined for the whole platform, and they can be thematic or territorial (for example, an assembly can be assigned to a specific theme or subject, like "ecology", and to a specific territory, like a district within a city). Content within a space-instance can be assigned to a *category* or sub-category (e.g. topics) that are specific for such a space-instance. For example, the categories "sport facilities", "parks" and "schools" can be created for a participatory budgeting process, and proposals will be assigned to these categories. *Hashtags* can also be freely created and introduced in the body text almost anywhere in the platform (proposals, debates, comments, process description, etc), both by participants and administrators, to classify content and make it searchable. + +Unlike other existing platforms, Decidim’s architecture is *modular*, *scalable*, easy to *configure*, and *integrated* with other tools or apps (data analysis, maps, SMS, mail, social networks, etc.). The platform has been designed in such a way that processes, assemblies and mechanisms can be set up easily and deployed from an administration panel. No knowledge of programming is required to install, configure and activate it. The participatory spaces and components can be developed, activated and deactivated independently. \ No newline at end of file diff --git a/docs/es/modules/features/pages/general-features.adoc b/docs/es/modules/features/pages/general-features.adoc new file mode 100644 index 0000000000..176164832f --- /dev/null +++ b/docs/es/modules/features/pages/general-features.adoc @@ -0,0 +1,77 @@ += General features + +:page-partial: + +Below, we will outline a series of the platform’s general features and characteristics which do not appear in the spaces or components, or in the features directly associated with participants. + +== Installation and settings + +Decidim **can be easily installed **using the command prompt in any GNU/Linux server with the following installed services: PostgreSQL 9.4+, Ruby 2.4.1, NodeJS with yarn (JavaScript dependency manage), ImageMagick and PhantomJS. An automatic installation script allows you to deploy the whole dependency system, libraries, databases and other automatically required services in Heroku or Docker [feature expected for 2018Q4]. + +The portal’s *settings* are **customisable **in the following fields that are filled out on a form from the administration panel: Name of the portal, social network profiles (Twitter, Facebook, Instagram, YouTube, Github); brief description; welcome text; default language; home image; the organisation’s logo; favicon; reference prefix (unique identifier that will apply to the portal’s elements) and the organisation’s URL. + +== Integration with other services and compatibility/creation of additional services + +Decidim can be easily integrated with the following services that can be installed or configured with Decidim: + +* *OpenStreetMap*: to show events and proposals with geo-location +* *Piwik*: website traffic analysis +* *Pad*: collaborative real-time writing boards (technology to be determined) +* *Digital identity and signature*: integration with OAuth2 digital-identity management system, systems based on blockchain and recognised institutional digital identity and signature management systems. +* *Distributed filing system*: Disseminating or copying proposals or other elements from the platform in a distributed filing system (blockchain or IPFS type) [Missing feature]. +* *Microblogging*: integration/compatibility with a standardised and open microblogging protocol/service such as GNU Social or StatusNet type for participants’ activities (proposals, observations and messages) [Missing feature]. + +Decidim automatically generates the following services besides the ones that can be browsed on the website or accessed through an API: + +* *SMTP*: sending emails. +* *Calendar*: integration and compatibility with calendar-management systems and automatic creation and updating of events calendars, etc. + +== Multitenancy + +The multitenancy of the platform can be used on the basis of a single installation. In other words, a single instance of Decidim software allows to deploy as many portals (tenants) as you want under specific settings for each of the tenants. That way an organisation can create participatory portals for its sub-organisations or various organisations can share a server and reduce the maintenance costs of its portals. + +== Multi-language + +Decidim is a *multi-language* platform. Its available languages will be configured during its installation. Menus, administrative forms and, generally, the platform's fixed texts are available in several languages (Spanish, Catalan, Basque, Italian, French, Dutch and Finnish). A **collaborative translation **system in https://crowdin.com/project/decidim enables new languages to be incorporated into the platform. + +As for content, once the official languages of the instance have been set during the installation, all the content that is created from the administration panel has the option of being generated in these languages. The administration panel allows *content to be managed in several languages* through tabs. The content generated by users is displayed on the platform in a single language (the one chosen by the participant through the language selector in the upper part of the menus or automatically through its browser's language settings). + +== Statistics, open data and downloads + +Besides the application programming interface (API) which automatically provides access to public data, Decidim’s home page features a *general statistics table* with the following fields: number of participants, processes, proposals, results, meetings, observations and votes. + +Another *statistics table for each participatory process* shows the number of meetings, proposals, votes and results of a specific process. + +The administration panel lets you **export the proposals, results and observations **of a participatory process in CSV and JSON format and responses to surveys for processing and/or integration with other management systems. Participants can **download the results of a participatory process and the extent of its implementation **through a CSV file. + +Decidim also has a **data-display component **at its disposal on the platform’s general level and on a specific level (showing data from a specific Participatory Space) [Feature expected for 2018Q2-3, AjB-Lote2Mod4]. The following are included among the graphics that are displayed: + +* **Interactive graphics **in the form of a time line showing the development of the various components’ counters. +* *Heat map* of all the meetings, proposals or other content with geo-location tags. +* **Interactive diagrams **(bar or pie charts) with the results of a process (amounts of each of the participatory budget projects, filter by category and status of the proposals - whether selected or not, etc.) + +All of these displays are accompanied by an **option for downloading data **in CSV format [Feature expected for 2018Q2-3, AjB-Lote2Mod4]. + +== API, adaptable website design and mobile app + +Decidim has an application programming interface or API which is a series of independent service calls and data from Decidim's website interface. This allows third parties to develop services on the platform, automatically release data or develop new interfaces, or integrate other services with decidim. + +The API comes with *documentation* and a *formal participatory ontology* [Not completed] + +Decidim's website *design* is completely *adaptable* (_responsive_), using _mobile-first_ design philosophy (designed first for mobiles and later extended to desktop systems and tablets). + +Both the website's design and the API enable the development of mobile apps for Decidim, and a *Mobile App* is expected to be developed soon. + +== Content-classification systems + +As for content classification, the following to be distinguished and adjusted in Decidim: fields, categories and labels (or tags). + +*Scopes* are generic throughout the platform and divided up into *territorial* and **topic **types. Territorial areas, once defined, allow the spaces’ elements to be classified by territory (e.g. if a process or a body or an initiative affects a district or two, the entire city, a region or country, depending on the organisation). Topic areas are likewise defined for the entire platform and allow classification of the various elements of the participatory spaces. + +*Categories and subcategories* are used for classifying content within the various spaces and are defined for each of the levels of the spaces. So, for example, a participatory process may include several categories and subcategories (the process administrator defines them) whereas the process’ meetings, surveys, proposals and other components can be classed under these categories. + +In contrast to fields and categories, *labels* or tags are cross-cutting and freely defined by participants and can apply to any level or component. Labels can be created, embedded and defined in the administration panel. A label-suggestion system allows the people taking part to choose labels similar to the ones that are they are suggesting for labelling any of the platform's elements. Elements can be browsed by labels and the most popular labels displayed. + +== Contextual help system, usability and evaluation tests + +Decidim includes *editable contextual help* for guiding individual and administrative participants in using the platform. It also includes a **automatic evaluation surveys** to be conducted on participants for the purposes of identifying usability and participatory-procedure errors and improving the democratic quality experience of the software . \ No newline at end of file diff --git a/docs/es/modules/features/pages/participants.adoc b/docs/es/modules/features/pages/participants.adoc new file mode 100644 index 0000000000..305e9fafeb --- /dev/null +++ b/docs/es/modules/features/pages/participants.adoc @@ -0,0 +1,53 @@ += Participants + +:page-partial: + +*Participants* of Decidim can be grouped into three different categories: + +* *Visitors* have access to all of the platform's content without having to sign up or provide any information. +* *Registered* participants can submit proposals and comments, sign-up for meetings, endorse content, follow other Participants and receive notifications, mentions and private messages. +Users may register *directly* on the platform or through gateways of other *social networks* (Facebook, Twitter or Google+). To register directly, users will need to associate a email account and a password to the user-account. + Registered participants can also have their account officialized (meaning their username is accompanied by a special symbol indicating they really are who they claim they are on their profile). +* *Verified* participants can make decisions. Decidim offers different ways to carry out this verification. + +Administrators can *manage permissions* for *Registered* users and *Verified* users selectively. For example, _proposal creation_ can be activated for both Registered and Verified users but _supports to proposals_ only for Verified users. + +== Public registration of administrative activity + +The manual verification of participants, as well as other administrative actions can create vulnerability or may enable the administrators to use the platform in an abusive manner. To avoid it, Decidim includes a *public register of administrative activities* so these actions can be publicly and transparently audited. + +== User profile and personal settings + +There is a **user-profile page **where participants can make **changes to their data **(such as email account, password etc.), upload and enable an *avatar* image, set notifications or delete their account. + +The user-profile page also allows participants to add *additional information* to include interests and skills, voluntarily and by selecting the level of visibility of that information. This allows personal notifications to be sent and participants can be matched with others for collaborations. + +== Monitoring and notifications + +Participants receive *automated notifications* regarding the content they have created: responses to comments and comments on their proposals, as well as the results of their proposals (whether accepted or rejected). + +Besides automated notifications, participants can decide to **follow any element** of the system (other proposals, results, processes, assemblies, initiatives, groups or users etc.), and receive notifications. + +== Communication among participants + +**Instant messages **can be sent to participants through the platform, who will receive an email notification. + +*Mentions* can also be added (in the comments section) to any registered user and a notification will be automatically sent. + +== User groups + +Participants can register with the platform as members of one or several organisations/collectives. Once the organisation and membership status have been verified, participants can carry out actions (make proposals or submit comments, etc.), with their user or with the organisation name. + +User groups can also manage user permissions and administration roles assigned to groups, as well as private debate spaces or share information among group users, for example, who attended an in-person meeting. [Feature currently missing] + +== Engagement + +Decidim has a series of features geared to _gamifying_ the platform, to *attract and keep a growing number of participants interested*, as well as to promote practices that boost democratic quality and collective intelligence in participation [the gamification system is expected for 2018Q2-3, AjB-Lote1]. + +The gamification system includes two modes, one centred on users and the other on proposals. + +* The **user-centred **mode incorporates a *points system* based on several criteria (degree of detail of its user profile, number of invitations to others on the platform, number of proposals made and commented on, number of comments, number of endorsements obtained, number of followers, etc.) + +The combination of these and other indicators is used for generating gamification routes for each user and defining threads such as: most participatory person in the district, leadership in discussions and debates, etc. + +* Gamification *centred on proposals/initiatives* allows promoters, signatories and followers to boost interaction with them by incorporating several *metrics* (number of times that the proposal is shared in social networks, degree of controversy (number of positive and negative comments), quality of deliberation (depth of observation tree), number of hits received, etc. \ No newline at end of file diff --git a/docs/es/modules/features/pages/participatory-spaces.adoc b/docs/es/modules/features/pages/participatory-spaces.adoc new file mode 100644 index 0000000000..69a8dcab3e --- /dev/null +++ b/docs/es/modules/features/pages/participatory-spaces.adoc @@ -0,0 +1,66 @@ += Participatory spaces + +:page-partial: + +Participatory spaces define the main participatory channels. They are displayed in the platform's main upper menu. + +The basic logic behind Decidim's structure is that *components work together in the participatory spaces*. There are different types of spaces (initiatives, processes, consultations and assemblies) and various instances within each type (a process for an election and another for participatory budgets, council body for neighbourhoods and another for workers, an initiative to call for a change in legislation and another for something to be included in a plenary meeting agenda, etc.). + +== Processes + +Participatory processes require a general *configuration* form with the following fields: Title or name of the process; short name for URL; hash tag (used as a reference for communications on social networks); short description; long description; home page image; banner image; date of start and finish; field; promoter group (responsible for the participatory process on a political level, may be the local authority or a group made up of the authority’s experts/politicians and associations and other organisations); who it is aimed at; goal of the participatory process and participatory structure. The participatory process allows *accompanying documents* to be added. + +Participatory processes are divided into *stages* (e.g. 1. Information and convening stage; 2. diagnostics stage; 3. proposals stage; 4. prioritisation stage; 5. decision stage; 6. evaluation stage and 7. results-monitoring stage). Each stage includes the following configuration fields: title, description, start date, end date. + +*Highlights of announcements or texts* may also be displayed in the processes, both on the home page and in the heading of each component (proposals, discussions and debates, etc.) Different messages can be configured depending on the particular stage of a process. + +A *participatory process configuration tool* enables the simple activation and deactivation of stages and their components. Decidim's process configuration tool is one of its most powerful features, enabling total flexibility in designing participatory processes according to the various realities and forms of citizen participation. + +The feature of **process groups **enables various processes to be grouped, such as by the Participatory Budgets of different districts or neighbourhoods. + +Participatory processes may have one of the following *process statuses*: 0) published or unpublished; 1) open (started); 2) closed (the participatory process has ended but its results are still under way; 3) finished (both the process and its results phase are complete) and 4) future (has not yet started). + +A process can be **highlighted** (which increases its visibility on the homepage). + +There is also the possibility to **copy participatory processes** from the administration panel. This feature enables process models to be designed and copied so that certain details can be configured within the new processes, avoiding the need to create them from scratch. + +== Assemblies + +Decidim allows the **creation and configuration** of participatory or government *assemblies* (government or participatory bodies; councils; work groups, etc.) defined as structured participant groups which, whether on an individual or representative level, meet up periodically, with the authority to make proposals and decisions. + +The *assemblies section* allows you to see a full list of all of the assemblies that are activated and configured from the administration panel. The basic *settings* require the following fields to be completed for each body: name; image; scope (global, territorial or sectoral); body’s function (purpose of action); type of body (government, executive, consultative / advisory, participatory, work group, commission etc.); creation date; created on the initiative of (City Council, citizens or others); duration (indefinite or fixed, in the latter case, finishing date); date of inclusion in Decidim; date of closure and reason; how it is organised (functions, powers etc.); composition; if it can be joined and how to do that; method of choosing members; type/ function of members within the body; composition of internal work groups as monitoring or advisory committees; characteristics of the body; the body's social networks (name of social network and link) and the body’s next meetings. + +* *Convening meetings*: enables to send automatic meeting invitations, collaboratively create agendas, and register attendance. For a complete list of features see the "meetings" component. +* *Assembly’s characteristics*: open, public, transparent and other characteristics regarding the level of participation that the assembly allows. +* *Composition:* This enables the composition of the body to be defined in greater detail, using the profiles of participants associated with the body as well as other characteristics. A display of the body’s structure is automatically generated based on the composition of participating members: +** *Types of members*: Chair, deputy chair, secretaries, others +** *Membership origin*: by draw; direct election; representation from another assembly; government representation etc. +** *Internal work groups*: for the creation of sub-assemblies. Work groups will be able to relate to the body they belong to +** *Characteristics*: Open/closed; transparent; with various access permits. +* *Display*: allows us to view internal data about each body as well as the associations between assemblies +** *Composition*: the structure of a body is shown in the form of a circle diagram +** *Organisation charts*: allow us to view the hierarchy or network of assemblies and their associations. +* *Map and calendar*: allow us to view the location of all the assemblies on a map and calendar +* *Involvement with other spaces and components* +** *Involvement with processes*: assemblies can be promoter groups, start a process or make proposals within a process. A body’s composition may be the result of a process (for electing posts) +** *Proposals and results*: a body can generate its own proposals or results. +*** It shows how the proposal was agreed on (by consensus, majority, number of votes etc.). +** *Meetings*: assemblies will have a list of associated meetings, but some features may jump from one meeting to another, such as citizen initiatives to include an item in an agenda. Likewise, it must be possible to view minutes separately from the meeting, as they are associated directly with the body . + +== Initiatives + +*Initiatives*. This participatory space allows citizens to make proposals and collect the *requisite number of signatures and/or endorsements* depending on type (the various types are set out in the municipal regulations), giving rise to the start of the administrative procedure for its processing and citizen monitoring. + +Initiatives operate as follows: + +* Any person or citizen association can make a citizen-initiative proposal. There are *several types of initiatives* with various numbers of endorsements/signatures required for their processing (these are all configurable). From the initiative-creation page, a description of each of the methods, the number of signatures required and examples (e.g. explanatory videos) can be viewed. +* To avoid duplicates, once an initiative has been created, the system will present suggestions for **similar initiatives** before continuing with the following step. Once similar proposals have been ruled out, the specific form will be shown for each type of initiative, along with the minimum number of endorsements required. The creator then has an URL at their disposal which can be used to invite others to join in and endorse the initiative. A map is also displayed showing the locations of meeting points to collect signatures should there be any. +* Once the the initiative has been created, the initiative will move to a **technical moderation and validation** stage, where the City Council’s staff can respond in various ways (by approving it, rejecting it or suggesting amendments). +* Initiatives can be monitored and **notifications received on updated** statuses, in addition to which their individual promoter or group can periodically send information newsletters to other uses of the platform who have opted to follow the initiative. +* On reaching the specified end date, an initiative can have two possible states: +** *Rejected*: where it fails to reach the minimum number of signatures, a message will be shown stating "does not meet the number of signatures required" and the initiative's creator will be notified. +** *Accepted*: where it has achieved a sufficient number of signatures or endorsements it will be accepted and the corresponding procedure will start. + +== Consultations + +Consultations (a voting procedure where all of the organisation’s participants are called to vote on specific questions), allows participants **to find out about current or prospective consultations**, *discuss and debate* the consultation’s subject area and *monitor* the results. It also provides a *gateway to an e-voting system* which is external to Decidim but integrated in the interface in order to manage and verify identities. \ No newline at end of file diff --git a/docs/es/modules/publications/pages/catalan.adoc b/docs/es/modules/publications/pages/catalan.adoc new file mode 100644 index 0000000000..129537fc69 --- /dev/null +++ b/docs/es/modules/publications/pages/catalan.adoc @@ -0,0 +1,5 @@ += Catalan Publications + +== Media + +* Barandiaran, X. E., Monterde, A., & Pin, G. (2016). Decidim.barcelona: autonomía, participación y software libre - Software libre. In Xarxaip (Ed.), _Programari lliure i de codi obert-Societat lliure i govern obert._ (pp. 31–32). http://softwarelibre.xarxaip.cat/18.html \ No newline at end of file diff --git a/docs/es/modules/publications/pages/english.adoc b/docs/es/modules/publications/pages/english.adoc new file mode 100644 index 0000000000..15df7cacb3 --- /dev/null +++ b/docs/es/modules/publications/pages/english.adoc @@ -0,0 +1,19 @@ += English Publications + +IMPORTANT: Barandiaran, X., Calleja-López, A. & Monterde, A. (2018). Decidim: political and technopolitical +networks for participatory democracy. __Decidim’s project white paper__. (You can http://ajbcn-meta-decidim.s3.amazonaws.com/uploads/decidim/attachment/file/2005/White_Paper.pdf[download an alpha version of the document here]) + +== Academic + +* Borge, R., Balcells, J. , Padró-Solanet, A. (2019) "A model for the analysis of online citizen deliberation: Barcelona case study", International Journal of Communication. 13, pp. 5671–5695. https://ijoc.org/index.php/ijoc/article/view/10805/2873 + +== Media + +* Preville, P. (2019, November 13) _How Barcelona is leading a new era of digital democracy_ https://medium.com/sidewalk-talk/how-barcelona-is-leading-a-new-era-of-digital-democracy-4a033a98cf32 +* Graham, T. (2018, May 18) - _Barcelona is leading the fightback against smart city surveillance_ https://www.wired.co.uk/article/barcelona-decidim-ada-colau-francesca-bria-decode +* Barandiaran, X. E., & iaran. (2018, April 24). _What is Decidim?_ https://xabier.barandiaran.net/2018/04/24/what-is-decidim/ + +pass:[
][.biblio-abstract-label]#Abstract.# Many people ask what is this project called “Decidim” to which I have devoted my last two year of work with complete dedication. I wanted to share a brief summary here. This text is the…pass:[
] +* Stark, K. (2017, May 9). _Barcelona’s Decidim Offers Open-Source Platform for Participatory Democracy Projects_. https://www.shareable.net/blog/barcelonas-decidim-offers-open-source-platform-for-participatory-democracy-projects + +pass:[
][.biblio-abstract-label]#Abstract.# The word Decidim translated from Catalan means we decide, and it’s the name of Barcelona’s digital infrastructure for participatory democracy. One part functional database and one part political statement, organizers say Decidim is key to a broad digital transformation that is taking place in Barcelona — its institutions, markets, and economy.pass:[
] +* _Decidim: Free Open-Source participatory democracy for cities and organizations | Hacker News_. (n.d.). Retrieved January 21, 2019, from https://news.ycombinator.com/item?id=18952328 +* Oikos Denktank. (n.d.). _(W)E-Democracy - speaker 5 (1) - E-democratic cities - Arnau Monterde and Xabier E. Barandiaran_. Retrieved August 30, 2017, from https://www.youtube.com/watch?v=qrQ8ij4Ekag \ No newline at end of file diff --git a/docs/es/modules/publications/pages/french.adoc b/docs/es/modules/publications/pages/french.adoc new file mode 100644 index 0000000000..6d095bf12a --- /dev/null +++ b/docs/es/modules/publications/pages/french.adoc @@ -0,0 +1,8 @@ += French Publications + +== Media + +* Politics, O. S. (2018a, March 7). _Decidim, la plateforme de participation citoyenne d’envergure européenne_. https://medium.com/open-source-politics/decidim-la-plateforme-de-participation-citoyenne-denvergure-europ%C3%A9enne-9b3cb92681e5 + +pass:[
][.biblio-abstract-label]#Abstract.# Cet article est basé sur une série de conversations que nous avons eues avec Pablo Aragon, Xabier Barandiaran, Josep Jaume[1] et de…pass:[
] +* Politics, O. S. (2018b, March 7). _Le Contrat Social de Decidim, un texte fondateur_. https://medium.com/open-source-politics/le-contrat-social-de-decidim-un-texte-fondateur-7a8916213270 + +pass:[
][.biblio-abstract-label]#Abstract.# Nous reproduisons ici, pour la première fois en français, le « Contrat Social » de la plateforme Decidim, traduit du catalan en passant…pass:[
] \ No newline at end of file diff --git a/docs/es/modules/publications/pages/german.adoc b/docs/es/modules/publications/pages/german.adoc new file mode 100644 index 0000000000..14d09475be --- /dev/null +++ b/docs/es/modules/publications/pages/german.adoc @@ -0,0 +1,10 @@ += German Publications + +== Media + +* Macher, J. (2020, March 4), _Barcelonas Erfolg mit der Plattform Decidim. Deutschlandfunk_ https://www.deutschlandfunk.de/wenn-buerger-politik-gestalten-barcelonas-erfolg-mit-der.795.de.html?dram:article_id=471680 +* Huber, P. (2019, May 29), _In Barcelona schreiben die Bürger das Regierungsprogramm selbst – und machen ihre Stadt sozialer_ https://kontrast.at/barcelona-smart-city-wirtschaft/ +* _Wie Barcelona eine offene “Smart City” im Dienste des Gemeinwohls plant_. (2018, September 9). https://netzpolitik.org/2018/freie-software-als-oeffentliches-gut-und-was-rathaeuser-dafuer-tun-koennen/ + +pass:[
][.biblio-abstract-label]#Abstract.# Im Interview spricht Francesca Bria, Barcelonas Chief Technology and Digital Innovation Officer, über “Digitale Soziale Innovation” und passende Strategien um die lokale Wirtschaft, Privatsphäre und die demokratische Teilhabe der Bürger*innen auch in einer “Smart City” langfristig zu sichern und zupass:[
] +* Macher, J. (n.d.). _Digital und demokratisch (neues deutschland)_. Retrieved December 7, 2019, from https://www.neues-deutschland.de/artikel/1129769.smart-city-digital-und-demokratisch.html + +pass:[
][.biblio-abstract-label]#Abstract.# In Barcelona bedeutet »Smart City«: Mehr Mitsprache für die Menschen. Andere Städte sind dem Beispiel gefolgt.pass:[
] \ No newline at end of file diff --git a/docs/es/modules/publications/pages/italian.adoc b/docs/es/modules/publications/pages/italian.adoc new file mode 100644 index 0000000000..4c85f3200d --- /dev/null +++ b/docs/es/modules/publications/pages/italian.adoc @@ -0,0 +1,6 @@ += Italian Publications + +== Media + +* _Perché Barcelona Smart City è un modello per il mondo. Intervista a Francesca Bria_. (2018, August 13). http://www.designatlarge.it/barcelona-smart-city-francesca-bria/ + +pass:[
][.biblio-abstract-label]#Abstract.# La sovranità tecnologica ai cittadini. Ecco come Barcelona Smart City è diventata un modello per il mondo. Intervista alla CTO Francesca Briapass:[
] \ No newline at end of file diff --git a/docs/es/modules/publications/pages/spanish.adoc b/docs/es/modules/publications/pages/spanish.adoc new file mode 100644 index 0000000000..165abbb338 --- /dev/null +++ b/docs/es/modules/publications/pages/spanish.adoc @@ -0,0 +1,34 @@ += Spanish Publications + +== Academic + +* Barandiaran, X. E., Calleja, A., Monterde, A., Aragón, P., Linares, J., Romero, C., & Pereira, A. (2017). Decidim: Redes políticas y tecnopolíticas para la democracia participativa. __Recerca__. Revista de pensament i anàlisi., 21, 137-150. https://doi.org/10.6035/Recerca.2017.21.8 +* Barandiaran, X. E. (2019). Tecnopolítica, municipalismo y radicalización democrática. In L. Roth, A. Monterde, & A. Calleja-López (Eds.), _Ciudades Democráticas. La revuelta municipalista en el ciclo post-15M_ (pp. 173–207). Icaria. http://ciudadesdemocraticas.tecnopolitica.net/ +* Borge, R., Balcells, J., Padró-Solanet, A., Batlle, A., Orte, A., & Serra, R. (2018) La participación política a través de la plataforma Decidim: análisis de 11 municipios catalanes. Paper presentado en el IX Congreso Internacional en Gobierno, Administración y Políticas Públicas GIGAPP. Madrid, 24-27 Septiembre. https://dryfta-assets.s3-accelerate.amazonaws.com/assets/congreso2018/abstractfiles/1536574598Laparticipacion_politica_a_traves_de_la_plataforma_Decidim.pdf +* Solà, J. (2018). _How are decisions made in Decidim.barcelona_ [Master Thesis, Pompeu Fabra]. https://repositori.upf.edu/handle/10230/36105 +* Barandiaran, X. E., Monterde, A., & Pin, G. (2016a). Decidim.barcelona: autonomia, participació i programari lliure. In Xarxaip (Ed.), _Programari lliure i de codi obert-Societat lliure i govern obert._ (pp. 31–32). +* Barandiaran, X. E., Monterde, A., & Pin, G. (2016b). Decidim.barcelona: autonomía, participación y software libre - Software libre. In Xarxaip (Ed.), _Programari lliure i de codi obert-Societat lliure i govern obert._ (pp. 31–32). http://softwarelibre.xarxaip.cat/18.html +* Aragón, P., Kaltenbrunner, A., Calleja-López, A., Pereira, A., Monterde, A., Barandiaran, X. E., & Gómez, V. (2017). Deliberative Platform Design: The Case Study of the Online Discussions in Decidim Barcelona. _Social Informatics_, 277–287. https://doi.org/10.1007/978-3-319-67256-4_22 + +pass:[
][.biblio-abstract-label]#Abstract.# With the irruption of ICTs and the crisis of political representation, many online platforms have been developed with the aim of improving participatory democratic processes. However, regarding platforms for online petitioning, previous research has not found examples of how to effectively introduce discussions, a crucial feature to promote deliberation. In this study we focus on the case of Decidim Barcelona, the online participatory-democracy platform launched by the City Council of Barcelona in which proposals can be discussed with an interface that combines threaded discussions and comment alignment with the proposal. This innovative approach allows to examine whether neutral, positive or negative comments are more likely to generate discussion cascades. The results reveal that, with this interface, comments marked as negatively aligned with the proposal were more likely to engage users in online discussions and, therefore, helped to promote deliberative decision making.pass:[
] + +== Media + +* Calleja-López, A., Monterde, A., & Barandiaran, X. E. (2017, October 18). _De las redes sociales a las redes (tecno)políticas: redes de tercera generación para la democracia del siglo XXI_ [Text]. http://tecnopolitica.net/content/de-las-redes-sociales-las-redes-tecnopol%C3%ADticas-redes-de-tercera-generaci%C3%B3n-para-la + +pass:[
][.biblio-abstract-label]#Abstract.# La sociedad deviene (en) red.pass:[
] +* _TIPS - Cultura digital - La democracia 2.0_. (2017, February 2). http://www.rtve.es/alacarta/videos/tips/tips-cultura-digital-democracia-20/3896837/ + +pass:[
][.biblio-abstract-label]#Abstract.# TIPS - Cultura digital - La democracia 2.0, Tips online, completo y gratis en RTVE.es A la Carta. Todos los programas de Tips online en RTVE.es A la Cartapass:[
] + +[[ref-4881969-FWFFK8LS]] +* Bravo, E. (2016, July 20). _Cómo mejorar Barcelona con la participación de sus ciudadanos_ [Magazzine]. http://www.yorokobu.es/barcelona-participacion/ + +pass:[
][.biblio-abstract-label]#Abstract.# El cricket es un deporte muy curioso. Los partidos pueden durar días y, entre sus reglas, está la de parar el juego para tomar el té. Una de las potencias en este deporte es Paquistán, país del que procede parte de la población inmigrante de Barcelona. Muchos de los miembros de esa comunidad llevan años […]pass:[
] +* Barandiaran, X. E., Pereira, A., Monterde, A., & Calleja-López, A. (2016). _Plan de desarrollo Decidim Barcelona_. Ajuntament de Barcelona City Council. https://decidim-barcelona.s3.amazonaws.com/uploads/decidim/attachment/file/54/Plan_desarrollo_decidim.pdf + +pass:[
][.biblio-abstract-label]#Abstract.# Este documento detalla el futuro desarrollo de la plataforma digital de participación de l´Ajuntament de Barcelona, decidim.barcelona (disponible en URL https://decidim.barcelona). Los principales objetivos de la plataforma son articular, estandarizar, visualizar y comunicar todos los procesos de participación del Ajuntament de Barcelona y de la ciudad ofreciendo un servicio de infraestructura digital para la democracia directa y participativa a todas las escalas territoriales y asociativas de Barcelona. El documento detalla los objetivos de la plataforma, el flujo de desarrollo, las funcionalidades previstas, y un código ético-político.pass:[
] +* Participa Pamplona. (2017a, July 18). _Decidim Barcelona (Xabier Barandiaran)_. https://www.youtube.com/watch?v=zQYvdwGsg8M + +pass:[
][.biblio-abstract-label]#Abstract.# 1a Jornada de tecnología y democracia (24/05/2017). Infraestructuras digitales para la democracia. Decidim Barcelona Xabier Barandiaran. Coordinador del proyecto Decidim, asesor de la Regiduría de Participación del Ayuntamiento de Barcelona. Teknologia eta demokraziari buruzko 1. jardunaldia (24/05/2017). Demokrazia partizipatiborako azpiegitura digitalak Decidim Barcelona Xabier Barandiaran. Decidim proiektuaren koordinatzailea eta Bartzelonako Udaleko Partaidetza zinegotziaren aholkulariapass:[
] +* Participa Pamplona. (2017b, July 18). _Hacia una democracia participativa inteligente y democrática (Asier Gallastegui y Asier Amezaga)_. https://www.youtube.com/watch?v=z4FTUt8wnRs + +pass:[
][.biblio-abstract-label]#Abstract.# 1a Jornada de tecnología y democracia (24/05/2017). Infraestructuras digitales para la democracia. Decidim Barcelona Xabier Barandiaran. Coordinador del proyecto Decidim, asesor de la Regiduría de Participación del Ayuntamiento de Barcelona. Teknologia eta demokraziari buruzko 1. jardunaldia (24/05/2017). Demokrazia partizipatiborako azpiegitura digitalak Decidim Barcelona Xabier Barandiaran. Decidim proiektuaren koordinatzailea eta Bartzelonako Udaleko Partaidetza zinegotziaren aholkulariapass:[
] +* Participa Pamplona. (2017c, July 18). _Metadecidim. Diseño participativo de la plataforma Decidim Barcelona (Andrés Pereira de Lucena)_. https://www.youtube.com/watch?v=I31yY4ip3rk + +pass:[
][.biblio-abstract-label]#Abstract.# 1a Jornada de tecnología y democracia (24/05/2017). Infraestructuras digitales para la democracia. Andrés Pereira de Lucena. Presidente de la asociación aLabs, coordinador técnico y arquitecto técnico de Decidim. Teknologia eta demokraziari buruzko 1. jardunaldia (24/05/2017). Demokrazia partizipatiborako azpiegitura digitalak Andrés Pereira de Lucena. aLabs elkarteko lehendakaria eta Dicidimen koordinatzaile teknikoa eta arkitekto teknikoa.pass:[
] +* Barandiaran, X. E., & Romero, C. (2018, May 17). _Presentació Decidim Ada Lovelace_. https://www.youtube.com/watch?v=-3eh_v339Cg +* Barcelona Activa. (n.d.). _Fòrum d’Economies Col·laboratives Procomuns 2017. Activitat paral·lela 3_. Retrieved January 13, 2018, from https://www.youtube.com/watch?v=IvDsgJcNxnQ +* Govern Digital. (n.d.). _CGDL2018 - Participació ciutadana: com fer de la política quelcom més proper_. Retrieved April 9, 2018, from https://www.youtube.com/watch?v=7LH6OItIrRU \ No newline at end of file diff --git a/docs/es/modules/releases/pages/index.adoc b/docs/es/modules/releases/pages/index.adoc new file mode 100644 index 0000000000..c9f9bc7423 --- /dev/null +++ b/docs/es/modules/releases/pages/index.adoc @@ -0,0 +1,32 @@ += Releases + +Here you can find all the blog posts for every minor release. + +You can find all the releases (with minor and patches) at +https://rubygems.org/gems/decidim/versions[RubyGems.org] and +https://github.com/decidim/decidim/releases[GitHub]. + +* https://decidim.org/blog/2021-10-07-new-version-0-25-0/[Version 0.25 (2021-10-07)] +** xref:develop:guide_migrate_webpacker_module.adoc[Migrate to Webpacker a module] +** xref:develop:guide_migrate_webpacker_app.adoc[Migrate to Webpacker an instance app] +* https://decidim.org/blog/2021-03-26-new-version-0-24-0/[Version 0.24 (2021-03-26)] +* https://decidim.org/blog/2020-11-12-new-version-0-23-0/[Version 0.23 (2020-11-12)] +* https://decidim.org/blog/2020-09-02-new-version-0-22-0/[Version 0.22 (2020-09-02)] +* https://decidim.org/blog/2020-04-12-new-version-0-21-0/[Version 0.21 (2020-04-12)] +* https://decidim.org/blog/2020-02-06-new-version-0-20-0/[Version 0.20 (2020-02-06)] +* https://decidim.org/blog/2019-10-21-release-0-19-0/[Version 0.19 (2019-10-21)] +* https://decidim.org/blog/2019-07-03-release-0-18-0/[Version 0.18 (2019-07-03)] +* https://decidim.org/blog/2019-03-25-release-0-17-0/[Version 0.17 (2019-03-25)] +* https://decidim.org/blog/2019-01-14-release-0-16-0/[Version 0.16 (2019-01-14)] +* https://decidim.org/blog/2018-12-13-release-0-15-0/[Version 0.15 (2018-12-13)] +* https://decidim.org/blog/2018-08-30-release-0-14-0/[Version 0.14 (2018-08-30)] +* https://decidim.org/blog/2018-07-11-release-0-13-0/[Version 0.13 (2018-07-11)] +* https://decidim.org/blog/2018-06-13-release-0-12-0/[Version 0.12 (2018-06-13)] +* https://decidim.org/blog/2018-04-27-release-0-11-0/[Version 0.11 (2018-04-27)] +* https://decidim.org/blog/2018-03-29-release-0-10-0/[Version 0.10 (2018-03-29)] +* https://decidim.org/blog/2018-02-06-release-0-9-0/[Version 0.9 (2018-02-06)] +* https://decidim.org/blog/2017-12-21-release-0-8-0/[Version 0.8 (2017-12-21)] +* https://decidim.org/blog/2017-11-21-release-0-7-0/[Version 0.7 (2017-11-21)] +* https://decidim.org/blog/2017-09-21-release-0-6-0/[Version 0.6 (2017-09-21)] +* https://decidim.org/blog/2017-08-29-release-0-5-0/[Version 0.5 (2017-08-29)] +* https://decidim.org/blog/2017-07-17-release-0-4-0/[Version 0.4 (2017-07-17)] \ No newline at end of file diff --git a/docs/es/modules/understand/pages/about.adoc b/docs/es/modules/understand/pages/about.adoc new file mode 100644 index 0000000000..70b7e66f46 --- /dev/null +++ b/docs/es/modules/understand/pages/about.adoc @@ -0,0 +1,90 @@ += About + +:experimental: +:icons: font +:page-partial: +:source-highlighter: highlightjs + +Decidim is a technopolitical project. A digital citizen-participation platform for a democratic city, made openly and collaboratively using free software.. It is a public commons infrastructure. Public because it enjoys a clear institutional impetus and commons because the code is open and free, in other words, anyone can see it, use it, copy it or amend it. It is a platform designed for coordinating citizen-participation processes and spaces, aimed at extending and facilitating access to citizen participation, opening new spaces for deliberation and collaboration in co-designing and co-producing public policies and new spaces for direct participation and democracy, thereby enabling disintermediation and cooperation between citizens, institutions and organisations of civil society. + +[#decidim.barcelona-fig] +._decidim.barcelona_. +image::decidim_barcelona_homepage.png[decidim.barcelona homepage] + +== Principles + +The Decidim platform has been designed and developed on the basis of a series of principles that promote further exploration and democratic innovation in the digital era as well as possibilities for improving, opening and developing citizen-participation policies and democratic forms of government at various levels, with special emphasis on the municipal scale. These principles are listed below: + +=== Technopolitical hybridisation + +This is key to preventing what we could define as “digital reductionism" (Calleja-López, 2017), a variant of technocentrism that puts the emphasis mainly or exclusively on the new participatory forms’ digital aspects and infrastructures, without dealing with the necessary powerful innovations in participatory practices, processes and culture that result from the hybridisation of face-to-face and digital participation. The hybrid approach attempts to connect spaces and activities taking place in decidim.barcelona with face-to-face spaces and activities and to consider the multiple variants that may arise for the purposes of boosting new forms of collective action. + +=== Enhanced and multi-modal participation + +The result of digital reductionism is to foster "click-participation" (Calleja-López, 2017), where participation becomes a definite phenomenon, first and foremost for its digital aspect, and, more specifically, for its convenience, speed and non-interference with other players and ideas. There is therefore a need to boost enriched forms of interaction between people in decidim.barcelona, ​​and between them, the platform’s contents and the hybrid participatory processes in a broader sense. This implies, on the one hand, enriching participatory processes with functions that go beyond voting (information and data displaying, deliberation etc.,) and, on the other, designing hybrid processes (e.g. Face-to-face meetings connected to the platform), which turn participation into an enhanced, comprehensive and multimodal participation, rather than reduced and “clicked”. + +=== Transparency and traceability + +With the exception of data that can affect user privacy, details of activities in participatory processes in digital media need to be absolutely traceable and public, if a new level of transparency in participation is to be fostered. Transparent participation and traceability are necessary conditions for confidence in these new processes. + +=== Opening/ releasing + +The principles of releasing and opening refer firstly to the platform’s code and functions, secondly to the processes’ data and contents and thirdly and more generically, to the processes themselves. This implies, in the first two cases, using the most exacting share-alike licenses and standards (e.g. Affero GPLv3 for code, CreativeCommons for content, Open Access Database Licences for data). Decidim needs to be a free-software platform that allows anyone to see, amend and reuse the code it is based on. In the case of processes, these principles connect to several others that we mention in this list, such as transparency and accessibility, and aim to make these processes as participatory and reappropriable as possible on multiple levels. + +=== Cross-cutting participation + +Dealing with many of the keys of success for recent initiatives such as 15M, decidim.barcelona's deployment and communication strategies and media processes need to be geared towards achieving legitimacy first and then participation, within reach of as many social and political groups as possible. + +=== Knowledge, technoscience and collective intelligence + +The new forms of participation should benefit from the possibilities that are offered by both popular and expert knowledge from citizens and data science (data occasionally from the participatory processes themselves) to improve decision-taking and participation. An informed and expert participation, capable of catalysing social knowledge. + +=== Collective and networked participation + +One of the central challenges to achieiving an “enhanced”, digitally mediated, participation, is boosting its collective dimension in the face of atomising tendencies, often resulting from remote-participation conditions. This implies using functions that boost interactions between users in collective processes, whether on a platform or face to face. Digital or face-to-face discussion and deliberation spaces are necessary for coordinating better participation. + +=== Public-commons orientation, reappropriation and recursive participation + +Democracy’s new digital infrastructures have to be a space belonging to, by and for the commons. If democracy is to be promoted, infrastructures themselves have to be radically democratic. This implies consideration of an innovative and alternative model to the one for privatising the public sphere. To this end, Decidim needs to be a digital infrastructure of public-commons construction, ownership and use. In other words, what we define as "technopolitical commons", technology open to participation from everyone and anyone in its design and management, governed through distribution and with collective-production and share-alike models. Compared to the closed and exclusive platforms controlled by big corporations, Decidim is a democratic infrastructure for democracy. + +=== Technopolitical accessibility and training + +It also needs to be a public service, which is why it is essential to ensure citizens have access and training for taking part and exploiting all its potential. Promoting its grassroots-empowered use and use by excluded social groups is a key challenge. Both decidim.barcelona and digital participatory processes have to be governed by more demanding accessibility standards (e.g. Those of the Web Accessibility Initiative, WAI). + +=== Independence, empowerment and affiliation + +If social movements have demonstrated something over the last few years it is the central role played by self-organised collective action in kick-starting and guiding processes of change. In this regard decidim.barcelona and the processes using the platform need to boost social independence and self-organisation. In addition, political affiliation has to be a requisite feature in many of the platform’s processes, given that it is a key element of the platform’s medium- and long-term public and operative legitimacy. In other words, both independent social processes and bottom-up processes that are affiliated to public institutions. + +== Brief history + +During its public presentation in September 2015, Decide Madrid, a digital participatory platform launched by Madrid City Council and based on Consul software, began to experiment with various participatory processes, such as public debates and citizen proposals. Launched by Barcelona City Council, the Decidim Barcelona project, which was also based on Consul but with major changes and adapted to new needs, was presented in February 2016. ​​Its original goal was to coordinate the participatory process for drafting the Municipal Action Plan (PAM) as well as other participatory processes in the city in the future. Some 25,000 people signed up to it in under two months, 10,860 proposals were submitted, 410 meetings held and over 160,000 votes in favour collected. In this way a collaboration and deliberation space opened up between citizens, social organisations and Barcelona City Council. + +A great deal of interest was expressed in many municipalities in going ahead with similar processes, taking advantage of the technology used, given its success and the fact it was free and reusable. To be more specific: Coruña City Council, through its A Porta Aberta platform for Participatory Budget processes; Oviedo City Council, through its Consulta Oviedo, with a space for citizen proposals, and Valencia City Council, through decidimVLC, for preparing participatory budgets. There were also numerous cases of local authorities and other institutions showing great interest in the decidim.barcelona project and its implementation, such as the city councils of Hospitalet, Badalona, ​​Terrassa and Gavà, as well as Barcelona Provincial Council and the Localret Consortium. + +This series of changes and adaptations led in turn to a new technological need involving the adaptation of technology dealing with local-authority diversity, independence and the medium-term sustainability of the platform. Hence the establishment of a scalable and decentralised (or modular) development strategy enabling the entire project to be flexible and grow over time as well as generate a development, functional design and support community, which is sustained at both municipal and (more importantly) inter-municipal levels. + +This led Barcelona City Council to thoroughly reconsider the platform’s architecture and carry out a complete rewrite of the software based on the above-mentioned principles and needs. This rewrite gave rise to the Decidim project, a generic,participatory democratic framework based on Ruby on Rails, whereby any group, organisation or institution that wanted to use it could do so with minimum technical requirements. + +== Open development and free software + +The Decidim platform project has been developed with free software (both at its initial stage, based on Consul, and after the code's complete rewrite) and all its development has been open, enabling its entire development to be traceable and followed right from the very beginning. + +Its creation from free software refers to the fact that the platform's source code has a AGPL v3 Licence or GNU Affero General Public Licence,footnote:[https://github.com/decidim/decidim/blob/develop/LICENSE-AGPLv3.txt] which means the code has to allow for the possibility of its being consulted, copied, amended and reused, so long as the same licence is kept in any work or product derived from it. This is one of the licences that provides most freedom and is copyleft footnote:[Copyleft stands for a whole range of licences that can be applied to IT, artistic and other creations. Copyleft's supporters see copyright as a way of restricting people's right to make and redistribute copies of a work.[2] A copyleft licence, in fact, uses actual copyright legislation to ensure that everyone who receives a copy or derived work can use, amend and even distribute both the work and any derivative versions. In a strictly non-legal sense, then, copyleft is the opposite of copyright. (Wikipedia, 2017).]. In this regard, it makes sense for public authorities to make a clear commitment to this type of software, given that it is through such licences that we can receive social return on our public investments. + +The fact that the software has been openly developed means that the entire development process is transparent and accessible, in other words, that anyone can see, right from the start of the software's development, every change, contribution, community of developers involved etc. By the same token, transparency is becoming a fundamental principle not just in citizen participation but in software development too. + +All this has been done on a platform designed for open collaboration in software development known as GitHub.footnote:[https://github.com/] This platform enables access to codes and monitoring of the software's development. GitHub is designed to host Git repositories, though there are other alternatives to GitHub such as GitLab. + +== Decidim Barcelona + +Decidim Barcelona is the first instance of Decidim and the origin of the project. Decidim Barcelona came about from Barcelona City Council’s need to open up a technologically mediated citizen-participation process around the Municipal Action Plan (PAM), with three major goals: making a process that is transparent and traceable, expanding participation through the digital platform and integrating face-to-face and digital participation. + +This process received over 10,000 proposals and more than 160,000 votes in favour, with a final balance of 71% of citizen proposals accepted and included in PAM through over 1,600 initiatives. Decidim was originally designed exclusively for hosting this process though the need for extending it to other participation processes was quickly spotted. + +It was here that the idea for today's Decidim came about. A participatory platform that enables as many processes as people want, divided up into stages and with the possibility of setting several functions at each stage. The possibility was accordingly left open for designing new functions that could be integrated into the processes (surveys, collaborative-text drafting, result monitoring and so on), as well as the integration of new participatory spaces such as citizen initiatives and participation councils. + +Decidim Barcelona is currently (July 2017) hosting 12 participatory processes and already has some 26,600 participants, almost 12,000 collected proposals, 1,700 results, 670 face-to-face meetings and 185,000 votes in favour collected. The platform’s good results in Barcelona led to its extension to other municipalities, including Hospitalet de Llobregat, Sabadell, Badalona, Terrassa, Gavà, Sant Cugat, Mataró and Vilanova i la Geltrú. + +== Decidim Municipis + +Decidim is a multitenant platform, that is, a platform where as many instances can be used as needed, with a single installation. There are numerous successful examples of multitenant architectures in the world of software, such as the Wordpress free software for blogs project. It is especially useful for institutions that wish to provide Decidim as a third-party service. The Provincial Council's case is especially important as it can be used with a single installation - maintained, updated and sustained by a single entity - for as many local authorities as desired, thereby reducing installation and maintenance costs and providing technological solutions for improving citizen participation in medium-sized and small local authorities that would otherwise have much less access to such resources. \ No newline at end of file diff --git a/docs/es/modules/understand/pages/background.adoc b/docs/es/modules/understand/pages/background.adoc new file mode 100644 index 0000000000..d2b4cce858 --- /dev/null +++ b/docs/es/modules/understand/pages/background.adoc @@ -0,0 +1,29 @@ += Background + +:experimental: +:icons: font +:page-partial: +:source-highlighter: highlightjs + +== Citizen participation in the Network Society + +Becoming a network(ed) society. Information and communication technologies (henceforth, ICTs) and their associated practices are bringing about irreversible changes to the social and political landscape. From the smallest residents’ association to the most intensive electoral campaign, from a neighbourhood organisation or social movement to the European Union, political relations are being increasingly determined by the use of digital devices and technologies. It seems that the future of democratic participation and collective action will be through the development of digital platforms and hybrid processes, which renovate traditional practices and combine them with digital ones (Fuchs, 2007). + +This transition coincides with the decline of representative systems over the last few decades (Norris, 1999; Pharr & Putnam, 2000; Tormey, 2015), which has contributed to the questioning of the legitimacy and sense of democracy itself, reduced and often identified with this system (Crouch, 2004; Keane, 2009; Streeck, 2016). Several authors have used the terms “post-representation" to refer to the emptying of power and meaning of the representative institutions that go from globalisation to disaffection and divestment of citizens (Brito Vieira and Runciman, 2008; Keane, 2009; Rosanvallon , 2011; Tormey, 2015). The various attempts to boost participation have proved unequal to the task of reversing these trends (Keane, 2011; Tormey, 2015). + +This long-running political crisis comes on the back of the financial and economic crisis of 2008, and is directly linked to this earlier crisis. Even so, millions of people mobilised in the face of the crisis, intent not only on demanding but also on experimenting and building a real democracy. The key development here was the 15M network-movement. It is in the context of technological hypermediation that information and communication technologies, used in the 1980s and 1990s to accelerate financial flows and globalisation (Castells, 1996), became crucial spaces and devices for a multitudinous re-appropriation of policy, as well as democratic experimentation (Martinet Ros et al., 2015). + +After four years of numerous successes and failures, new political citizen initiatives in May 2015 managed to take power in Spain’s main cities, including Barcelona. In this respect they were riding on the tide of countries such as Iceland, where the economic crisis had led to a period of citizen re-appropriation of the institutions and fertile democratic innovation, based on an intense and creative use of ICTs. + +Since 15M, most of the experiments aimed at introducing new forms of participatory and deliberative democracy (Barber, 1984; Habermas, 1994, 1996; Della Porta 2013) have been technologically mediated. As can be seen from the case of Iceland (as well as others, such as Finland), the democratising processes of citizen mobilisation and empowerment require technopolitical coordination (Rodotà 1997; Martinet Ros et al., 2015) to achieve their maximum richness and capacity. Technopolitics stems from the politicisation of technologies and technological re-assemblage of politics as well as the co-development and co-production of politics and technologies. As for forms of technopolitical participation and deliberation, digital and face-to-face practices, spaces and processes connect to and feed back from one another, acquiring a multi-layered dimension. These participatory devices are geared towards increasing the number, variety and parity of players that "take part" in the city’s common government, expanding and enriching the areas, forms and periods in which it takes place and helping to boost a collective intelligence (Levy, 1997) capable of taking on the complexity of contemporary urban life. Technopolitics needs to tackle the numerous limits of what has been called “digital democracy" (Hindman, 2008) starting by freeing itself from the technocentric and technooptimistic narratives around digitally mediated participation. + +New participatory processes are being built within a context full of opportunities and fraught with risks. The 2015 government programme and Municipal Action Programme (PAM) for 2016-2019 drawn up for the city of Barcelona gives centre stage to participation and, more specifically, innovation and the development of new democratic participatory models. PAM, ​​the development of which involved thousands of people, meets a clear social demand that calls for ​​a thorough redesign of the democratic system and its participatory mechanisms. This, however, is occurring in a context defined by: a) large politically, economically and socially excluded population sectors; b) increasing difficulty accessing participation as a result of the economic-crisis situation; c) a crisis over the legitimacy and operability of the representative democratic system and public authorities; d) an enormous technological dependency on private corporate infrastructures and services; e) a legal and political context adverse to direct democracy, social independence and territorial sovereignty; f) an abysmal institutional disadvantage in understanding social complexities through techniques analysing social-behaviour data and models that big technological companies and digitally coordinated services possess. + +[[h.2et92p0]] +== Data Control and digital infrastructures for democracy + +In the context of new configurations of informational capitalism (Castells, 1996), so-called “data capitalism" (Lohr, 2015; Morozov, 2015) or "surveillance capitalism" (Zuboff, 2015), the new digital infrastructures of democracy run the risk of contributing to dynamics contrary to such principles as privacy and technological sovereignty. Exclusive, closed and opaque platforms geared towards exploiting social activities for corporate profit are operating as non-democratic spaces occupying more and more areas of social life. This model is particularly dangerous in relation to the new infrastructures and processes of democracy that we are talking about. + +Compared to the exclusive and corporate infrastructural model, the public commons model, which we believe decidim.barcelona’s development needs to be inspired by, ​​is geared towards developing platforms where design, ownership and management are free, open and participatory, shared between public workers and citizens (organised or not). Under this model, not only the platform's code but also the data that are generated in it are processed and appropriated according to the logic of public and common management. The opening-up of everything and anything to participation, the hallmark of the commons as a political principle (as opposed to the private and even state-public sphere --- Laval & Dardot, 2015), seems to be a basic condition for participatory infrastructures to be fully functional. Participation has to be recursive here: it needs to help to define and establish the infrastructural conditions of its own existence and to affect the design, development and management of digital participatory platforms as well as the processes and results (e.g. data) that are generated in them. + +Put in the hands of large digital-service corporations, the algorithmic organisation of social life and the area we are concerned with, political participation, poses a risk to democracy and technological sovereignty that only a public commons effort in digital infrastructures can reverse. Only platforms based on free, open, transparent, secure and public-commons management software offer guarantees when it comes to building democracies of greater quality. The democracy of the future has to be built, then, on democratic infrastructures. \ No newline at end of file diff --git a/docs/es/modules/understand/pages/social-contract-ca.adoc b/docs/es/modules/understand/pages/social-contract-ca.adoc new file mode 100644 index 0000000000..cedfaf7ea8 --- /dev/null +++ b/docs/es/modules/understand/pages/social-contract-ca.adoc @@ -0,0 +1,63 @@ += Contracte Social de Decidim + +[NOTE] +==== +Pots llegir el Contracte Social de Decidim en altres idiomes: xref:understand:social-contract-es.adoc[Castellano] - xref:understand:social-contract.adoc[English] + +Si vols traduïr-ho al teu idioma sisplau https://decidim.org/contact[contacta amb nosaltres]. +==== + +Codi de garanties democràtiques i de col·laboració oberta + +Aquest és el contracte social que tots el membres del projecte Decidim es comprometen a seguir. + +La utilització de la plataforma Decidim per part de qualsevol ajuntament o qualsevol altre ens municipal o supramunicipal, així com altres organitzacions, comporta l'assumpció total i íntegra d'aquest codi. + +== Programari lliure i continguts oberts + +El codi de la plataforma, així com els mòduls, llibreries o qualsevol altre codi que es desenvolupi per al seu funcionament, serà sempre programari lliure amb llicència https://www.gnu.org/licenses/agpl-3.0.en.html[Affero GPLv3 o posterior] en el cas dels nous desenvolupaments, i de llicències compatibles amb aquesta en el cas de reutilització d’altres codis. + +Així mateix, els continguts, dades, APIS i/o interfícies que el Decidim faci servir per interactuar amb qualsevol tipus d’usuari, compliran amb estàndards oberts i interoperables (ex. OpenID, RSS, OStatus, etc.), tendint sempre al màxim nivell d’integració amb els estàndards oberts més estesos. + +De cara a maximitzar la transparència i la col·laboració ciutadana en els processos, òrgans i mecanismes de participació, el contingut de textos, gràfiques, fonts tipogràfiques, àudio, vídeo o altres elements de disseny, es farà públic amb una llicència https://creativecommons.org/licenses/by-sa/4.0/legalcode[Creative Commons By-Sa]. + +Igualment les dades de la plataforma, especialment totes aquelles que es puguin recollir de manera sistemàtica a través de scrappers o altres tècniques de consulta massiva, seran publicades amb llicències http://opendatacommons.org/licenses/odbl[Open Data Commons Open Database License], en formats estandarditzats i accessibles (tipus CSV, JSON, etc.) i, sempre que sigui possible, amb eines que facilitin l’anàlisi i visualizació d’aquestes dades. + +== Transparència, traçabilitat i integritat + +La plataforma, així com la seva configuració, desenvolupament, implementació i ús actual o futur han de garantir i maximitzar en tot moment la transparència, la traçabilitat i la integritat dels diagnòstics, propostes, debats, decisions, o qualsevol altre objecte, mecanisme o procés de participació. + +Per transparència entenem que totes les dades relacionades amb aquests mecanismes i processos estiguin disponibles per a baixar, analitzar i tractar, seguint els formats i estàndards de compartició més exigents (accessibilitat, multi-format, etc.). + +La transparència serà una condició necessària pel seguiment dels processos i mecanismes de participació, però mai, i en cap cas, pel tractament de dades personals que vagin contra la defensa de la privacitat de la persona participant en la plataforma. + +Entenem per traçabilitat de les propostes la possibilitat de realitzar un seguiment complet, cap enrere (passat) i cap endavant (futur), de tot el que ha passat amb les propostes, plans, reglaments o qualsevol altre tipus d'objecte de decisió o participació inclòs en un procés o mecanisme. La plataforma ha de mostrar en tot moment com, per què, per qui i amb quin tipus de garanties un determinat objecte d'un procés de participació va ser descartat, aprovat o bloquejat. + +Entenem per integritat l'autenticitat d'un determinat contingut, i la garantia que aquest no ha estat manipulat o modificat sense que aquesta modificació quedi clarament registrada i sigui visiblement verificable i contrastable, amb l'objecte d'evitar la manipulació de les propostes o resultats dels processos o mecanismes de participació. + +== Igualtat d’oportunitats i indicadors de qualitat + +Al costat de les garanties anteriorment definides, la plataforma es compromet a garantir la igualtat d'oportunitats per a totes les persones, així com les seves propostes o altres contribucions que pugui acollir. La plataforma oferirà les mateixes oportunitats de partida a tots els objectes participatius (propostes, debats, etc.) perquè siguin vistos, discutits, comentats, valorats o tractats, sense discriminació de cap tipus. En aquest sentit la identitat digital de les persones usuàries de la plataforma serà sempre personal i intransferible, la verificació que otorgui drets de decisió a la plataforma ha de ser a més única, i serà l’ens responsable l’encarregat de garantir la no-suplantació d’una persona física o jurídica. + +Amb l’objectiu de garantir la qualitat democràtica de la plataforma es fomentarà l’ús d’indicadors de qualitat a partir dels processos i mecanismes de participació, així com l’activitat de les persones usuàries de la plataforma. També es fomentarà la compartició de la configuració dels diferents components així com de les dades obertes per a la definició d’aquests indicadors. + +La igualtat en la participació política de la ciutadania és un dels principis fonamentals del sistema democràtic i la plataforma, no només ha de garantir la igualtat d’oportunitats pel que fa als usos i funcionalitats, sinó també el dret d’accés. En aquest sentit cada ens promotor de la plataforma es compromet a impulsar aquelles accions que avancin en la direcció de facilitar i acompanyar l’accés a la plataforma a tota la ciutadania per igual de manera universal, propocionant les eines i els recursos adients per a que la plataforma estigui a l’abast de qualsevol persona que en vulgui fer ús. + +== Confidencialitat de les dades + +Es garanteix la confidencialitat i la privacitat de les dades personals que els ciutadans aporten per a participar en qualsevol de les funcionalitats i/o possibilitats de participació que ofereixi la plataforma DECIDIM en tot moment. En cap cas es cediran aquestes dades personals a tercers. Tampoc es farà un ús de les mateixes que vagi més enllà de l'estrictament necessari per a la gestió del registre d'usuaris o millores de la usabilitat de la plataforma. Sempre que la tecnologia de la plataforma ho permeti les expressions de preferències polítiques en els processos de decisió romandran inaccessible fins i tot per l’ administrador/a de la plataforma o els servidors. + +== Rendiment de comptes i responsabilitat + +S’adopta un compromís davant la ciutadania de respondre totes les aportacions i consultes en el mínim temps possible. També s’adopta el compromís de donar seguiment als resultats dels processos de participació, així com de donar resposta a aquelles demandes que específicament ho sol·licitin. Finalment s’assumeix el compromís d’estudiar la incorporació d’indicadors de seguiment dels processos de participació un cop estiguin finalitzats, per tal de poder avaluar de manera sistemàtica el seu desplegament. + +== Millora contínua i col·laboració interinstitucional + +S’adoptaran mecanismes de revisió i avaluació periòdica per facilitar la millora contínua de la plataforma. + +Es prioritzarà la col·laboració i l’intercanvi d’experiències entre institucions involucrades en el projecte, amb l’objectiu de millorar, corregir i generar nous desenvolupaments que ajudin a la millora contínua de la plataforma. + +En aquest sentit es facilitaran les condicions i entorns de col·laboració a l’hora de tirar endavant millores que apuntin a un benefici comú del conjunt de la plataforma, habilitant mecanismes de coordinació interinstitucional quan sigui necessari. +Condicions d’ús + +Totes els punts d’aquest codi han de quedar reflectits en les condicions d’ús que cada ens redacti per a la seva plataforma i mai entraran en contradicció. \ No newline at end of file diff --git a/docs/es/modules/understand/pages/social-contract-es.adoc b/docs/es/modules/understand/pages/social-contract-es.adoc new file mode 100644 index 0000000000..9f15eeba3b --- /dev/null +++ b/docs/es/modules/understand/pages/social-contract-es.adoc @@ -0,0 +1,63 @@ += Contrato social de Decidim + +[NOTE] +==== +Puedes leer el Contrato Social de Decidim en otros idiomas: xref:understand:social-contract-ca.adoc[Català] - xref:understand:social-contract.adoc[English] + +Si lo quieres traducir a tu idioma por favor https://decidim.org/contact[contáctanos]. +==== + +Código de garantías democráticas y colaboración democrática + +Este es el contrato social que todos los miembros del proyecto Decidim se comprometen a seguir. + +El uso y desarrollo de la plataforma Decidim por parte de una institución o grupo social de cualquier tipo implica la aceptación total e integral del presente contrato social y su compromiso con el mismo. + +== Software libre y contenido abierto + +El código de la plataforma, junto con los módulos, las bibliotecas o cualquier otro código que se desarrolle para su funcionamiento y utilización, será siempre un software de código abierto libre con una licencia de https://www.gnu.org/licenses/agpl-3.0.en.html[Affero GPLv3 o versiones posteriores], siempre que el código se cree de nuevo y con licencias que sean compatibles con el anterior código cuando este se reutilice. + +Del mismo modo, el contenido, los datos, las API o cualesquiera otras interfaces que se utilicen para interactuar con cualquier tipo de usuario debe seguir estándares abiertos e interoperables (OpenID, RSS, OStatus, etcétera), procurando siempre maximizar su integración con los estándares abiertos de uso más amplio. + +Con el fin de maximizar la transparencia y la colaboración ciudadana en procesos, órganos y mecanismos participativos, el contenido, así como texto, gráficos, fuentes, audio, vídeo u otros elementos de diseño se publicarán bajo una licencia https://creativecommons.org/licenses/by-sa/4.0/legalcode[Creative Commons By-SA]. + +Los datos disponibles en la plataforma, especialmente todos los datos que se pueden recopilar de manera sistemática a través de scrappers u otras técnicas de consulta masiva, se publicarán bajo licencia http://opendatacommons.org/licenses/odbl[Open Data Commons Open Database], en formatos estandarizados y accesibles (CSV, JSON, etcétera) y, siempre que sea posible, con herramientas que faciliten el análisis y la visualización de datos. + +== Transparencia, trazabilidad e integridad + +La plataforma y su configuración, desarrollo, implementación y uso actuales o futuros deben asegurar y maximizar en todo momento la transparencia, trazabilidad e integridad de documentos, propuestas, debates, decisiones o cualquier otro objeto, mecanismo o proceso participativo. + +Por transparencia entendemos que todos los datos relacionados con todos estos mecanismos y procesos participativos están disponibles para su descarga, análisis y tratamiento, siguiendo los estándares y formatos más exigentes para compartir información (accesibilidad, multiformato, etcétera). + +La transparencia es una condición necesaria para el seguimiento de los procesos y mecanismos participativos, pero en ningún caso debe aplicarse al tratamiento de los datos personales o contra la defensa de la privacidad de las personas que participan en la plataforma. + +Entendemos por trazabilidad la capacidad de hacer un seguimiento completo de propuestas, planes, regulaciones o cualquier otro objeto de participación o decisión, tanto pasados como futuros, incluidos en un proceso o mecanismo. La plataforma debe mostrar en todo momento cómo, por qué, a través de quién y con qué garantías se desestimó, se aprobó o se bloqueó un determinado tipo de objeto de un proceso participativo. + +Entendemos por integridad la autenticidad de un contenido específico, con la seguridad de que no ha sido manipulado o alterado sin que esta modificación esté claramente registrada y sea visiblemente verificable y auditable. El objetivo de la integridad es evitar la manipulación de propuestas o resultados de procesos o mecanismos participativos. + +== Igualdad de oportunidades e indicadores de calidad + +Junto con las garantías previamente definidas, la plataforma promete garantizar la igualdad de oportunidades para todas las personas, así como para sus propuestas u otras contribuciones que la plataforma pueda albergar. La plataforma ofrecerá iguales oportunidades de inicio a todos los objetos participativos (propuestas, debates, etcétera) para que se puedan conocer, debatir, comentar, evaluar o tratar sin que exista discriminación de ningún tipo. En este sentido, la identidad digital de los usuarios de la plataforma será siempre personal y no transferible, la verificación que confiere derechos de decisión sobre la plataforma también debe ser única y la responsable de asegurar la no representación de una persona o entidad será la entidad administrativa responsable de la plataforma. + +La plataforma debe promover, con el objetivo de garantizar su calidad democrática, el uso de indicadores de calidad desarrollados a partir de los datos obtenidos de los procesos participativos y los mecanismos y la actividad de los usuarios. Se promoverá que se comparta la configuración de los diferentes componentes, así como datos abiertos, para la definición de estos indicadores. + +La igualdad en la participación política de la ciudadanía es uno de los principios fundamentales de cualquier sistema democrático, y la plataforma no solo debe garantizar la igualdad de oportunidades con respecto a los usos y las funciones, sino también el derecho de acceso. En ese sentido, la entidad a cargo de la plataforma asume el compromiso de promover acciones enfocadas a proporcionar acceso y apoyo a la plataforma para todos los ciudadanos por igual de manera universal. Las herramientas y los recursos apropiados a la plataforma están disponibles para cualquiera que los quiera usar. + +== Confidencialidad de los datos + +Se garantizará en todo momento la confidencialidad y privacidad de los datos personales que las personas puedan proporcionar para participar en cualquiera de las funcionalidades o posibilidades de participación que la plataforma proporcione. Los datos personales no se transferirán, en ningún caso, a terceros. Tampoco se utilizarán más allá de lo estrictamente necesario para el registro de usuarios y mejoras en la usabilidad de la plataforma. Siempre que la tecnología de la plataforma lo permita, la expresión de las preferencias políticas o la voluntad en los procesos de toma de decisiones seguirá siendo inaccesible incluso para el administrador de la plataforma o el servidor o servidores que la alojan. + +== Compromiso y responsabilidad + +Se establecerá un compromiso con los ciudadanos para responder a todas las consultas y contribuciones en el menor tiempo posible. También se adoptará un compromiso para dar seguimiento a los resultados de los procesos participativos y responder a esas demandas específicamente. Por último, se adoptará el compromiso de estudiar la incorporación de indicadores para el seguimiento de los procesos de participación una vez finalizados con el fin de evaluar sistemáticamente su implementación. + +== Mejora continua y colaboración interinstitucional + +Se estipularán mecanismos de revisión y evaluación periódica para facilitar la mejora continua de la plataforma. + +Se dará prioridad a la colaboración y al intercambio de experiencias entre las instituciones involucradas en el proyecto con el objetivo de mejorar, fijar y construir nuevos desarrollos para la mejora continua de la plataforma. + +En este sentido, se facilitarán las condiciones y los entornos de colaboración cuando se avance en mejoras que apunten a un beneficio común de toda la plataforma, y se permitirán mecanismos de coordinación interinstitucionales cuando sea necesario. +Términos de uso + +Todos los puntos de este código deben reflejarse en el acuerdo de licencia de usuario final (EULA, por sus siglas en inglés), documento que cada organización que presta servicios utilizando Decidim establece con los usuarios y que nunca deberá ser contradicho. \ No newline at end of file diff --git a/docs/es/modules/understand/pages/social-contract.adoc b/docs/es/modules/understand/pages/social-contract.adoc new file mode 100644 index 0000000000..240f49069d --- /dev/null +++ b/docs/es/modules/understand/pages/social-contract.adoc @@ -0,0 +1,60 @@ += Decidim's Social Contract + +[NOTE] +==== +You can also read Decidim's Social Contract in other languages: xref:understand:social-contract-ca.adoc[Català] - xref:understand:social-contract-es.adoc[Castellano] + +If you want to translate it to your own language please https://decidim.org/contact[contact us]. +==== + +Code for democratic guarantees and open collaboration + +This is the social contract that all members of the Decidim community are committed to follow. + +By signing this Social Contract, any individual, institution or social group of any kind, commits to fulfill the principles established here when using, developing and participating in the community of Decidim. + +== Free software and open content + +The code of the platform, along with the modules, libraries or any other code that is developed for its functioning and deployment, will always be Free Open Source Software with an https://www.gnu.org/licenses/agpl-3.0.en.html[Affero GPLv3 license or later versions] whenever the code is newly developed and with licenses that are compatible with the above one when code re-used. + +Likewise, the content, data, APIs and/or any other interfaces that are deployed to interact with any type of user must follow open and interoperable standards (ex. OpenID, RSS, OStatus, etc.), always tending to maximize their integration with the most widely used open standards. + +In order to maximize transparency and citizen collaboration in participatory processes, organs and mechanisms, the content, text, graphics, fonts, audio, video or other design elements will be published under a https://creativecommons.org/licenses/by-sa/4.0/legalcode[Creative Commons By-SA]. + +The data available through the platform, especially all data that can be collected in a systematic way through scrappers or other techniques of massive consultation, will be published and licensed under http://opendatacommons.org/licenses/odbl[Open Data Commons Open Database License], published under standardized and accessible formats (such as CSV, JSON, etc.) and, whenever possible, with tools that facilitate the analysis and visualization of data. + +== Transparency, traceability and integrity + +The platform, and its current or future configuration, development, deployment and use must ensure and maximize, at all times, the transparency, traceability and integrity of documents, proposals, debates, decisions, or any other object, mechanism or participatory process. + +By _transparency_ we understand that all data related to all such participatory mechanisms and processes are available for download, analysis and treatment, following the most demanding standards and formats to share information (accessibility, multi-format, etc.). + +Transparency is a necessary condition for monitoring of participatory processes and mechanisms, but should never, in any case, be applied for the treatment of personal data or against the defense of the privacy of the people participating in the platform. + +We understand by _traceability_ the ability to fully track backward (past) and forward (future) what happened to the proposals, plans, regulations, or any other object of participation or decision included in a process or mechanism. The platform must at all times show how, why, by whom and with what guarantees a certain type of object of a participatory process was dismissed, approved or blocked. + +We understand by _integrity_ the authenticity of a specific content, and ensuring that it has not been tampered with or altered without this modification being clearly recorded and visibly verifiable and auditable. The goal of integrity is to avoid manipulation of proposals or results of participatory processes or mechanisms. + +== Equal opportunities and quality indicators + +Alongside the guarantees previously defined, the platform promises to ensure equal opportunities for all people, as well as for their proposals or other contributions the platform might host. The platform will offer equal starting opportunities to all participatory objects (proposals, debates, etc.) for them to be viewed, discussed, commented, evaluated or treated without discrimination of any kind. In this sense, the digital identity of the users of the platform will always be personal and not transferable, the verification that confers decision rights on the platform should also be unique, and it is the administrative entity in charge of the platform who should be responsible for ensuring non-impersonation of a person or entity. + +The platform should promote, with the aim of ensuring its democratic quality, the use of quality indicators developed on the basis of the data obtained from participatory processes, mechanism and user activity. Sharing of the setting of the different components as well as open data will be promoted for the definition of these indicators + +Equality in political participation of citizens is one of the fundamental principles of any democratic system and the platform, not only has to ensure equal opportunities with respect to the uses and functions, but also the access right. In this sense the entity in charge of the platform assumes the commitment to promote actions that advance in the direction of providing access and support to the platform for all citizens alike universally Giving tools and resources appropriate to the platform is available to anyone who wants to use. + +== Data confidentiality + +The confidentiality and privacy of the personal data that people might provide to participate in any of the functionalities and/or possibilities of participation that the platform provides shall be guaranteed at all times. In no case shall personal data be transferred to third parties. Personal data will not be used beyond what is strictly necessary for the purposes of user registration and improvements on the usability of the platform. Whenever platform technology makes it possible, the expression of political preferences or will in decision-making processes shall remain inaccessible even for the administrator of the platform or the server/s that host it. + +== Accountability and responsibility + +A commitment to citizens shall be taken to respond to all queries and contributions in the shortest time possible. A commitment shall also be adopted to follow-up the results of participatory processes and to respond to those demands which specifically request it. Finally, a commitment shall be taken to study the incorporation of indicators to monitor the participation processes once they are finalized, in order to systematically evaluate its implementation. + +== Continuous improvement and inter-institutional collaboration + +Mechanisms for periodic review and evaluation will be provided in order to facilitate the continuous improvement of the platform. + +Priority will be given to the collaboration and the exchange of experiences between the institutions involved in the project, with the aim to improve, fix and build new developments for the continuous improvement of the platform. + +In this sense, collaborative conditions and environments will be facilitated when moving forward improvements that point to a common benefit of the entire platform, enabling inter-agency coordination mechanisms when necessary. \ No newline at end of file diff --git a/docs/es/modules/whitepaper/pages/decidim-a-brief-overview.adoc b/docs/es/modules/whitepaper/pages/decidim-a-brief-overview.adoc new file mode 100644 index 0000000000..886e8bd9f5 --- /dev/null +++ b/docs/es/modules/whitepaper/pages/decidim-a-brief-overview.adoc @@ -0,0 +1,16 @@ += Decidim: a brief overview +:experimental: +:icons: font +:page-partial: +:source-highlighter: highlightjs + +IMPORTANT: The content of this section is a fragment of Barandiaran, X., Calleja-López, A. & Monterde, A. (2018). Decidim: political and technopolitical +networks for participatory democracy. __Decidim’s project white paper__, pp. 7-26. (You can http://ajbcn-meta-decidim.s3.amazonaws.com/uploads/decidim/attachment/file/2005/White_Paper.pdf[download an alpha version of the document here]) + +*We have been busy building Decidim, it is now time to explain it*. The goal of this white paperfootnote:[A white paper is document that expresses the principles, vision, technical details and insights of a project with the goal of explaining, detailedly and contextually, its value, to help others understand, join and support the project.] is to explain in detail the nature of the Decidim project. The paper comes to fill a long lasting gap and outlines what the project is really about, why it is relevant, and how we (the Metadecidim community) have made it possible and developed it so far. It presents the Decidim platform, its features and design principles, but also other dimensions of the project, from the political to the technical. It also outlines the theoretical and political vision, as well as the practical and organizational work behind the project. This document also situates Decidim in a historical context defined by political struggle. Furthermore, it discusses some of the sociopolitical problems it tries to address and the possibilities it opens up looking forward. Authorship of this document entails not more, not less, than putting together, making explicit and elaborating a set of theoretical and practical principles and guidelines that have been developed by a multitude of participants in our community. + +*How to read this white paper and make it yours*. Readers might be interested on different dimensions of the project and we encourage you to find the chapter or section that best matches your interests. The introduction however is worth reading for any of you. We start with a brief explanation of what is Decidim, a definition of the project, how the platform works, the social contract that binds the project together, a description of the community and ecosystem behind it, the model of democracy that it embodies and the three dimensions of the project: the political, the technopolitical and the technical. We next move into the context in which Decidim has been developed to explain why we thought it was necessary to initiate or join this project, why it is relevant today both in the context of a crisis of democracy as we knew it and the context of an increasing control of social digital infraestructures by a few corporations. The rest of the paper is structured along the three planes or dimensions of the project: the political plane explains the model of democracy that Decidim embodies and makes possible, contrasting it with different limitations and models of contemporary democracy (representative democracy and party politics, technocracy and neoliberal models of governance, etc.) highlighting how Decidim makes possible to strengthen new and old forms of participatory democracy, collective intelligence and multitudinous political identities in public institutions and social organizations alike. The technopolitical planefootnote:[In short, by technopolitics we mean the intersection and hybridization of technology and politics. This is a conception of politics that focuses on the technical articulation of power, its structure and exercise, highlighting and intervening on devices, interfaces, codes, protocols, networks and methods in contrast with conceptions of politics that focuses on ideas, discourses, symbols and reasons. It is a conception of technology that focuses on its political dimensions, its mutability and its construction, highlighting and intervening in the power relationships, ideologies and logics in contrasts to views that understand it as value neutral and objective matters.] explains how this is made possible through the platform, its design principles, best configuration practices and the technological articulation of the project’s internal politics through the platform: the Metadecidim community. Finally, we extend into the details of the technical articulation of the project: how the software is produced, its architectural details, organizing protocols, legal licenses, collaborative practices, training programs, etc. + +include::what-is-decidim.adoc[leveloffset=+1] + +include::why-decidim.adoc[leveloffset=+1] \ No newline at end of file diff --git a/docs/es/modules/whitepaper/pages/what-is-decidim.adoc b/docs/es/modules/whitepaper/pages/what-is-decidim.adoc new file mode 100644 index 0000000000..e6c4a8d64a --- /dev/null +++ b/docs/es/modules/whitepaper/pages/what-is-decidim.adoc @@ -0,0 +1,51 @@ += What is Decidim? +:experimental: +:icons: font +:page-partial: +:source-highlighter: highlightjs + +.Video: https://youtu.be/f6JMgJAQ2tc[Decidim: Free Open-Source participatory democracy for cities and organizations]. +video::f6JMgJAQ2tc[youtube, width=720, height=390] + +Decidim [http://decidim.org[http://decidim.org]], from the Catalan "let's decide" or “we decide”, is a digital platform for participatory democracy. +More specifically, Decidim is a web environment (a _framework_) produced in _Ruby on Rails_ (a programming language) that allows anybody to create and configure a website to be used in the form of a political network for democratic participation. It is built entirely and collaboratively as https://en.wikipedia.org/wiki/Free_software[free software]. + +The platform allows any organization (local city council, association, university, NGO, neighbourhood or cooperative) to create mass processes for strategic planning, participatory budgeting, public consultation, collaborative design, etc. It also makes possible to connect traditional in-person democratic meetings with the digital world: sending meeting invites, managing registrations, facilitating the publication of minutes, etc. +In addition, Decidim enables the structuring of government bodies or assemblies (councils, boards, working groups), the convening of consultations, referendums or channelling citizen or member initiatives to trigger different decision-making processes. Yet, the Decidim project is much more than that. + +*Definition*: _Decidim is a public-common’s, free and open, digital infrastructure for participatory democracy_. + +- By “participatory democracy” we mean that form of “government of the people, for the people and by the people” in which people take part as equals or peers (from latin _pars_, part, and _capere_, to take). By taking part we mean that, under the current political model, people take the part _of_ the sovereign power that belongs to them. And this should be an equal part for each. Moreover, we also mean, under an alternative model, to take part _in_ the autonomy of the social and political life, in the construction of collective potency: the capacity to coordinate and commit to collective action. +- The term “digital infrastructure” makes reference to a set of tools, resources, data-sets, documents, codes (legal, computer, etc.), interfaces and services that are digitalized or made accessible by digital means. This infrastructure is primarily a software platform for participatory democracy. ++ + Participants can create proposals, sign and support them, comment, receive notifications, attend public meetings or receive the minutes of the session. Administrators can design participatory processes, define the structure of democratic organs (like councils or committees), configure types of initiatives or set up consultations. The infrastructure also includes documentation, design (icons, images, logos, etc.), legal documents, datasets or training resources, among others. All these make possible to deploy a participatory democratic system in any organization (be it a municipality, a cooperative, an association, a union or a community). +- By “free and open” we mean that the project’s goods (the assets of the infrastructure) do no fall under the form of private property that excludes others from accessing, using, copying, modifying and re-publishing or reusing these resources but, instead, displays all the legal, technical and social means necessary to share them and open them to collaboration. +- Finally, the term “public-commons” indicates that the project is mostly financed and made possible by public institutions and is managed and designed by an open community constituted by public-servants, members of different associations, university researchers and students, activists and staff from foundations, workers from different companies or simply volunteers that commit to the principles of the project. For this infrastructure to be a common’s it is important that these partners organize democratically in relation to the project. In this sense, Decidim is a reflexive infrastructure that uses the very infrastructure to democratize itself through the MetaDecidim community. + +*Platform features and functional architecture*. Since the digital platform displays and embodies both the means of project organization and its democratic principles, it is important to explain how the platform works. Users of the platform (participants) interact through participatory mechanisms known as _components_ within different participatory _spaces_ that channel their democratic power to specific results. Participatory spaces are the frameworks that define how participation will be carried out, the _channels_ or means through which citizens or members of an organization can process requests or coordinate proposals and make decisions. _Initiatives_, _Processes_, _Assemblies_ and _Consultations_ are all participatory spaces. Specific examples of each of these include: a citizen initiative for directly changing a regulation (_Initiative_); a general assembly or workers’ council (_Assembly_); a participatory budgeting, strategic planning, or electoral process (_Processes_); a referendum or call to vote “Yes” or “No” to change the name of an organization (_Consultation_). The more notable components that are combined into spaces to deliver participatory mechanisms include in-person _meetings_, _proposals_, _blogs, debates, static information pages, surveys_, _results_ and _comments_. So, for example, the various phases of a participatory budgeting process (where members of an organization are called to decide how to spend a budget) can combine components in the following way: at an early phase, public meetings can be opened for citizens to analyze different needs classified by districts. In turn these meetings can lead to the design of a survey. The survey results can next be used to define a set of categories for projects to be proposed. The proposal component might then be activated for participants to create and publish their projects as solutions to the identified needs. These proposals can be commented on. After a period of deliberation, the voting component can be activated to select among the projects using a budget-expenditure system. Participants can then be called to a public meeting to evaluate the results and an assessment survey can then be launched for those who could not attend the meeting. Finally, the accountability component can be activated to monitor the degree of execution of the selected projects and people can comment on it. This is but one example of how components are combined in a space, but there are many other combinatorial possibilities. What makes Decidim particularly powerful is this combination of components within spaces, which provides an organization with a complete toolkit to easily design and deploy a democratic system adapted to its needs. + +*The social contract*: All members and partners of the Decidim project must endorse and follow a “https://decidim.org/contract[social contract]” that defines a set of guiding principles. The social contract can be summarized as follows: 1. _Free software and open content_: Decidim will always remain free and open to collaboration, without legal or technical obstacles for the use, copy and modification. To ensure this we use a set of licenses: https://www.gnu.org/licenses/agpl-3.0.html[Affero GPLv3] for the code, https://creativecommons.org/licenses/by-sa/4.0/[CreativeCommons By-SA] for the content (text, images, design, etc.) and https://opendatacommons.org/licenses/odbl/1-0/[Open Access Database License] for data. This means that Decidim will always remain auditable, collaborable, transparent, appropriable and trustworthy, all of which is fundamental for a democratic infrastructure. 2. _Transparency, traceability and integrity_: the content of participation will always remain transparent, traceable and integral. This means that all the content must be accessible and downloadable, it should always be known what happens with each proposal, its origin, where it was incorporated or why it was rejected, and the content needs to be displayed without been manipulated, any modification (if required) must be registered and be accessible and auditable. 3. _Equal opportunities, democratic quality and inclusiveness_: the platform must guarantee the democratic quality, the non-discrimination and equal opportunities for each participant and proposals, including objective indicators. The platform must comply with accessibility standards, its use must favour the integration of online and offline participation and organizations must deploy the means for mediation and training of participants. 4. _Privacy with verification_: participants must retain privacy of their personal data combined with verification. Personal data should never be displayed, nor sold or transferred to third parties while, at the same time, the unicity and democratic rights of participants must be preserved (meaning there cannot be two verified users corresponding to the same individual with democratic rights and all participants with such rights must be verifiable). 5. _Democratic commitment, responsibility and collaboration_: institutions using Decidim must commit to respond on time, be accountable for decisions taken through the platform, and to openly collaborate on its improvement. + +*Instances*. The best known and intensively used instance of Decidim, as a digital platform for participatory democracy, is https://decidim.barcelona[www.decidim.barcelona], with (as of December 2018) more than 30,000 registered participants, more than 1.5 million page views, over 300,000 visitors, 35 participatory processes, 1,141 public meetings channelled through the platform and 13,297 proposals, out of which over 9,196 have already become public policies grouped into 5,485 results whose implementation level can be monitored by citizens. The instance that actively explores more functionalities is http://meta.decidim.org[meta.decidim.org], the community portal that designs and supports the project. There is also a demo site with the latest version available for exploration and a training instance open to anybody to learn how to configure, administrate and use the platform. There are currently more than 70 instances of Decidim for organizations of different sorts ranging from municipalities such as https://osallistu.hel.fi/[Helsinki] or https://erabaki.pamplona.es/[Pamplona], to regional governments like the https://participa.castillalamancha.es/[Junta de Castilla la Mancha] or the https://participa.gencat.cat/[Generalitat de Catalunya], national governments like the https://monopinion.belgium.be[Belgium Federal State], NGO networks such as https://assembly.fundaction.eu[Fundaction] or https://participa.quorumglobal.org/[QuorumGlobal], cooperatives like https://participa.somenergia.coop/[Som Energia], or the https://participons.debatpublic.fr/[National Commission for Public Debate] (_Commission Nationale du Débat Public_) in France. We have an https://decidim-monitor.herokuapp.com[online monitoring tool] that captures the relevant public data of known Decidim instances around the world. + +*A sustainable ecosystem*. Developed at Barcelona’s http://ajuntament.barcelona.cat/innovaciodemocratica/en[Laboratory for Democratic Innovation], Decidim is the result of the joint effort of a network of collaborating entities and multiple participants leaded by Barcelona’s City Council. Apart from the organizations that use the platform and whose participants and administrators report bugs and suggest improvements, there is a network of 17 different collaborating entities, from software companies to institutional consortia, from research institutions to civil associations. The https://meta.decidim.barcelona/[Metadecidim] community uses an instance of the Decidim platform to organize the different dimensions of the project. As of August 7th 2018 it has 379 registered participants, it hosts minutes of 126 public meetings, details of eight assemblies or working groups, four participatory processes (welcome process, bug reporting, feature proposals, and training workshop process) together with various initiatives and two consultations aimed at defining the roadmap and software design of the platform, bug reporting, community and project governance, research and development. Official documentation and code are developed on https://github.com/decidim[Github] where the project hosts more than 20 repositories with over 50 contributors. They all together generate a sustainable ecosystem that governs, produces and provides services over the platform (deployment, adaptation, configuration, training, consultancy, administration, etc.). + +*Democracy and social empowerment*: Decidim was born in an institutional environment (that of Barcelona City Council during Ada Colau’s mandate 2015-2019 and under the impulse of Gala Pin councillor for participatory democracy), directly aiming at improving and enhancing the political and administrative impact of participatory democracy in the state (municipalities, local governments, etc.). But it also aims at empowering social processes as _a platform for massive social coordination for collective action_ independently of public administrations. Anybody can copy, modify and install Decidim for its own needs, so Decidim is by no means reduced to public institutions. There are different ways in which participatory democracy infrastructures can boost social, economic and political self-organization. Decidim is starting to be used for these purposes: for the internal organization of consumer and producer cooperatives for example, it is also helping movements organize and to design strategic planning, and it might soon be used to coordinate massive strikes or other forms of social action. The modular nature of its architecture is also enabling these organizations to develop their own components and improvements (such as crowdfunding, membership management, etc.) and to plug them back into Decidim, expanding its potential. Decidim comes to fill the gap of public and common’s platforms, providing an alternative to the way in which private platforms coordinate social action (mostly with profit-driven, data extraction and market-oriented goals). Ultimately, Decidim aims to present an alternative to the existing model of digital economy sponsored by corporate digital platforms (Amazon, AirBnB, Uber, etc). + +*The political, the technical and the technopolitical*. As we have repeatedly stressed, Decidim is more than a technological platform. It has required to assemble a variety of codes, realities and dimensions that go beyond programming code. We define it as a “technopolitical project” where legal, political, institutional, practical, social, educational, communicative, economic and epistemic codes merge together. Ultimately, Decidim is in itself a sort of crossroad of the various dimensions of networked democracy and society, a detailed practical map of their complexities and conflicts. We distinguish three general planes or dimensions of the project: the _political_ (focused on the democratic model that Decidim promotes and its impact on public policies and organizations), the _technopolitical_ (focused on how the platform is designed, the mechanisms it embodies, and the way in which it is itself democratically designed), and the _technical_ (focused on the conditions of production, operation and success of the project: the digital factory, collaborative mechanisms, licenses, etc.). The political plane is best illustrated by the use of Decidim in a city or organization, the type of democratic processes and decisions that are made through it. In other words, it covers what kind of politics can be done using Decidim: what kind of governance, conflict and power relationships can be channelled through it, thus, the kind of democracy it is capable to produce. Its model instance is decidim.barcelona, what happens within, how it alters the political space of the city. The second plane, the technopolitical, includes matters concerning the digital architectural design of Decidim: its interfaces, features, design principles, data policies, user experience, etc. It is a primarily a reflexive space of how technologies structure political processes. It is embodied in the Metadecidim platform and the community that surrounds it. Finally, the technical plane encompasses issues concerning primarily the programming and legal codes (information and legal infrastructures), but is also includes issues of education and knowledge (epistemic infrastructures), spatial and working organization. All three dimensions are part of the project. + +.Systematization footnote:[We have chosen Barcelona here as a scale of reference, but it could be the EU, or any other political territory or democratic organization. The term “scale” does not refer here to territorial extension, but to the number of agents and organizational complexity: the political involves more complexity, more agents, more conflict, more diversity and width of decision to be made, the technopolitical is a smaller community scale, the technical is a laboratory or factory that covers a subset of this community.] of various aspects of the Decidim project in the political, technopolitical and technical planes with the city of Barcelona as a reference. +[cols="\"", ,, ,", options="header"] +|=== +|Plane +|Relation +|Platform +|Mode +|Scale + +|Political |Superstructure |decidim.barcelona |Co-decision |City + +|Technopolitical |Structure |Metadecidim |Co-design |Community + +|Technical |Infrastructure |github.com/decidim |Co-production |Laboratory +|=== \ No newline at end of file diff --git a/docs/es/modules/whitepaper/pages/why-decidim.adoc b/docs/es/modules/whitepaper/pages/why-decidim.adoc new file mode 100644 index 0000000000..97722615c2 --- /dev/null +++ b/docs/es/modules/whitepaper/pages/why-decidim.adoc @@ -0,0 +1,55 @@ += Why Decidim? + +:experimental: +:icons: font +:page-partial: +:source-highlighter: highlightjs + +The context that has given birth to Decidim is defined by two interconnected phenomena, each of which displays two poles. On the one hand, the last decades have witnessed a crisis of representative democracy (weakening of the Welfare State, subordination to market forces, inability to deal with global problems such as climate change, etc.) as well as the essay with some alternatives, such as grassroots organizations, new parties and institutional forms. On the other, the rise of cognitive capitalism, a system where the exploitation of information, knowledge, affects, and social relations has become core to the generation of economic value, is opposed by the emergence of free software, knowledge and culture. Both phenomena are deeply intertwined, and Decidim is born right at their very intersection, responding to the challenges and opportunities that they open for democracy. In this section, we briefly analyze these two phenomena, with a special focus on the way they impact contemporary democracy. + +== The contemporary crisis of democracy and its alternatives + +*Success and decline of liberal, representative democracies*. The basic structures of representative democracy have barely been updated in the last two centuries. The last three decades have seen both their success (with the multiplication of liberal democratic states all over the world) and their declinefootnote:[The decline has been ongoing for the last two decades, at least (Rosanvallon, 2008), and has been noticed across the “ideological and methodological spectrum” (Tormey 2015: 15). So much so that the crisis of liberal representative democracy has been identified with the crisis of democracy itself (Keane 2009; DellaPorta 2013). Different authors have denounced the technocratic tendencies and the neoliberal hegemony in this same period as heralding a stage of post-democracy (Crouch, 2004) or post-politics (Zizek, 1999; Rancière, 2001), while others, in a more limited way, have used the term "post-representation" to refer to the emptying of power and meaning of representative institutions by dynamics ranging from globalization and the dismantling of the welfare state to dis-affection and dis-empowerment (Brito Vieira and Runciman, 2008; Keane, 2009; Rosanvallon, 2011; Tormey, 2015). The meanings of “post-representation” are multiple, though, connected with different political readings of the crisis and the potential ways out of it, from those that give conjunctural interpretations to those that tie it to the transformations of modernity, its subjectivities and modes of sociality (Tormey, 2015).] (as diagnosed in a wide literature ranging from Pharr & Putnam, 1999 to Tormey, 2015). The decline has been expressed in various forms; we will mention two: practically, in the inability of contemporary democracies to deal with problems such as rising inequality (Piketty, 2014) or climate change (Klein, 2015); politically, in the decline of participation and trust in political parties and political representatives, as well as other political institutions (Mair, 2006; Castells, 2017). + +*Structural limits of representative democracy*: the triple challenge of complexity.footnote:[This section is a theoretical reconstruction of aspects that are historically embedded and power-laden.] The structure of modern democracies is based on representation (and, more specifically, electoral representation, Manin 1997, Van Reybrouck 2016), that is, on a series of mechanisms by which a few actors (political and administrative) are elected to manage public issues in the name of the whole of the citizenry, and are in principle accountable to it. Representation had its roots in medieval institutions, as a mechanism for nobles and knights to push their demands in exchange for consenting taxation (Pitkin, 1967). But it has proven its limits in coping with complexity and conflict: the complexity and conflictuality of society, of reality, and of organization. + +1. In social terms, it had to face the growth of the franchise, incorporating an ever more diverse constituency, and, in the last decades of the XXth century, the rise in cultural diversity, consumerism and the ideology of consumer choice in Western democracies (Laclau & Mouffe, 1985; Sennett, 1977, 1998) that generated an ever-growing variety of desires and perspectives to be listened to and articulated in government action. Furthermore, representation has proven open to systemic practices of nepotism or corruption, usually by powerful economic interests (Buchanan & Tullock, 1962; Peltzmann, 1976). In this context, representative mechanisms have ended up imposing the will of the few over the complex and conflictual wills of the people in public policy. +1. The second key challenge of complexity had to do with the reality. As the technoscientific transformation of reality accelerated, the responsibility and complexity of the problems facing public policy (f.i.: climate change) has only increased; and yet many of the systems for detecting social problems and mobilizing social knowledge to address them have remained oligarchic. The attack Friedrich Hayek (1944, 1945) launched on socialist planning can be launched against representative democracy too: reality is too complex for a centralized decision-making system. +1. The third challenge of complexity fed back into the previous two: it is the challenge (or meta-challenge) of communication and organization. Mobilizing and organizing the will, the knowledge, and the collective action of society into public policy faced numerous socio-technological limits: the millions of members composing a given social group could not express their will nor contribute their knowledge and effort to address their matters of concernfootnote:[Organization or knowledge may be insufficient to solve the problems facing democracy today. However, we there are reasons to believe they can contribute to do so.]. Still in the XXth century, the infrastructure required to bring an expression of will or knowledge of people distributed geographically or socioeconomically (f.i.: laborally) into a common problem or decision seemed out of reach. Even if they wanted, people could not gather in assemblies or other political processes: people were too many, lived far from each other, had their work schedules, and no free time at all. + +Representative democracy, where the many elect a few every four years, became a raw and oversimplified articulation of the will and knowledge of the many, in terms of the management by the few. So raw and simplified that it couldn’t solve the problems of society and became one of them: the people’s will was not represented or properly constructed but captured, the real problems were not solved by public representatives, but externalized to the market to be solved, and the problems generated by the market too often remained unsolved. + +*Social limits of representative democracy: the challenge of economic powers and the rise of neoliberalism*. The problems of representative democracy today are not of complexity only, though. They have as much to do with issues of social power. Many of the ailments of representative democracy in the last three decades can be rooted in three key shifts of power (DellaPorta, 2013: 23; Offe, 2011: 457): a shift of power from parties and parliaments to executive powers, reducing the meaning of parliamentary and party politics; from State to Market, with processes ranging from externalization and privatization of public services to the introduction of competition logics in public administration ( the process of “emptying out the State”, specially, the Welfare State, Rhodes, 1994), as well as the rise in power of global corporations; and from nation-states to international governmental organizations such as the EU, the IMF or the World Bank, frequently aligned with such corporations, emptying both States and democracies of much of their legitimacy and power (Laval & Dardot, 2017; Crouch, 2011; Sánchez Cuenca, 2014). Political parties have suffered particularly: from the mid XIXth to the mid XXth century, the mass party model was guided by clear programs and rooted in a thick social structure connected to grassroots spaces and organizations, unions, media, and so on. The catch all party model rising in the 80s, however, had pragmatic, variable programs and supported itself primarily in mass media (in particular, tv) and polls. A fragmentation of socioeconomic composition and the discourses around it, no more easily divisible into “capitalist and proletarians” (Laclau & Mouffe, 1985), as well as the rise of a mass-mediatized consumer society based on an exaggerated and depoliticising individualism (Sennett 1977, 1998) paved the way for such party transformations. The traditional mass party saw a steady decline of its grassroots in Western democracies until today. This emptying out of representative democracy was tied to the rise of neoliberalism[multiblock footnote omitted], and has brought a crisis of legitimacy and meaning of democracy itself, frequently identified with representation (Crouch, 2004; Streeck, 2016). The Great Regression of 2008 (Eichengreen & O’Rourke, 2009) and the austerity politics that followed it (Blyth, 2013) seemed to confirm this shift and its implications, with States first going into debt to save the financial sector and then applying (or being applied) austerity policies without or against citizen consultation, guaranteeing the sustenance of capital accumulation while losing more and more capacity for social provision (Jessop, 2015). + +*The alter-globalization challenge to the shift of power away from democracy*. These processes haven’t gone unchallenged. The last two decades have been a period of democratic movements of resistance. At the turn of the century, the alter-globalization movement called for an alternative to the rising neoliberal globalization, an alternative globalization tied to a radicalization of democracy, social justice, human rights, as well as economical and ecological sustainability (Klein, 1999; Stiglitz, 2002; DellaPorta & Tarrow, 2005). This “movement of movements” had socio-technical networks as a key part of its organization. It generated a “cultural politics of networking” where networks operated not only as technologies, but also as models for the definition of social norms and political forms (Juris, 2008): features such as free association and information, non-hierarchical and flexible organizations, globally distributed but synchronized, locally rooted action, or autonomous networked media were among its key features. + +*The crisis of legitimacy of the neoliberal-democracy narrative*. Beyond the work of these movements, it was the 2008 Great Regression what brought about a crisis of legitimacy of the neoliberal narrative. It opened a period of crisis of neoliberalism (Dumezil & Lévy, 2011), not so much in economics but, specially, in political and social terms (in economic terms the crisis lasted less, followed by a deepening of accumulation processes, Jessop, 2015): the discredit of narratives praising free trade, privatization, international economic institutions, and global markets, otherwise, the discredit of the ideological practice preeminent since the 80s, spread along with new social and political movements, from the progressive to the reactionary. This crisis of neoliberalism fed into the crisis of representation mentioned earlier, with a peak of distrust towards official institutions, from politicians and governments to banks. The result has been a crisis of the existing model of neoliberal representative democracy (Castells, 2012, 2017; DellaPorta, 2013; Gerbaudo, 2012, 2017). + +*The 2011 wave of networked movements of the squares*. 2011 is a key year in political terms. Progressive social movements swept the world, from the Arab Springs in the North of Africa to Occupy Wall Street in North America: they challenged the political and economic status quo and the rising inequality, while reclaiming a more radical democracy (Postill, 2017; Gerbaudo, 2012; DellaPorta, 2013, Flesher Fominaya, 2014). The 15M movement was among the key referents of this wave of networked movements of the squares, which intensively used digital networks. In Spain, 15M was at the upshot of a cycle of contention that saw the emergence of new forms of collective organization (from the networked squares of 2011 to the direct action tactics of the Platform of People Affected by Mortgages Romanos, 2014), new political parties (from Podemos to Barcelona en Comú), and the victories in dozens of cities by citizen initiatives in the Spring of 2015 (Cádiz, Barcelona, Madrid, A Coruña, etc.) (Feenstra et. al, 2017; Calleja-López & Toret, 2019). The use of digital platforms were crucial in all of these undertakings, oriented to increase the depth of participation of anyone and everyone into the political field (Aragón et al., 2017; Calleja-López, 2017; Monterde, 2016; Toret et al., 2015). Digital networks seemed to provide spaces where the disaggregating forces of neoliberal society were partially and temporarily countered and redirected to nurture collective action both online and offline. The upward extractivism of global finance and corporations was answered with democratic, locally rooted and globally connected initiatives. In the case of Spain, the struggle around the city, from the squares of 2011 to city halls in 2015, has become ever more relevant in this trajectory, in the form of municipalism (Rubio-Pueyo, 2017; Junqué & Shea, 2018; Roth, Monterde & Calleja-López, 2019). + +*The rise of right-wing populism*. But these achievements have showed limits and perils, too. At the international scale, the wave of movements tended to fizzle out. In countries such as Spain and Tunisia, the movements left new parties or constitutions, even though the general political and economic landscape remained gloomy (Castells, 2017); countries such as the US or Egypt (or Spain itself), has seen the advent of increasingly authoritarian governments. Moreover, right wing movements spread across Europe and North America (Castells, 2017). The final result has been defined as the end of the neoliberal era and the advent of a populist moment (Gerbaudo, 2017; Rodrik 2017), in which the basis of the _status quo_ loses its compelling power and is challenged by actors invoking the common people, from left and right, with recent successes for the latter such as the rise of Donald Trump to the presidency of the US or the Brexit. The various negative effects of neoliberalism, particularly accelerated after the Great Regression, such as increasing inequality, the normalized connivance between economic and political power, the dismantling of welfare structures along with rising public debt, social and political disempowerment in the face of transnational corporate and financial powers, the eclipse of the public sphere resulting from phenomena such as a rising individualism or closed multiculturalism (Sennet 1977, 1998), have generated a suspicion towards the status quo in which right wing and nationalist positions are gaining ground. In many cases, such rise was facilitated by social networks such as Facebook and Twitter, used by corporations (such as Cambridge Analytica), or political actors (such as the Trump or the Brexit communication teams). We analyze the various edges of this phenomenon in the following chapter. Resuming, in the political plane, the last decades have witnessed the tension between processes showing the limits or undermining democracy and others trying either to stop such undermining, or even calling to radicalize democracy. Decidim is firmly rooted in this last trend. + +== The rise of the network society, cognitive capitalism and knowledge commons + +*First generation digital networks: informational networks.* A similar opposition between conservative tendencies and progressive ones can be found on the moving field of the so-called digital economy. The 90s saw the rise of the Internet and the WWW to the status of phenomena of global proportions. The initial hopes for the cyberspace envisioned by figures such as John Perry Barlow (in this Declaration of Independence of Cyberspace) anticipated a time where many of the old social structures would be superseded by a new dawn of human creativity and freedom from old governments and social constraints (bodies, sexes, races, etc.). Since its origin, the construction of the internet resulted from the conflicting interests, visions, and practices of various actors (Abate, 1999; Rasmussen, 2007), specially, military and research actors. The idea of a distributed (and thereby resilient) information network was tied to the threat of possible high scale attacks to information centers by the Soviet Union (Baran, 1964), but even more so to practices and narratives of information and knowledge circulation and freedom among university researchers (Leiner et al., 1997). Already in the 1990s, a first generation of worldwide digital networks, informational networks, paradigmatically exemplified by the World Wide Web, allowed free the flow of information and users between websites. + +*Old and new communication powers: from mass communication to mass self-communication.* This seemed to be the dawn of a “networked public sphere” (Benkler, 2006), where earlier mediators of social communication receded from view. The XXth century protagonism of capital-intensive media such as radio, newspapers or TV, with their olygocratic editorial teams, seemed to give way to an explosion of uncensored digital media such as websites and blogs. Social communication was said to be in its way to de-intermediation, its power to be more equally distributed (Rushkoff, 2002; S Republic of Letters in XVIIth and XVIIIth centuries), had been shaken in the XIXth and XXth centuries by technologies that afforded one-to-many circulation of informhirky, 2009). Early modern communication ecologies, based in one-to-one interactions, either face to face or via letters (which still generated complex systems such as theation such as newspapers, radio or TV: this was the model of broadcasting, which potentiated a centralization of social communication, mass communication, where a the majority of the public played a passive role. The Internet and social media afforded new versions of these earlier communication models, and combined it with a new model, that of many-to-many communication, in which many emissors were able to generate (and react to) messages reaching many others, without having to pass through any mediating center (Kellner, 1999). This was giving way to “mass self-communication” , a model in which mass communication is “self-directed in the elaboration and sending of the message, self-selected in the reception of the message, and self-defined in terms of the formation of the communication space” (Castells, 2009). This did not imply an equal redistribution of communication power in society but rather its re-structuration, with new actors, including networked social movements, having an opportunity to play a role in a media sphere earlier controlled by big corporations. The fourth power of mass media journalism gave way to a fifth power: digital networks (or perhaps to a complex, more decentralized form of the fourth, a “hybrid media system”, Chadwick, 2008). + +*The rise of informational and cognitive capitalism.* The Internet and digital networks did not only affect the public sphere in a potentially democratizing tendency, they also greatly contributed to push globalization forward as a historical process, beginning with the acceleration of global finance (Castells, 1996). At the core of the economy behind neoliberal globalization were information and other immaterial assets, such as knowledge, affects, human relations, etc. The result was a new form of capitalism: informational and cognitive capitalism (Castells, 1996; Fumagalli, 2007; Moulier-Boutang, 2007; Vercellone, 2006). Differently from industrial capitalism, where the transformation of material resources into commodities was at the core of the process of capital accumulation, now it was information, knowledge, affects, and social relations what became key in the generation of economic value. Intellectual property is a key legal mechanism under this new paradigm, used to privately appropriate social knowledge and natural information, e.g.: strong copyrights on books and music, patents on technoscientific innovations, traditional medicines and techniques, or animal and plants DNA (Fumagalli, 2007). This in spite of the fact that information and knowledge are non-rival goods, with zero marginal cost, meaning that they can be reproduced and used without depletion. Furthermore, in most cases their value increases with use: the bigger the spread of trademark the higher its value, the more a song is listened to the higher its value. While digital networks provide the means to freely reproduce and re-distribute this kind of goods, artificial scarcity is generated via legal and technological mechanisms. This appropriation has not only the form of a “theft”, but is rather based on structures and processes (from education to entrepreneurship policies) that orient, transform and produce new personal and collective practices, desires, affects and relations sustaining the neoliberal system (Laval & Dardot, 2014). + +*From cognitive capitalism to platform & surveillance capitalism*. In time, the digital element in these processes has only gained prominence. The so called web 1.0 (O’Reilly, 2005) exhibited various limits to users’ interactions with both digital contents and other users. Differently, web 2.0 was all about interaction: the web as a platform. This exponentially increased the quantity and quality of information that could be extracted. By the late 2000s the emancipatory hopes tied to social networks were heavily in dispute (Morozov, 2011), and by the late 2010s the situation seems to be rather the opposite of the anticipated. From Amazon to Tinder, technological platforms are a way for a few corporations to extract data (going from activity, to opinions, to metadata), while leaving users with a little a say on what is gathered, how it is used or how the resulting benefits are distributed; this institutes a regime of “data extractivism” (as suggested by Evgeny Morozov). These corporations have access to more details of the lives of millions of people than any State or corporation to date. Combined with the development of new techniques of big data analysis and the always increasing rate of computing power, the infrastructural conditions were there for a socioeconomic mutation. Corporations such as Google or Facebook were heralding a specific form of informational and cognitive capitalism, which has been variously qualified as “platform”, “data” or “surveillance” capitalism. These three names speak of three connected elements: digital infrastructures, data, and social control. Digital platforms have become the basic means of production and management of a valuable resource (data) out of its source, human activities (Srnicek, 2017). Data, considered as the new “oil” (The Economist, 2017), “infrastructure” (Kawalek & Bayat, 2017; Prospect, 2017), “labor” (Arrieta et al., 2017), etc. is processed using data science methods and business intelligence (from modern statistics to Artificial Intelligence). Then, it is used in various ways in social processes of data-driven politics, science and economics (Lohr, 2015). This process of extraction, processing, and use is radically oligarchic. Corporations such as Alphabet (which includes Google), Microsoft, Amazon or Facebook have earned a monopolistic positionfootnote:[Alphabet, Microsoft (a giant from the early days of cognitive capitalism) and Amazon occupy three of the four top positions of the rankings by market capitalization. Facebook occupies the 8th place, but remains the third most visited web, with Google and Youtube (both owned by Alphabet) being the first and the second, according to Alexa and SimilarWeb, as of March 2018.]. A few actors have become the owners of both platforms and data and can thereby surveil social life in order to experiment with it: surveilling thereby appears as a first step to what we may define as “surwilling”, or willing and shaping the will of others from above; otherwise, platform corporations move from unveiling social life to orienting (or “willing”) it from above. If surveillance intrudes into privacy, into the negative freedom of people (to use Isaiah Berlin’s), into their freedom-from, surwilling shapes their positive freedom, their freedom-for. Platforms crucially influence the information people get about others and about the world, be it from friends, social actors, mass media, advertising corporations or beyond. The result is the emergence of new forms of knowing and influencing the actions of millions of people, a new techno-political power in the hands of States (such as NSA programs), corporations, or political actors (such as the Trump or the Brexit communication teams). This surveillance (Zuboff, 2015) and surwilling capitalism brings ever closer to a Big Brotherhood dystopia. + +*Towards technopolitical heteronomy? From mass self-communication to mass capture.* Social networks such as Facebook or Twitter have grown to user bases in the billions in only a decade. This has turned them into new intermediaries of social communication, if not of social life as such. Mass self-communication has risen hand in hand with mass capture, the capture of masses of data, human actions and interactions. These platforms feed from, and feed on, some dynamics already diagnosed by Guy Débord (1967) around the society of the spectacle, heralding a society of hypervisibility and exhibition tied to capitalism. Exhibition and self-exhibition (from the intimate everyday life to political opinions and actions, passed through a variety of fiction filters), are stimulated and situated at the center of the functioning of these platforms (Crogan & Kinsley, 2012; Goodwin et al., 2016), which are in turn at the center of an economy of attention. Furthermore, in social networks, surveillance and control is not only top-down but also bottom-bottom. There are two axes of surveillance, vertical and horizontal. While the first tends to be unidirectional, the second is frequently (though not always, as platform privacy settings are variable) horizontal and multidirectional: users can and do surveil each other, with playful or predatory (Albrechtslund, 2008; Tokunaga, 2011) purposes. The monopolistic concentration of power around social network corporations becomes daunting: Facebook, for instance, also owns Instagram and Whatsapp. Key rules of social relations are not produced in and decided by processes, actors or conflicts spread in space and time, but rather are increasingly decided and designed by a reduced number of people and specific interests (geostrategic, economic, etcetera). The power of social networks moves from selling advertisement (a concrete type of content) to a deeper shaping of social attention and affects (Grizzioti, 2016), and thereby, behavior. The social anomie resulting from several decades of neoliberalism had given way to a landscape in which the autonomy resulting from new forms of multitudinous self-organization in networked social movements was underlied and exposed to new forms of corporate influence via technologies, that is to say, technopolitical heteronomy. + +*How datacracy is dissolving democracy.* Democracy became exposed to datacracy, namely, to the strategic use of big data and digital platforms to gain and exercise political and cultural power (Cancellato, 2017; Gambetta, 2018). The rise of Barack Obama in 2008 and Donald Trump in 2016 to United States presidency are examples of how social networks and big data operations have a growing impact on electoral processes, affecting the networked public sphere. Trump invested 94 million dollars in expert consultants and Facebook’s paid advertising services (The Guardian, 2017). More importantly, the campaign included numerous examples of political automation: the use of chatbots, posting bots, false profiles and the automated inflation of metrics and followers (Bessi & Ferrara, 2016). These were frequently tied to the diffusion of _fake news_: biased, incomplete or spurious media stories with exaggerated and emotional adjectivation (Graves, 2018). This fed back with the activity in platforms such as 4chan, Omegle, Reddit and Tumblr, where Trump's followers formed an irregular community, self-appointed as _Alt-Right_ (Nagle, 2017a; 2017b), which showed clear manifestations of sexism, xenophobia, islamophobia, anti-feminism, intolerance and white supremacy, openly or in the form of satirical jokes and memes (Mendoza-Denton, 2018, Van-Zuylen Wood et al, 2018; Pollard, 2018). He may also has been supported by Russian espionage and communication experts, who received large financial incentives, showing the geopolitical character of these technopolitical struggles (The Guardian, 2018a). Finally, there was the hiring of London consulting company Cambridge Analytica, which extracted personal data from 87 million Facebook profiles between 2014 and 2016 to analyze their political preferences (De Llano, 2018), using a Facebook application disguised as a “personality test” (Cadwalladr, 2018; The Guardian, 2018b). This is not exceptional, though. Cambridge Analytica intervened in the last presidential campaigns of Argentina, Mexico, Brazil, Sri Lanka, Malaysia, China, Australia and South Africa, as well as the referendum that caused the separation of Britain from the European Union, known as _Brexit_ (The Guardian, 2018b). These cases have drawn public attention to issues such as the vulnerability of online personal data, the power of corporations and States that can access these databases (either legally or illegally) and use these platforms for influencing and shaping public discourse and action (Mottram, 2018; Tufekci, 2018). In words of Facebook's founder and president, Mark Zuckerberg, the platform has no affinity with any political party, and any client can access its services (Price, 2018). However, Facebook algorithms keep working as “black boxes”. Zuckerberg's company has never shared details of its technical operation or data processing software or policies besides the content of Facebook's terms of use, which still remain general, abstract, and non-negotiable. This opacity becomes ever more problematic as the role of platform algorithms, political automation and Artificial Intelligence (including machine and deep learning) systems grow (Trevathan, 2006; Manovich, 2013; Zysman & Kenney, 2015, 2016). Datacracy will pervade more aspects of people’s lives to the extent that the increasing pervasiveness of digital platforms grows and follows the current corporate and technocratic logics. + +*Free software, knowledge, culture, and internet.* However, in continuous struggle and contact with these dynamics there has also been a proliferation of actors, movements, practices and projects oriented by principles such as democracy, freedom, social justice, or commonality. For instance, as an alternative to commercial social networks, also in the second half of the 2000s, there emerged alternative social networks, from Diaspora (with more than one million users) to n-1, a platform widely used during the 15M movement, together with a self-managed network of blogs (wordpress), voice-call rooms (mumble) and collaborative real-time writing pads (etherpad). They followed in the steps of a tradition dating back, at least, to the 1980s and 1990s: the WWW and free software such as the GNU/Linux operating system, have provided free digital services (free as in “freedom” and not only as in “free beer”, as Richard Stallman put itfootnote:[The four basic freedoms are the freedom to run the program for any purpose; to access its source code, study how it works, and change it; to redistribute copies; to distribute copies of modified versions. They can be retrieved at https://www.gnu.org/philosophy/free-sw.en.html[https://www.gnu.org/philosophy/free-sw.en.html].]) to millions of people over world. Furthermore, the GNU license was a legal tool to produce and reproduce such free digital infrastructures. The Creative Commons license expanded its possibilities to cultural works. First, free software licenses and, later (as the principles and practices of free software spread to other fields, Kelty, 2008) creative commons licenses helped to outline an alternative paradigm of collective appropriation of informational and cognitive wealth. Projects such as Wikipedia brought the free software culture into knowledge. This neatly fitted with the discourse of scientific knowledge (Merton, 1942), traditionally self-proclaimed universalism, communalism, and disinterestedness, specially up to the 1980s and landmarks such as the Bay-Dohle Act, that put science into a path of closure, privatization, and corporate interestedness. By putting the classic Encyclopedia Britannica and Microsoft’s Encarta out of business Wikipedia became an example of and alternative “open knowledge” regime, from its production to its appropriation. Softer forms of this regime, such as “open access”, have gained solid ground in time. Under this alternative paradigm, platforms for digital collaboration became key in the collective production of information and knowledge out of the proprietary logics of informational and cognitive capitalism. The broad category of “digital commons” has served to encompass a variety free software, knowledge and culture products. More broadly, the term FLOK (Free/Libre Open Knowledge) includes also non-digital forms of knowledge that generate common practices and democratic communities out of the proprietary form: from education to hardware, from engineering to culture, from biology to software (Villa-Viñas & Barandiaran 2015). More recently, struggles around Net Neutrality (have brought to the front the centrality of the control of concrete aspects of a common such as the Internet (in this case, the discrimination a types of data traffic on the network by service providers and governments) for the flourishing of other basic rights such as freedom of speech or equality in the network societyfootnote:[Various reports and a history of the battle around Net Neutrality can be found at https://www.laquadrature.net/en/Net_neutrality[https://www.laquadrature.net/en/Net_neutrality].]. + +*Hacker culture, digital communities and knowledge commons*. Free/Libre and Open Knowledge does not stand simply as a commodity or a good that is accessible by means of legal and technical devices. It is followed and often preceded by certain forms of social relation, modes of production and the collaborative culture that is necessary to produce and sustain it. The hacker culture, often associated with an ethics of fun, openness and sharing (Himanen, 2003), is even so with concrete practices (Kelty, 2008) and forms of politics (Barandiaran 2003; Maxigas, 2012); crucially, it involves the attitude to transform the way in which artifacts (in its broader sense: from institutions to modems) are given to us in order to open them up to new possibilities: a practical believe on the capacity (both individual and collective) to challenge existing limits and to collaboratively explore how to break, re-assemble and build upon what is available. In doing so communities are created around technical challenges, common infrastructures, collective resources and struggles. In turn, these communities are faced with a myriad of governing problems and these are solved by a combination of recursive tools and democratic/collaborative procedures: from the mechanisms to solve disputes in Wikipedia, to the voting procedures of the Debian community, from Forks (the duplication of the content and resources of a project to create a new one, something that is made possible by the non-proprietary form of knowledge and technologies involved) to version control systems in software development. Added to the unlimited reproductive capacity of digital goods, all this provides the sphere of Free/Libre Open Knowledge with a productive power and collective management capacity that results on a knowledge commons that often parallels that of profit-driven corporations and has been the object of extensive study (Hess & Ostrom, 2007; Benkler, 2006). + +*Decidim in context.* As we have shown, democracies in the network society face the double challenge of the crisis of representative democracy and the rise of platform capitalism. The first phenomenon is tied to neoliberalism (and its periodic crises) as well as to the emergence of progressive and reactionary networked politics. The second phenomenon underlies new social conditions as well as those very forms of networked politics, while it is opposed by commons-oriented forms of production. The following image can help to understand the role of Decidim in this context. + +.Decidim model for a democratic society. +image::decidim-in-context.svg[Image, width=90%] + +Under platform capitalism, corporations extract social data in huge quantities and turn it into wealth and power over people and institutions (this is what, in the image below, we label “algorithmic governance”), challenging democracy as we know it. New forms of distributed platform capitalism (airbnb, uber, deliveroo, etc.) herald forms of capilar exploitation of social wealth. However, non-corporate, collaborative forms of digital production exist, and they make possible to find alternatives. Decidim is one such alternative. It is conceived as a commons’ digital infrastructure for participatory democracy that is publicly supported and democratically designed, using itself for such purpose. The value of Decidim stands out in a context in which democratic collective intelligence faces the challenge of corporate artificial intelligence and datacracy, where the democratic impulse of networked social movements, from alter-globalization to 15M, faces reactions by market, State and right wing forces, and where public and commons’ institutions require democratic innovative infrastructures to overtake market-driven innovation in solving the complex social challenges of our times. Whereas a dominant trend pushes the governing of infrastructures and services to the top-right of the picture, towards increasing privatization and centralization in the hands of big corporations, the socio-technical potential exists to shift this trend towards the bottom-left corner: towards decentralized and public-common’s ecosystems of services, infrastructures and goods. Decidim contributes to this transition by boosting democratic participation into the governing of public bodies, social organization, the cooperative economy as well as the joint circulation among the three. So far, public emphasis has been put into regulating consumer markets, corporate governance and economy as a means to slow down privatizing trends and its negative consequences; meanwhile, corporate interests keep exerting their lobbying influence into the public and state institutions. Instead, Decidim contributes to the strengthening of innovative forms of commons-oriented economy and participatory democracy. The next section deals with “how” this strengthening operates, explaining how Decidim explores the potential of participation at various scales. \ No newline at end of file diff --git a/docs/pt/antora.yml b/docs/pt/antora.yml new file mode 100644 index 0000000000..1ce7aefaac --- /dev/null +++ b/docs/pt/antora.yml @@ -0,0 +1,8 @@ +name: pt +title: "Decidim Documentação" +version: develop +asciidoc: + attributes: + page-lang: pt@ +nav: +- modules/ROOT/nav.adoc diff --git a/docs/pt/modules/ROOT/nav.adoc b/docs/pt/modules/ROOT/nav.adoc new file mode 100644 index 0000000000..ef8f361fc9 --- /dev/null +++ b/docs/pt/modules/ROOT/nav.adoc @@ -0,0 +1,218 @@ +* xref:install:index.adoc[Getting started] +** xref:install:manual.adoc[Manual Installation] +** xref:install:checklist.adoc[Checklist] +** xref:install:update.adoc[Update] +* xref:configure:index.adoc[Configure] +** xref:configure:environment_variables.adoc[Environment Variables] +** xref:configure:initializer.adoc[Initializer] +** xref:customize:index.adoc[Customize] +*** xref:customize:authorizations.adoc[Authorizations] +*** xref:customize:code.adoc[Code] +*** xref:customize:data_consent.adoc[Data consent] +*** xref:customize:gemfile.adoc[Gemfile] +*** xref:customize:images.adoc[Images] +*** xref:customize:javascript.adoc[Javascript] +*** xref:customize:logic.adoc[Logic] +*** xref:customize:menu.adoc[Menu] +*** xref:customize:oauth.adoc[OAuth] +*** xref:customize:styles.adoc[Styles] +*** xref:customize:texts.adoc[Texts] +*** xref:customize:users_registration_mode.adoc[User registration mode] +*** xref:customize:views.adoc[Views] +** xref:services:index.adoc[Services] +*** xref:services:activejob.adoc[Active Job] +*** xref:services:activestorage.adoc[Active Storage] +*** xref:services:elections_bulletin_board.adoc[Elections Bulletin Board] +*** xref:services:etherpad.adoc[Etherpad] +*** xref:services:maps.adoc[Maps] +*** xref:services:sms.adoc[SMS] +*** xref:services:smtp.adoc[SMTP] +*** xref:services:social_providers.adoc[Social Providers] +* Admin +** xref:admin:index.adoc[Introduction] +*** xref:admin:system.adoc[System panel] +*** xref:admin:dashboard.adoc[Dashboard] +** Settings +*** xref:admin:configuration.adoc[Configuration] +*** xref:admin:appearance.adoc[Appearance] +*** xref:admin:homepage.adoc[Homepage] +*** xref:admin:scopes.adoc[Scopes] +*** xref:admin:areas.adoc[Areas] +*** xref:admin:help_sections.adoc[Help sections] +** xref:admin:pages.adoc[Pages] +** xref:admin:participants.adoc[Participants] +*** xref:admin:participants/admins.adoc[Admins] +*** xref:admin:participants/groups.adoc[Groups] +*** xref:admin:participants/participants.adoc[Participants] +*** xref:admin:participants/impersonations.adoc[Impersonations] +**** xref:admin:participants/verifications_conflicts.adoc[Verifications conflicts] +*** xref:admin:participants/reported_users.adoc[Reported users] +*** xref:admin:participants/authorizations.adoc[Authorizations] +**** xref:admin:participants/authorizations/identity_documents.adoc[Identity documents] +**** xref:admin:participants/authorizations/code_postal_letter.adoc[Code by postal letter] +**** xref:admin:participants/authorizations/census.adoc[Organization's census] +** xref:admin:spaces.adoc[Spaces] +*** xref:admin:spaces/processes.adoc[Participatory Processes] +**** xref:admin:spaces/processes/phases.adoc[Phases] +**** xref:admin:spaces/processes/components.adoc[Components] +**** xref:admin:spaces/processes/categories.adoc[Categories] +**** xref:admin:spaces/processes/attachments.adoc[Attachments] +**** xref:admin:spaces/processes/admins.adoc[Process admins] +**** xref:admin:spaces/processes/private_participants.adoc[Private participants] +**** xref:admin:spaces/processes/moderations.adoc[Moderations] +**** xref:admin:spaces/processes/groups.adoc[Process Groups] +*** xref:admin:spaces/assemblies.adoc[Assemblies] +**** xref:admin:spaces/assemblies/components.adoc[Components] +**** xref:admin:spaces/assemblies/categories.adoc[Categories] +**** xref:admin:spaces/assemblies/attachments.adoc[Attachments] +**** xref:admin:spaces/assemblies/members.adoc[Members] +**** xref:admin:spaces/assemblies/admins.adoc[Assembly admins] +**** xref:admin:spaces/assemblies/private_participants.adoc[Private participants] +**** xref:admin:spaces/assemblies/moderations.adoc[Moderations] +*** xref:admin:spaces/initiatives.adoc[Initiatives] +*** xref:admin:spaces/conferences.adoc[Conferences] +**** xref:admin:spaces/conferences/components.adoc[Components] +**** xref:admin:spaces/conferences/categories.adoc[Categories] +**** xref:admin:spaces/conferences/attachments.adoc[Attachments] +**** xref:admin:spaces/conferences/media_links.adoc[Media Links] +**** xref:admin:spaces/conferences/partners.adoc[Partners] +**** xref:admin:spaces/conferences/speakers.adoc[Speakers] +**** xref:admin:spaces/conferences/registrations.adoc[Registrations] +***** xref:admin:spaces/conferences/registrations/types.adoc[Registration Types] +***** xref:admin:spaces/conferences/registrations/users.adoc[User Registrations] +***** xref:admin:spaces/conferences/registrations/invites.adoc[Invites] +***** xref:admin:spaces/conferences/registrations/certificates.adoc[Certificate of Attendance] +**** xref:admin:spaces/conferences/admins.adoc[Conference admins] +**** xref:admin:spaces/conferences/moderations.adoc[Moderations] +*** xref:admin:spaces/consultations.adoc[Consultations] +*** xref:admin:spaces/votings.adoc[Votings] +** xref:admin:components.adoc[Components] +*** xref:admin:components/accountability.adoc[Accountability] +*** xref:admin:components/blog.adoc[Blog] +*** xref:admin:components/budgets.adoc[Budgets] +*** xref:admin:components/debates.adoc[Debates] +*** xref:admin:components/elections.adoc[Elections] +*** xref:admin:components/meetings.adoc[Meetings] +**** xref:admin:components/meetings/registrations.adoc[Registrations] +**** xref:admin:components/meetings/agenda.adoc[Agenda] +**** xref:admin:components/meetings/polls.adoc[Polls] +**** xref:admin:components/meetings/close.adoc[Close] +*** xref:admin:components/pages.adoc[Pages] +*** xref:admin:components/proposals.adoc[Proposals] +**** xref:admin:components/proposals/amendments.adoc[Amendments] +**** xref:admin:components/proposals/answers.adoc[Answers] +**** xref:admin:components/proposals/collaborative_drafts.adoc[Collaborative drafts] +**** xref:admin:components/proposals/participatory_texts.adoc[Participatory texts] +*** xref:admin:components/sortitions.adoc[Sortitions] +*** xref:admin:components/surveys.adoc[Surveys] +** Features +*** xref:admin:features/badges.adoc[Badges] +*** xref:admin:features/comments.adoc[Comments] +*** xref:admin:features/conversations.adoc[Conversations] +*** xref:admin:features/embed.adoc[Embed] +*** xref:admin:features/endorsements.adoc[Endorsements] +*** xref:admin:features/fingerprint.adoc[Fingerprint] +*** xref:admin:features/follows.adoc[Follows] +*** xref:admin:features/metrics.adoc[Metrics] +*** xref:admin:features/my_account.adoc[My account] +**** xref:admin:features/my_account/account.adoc[Account] +**** xref:admin:features/my_account/notifications_settings.adoc[Notifications settings] +**** xref:admin:features/my_account/authorizations.adoc[Authorizations] +**** xref:admin:features/my_account/groups.adoc[Groups] +**** xref:admin:features/my_account/my_interests.adoc[My interests] +**** xref:admin:features/my_account/my_data.adoc[My data] +**** xref:admin:features/my_account/delete_my_account.adoc[Delete my account] +*** xref:admin:features/my_public_profile.adoc[My public profile] +**** xref:admin:features/my_public_profile/timeline.adoc[Timeline] +**** xref:admin:features/my_public_profile/activity.adoc[Activity] +**** xref:admin:features/my_public_profile/badges.adoc[Badges] +**** xref:admin:features/my_public_profile/follows.adoc[Follows] +**** xref:admin:features/my_public_profile/followers.adoc[Followers] +**** xref:admin:features/my_public_profile/groups.adoc[Groups] +*** xref:admin:features/notifications.adoc[Notifications] +*** xref:admin:features/search.adoc[Search] +*** xref:admin:features/share.adoc[Share] +*** xref:admin:features/statistics.adoc[Statistics] +*** xref:admin:features/versions.adoc[Versions] +** xref:admin:newsletters.adoc[Newsletters] +** xref:admin:global_moderations.adoc[Global moderations] +** Deprecated +*** xref:admin:information-pages.adoc[Information pages] +* xref:contribute:index.adoc[Contribute] +** xref:contribute:governance.adoc[Governance] +** xref:contribute:translations.adoc[Translations] +** xref:contribute:documentation.adoc[Documentation] +* xref:develop:index.adoc[Develop] +** xref:develop:guide.adoc[Guide] +*** xref:develop:guide_example_apps.adoc[1. Example Applications] +*** xref:develop:guide_development_app.adoc[2. Development App] +*** xref:develop:guide_commands.adoc[3. Commands] +*** xref:develop:guide_conventions.adoc[4. Conventions] +*** xref:develop:guide_architecture.adoc[5. Architecture] +** xref:develop:security.adoc[Security] +** Advanced +*** Concerns +**** xref:develop:authorable.adoc[Authorable] +**** xref:develop:embeddable.adoc[Embeddable] +**** xref:develop:endorsable.adoc[Endorsable] +**** xref:develop:followable.adoc[Followable] +**** xref:develop:reportable.adoc[Reportable] +**** xref:develop:traceable.adoc[Traceable] +**** xref:develop:machine_translations.adoc[TranslatableResource aka Machine Translations] +**** xref:develop:share_tokens.adoc[Shareable with Tokens] +*** xref:develop:api.adoc[API] +*** xref:develop:components.adoc[Components] +*** xref:develop:content_processors.adoc[Content Processors] +*** xref:develop:custom_seed_data.adoc[Custom Seed Data] +*** xref:develop:deploy.adoc[Deploy] +*** xref:develop:docker.adoc[Docker] +*** xref:develop:fixing_locales.adoc[Fixing locales] +*** xref:develop:guide_github_projects.adoc[GitHub Projects Workflow] +*** xref:develop:maps.adoc[Maps] +*** xref:develop:managing_translations_i18n.adoc[i18n] +*** xref:develop:metrics.adoc[Metrics] +*** xref:develop:modules.adoc[Modules] +*** xref:develop:notifications.adoc[Notifications] +*** xref:develop:open-data.adoc[Open Data] +*** xref:develop:permissions.adoc[Permissions] +*** xref:develop:profiling.adoc[Profiling] +*** xref:develop:releases.adoc[Releases] +*** xref:develop:reminders.adoc[Reminders] +*** xref:develop:templates.adoc[Templates] +*** xref:develop:testing.adoc[Testing] +*** xref:develop:guide_development_with_localhost_ssl.adoc[Testing SSL and Tenants in Development] +*** xref:develop:turbolinks.adoc[Turbolinks] +*** Views +**** xref:develop:content_blocks.adoc[Content Blocks] +**** xref:develop:data-picker.adoc[Data Picker] +**** xref:develop:newsletter_templates.adoc[Newsletter Templates] +**** xref:develop:view_hooks.adoc[View Hooks] +**** xref:develop:view_models_aka_cells.adoc[View Models (Cells)] +* Understand +** xref:understand:about.adoc[About] +** xref:understand:background.adoc[Background] +** xref:features:general-description.adoc[Features] +*** xref:features:participatory-spaces.adoc[Participatory spaces] +*** xref:features:components.adoc[Components] +*** xref:features:participants.adoc[Participants] +*** xref:features:general-features.adoc[General features] ++ +// ** xref:understand:governance.adoc[Project governance] + +// ** xref:understand:history.adoc[History of the project] + +// ** xref:understand:research.adoc[Research] + +** xref:understand:social-contract.adoc[Social Contract] +*** xref:understand:social-contract-ca.adoc[Català] +*** xref:understand:social-contract-es.adoc[Castellano] +** Publications +*** xref:publications:catalan.adoc[Catalan] +*** xref:publications:english.adoc[English] +*** xref:publications:french.adoc[French] +*** xref:publications:german.adoc[German] +*** xref:publications:italian.adoc[Italian] +*** xref:publications:spanish.adoc[Spanish] +** Whitepaper +*** xref:whitepaper:decidim-a-brief-overview.adoc[Decidim: a brief overview] +* xref:releases:index.adoc[Release Notes] \ No newline at end of file diff --git a/docs/pt/modules/ROOT/pages/index.adoc b/docs/pt/modules/ROOT/pages/index.adoc new file mode 100644 index 0000000000..8ed5c4eb1d --- /dev/null +++ b/docs/pt/modules/ROOT/pages/index.adoc @@ -0,0 +1,19 @@ += Welcome to Decidim Documentation + +This is the documentation site to Decidim, a participatory democracy platform created initially by Barcelona City Hall. + +Decidim is a framework that allows anybody to create and configure a website platform, to be used in the form of a political network for democratic participation. The platform allows any organization (local city council, association, university, NGO, neighbourhood or cooperative) to create mass processes for strategic planning, participatory budgeting, collaborative design for regulations, urban spaces and election processes. + +== New to Decidim? + +You’ve found the documentation for Decidim. Learn about the project at https://decidim.org[decidim.org]. + +// * Read the xref:ROOT:getting-started.adoc[Getting Started guide] + +The documentation covers xref:install:index.adoc[installing], xref:configure:index.adoc[configuring], and xref:admin:index.adoc[running] your own Decidim site. + +If you want to make changes to the source code, we have documentation for xref:develop:guide.adoc[developers] too. + +If you are an organisation who wants to use Decidim, or a developer who is interested in collaborating on the software, please https://decidim.org/contact[get in touch]. + +Decidim is a community effort, as such if you find any errors on these guides please let us know at hola [at] decidim [dot] org. Every help is welcome. If you've a GitHub user then you can even propose changes to this website with the Edit link on every page. \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/appearance.adoc b/docs/pt/modules/admin/pages/appearance.adoc new file mode 100644 index 0000000000..3b42c76416 --- /dev/null +++ b/docs/pt/modules/admin/pages/appearance.adoc @@ -0,0 +1,78 @@ += Appearance + +In this page you can configure the look and feel of your Decidim instance. + +Please mind that this would be incompatible with some of the changes that your implementers could change in your general installation. For instance if there were changes in the xref:customize:styles.adoc[Styles] this could not work. + +image::admin_appearance.png[Decidim Admin Appearance] + +--- + +NOTE: This is a legacy setting that will be removed in the next version. https://github.com/decidim/decidim/pull/6575[See PR]. + +* **Show statistics**: whether you want to show or not the statistics sections in the homepage. + +--- + +* **Description**: What's the description of this site. Used for metatags for Google and Twitter embeds. Also used by the "SubHero" ContentBlock in the Homepage. + +--- + +NOTE: These area legacy settings that will be removed in the next version. https://github.com/decidim/decidim/pull/6284[See PR]. + +* **Call To Action button path**: You can overwrite where the Call To Action button in the homepage links to. Use partial paths, not full URLs here. Accepts letters, numbers, dashes and slashes, and must start with a letter. The Call To Action button is shown in the homepage between the welcome text and the description. Example: https://meta.decidim.org/conferences/decidimfest2020/ +* **Call To Action button text**: You can overwrite the Call To Action button text in the homepage for each available language in your organization. If not set, the default value will be used. The Call To Action button is shown in the homepage between the welcome text and the description. + +--- + +NOTE: This is a legacy setting that will be removed in the next version. There's no PR yet. + +* **Highligted content banner** +** *Show the highlighted content banner* +** *Title* +** *Short description* +** *Action button title* +** *Action button subtitle* +** *Action button URL* +** *Image* + +--- + +* *Edit omnipresent banner* +** **Show omnipresent banner** +** **Title** +** **Short description** +** **URL** + +--- + +* **Edit layout appearance** + +This subsection defines the images for the layout that will be visible in almost all the pages. These are: + +** Icon +** Logo +** Official logo header +** Official logo footer +** Official organization URL + +// TODO: Add examples + +--- + +* **Organization colors**: What are the colors for your organization. Please notice that this could generate accessibility problems, for instance with people that doesn't have a good contrast notion. You can set +** Primary +** Secondary +** Success +** Warning +** Alert +** Highlight +** Highlight, alternative + +// TODO: Add examples + +--- + +* **Header snippets**: Use this field to add things to the HTML head. The most common use is to integrate third-party services that require some extra JavaScript or CSS. Also, you can use it to add extra meta tags to the HTML. Note that this will only be rendered in public pages, not in the admin section. + +// TODO: reference to HTML snippet setting \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/areas.adoc b/docs/pt/modules/admin/pages/areas.adoc new file mode 100644 index 0000000000..b25b26c414 --- /dev/null +++ b/docs/pt/modules/admin/pages/areas.adoc @@ -0,0 +1,11 @@ += Areas + +include::partial$deprecated.adoc[] + +Areas are all the sectors that an Organization can have. + +They are pretty similar to xref:admin:scopes.adoc[scopes], meaning that they are a way of allowing a better navigation and filtering in the spaces and components. + +We don't recommend using them, as probably in the future they will be removed. + +You can read more information about the history of Areas in this https://github.com/decidim/decidim/issues/3540#issuecomment-427324532[GitHub comment]. \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/components.adoc b/docs/pt/modules/admin/pages/components.adoc new file mode 100644 index 0000000000..602089c849 --- /dev/null +++ b/docs/pt/modules/admin/pages/components.adoc @@ -0,0 +1,5 @@ += Components + +Through components an administrator can enable and configure different participatory mechanisms. + +include::partial$components_list.adoc[] \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/components/accountability.adoc b/docs/pt/modules/admin/pages/components/accountability.adoc new file mode 100644 index 0000000000..3657f8f81d --- /dev/null +++ b/docs/pt/modules/admin/pages/components/accountability.adoc @@ -0,0 +1,10 @@ += Accountability + +The Accountability component allows people to follow project implementations. It works like a project management system built into the platform. It offers the following features: + +* creating results that represent projects to be implemented +* subdividing results into projects or sub-projects +* defining and applying progress in implementation statuses (0% to 100% implemented) around their implementation +* displaying the extent of the results’ implementation grouped by categories and scopes + +Results, projects and statuses can be updated through a CVS, or manually by the administration interface. \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/components/blog.adoc b/docs/pt/modules/admin/pages/components/blog.adoc new file mode 100644 index 0000000000..78febc841b --- /dev/null +++ b/docs/pt/modules/admin/pages/components/blog.adoc @@ -0,0 +1,145 @@ += Blog + +The Blog component allows people to read multiple posts ordered by date. + +Some examples of where this component was used: + +* https://meta.decidim.org/processes/roadmap/f/247/[News in Propose new functionalities for Decidim software] in https://meta.decidim.org[Metadecidim] + +image:components/blog/example01.png[Example of blog posts list] +image:components/blog/example02.png[Example of a blog post] + +To configure the Blog component: + +. Sign in as admin +. Go to admin panel +. In the main sidebar, click in the button for the space that you want to configure the component for. +For instance, it could be "Processes", "Assemblies" or "Conferences". +. Go to components +. Click on "Add component" button +. Click on "Blog" +. Fill the xref:_add_component[Add component] form + +== Add component + +image:components/blog/component.png[Add component form] + + +.Add component: Blog form +|=== +|Field |Type |Description + +|Name +|Required +|What is the title of this component. For instance, "Blogs" + +|Order position +|Optional +|Which order will it have in relation to the other blogs. Having a lower number means a higher priority. +For instance, if you have two blogs, "Blog a" with weight "10" and "Blog b" with weight "0", then "Blog b" will be first when ordering. +|=== + + +.Add component: Blog form - Global settings +|=== +|Field |Type |Description + +|Announcement +|Optional +|A general announcement that'll be visible on the general blogs landing page. + +|Comments enabled +|Optional +|Whether you want to have comments in the meetings. + +|Comments max length +|Optional +|What is the characters limit that participants will have when making comments. Leave 0 for default value. +|=== + +In the cases where the space that this component will be used has xref:admin:spaces/processes/phases.adoc[Phases], for instance, in +xref:admin:spaces/processes.adoc[Participatory Processes], then you can also define different behaviors per Step. + + +.Add component: Blogs form - Step settings +|=== +|Field |Type |Description + +|Announcement +|Optional +|A general announcement that'll be visible on the general blog landing page. + +|Comments blocked +|Optional +|Whether you want to enable comments creation for this phase. + +|Endorsements enabled +|Optional +|Whether you want to enable endorsements for this phase. + +|Endorsements blocked +|Optional +|Whether you want to disable adding new endorsements for this phase. +|=== + +== Permissions + +An administrator can choose which kind of xref:customize:authorizations.adoc[Authorizations] a participant need to have to make +certain actions in the blogs: + +* Comment +* Endorse + +== Manage posts + +image:components/blog/manage_posts.png[Manage posts table] + +=== New post form + +image:components/blog/new_post.png[New post form] + + +.New post form +|=== +|Field |Type |Description + +|Create post as +|Required +|Participant account or user group that will be the author of the post. + +|Title +|Required +|What is the title of this post. + +|Body +|Required +|What is the description of this post. +|=== + +==== Actions + + +.Actions +|=== +|Icon |Name |Definition + +|image:action_edit.png[Edit icon] +|Edit +|Edit form for this post. It's the same form as "New post". + +|image:action_folder.png[Folder icon] +|Folder +|For classifying Attachments. + +|image:action_attachments.png[Attachments icon] +|Attachments +|Documents that are related to the post. + +|image:action_permissions.png[Permissions icon] +|Permissions +|To handle the permissions of this post, depending on the verification a participant has. + +|image:action_delete.png[Delete icon] +|Delete +|To delete this post. +|=== \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/components/budgets.adoc b/docs/pt/modules/admin/pages/components/budgets.adoc new file mode 100644 index 0000000000..e4e986f0b1 --- /dev/null +++ b/docs/pt/modules/admin/pages/components/budgets.adoc @@ -0,0 +1,357 @@ += Budgets + +:page-toclevels: 4 + +The Budgets component allows people to vote by selecting projects of their choosing. Depending on the needs and normative +of the organization, this could be configured so people have assigned a total budget (for instance, 100.000 EUR) and then +every project has assigned a value (for instance, 10.000 EUR). Then when people vote on projects, they have a progress bar +where they see how much remaining budget they have to allocate in this voting. + +From this starting point, there could be other configurations, such as: + +* A minimum percentage of budget to be allocated +* A minimum number of projects to be allocated +* Multiple budgets, one for each district or neighborhood + +Some examples of where this component was used: + +* https://www.decidim.barcelona/processes/PressupostosParticipatius[2020/2021 Participatory Budgeting Process in Decidim Barcelona]. +The city of Barcelona (Spain) has allocated a budget of 30.000.000 EUR so people can present, define, prioritize, vote +and choose which investment projects the city goverment should execute. +* https://ecrivons.angers.fr/processes/BP2021[2021 Participatory Budgeting Process in Angers]. The city of Angers (France) has allocated +a budget of 1.000.000 EUR so people from 11 years can propose maximum of 3 ideas and then vote for their 5 favorite projects. +* https://omastadi.hel.fi/[2021 Participatory Budgeting Process in Helsinki]. Helsinki has allocated 8.8 million euros to realising +residents’ wishes. The ideas are developed together into proposals that Helsinki residents can vote on. The proposals with the +most votes are realised by the City. + +image:components/budgets/example01.png[Budgets example voting] +image:components/budgets/example02.png[Budgets example error messagge when exceding the amount of budget] +image:components/budgets/example03.png[Budgets vote confirmation] +image:components/budgets/example04.png[Budgets after voting] + +To configure the Budgets component: + +. Sign in as admin +. Go to admin panel +. In the main sidebar, click in the button for the space that you want to configure the component for. +For instance, it could be "Processes", "Assemblies" or "Conferences". +. Go to components +. Click on "Add component" button +. Click on "Budgets" +. Fill the xref:_add_component[Add component] form + +== Add component + +image:components/budgets/component.png[Add component form] + + +.Add component: Budgets form +|=== +|Field |Type |Description + +|Name +|Required +|What is the title of this component. For instance, "Budgets" + +|Order position +|Optional +|Which order will it have in relation to the other budgets. Having a lower number means a higher priority. +For instance, if you have two budgets, "Budget a" with weight "10" and "Budget b" with weight "0", then "Budget b" will be first when ordering. +|=== + + +.Add component: Budgets form - Global settings +|=== +|Field |Type |Description + +|Scopes enabled +|Optional +|Check if you want to have Scopes filtering in this component. + +|Scope +|Optional +|Which xref:admin:scopes.adoc[Scope] does this component belongs to. + +|Global scope +|Optional +| + +|xref:_workflows[Workflow] +|Required +|How the participants can vote if there are multiple budget sets. You can define your own xref:_workflows[Workflow] or use one of the availables. + +|Projects per page +|Required +|How many projects are displayed per page. + +|Enable rule: Minimum budget percentage +|Optional, but incompatible with "Minimum number of projects to be voted on" and "Selected projects with minimum and maximum number of projects to be voted on" +|Allows to define a "Vote threshold percent", a percent of the total budget that participants must reach to be able to vote. + +|Enable rule: Minimum number of projects to be voted on +|Optional, but incompatible with "Minimum budget percentage" and "Selected projects with minimum and maximum number of projects to be voted on" +|Allows to define a "Minimum number of projects to vote", a number of projects that participants must reach to be able to vote. + +|Enable rule: Selected projects with minimum and maximum number of projects to be voted on +|Optional, but incompatible with "Minimum budget percentage" and "Minimum number of projects to be voted on" +|Allows to define a "Minimum amount of projects to be selected" and a "Maximum amount of projects to be selected", the number of projects +that participants will need to vote as a minimum and maximum. + +|Comments enabled +|Optional +|Whether you want to have comments in the meetings. + +|Comments max length +|Optional +|What is the characters limit that participants will have when making comments. Leave 0 for default value. + +|Actions permissions can be set for each project +|Optional +|Whether you want to be able to set permissions for every one of the projects. Most of the time you will want to leave this option disabled. + +|Announcement +|Optional +|A general announcement that'll be visible on the general budgets landing page. + +|Budgets landing page +|Optional +|What message will be shown in the Budgets landing page when there are multiple budgets. + +|More information modal +|Optional +|What message will be shown when clicking on the "More information" link. +|=== + +In the cases where the space that this component will be used has xref:admin:spaces/processes/phases.adoc[Phases], for instance, in +xref:admin:spaces/processes.adoc[Participatory Processes], then you can also define different behaviors per Step. + + +.Add component: Budgets form - Step settings +|=== +|Field |Type |Description + +|Comments blocked +|Optional +|Whether you want to enable comments for this phase. + +|Voting +|Required +|Choose one of the following options depending in the moment of the process: Voting disabled, Voting enabled or Voting finished. + +|Show votes +|Optional +|Wheter the votes will be shown. We strongly recommend that you only check this option after the voting is finished. + +|Announcement +|Optional +|A general announcement that'll be visible on the general budgets landing page. + +|Budgets landing page +|Optional +|What message will be shown in the Budgets landing page when there are multiple budgets. + +|More information modal +|Optional +|What message will be shown when clicking on the "More information" link. +|=== + +== Permissions + +Edit permissions + +* Vote +* Comment + +== Workflows + +One neat feature of the Budgets component is the ability to define your own workflows. + +This means that you can define multiple Budgets, for instance one for every Neighberhood or District that a City has, and +you can also define multiple rullings regarding how people can vote on those Budgets. By default you have these workflows: + +* Vote in one: allows participants to vote in any budget, but only in one. +* Vote in all: allows participants to vote in all budgets. +* Vote in a random component: allows participants to vote only in one budget, selected randomly. + +But this can be extended in your application by a developer, by making your own Workflows. For instance for the +https://www.decidim.barcelona/processes/PressupostosParticipatius[2020/2021 Participatory Budgeting Process in Decidim Barcelona], +the people could vote in two districts: the one where they lived and one of their choosing. This was defined in the +https://github.com/AjuntamentdeBarcelona/decidim-barcelona/blob/743be2a210e8745d2dc443166642b285aed2b356/lib/budgets_workflow_pam2021.rb[decidim-barcelona application itself]. + +You can read more about Worfklows in https://github.com/decidim/decidim/blob/1ab5cd8fdabef48f5be94ff9c30c6bb3bc9a2f8f/decidim-budgets/README.md#budget-workflows[decidim-budgets README.md]. + +NOTE: You only want to have a voting without much complications? Like a city-wide vote? Don't worry: if you define only one +Budget, then people will go there directly when click in the Budgets section. + +== Manage budgets + +image:components/budgets/manage_budgets.png[Manage budgets table] + +This window also lets you see the votes that the various projects have received. (Number of votes) and the total number of votes (*Finished votes* and *Pending votes*, that is, that a participant has started voting but has still not cast their vote). + +=== Export all + +Allows to export the projects for this budget in different formats. + +* Projects as CSV +* Projects as JSON +* Projects as Excel + +=== New budget form + +image:components/budgets/new_budget.png[New budget form] + + +.New budget form +|=== +|Field |Type |Description + +|Title +|Required +|What is the title of this budget. For instance, "District A" + +|Order position +|Optional +|Which order will it have in relation to the other budgets. Having a lower number means a higher priority. +For instance, if you have two budgets, "Budget a" with weight "10" and "Budget b" with weight "0", then "Budget b" will be first when ordering. + +|Description +|Optional +|What is the description of this budget. + +|Total budget +|Required +|What is the total amount of money that people will have for assigning. +|=== + +==== Actions + + +.Actions +|=== +|Icon |Name |Definition + +|image:action_preview.png[Preview icon] +|Preview +|To see how it's shown in the frontend to participants. + +|image:action_list.png[Manage projects icon] +|xref:_manage_projects[Manage projects] +|Allows you to manage the projects of a budget. + +|image:action_edit.png[Edit icon] +|Edit +|Edit form for a budget. It's the same form as "New budget". + +|image:action_delete.png[Delete icon] +|Delete +|To delete this budget. Only can be done when there aren't any projects. +|=== + +==== Manage projects + +===== Import proposals to projects + +Depending in the normative, you could want to have a first phase where participants +make proposals, and those proposals are selected (by voting or by technical review), +then you can import those proposals and convert them to projects. + +For this to work: + +. The following settings in the proposals component need to be enabled: +.. Proposal answering enabled +.. Enable costs on proposal answers +. A valuator or administrator need to Answer proposals: +.. Review the proposals +.. Accept or reject them according to your normative +.. Add costs to the proposals if were accepted +. An administrator can Import proposals to projects + +image:components/budgets/import_proposals.png[Import proposals to projects] + +===== Export all + +Allows to export the projects for this budget in different formats. + +* Projects as CSV +* Projects as JSON +* Projects as Excel + +===== New project form + +image:components/budgets/new_project.png[New project form for a Budget] + + +.New project form +|=== +|Field |Type |Description + +|Title +|Required +|The title for this project. + +|Description +|Required +|A description of what this project is about. + +|Budget amount +|Required +|What's the budget amount for this project. How much money will it cost to implement this project? + +|Category +|Optional +|Which Category has the project. Used for filtering in the budgets list. + +|Proposals +|Optional +|Choose related proposals for this project. Automatic assingned when importing proposals. + +|Add an image gallery +|Optional +|Add multiple images illustrating what this project is about, or where it will be implemented. +|=== + +===== Actions + + +.Actions +|=== +|Icon |Name |Definition + +|image:action_preview.png[Preview icon] +|Preview +|To see how it's shown in the frontend to participants. + +|image:action_edit.png[Edit icon] +|Edit +|Edit form for a project. It's the same form as "New project". + +|image:action_folder.png[Folders icon] +|Folders +|For classifying Attachments. + +|image:action_attachments.png[Attachments icon] +|Attachments +|Documents that are related to the project. + +|image:action_delete.png[Delete icon] +|Delete +|To delete this project. +|=== + +== Results + +After the voting step has finished, then an administrator need to: + +. Change the Voting configuration for the Budget component to "Voting finished" +. Go to the Budgets and view the results +. On the projects that according to the normative have been selected, she'll need to go to each project, edit it and +then check the "Selected for implementation". + +image:components/budgets/results_unselected.png[Unselected projects after voting] +image:components/budgets/results_select_project.png[Select a project for implementation] +image:components/budgets/results_selected.png[Selected projects after voting] +image:components/budgets/results_selected_frontend.png[Selected projects after voting in the frontend] + +We strongly recommend that after you have selected projects then you enable the xref:components/accountability.adoc[Accountability] +component so participants can see the grade of impementation. \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/components/debates.adoc b/docs/pt/modules/admin/pages/components/debates.adoc new file mode 100644 index 0000000000..6f62a9f8b5 --- /dev/null +++ b/docs/pt/modules/admin/pages/components/debates.adoc @@ -0,0 +1,230 @@ += Debate + +The Debate component allows people to have discussions, without voting nor prioritzation. It also allows to close them, +by adding conclusions or a summary of what the discussion was about. + +From this starting point, there could be other configurations, such as: + +* To allow debates creation by participants +* To have debates with a fixed started and ending date or open +* To show endorsements (public supports) or not + +Some examples of where this component was used: + +* https://meta.decidim.org/processes/roadmap/f/219/[Propose new functionalities for Decidim software in Metadecidim] + +image:components/debates/example01.png[Debates listing example] +image:components/debates/example02.png[Debate example] + +To configure the Debate component: + +. Sign in as admin +. Go to admin panel +. In the main sidebar, click in the button for the space that you want to configure the component for. +For instance, it could be "Processes", "Assemblies" or "Conferences". +. Go to components +. Click on "Add component" button +. Click on "Debate" +. Fill the xref:_add_component[Add component] form + +== Add component + +image:components/debates/component.png[Add component form] + + +.Add component: Debate form +|=== +|Field |Type |Description + +|Name +|Required +|What is the title of this component. For instance, "Debates" + +|Order position +|Optional +|Which order will it have in relation to the other debates. Having a lower number means a higher priority. +For instance, if you have two debates, "Debate a" with weight "10" and "Debate b" with weight "0", then "Debate b" will be first when ordering. +|=== + + +.Add component: Debate form - Global settings +|=== +|Field |Type |Description + +|Scopes enabled +|Optional +|Check if you want to have Scopes filtering in this component. + +|Scope +|Optional +|Which xref:admin:scopes.adoc[Scope] does this component belongs to. + +|Global scope +|Optional +| + +|Comments enabled +|Optional +|Whether you want to have comments in the meetings. + +|Comments max length +|Optional +|What is the characters limit that participants will have when making comments. Leave 0 for default value. + +|Announcement +|Optional +|A general announcement that'll be visible on the general debates landing page. +|=== + +In the cases where the space that this component will be used has xref:admin:spaces/processes/phases.adoc[Phases], for instance, in +xref:admin:spaces/processes.adoc[Participatory Processes], then you can also define different behaviors per Step. + + +.Add component: Debates form - Step settings +|=== +|Field |Type |Description + +|Endorsements enabled +|Optional +|Check if you want that participants show public support for these debates. + +|Endorsements blocked +|Optional +| + +|Debate creation by participants enabled +|Optional +|Check if you want to allow the creation of new debates by participants. + +|Comments blocked +|Optional +|Whether you want to enable comments for this phase. + +|Announcement +|Optional +|A general announcement that'll be visible on the general debate landing page. +|=== + +== Permissions + +An administrator can choose which kind of xref:customize:authorizations.adoc[Authorizations] a participant need to have to make +certain actions in the debates: + +* Create +* Endorse + +== Manage debates + +image:components/debates/manage_debates.png[Manage debates table] + +=== Export all + +Allows exporting the comments in the debates in different formats. + +* Comments as CSV +* Comments as JSON +* Comments as Excel + +=== New debate form + +image:components/debates/new_debate_backend.png[New debate backend form] + + +.New debate form +|=== +|Field |Type |Description + +|Title +|Required +|What is the title of this debate. For instance, "How can we improve this process?" + +|Description +|Required +|What is the description of this debate. + +|Instructions to participate +|Required +|Add a message for the participants. + +|Information updates +|Optional +|Add a message for the participants. + +|xref:_debate_types[Debate type] +|Required +|Choose between Finite and Open. Finite means that the debate has a starting and ending date and time, Open means that +there isn't any timeframe. + +|Starts at +|Required if the debate type is Finite +|Expected format: dd/mm/yyyy hh:ii + +|Ends at +|Required if the debate type is Finite +|Expected format: dd/mm/yyyy hh:ii + +|Category +|Optional +|Which category has the debate. Used for filtering in the debates list. +|=== + +==== Debate types + +It's possible to have two kinds of debates: + +. Finite: with a start and end date +. Open: without a start and end date + +This is shown publically in the debate list. + +image:components/debates/debates_list.png[Debates list] +image:components/debates/debate_finite.png[Finite debate] + +==== Actions + + +.Actions +|=== +|Icon |Name |Definition + +|image:action_edit.png[Edit icon] +|Edit +|Edit form for a debate. It's the same form as "New debate". + +|image:action_close.png[Close icon] +|Close +|Close form for a debate. For adding conclusions. + +|image:action_permissions.png[Permissions icon] +|Permissions +|To handle the permissions of this debate, depending on the verification a participant has. + +|image:action_delete.png[Delete icon] +|Delete +|To delete this debate. Only can be done when there aren't any projects. +|=== + +=== Close debate form + +A debate can be closed. This is useful for adding conclusions. After a debate was closed it can't be edited nor commented any more + +image:components/debates/close_debate_backend.png[Close debate backend form] + +Take in account that if the debate was created by a participant then only that +participant can close it. + +image:components/debates/close_debate_frontend.png[Close debate frontend form] + + +.Close debate form +|=== +|Field |Type |Description + +|Conclusions +|Required +|What is the conclusion for this debate. +|=== + +The conclusions are shown publicly with the close date and time. + +image:components/debates/debate_closed.png[Closed debate] \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/components/elections.adoc b/docs/pt/modules/admin/pages/components/elections.adoc new file mode 100644 index 0000000000..d8d661054c --- /dev/null +++ b/docs/pt/modules/admin/pages/components/elections.adoc @@ -0,0 +1,3 @@ += Elections + +include::admin:partial$development.adoc[] \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/components/meetings.adoc b/docs/pt/modules/admin/pages/components/meetings.adoc new file mode 100644 index 0000000000..96b29fa84e --- /dev/null +++ b/docs/pt/modules/admin/pages/components/meetings.adoc @@ -0,0 +1,411 @@ += Meetings + +Meetings are where people come together to discuss or inform about a given topic. All the meetings have a given location +(where the meeting will happen) and start and end date and time (when the meeting will happen). + +Some examples of where this component was used are: + +* https://www.decidim.barcelona/processes/PAM2020/f/3734/[Procés participatiu del Programa d'Actuació Municipal (PAM) 2020-2023] +in https://www.decidim.barcelona/[Decidim Barcelona] +* https://lejourdapres.parlement-ouvert.fr/processes/ateliers/f/14/[Les ateliers] in https://lejourdapres.parlement-ouvert.fr/[Le jour d'après] + +image:components/meetings/example01.png[Meetings list in Decidim Barcelona] +image:components/meetings/example02.png[Example meeting detail 01 in Decidim Barcelona] +image:components/meetings/example03.png[Example meeting detail 02 in Decidim Barcelona] +image:components/meetings/example04.png[Meetings list in Le jour d'après] + +== Types + +Regarding the *location*, depending on the configuration of the component, you can have: + +* In-person meetings: where you get together in a given location +* Online meetings: where you get together using an external service (for instance Jitsi Meet) + +Depending in the *author* (who's the person that's making the call): + +* Official meetings: meetings created by the organization (created by an administrator through the panel) +* Citizens meetings: meetings created by a User participant (a User or an UserGroup). + +== Add the component + +image:components/meetings/component.png[Add a meetings component] + +For adding the component, you need to: + +. Sign in as admin +. Go to admin panel +. In the main sidebar, click in the button for the space that you want to configure the component for. +For instance, it could be "Processes", "Assemblies", or "Conferences" +. Go to components +. Click on "Add component" button +. Click on "Meetings" +. Fill the xref:_add_component[Add component] form + +== Add component + +For configuring the meeting component you have these settings: + + +.Add component - Meetings form +|=== +|Field |Type |Description + +|Name +|Required +|What is the name of this component. + +|Order position +|Optional +|Which order will it have in relation with the other components. Having a lower number means a higher priority. For instance, +if you have two components, "Proposals" with weight "10" and "Meetiings" with weight "0", then "Meetings" will be first when ordering. +|=== + + +.Add component - Meetings form: Global settings +|=== +|Field |Type |Description + +|Scopes enabled +|Optional +|Check if you want to have Scopes filtering in this process. + +|Scope +|Optional +|Which scope will be used for this component. + +|Announcement +|Optional +|A general announcement that'll be visible in the general meetings list. + +|Default registration terms +|Optional +|What'll be the registration terms of service that the participant would need to accept when registering. + +|Comments enabled +|Optional +|Whether you want to have comments in the meetings. + +|Comments max length +|Optional +|What is the characters limit that participants will have when making comments. Leave 0 for default value. + +|Registration code enabled +|Optional +|Check if you want to give registration codes to participants. Learn more in xref:components/meetings/registrations.adoc[Registrations]. + +|Actions permissions can be set for each meeting +|Optional +|If you want more granular permissions inside of every one of the Meetings. + +|Enable pads creation +|Optional +|If you want an Etherpad embedded in your meetings. Must have the xref:services:etherpad.adoc[Etherpad] integration configurated. + +|Participants can create meetings +|Optional +|Allows participants to create new meetings. See xref:_citizens_meetings[Citizens meetings] + +|Maps enabled +|Optional +|Wheter you want to show a map in the meetings in the meeting detail. +|=== + + +.Add component - Meetings form: Step settings +|=== +|Field |Type |Description + +|Announcement +|Optional +|A general announcement that'll be visible in the general meetings list. + +|Comments enabled +|Optional +|Whether you want to have comments in the meetings. +|=== + +== Create a new meeting + +=== Citizens meetings + +Meetings can be created by participants if the setting is "Participants can create meetings" is checked. + +If a participant belongs to a xref:admin:participants/groups.adoc[user group], then she'll be able to create meetings as that group also. + +image:components/meetings/new_meeting_form_frontend01.png[Create a new meeting form (frontend)] +image:components/meetings/new_meeting_form_frontend02.png[Create a new meeting form (frontend)] + + +.Create meeting - Frontend form +|=== +|Field |Type |Description + +|Title +|Required +|What is the title for this meeting. + +|Description +|Required +|A description of what will be discussed in this meeting, like the topics. + +|Type +|Required +|Choose one option between "In person", "Online" or "Booth" + +|Address +|Required if meeting type is "In person" or "Booth" +|Address: used by Geocoder to find the location + +|Location +|Required +|Location: message directed to the users implying the spot to meet at + +|Location hints +|Optional +|Location hints: additional info. Example: the floor of the building + +|Online meeting URL +|Optional +|Which URL will the meeting be held. + +|Show embedded iframe for this URL +|Optional +|Whether or not embed the iframe for this videoconference URL. Only a few services allow embedding (i.e. YouTube, Twitch...) + +|Start Time +|Required +|Which day and time will the meeting start. Expected format: dd/mm/yyyy hh:ii + +|End Time +|Required +|Which day and time will the meeting start. Expected format: dd/mm/yyyy hh:ii + +|Category +|Optional +|Which Category has the meeting. Used for filtering in the meetings list. + +|Registration type +|Required +|Choose one option between "Registration disabled", "On this platform", or "On a different platform" + +|Available slots for this meeting +|Required if "Registration type" is "On this platform" +|How many slots are available for this meeting? Leave it to 0 if you have unlimited slots available + +|Registration terms +|Required if "Registration type" is "On this platform" +|What terms of services participants need to accept to register or join the meeting. Specific to "Citizens meetings" + +|Registration URL +|Required if "Registration type" is "On a different platform" +|Must be an URL. Link to go on the external service that you are using for registrations. + +|Create meeting as +|Required if the participant belongs to a group +|With which identity she wants to create this meeting: as her user or as a group that she's reprensenting? +|=== + +After creating the meeting, participants can also edit and xref:components/meetings/close.adoc[close] it. + +=== Official meetings + +image:components/meetings/new_meeting_form_backend.png[Create a new meeting form (backend)] + + +.Create meeting - Backend form +|=== +|Field |Type |Description + +|Title +|Required +|What is the title for this meeting. + +|Description +|Required +|A description of what will be discussed in this meeting, like the topics. + +|Type +|Required +|Choose one option between "In person", "Online" or "Booth" + +|Address +|Required if meeting type is "In person" or "Booth" +|Address: used by Geocoder to find the location + +|Location +|Required +|Location: message directed to the users implying the spot to meet at + +|Location hints +|Optional +|Location hints: additional info. Example: the floor of the building + +|Online meeting URL +|Optional +|Which URL will the meeting be held. + +|Show embedded iframe for this URL +|Optional +|Whether or not embed the iframe for this videoconference URL. Only a few services allow embedding (i.e. YouTube, Twitch...) + +|Start Time +|Required +|Which day and time will the meeting start. Expected format: dd/mm/yyyy hh:ii + +|End Time +|Required +|Which day and time will the meeting start. Expected format: dd/mm/yyyy hh:ii + +|Category +|Optional +|Which Category has the meeting. Used for filtering in the meetings list. + +|Registration type +|Required +|Choose one option between "Registration disabled", "On this platform", or "On a different platform" + +|Available slots for this meeting +|Required if "Registration type" is "On this platform" +|How many slots are available for this meeting? Leave it to 0 if you have unlimited slots available + +|Registration URL +|Required if "Registration type" is "On a different platform" +|Must be an URL. Link to go on the external service that you are using for registrations. + +|Private meeting +|Optional +|Check if the meeting shouldn't be visible for all the visitors. Specific to "Official meetings". + +|Transparent +|Optional +|Related to "Private meeting", check if the meeting should be visible for all the visitors but they shouldn't be able to +participate in. Specific to "Official meetings". Specific to "Official meetings". + +|Customize registration email +|Optional +|Wheter you want to add a message in the registration email. Specific to "Official meetings". + +|Registration email custom content +|Required if "Customize registration email" is checked +|The content of the customized email. This text will appear in the middle of the registration confirmation email. Just +after the registration code. Specific to "Official meetings". +|=== + +You can also define *Services* inside of a Meeting. These are metadata that allows to comunicate, for instance, if there's +a place for children, deaf assistance, translations, etc. You can have multiple services inside of a meeting. + + +.Create meeting - Services +|=== +|Field |Type |Description + +|Title +|Required +|Title of the service. + +|Description +|Optional +|Description of the service. +|=== + +== Actions + +=== Citizens meetings + + +.Actions - Citizens meetings +|=== +|Icon |Name |Definition + +|image:action_preview.png[Preview icon] +|Preview +|To see how it's shown in the frontend to participants. + +|image:action_permissions.png[Permissions icon] +|Permissions +|To handle the permissions of this meeting, depending on the verification a participant has. Allows an admin to configure +who can *Join* a meeting. +|=== + +=== Official meetings + + +.Actions - Official meetings +|=== +|Icon |Name |Definition + +|image:action_publish.png[Publish icon] +|Publish +|To show publicly the meeting. + +|image:action_publish.png[Unpublish icon] +|Unpublish +|To not show publicly the meeting. + +|image:action_preview.png[Preview icon] +|Preview +|To see how it's shown in the frontend to participants. + +|image:action_duplicate.png[Duplicate icon] +|Duplicate +|Allows an admin to duplicate a meeting. + +|image:action_registrations.png[Registrations icon] +|xref:admin:components/meetings/registrations.adoc[Registrations] +|Allows to define who can register for attending to the meeting. + +|image:action_edit.png[Edit icon] +|Edit +|Edit form for a Meeting. It's the same form as "Create a new meeting". + +|image:action_agenda.png[Agenda icon] +|xref:admin:components/meetings/agenda.adoc[Agenda] +|To add the topics that will be discussed in the meeting. + +|image:action_list.png[Poll icon] +|xref:admin:components/meetings/polls.adoc[Polls] +|To manage the polls for this online meeting. + +|image:action_close.png[Close icon] +|xref:admin:components/meetings/close.adoc[Close] +|Allows and admin to Close the meeting and add extra information. + +|image:action_folder.png[Folders icon] +|Folders +|For classifying Attachments. + +|image:action_attachments.png[Attachments icon] +|Attachments +|Documents that are related to the meeting. + +|image:action_permissions.png[Permissions icon] +|Permissions +|To handle the permissions of this meeting, depending on the verification a participant has. Allows an admin to configure +who can *Join* a meeting. + +|image:action_delete.png[Delete icon] +|Delete +|To delete this meeting. +|=== + +== Meetings features + +There are different kinds of features that can be enabled in meetings, such as: + +* xref:admin:components/meetings/registrations.adoc[Registrations]: for managing how particpant can register to attend the meeting. +* xref:admin:components/meetings/agenda.adoc[Agenda]: for seeing the topics that will be discussed in the meeting by minutes. +* xref:admin:components/meetings/polls.adoc[Polls]: for quick voting during an online meeting. +* xref:admin:components/meetings/close.adoc[Close]: for adding the final report on what was discussed in the meeting. + +== Online meetings + +Depending in the moment and configuration of the meeting, there could be different messages that will be shown to the participants. + +. If the "Online meeting URL" ins't set, there'll be a message that says "Link available soon" +image:components/meetings/online_meeting_available_soon.png[Online meeting available soon] +. If the "Online meeting URL" is set, and a few minutes before the meeting start, the mesage will say "The link to join +the meeting will be available a few minutes before it starts" +image:components/meetings/online_meeting_available_before.png[Online meeting available before it starts] +. If the "Online meeting URL" is set, and the start time of the meeting has arrived, then there'll be a message that says +that "the meeting is happening right now", with a link to join the meeting. +image:components/meetings/online_meeting_happening.png[Online meeting available before it starts] \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/components/meetings/agenda.adoc b/docs/pt/modules/admin/pages/components/meetings/agenda.adoc new file mode 100644 index 0000000000..52b74dab2f --- /dev/null +++ b/docs/pt/modules/admin/pages/components/meetings/agenda.adoc @@ -0,0 +1,91 @@ += Agenda + +O recurso de agenda permite que um administrador defina o calendário para uma reunião. É possível definir itens da agenda e +sub-itens com cada um dos tópicos que serão discutidos na reunião, junto com uma descrição e a duração +de cada item e subitem. + +image:components/meetings/agenda/agenda_frontend.png[Agenda in the frontend] + +== Novo formulário de agenda + +To define an agenda for a meeting: + +. Sign in as admin +. Go to admin panel +. In the main sidebar, click in the button for the space that you want to configure the component for. +For instance, it could be "Processes", "Assemblies", or "Conferences" +. Click on "Meetings" +. Search the meeting that you want to add the agenda to +. Click on the "Agenda" button image:action_agenda.png[Agenda button] +. Fill the form + +image:components/meetings/agenda/new_agenda_form.png[New agenda form in the backend] + + +.Novo formulário de agenda +|=== +|Field |Type |Description + +|Title +|Required +|Title for the agenda. For instance, "Schedule" + +|Visible +|Optional +|Check if you want to publish the agenda. + +|Agenda items +|Required +|List of agenda items. +|=== + +It's possible to create any number of Agenda items and sub-items. You can up or down the hierarchy of the agenda items. +It's also possible to remove and edit the agenda items. + + +.Agenda item form +|=== +|Field |Type |Description + +|Title +|Required +|Title for the agenda item + +|Duration +|Required +|How many minutes will the agenda item last. For instance, "15". + +|Description +|Optional +|Title for the agenda item + +|Agenda sub-items +|Optional +|List of agenda sub-items. +|=== + +The only limitation that agenda items and sub-items have is that they have to respect the duration of the parent. For instance, +if there's an Item that lasts 60 minutes, you can't create a sub-item that lasts 90 minutes. + +As an example, this agenda: + +image:components/meetings/agenda/agenda_frontend.png[Agenda in the frontend] + +Has the following configuration: + +* Title: "Schedule" +* Visible: true +* Agenda item #1: +** Title: Diagnosis +** Duration: 60 +* Agenda item #2: +** Title: Ideation +** Duration: 120 +** Agenda sub-item #2.1: +*** Title: Future thinking +*** Duration: 60 +*** Description: Imagining how we can solve the problem +** Agenda sub-item #2.2: +*** Title: Creating proposals +*** Duration: 60 +*** Description: In the platform \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/components/meetings/close.adoc b/docs/pt/modules/admin/pages/components/meetings/close.adoc new file mode 100644 index 0000000000..f598ec1e90 --- /dev/null +++ b/docs/pt/modules/admin/pages/components/meetings/close.adoc @@ -0,0 +1,103 @@ += Close + +After a meeting has passed it's possible and recommened to close the meeting. This allows to adds the minutes, the notes +that gives a summary on what was discussed during the meeting, the agreements reached, decisions made, etc. + +This allows to bring transparency to the meeting and also serves as a record of the different meetings. + +It's also possible to add other kind of metadata to the meeting, such as what organizations has attended, how many attendees +and contributions were, and what proposals were discussed. + +image:components/meetings/close/frontend.png[Close report in the frontend] + +== Close meeting form + +=== Official meetings + +To close a meeting: + +. Sign in as admin +. Go to admin panel +. In the main sidebar, click in the button for the space that you want to configure the component for. +For instance, it could be "Processes", "Assemblies", or "Conferences" +. Click on "Meetings" +. Search the meeting that you want to close +. Click on the "Close" button image:action_close.png[Close button] +. Fill the form + +image:components/meetings/close/form_backend.png[Close meeting form in the backend] + + +.Close meeting form (backend) +|=== +|Field |Type |Description + +|Minutes +|Required +|Description of what happened in the meeting. + +|List of organizations that attended +|Optional +|Metadata that gets shown in the sidebar of the meeting. + +|Number of attendees +|Required +|Metadata that gets shown in the sidebar of the meeting. Must be a number. + +|Number of contributions +|Optional +|Metadata that gets shown in the sidebar of the meeting. Must be a number. + +|Proposals +|Optional +|Choose proposals from this space that were discussed in this meeting + +|Video URL +|Optional +|It's not used for anything. It will be removed in the future. + +|Audio URL +|Optional +|It's not used for anything. It will be removed in the future. + +|Is visible +|Optional +|Check if you want to publish the close report +|=== + +=== Citizens meetings + +Just like participants can create meetings, they can also close a meeting. They have fewer fields to fill. + +To close a a meeting: + +. Sign in as the participant that created the meeting +. Go to the meeting page +. Click on "Close". This will only be visible after the meeting has passed +. Fill the form + +image:components/meetings/close/form_frontend.png[Close meeting form in the frontend] + + +.Close meeting form (frontend) +|=== +|Field |Type |Description + +|Minutes +|Required +|Description of what happened in the meeting. + +|Number of attendees +|Required +|Metadata that gets shown in the sidebar of the meeting. Must be a number. + +|Proposals +|Optional +|Choose proposals from this space that were discussed in this meeting +|=== + +== Proposals + +If you relate a proposal to a meeting, the meeting also will be shown in the proposal. + +image:components/meetings/close/related_proposal.png[Related meeting in a proposal] \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/components/meetings/polls.adoc b/docs/pt/modules/admin/pages/components/meetings/polls.adoc new file mode 100644 index 0000000000..99c7b70291 --- /dev/null +++ b/docs/pt/modules/admin/pages/components/meetings/polls.adoc @@ -0,0 +1,29 @@ += Polls + +CAUTION: this feature is still in active development and can't be used in production yet. + +Through the manage polls feature is possible to define a poll that will be displayed when an online meeting is ocurring. +This is useful to see quick feedback and make a decision inside the meeting without having to leave the meeting and use +other kind of tools (like surveys or proposals). + +With this feature an administrator can define questions and also manage when these questions and its results will be shown +to participants. + +== Enable polls for a meeting + +To enable polls for a meeting: + +. Sign in as admin +. Go to admin panel +. In the main sidebar, click in the button for the space that you want to configure the component for. +For instance, it could be "Processes", "Assemblies", or "Conferences" +. Click on "Meetings" +. Search the meeting that you want to define polls for +. Click on the "Manage polls" button image:action_list.png[Manage polls button] +. Fill the form + +The form is pretty much the Decidim form builder, with one caveat: you can only define Single and Multiple option questions. + +image:components/meetings/polls/backend.png[Backend for meeting polls] + +image:components/meetings/polls/backend_question.png[Definining a question in meeting polls] \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/components/meetings/registrations.adoc b/docs/pt/modules/admin/pages/components/meetings/registrations.adoc new file mode 100644 index 0000000000..71f3b3adb2 --- /dev/null +++ b/docs/pt/modules/admin/pages/components/meetings/registrations.adoc @@ -0,0 +1,105 @@ += Registrations + +Through registrations you can have capacity control of the attendance for a meeting. With this feature for instance you can +limit how many people could attend to the meeting, or you can know before the start of a meeting if you need to find a bigger +room to have the meeting. + +Enabling this feature will add a button so that participants can express their wish to go to the meeting. Depending in how +this feature is configured, then: + +. it's possible to define how many slots are available for controling the maximum capacity for this meeting +. a xref:_registration_form[custom registration form] for asking information to participants can be configured +. administrators can make xref:_invitations[invitations] to other participants or people that isn't registered in the platform +. it's possible to control attendance to the meeting through xref:_registration_code[registration codes] + +image:components/meetings/registrations/frontend_join_meeting.png[Join a meeting sidebar button] + +Once participants confirm joining a meeting they get asked if they're reprensenting a group and if they want to show publicly that they're attending. + +image:components/meetings/registrations/frontend_confirm.png[Join a meeting confirm modal] + +== Enable registrations for a meeting + +To enable registrations for a meeting: + +. Sign in as admin +. Go to admin panel +. In the main sidebar, click in the button for the space that you want to configure the component for. +For instance, it could be "Processes", "Assemblies", or "Conferences" +. Click on "Meetings" +. Search the meeting that you want to enable registrations for +. Click on the "Edit" button image:action_edit.png[Edit button] +. Change the "Registration type" field to "On this platform" +. Define how many slots are available in "Available slots for this meeting" +. Click on the "Update" button +. Click on the "Registrations" button image:action_registrations.png[Registrations button] +. Check the "Registrations enabled" checkbox +. Fill the form + +== Registrations settings form + +image:components/meetings/registrations/backend.png[Registrations settings in a meeting] + + +.Registrations settings form +|=== +|Field |Type |Description + +|Registrations enabled +|Required +|Check to enable the registration for this meeting. + +|Registration form enabled +|Optional +|Check if you want to enable the registration form + +|Available slots for this meeting +|Required +|How many slots are available. Leave it to 0 if you have unlimited slots available. + +|Reserved slots +|Required +|How many slots are already reserved. Leave it to 0 if you don't have reserved slots + +|Registration terms +|Required +|What terms of services participants need to accept to register or join the meeting. +|=== + +== Registration form + +This feature allows you to define a custom form like the xref:admin:components/surveys.adoc[Surveys] component to ask participants +for registration information. + +== Export all + +It's possible to export registrations in multiple formats: CSV, JSON and XLSX (Excel). + +The exported data will have these fields: + +* id: The registration id +* code: the xref:_registration_code[registration code] (if this feature is enabled) +* user/name: the name of the user +* user/email: the email of the user +* user/user_group: the group of the user if she has selected that's representing a group when registering + +== Invitations + +This feature allows you to invite attendes to a meeting. These could be already registered or non-existing participants +in the platform. + +image:components/meetings/registrations/invite_attendee.png[Invite attendee for registration in a meeting] + +== Registration code + +This feature allows you to check if the attendee is registered in the meeting. She needs to provide her code, that gets +entered in this form and it's checked against the database. + +image:components/meetings/registrations/backend_w_registration_code.png[Registration code form in a meeting] + +image:components/meetings/registrations/frontend_confirmed_w_code.png[Registration code in a meeting frontend] + +It can receive two kind of responses: + +* Registration code successfully validated. +* This registration code is invalid. \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/components/pages.adoc b/docs/pt/modules/admin/pages/components/pages.adoc new file mode 100644 index 0000000000..6739927552 --- /dev/null +++ b/docs/pt/modules/admin/pages/components/pages.adoc @@ -0,0 +1,85 @@ += Page + +The Page component allows people to get information about a space. It's similar to the general xref:admin:pages.adoc[Pages] admin section, with +the main difference is that this component allows to define pages in a space, and the general Pages admin section allows to +define pages for all the platform (for instance, help pages, terms of services, or FAQs), that aren't associated to a space. + +From this starting point, there could be other configurations, such as: + +Some examples of where this component was used: + +* https://www.decidim.barcelona/processes/PressupostosParticipatius/f/4691/[More information page in 2020 Participatory Budgeting process in Decidim Barcelona] + +image:components/page/example01.png[More information page in 2020 Participatory Budgeting process in Decidim Barcelona - Frontend] +image:components/page/example02.png[More information page in 2020 Participatory Budgeting process in Decidim Barcelona - Backend] + +To configure the Page component: + +. Sign in as admin +. Go to admin panel +. In the main sidebar, click in the button for the space that you want to configure the component for. +For instance, it could be "Processes", "Assemblies", or "Conferences" +. Go to components +. Click on "Add component" button +. Click on "Page" +. Fill the xref:_add_component[Add component] form + +== Add component + +image:components/page/component.png[Add component form] + + +.Add component: Page form +|=== +|Field |Type |Description + +|Name +|Required +|What is the title of this component. For instance, "More information". + +|Order position +|Optional +|Which order will it have in relation to the other pages. Having a lower number means a higher priority. +For instance, if you have two pages, "Page a" with weight "10" and "Page b" with weight "0", then "Page b" will be first when ordering. +|=== + + +.Add component: Page form - Global settings +|=== +|Field |Type |Description + +|Announcement +|Optional +|A general announcement that'll be visible on the general pages landing page. +|=== + +In the cases where the space that this component will be used has xref:admin:spaces/processes/phases.adoc[Phases], for instance, in +xref:admin:spaces/processes.adoc[Participatory Processes], then you can also define different behaviors per Step. + + +.Add component: Pages form - Step settings +|=== +|Field |Type |Description + +|Announcement +|Optional +|A general announcement that'll be visible on the general page landing page. +|=== + +== Permissions + +As this component doesn't allow to do anything, there are no permissions to set up. + +=== New page form + +image:components/page/new_page.png[New page form] + + +.New page form +|=== +|Field |Type |Description + +|Body +|Required +|What is the body for the page. +|=== \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/components/proposals.adoc b/docs/pt/modules/admin/pages/components/proposals.adoc new file mode 100644 index 0000000000..5d2b652324 --- /dev/null +++ b/docs/pt/modules/admin/pages/components/proposals.adoc @@ -0,0 +1,445 @@ += Proposals + +The Proposals component allows people to create, comment, endorse, and give support to proposals. + +From this starting point, there could be other configurations, such as: + +* how many proposals a participant can create +* how many supports as a maximum a participant can give to proposals +* how many supports as a minimum a participant must give to proposals so their supports are valid +* whether you want to enable that participants comment on proposals +* whether you want that proposals have images, attachments, WYSIWYG editor, geolocated address, scopes, etc. + +Some examples of where this component was used: + +* https://futureu.europa.eu/[Conference of the Future of Europe] +* https://meta.decidim.org/processes/roadmap/f/122/[Propose new functionalities for Decidim software] in https://meta.decidim.org/[Metadecidim] + +image:components/proposals/example01.png[Proposals list example in COFE] +image:components/proposals/example02.png[Proposals list example in Metadecidim] +image:components/proposals/example03.png[Proposal detail example in Metadecidim] + +To configure the Proposals component: + +. Sign in as admin +. Go to admin panel +. In the main sidebar, click in the button for the space that you want to configure the component for. +For instance, it could be "Processes", "Assemblies", or "Conferences" +. Go to components +. Click on "Add component" button +. Click on "Proposals" +. Fill the xref:_add_component[Add component] form + +== Add component + +image:components/proposals/component.png[Add component form] + + +.Add component: Proposals form +|=== +|Field |Type |Description + +|Name +|Required +|What is the title of this component. For instance, "Proposals" + +|Order position +|Optional +|Which order will it have in relation to the other components. Having a lower number means a higher priority. +For instance, if you have two components, "Proposals" with weight "10" and "Meetings" with weight "0", then "Meetings" will be first when ordering. +|=== + + +.Add component: Proposals form - Global settings +|=== +|Field |Type |Description + +|Scopes enabled +|Optional +|Check if you want to have Scopes filtering in this component. + +|Scope +|Optional +|Which xref:admin:scopes.adoc[Scope] does this component belongs to. + +|Support limit per participant +|Optional +|Must be a number. How much supports a participant can give to proposals. + +|Minimum supports per user +|Optional +|Must be a number. How many supports does a participant needs to give to proposals so their supports are counted. If she doesn't +reach this number, her supports will not be taken in account. + +|Proposal limit per participant +|Optional +|Must be a number. How many proposals a participant can create. + +|Maximum proposal body length +|Optional +|Must be a number. How many characters a proposal body can have as maximum. + +|Proposal editing +|Required +|Choose one of these two options: "Allow editing of proposals within a specific timeframe" or "Allow editing proposals +for an infinite amount of time". In case it's within a specific timeframe, you must specify the time in "Proposals can be +edited by authors before this many minutes passes". Note that if you xref:components/proposals/answers.adoc[answer a proposal] +then it can't be edited anymore. + +|Proposals can be edited by authors before this many minutes passes +|Required if "Proposal editing" is "Allow editing of proposals within a specific timeframe" +|Must be a number. How many minutes after the creation of a proposal it can be edited by its author. + +|Threshold per proposal +|Optional +|Must be a number. How many supports a proposal needs to have to be considered as "validated". See <>. + +|Can accumulate supports beyond threshold +|Optional. Only applies if "Threshold per proposal" is configured. +|Whether the proposal can accumulate more supports than the threshold. + +|Proposal answering enabled +|Optional +|Whether administrators or valuators can answer proposals. + +|Official proposals enabled +|Optional +|Wheter administrators can create official proposals. + +|Comments enabled +|Optional +|Whether you want to have comments in the meetings. + +|Comments max length +|Optional +|What are the characters limit that participants will have when making comments. Leave 0 for the default value. + +|Geocoding enabled +|Optional +|Wheter participants can define a geocoding address for their proposals. Need to have xref:configure:geocoding[Geocoding] enabled. See <>. + +|Allow attachments +|Optional +|Check to allow participants to attach files to their proposals. + +|Allow card image +|Optional +|Check to show a card image when participants attach images to their proposals. See <>. + +|Actions permissions can be set for each proposal +|Optional +|Whether you want to be able to set permissions for every one of the proposals. Most of the time you will want to leave this option disabled. + +|Collaborative drafts enabled +|Optional +|Check to enable xref:components/proposals/collaborative_drafts.adoc[collaborative drafts] in proposals. + +|Participatory texts enabled +|Optional +|Check to enable xref:components/proposals/participatory_texts.adoc[participatory texts] in proposals. + +|Amendments enabled +|Optional +|Check to enable xref:components/proposals/amendments.adoc[amendments] in proposals. If active, configure Amendment features for each step. + +|Amendments Wizard help text +|Optional. Visible if the "Amendments enabled" option is checked. +|What's the help text visible when creating new amendments. + +|Announcement +|Optional +|A general announcement that'll be visible on the general proposals landing page. + +|New proposal body template +|Optional +|A pre-defined text that will be used when creating new proposals. Useful if you want to define a format that participants need to +follow when creating new proposals. + +|New proposal help text +|Optional +|What's the help text visible when creating new proposals. + +|Proposal wizard "Create" step help text +|Optional +|What's the help text visible when creating new proposals in the "Create" step. + +|Proposal wizard "Compare" step help text +|Optional +|What's the help text visible when creating new proposals in the "Compare" step. + +|Proposal wizard "Complete" step help text +|Optional +|What's the help text visible when creating new proposals in the "Complete" step. + +|Proposal wizard "Publish" step help text +|Optional +|What's the help text visible when creating new proposals in the "Publish" step. +|=== + +[#setting-threshold] +*Example of threshold setting* + +image::components/proposals/setting_threshold01.png[Example of threshold setting] + +image::components/proposals/setting_threshold02.png[Example of threshold setting] + +[#setting-card-image] +*Example of card image setting* + +image::components/proposals/setting_card_image.png[Example of card image setting] + +[#setting-geocoding] +*Example of geocoding setting* + +image::components/proposals/setting_geocoding.png[Example of geocoding setting] + +--- + +In the cases where the space that this component will be used has xref:admin:spaces/processes/phases.adoc[Phases], for instance, in +xref:admin:spaces/processes.adoc[Participatory Processes], then you can also define different behaviors per Step. + + +.Add component: Proposals form - Step settings +|=== +|Field |Type |Description + +|Announcement +|Optional +|A general announcement that'll be visible on the general proposal landing page. + +|Endorsements enabled +|Optional +|Check if you want that participants show public support for these proposals. + +|Endorsements blocked +|Optional +|Whether participants will be able to see the endorsments but don't make any. + +|Supports enabled +|Optional +|Whether participants will be able to support proposals in this step. + +|Supports blocked +|Optional +|Whether participants will be able to support proposals in this step. + +|Supports hidden +|Optional +|If supports are enabled, checking this will hide the number of supports. + +|Comments blocked +|Optional +|Whether you want to enable comments for this phase. + +|Proposal creation enabled +|Optional +|Whether you want to enable proposal creation by participants for this phase. See xref:_new_proposal_form[New proposal form] + +|Proposal answering enabled +|Optional +|Whether you want to enable xref:components/proposals/answers.adoc[proposal answering]. + +|Publish proposal answers immediately +|Optional +|Wheter you want that the answers of proposals are published at the same time that you're xref:components/proposals/answers.adoc[answering] them or you want to control when to publish the answers. + +|Enable costs on proposal answers +|Optional +|Wheter you want to add economical costs to proposal answers. Useful for importing to xref:components/budgets.adoc[budgets]. + +|Amendment creation enabled +|Optional. Visible if "Amendments enabled" option is checked. +|Participant can amend proposals. See xref:components/proposals/amendments.adoc[Amendments]. + +|Amendment reaction enabled +|Optional. Visible if "Amendments enabled" option is checked. +|Proposal's authors will be able to accept or reject Participant's emendations. + +|Amendment promotion enabled +|Optional. Visible if "Amendments enabled" option is checked. +|Emandation authors will be able to promote to Proposal the rejected emendation. + +|Amendments visibility +|Required. Visible if "Amendments enabled" option is checked. +|Choose one of "Amendments are visible to all" or "Amendments are visible only to their authors" + +|Announcement +|Optional +|A general announcement that'll be visible on the general proposals landing page. + +|Hashtags added to all proposals +|Optional +|Automatically add a hashtag to every proposal. See <>. + +|Hashtags suggested to participants for new proposals +|Optional +|Suggest hashtags to participants for new proposals. Participants can select more than one hashtag. See <>. +|=== + +[#setting-hashtags] +*Example of hashtags setting* + +image::components/proposals/setting_hashtag.png[Example of hashtag setting] + +== Permissions + +An administrator can choose which kind of xref:customize:authorizations.adoc[Authorizations] a participant need to have to make +certain actions in the proposals: + +* Endorse +* Support +* Create +* Withdraw +* Amend +* Comment +* Vote comment + +== Manage proposals + +image:components/proposals/manage_proposals.png[Manage proposals table] + +=== Export + +Allows exporting the proposals in different formats. + +* Proposals as CSV +* Proposals as JSON +* Proposals as Excel +* Comments as CSV +* Comments as JSON +* Comments as Excel + +=== Import + +* Import from another component +* Import from a file + +=== New proposal form + +==== Citizens proposals + +image:components/proposals/new_proposal_frontend.png[New proposal form] + +Proposals can be created by participants if the setting is "Proposal creation enabled" is checked for the active phase. + +If a participant belongs to a xref:admin:participants/groups.adoc[user group], then she'll be able to create proposals as that group also. + +This form depends a lot in which settings you've enabled in this component. It can be really short (with only a Title and +Body by default) or very long (Title, Body, Hashtags, Address, Scope, Category, Image and Attachment). + + +.New proposal form - default (by a participant) +|=== +|Field |Type |Description + +|Title +|Required +|What is the title of this proposal. For instance, "Bike lane in Main Street". Must have at least 15 characters as minimum +and 150 characters as maximum. Must start with a capital letter. + +|Body +|Optional +|What is the full description for this proposal. Must have at least 15 characters as minimum and 450 characters as maximum +by default but can be changed with the setting "Maximum proposal body length". +|=== + +To detect duplicated proposals before publishing them, the proposal creation has a wizard form with multiple steps. This also +allows participants to save proposals drafts (unpublished) in case they need to fill too many fields. + +image:components/proposals/new_proposal_frontend_compare.png[New proposal form (by a participant) - Compare] + +As an example of what the form could look depending in the settings enabled, here's a screenshot of the form for a proposal +with the following settings: "Hashtags added to all proposals", "Hashtags suggested to participants for new proposals", +"Geocoding enabled", "Allow attachments", "Allow card image" and "Scopes enabled". + +image:components/proposals/new_proposal_frontend_complete.png[New proposal form (by a participant) - Complete] + +After completing these fields the participant can see a preview of their proposal before publishing. They can also modify +the proposal before publishing it. + +image:components/proposals/new_proposal_frontend_publish.png[New proposal form (by a participant) - Publish] + +image:components/proposals/new_proposal_frontend_published.png[Published proposal made by a participant] + +==== Official proposals + +Administrators can create official proposals. There will be a filter to show only official proposals in the proposals navigation page. + +image:components/proposals/new_proposal_backend01.png[New proposal form - default (official proposals)] + + +.New proposal form - default (official proposals) +|=== +|Field |Type |Description + +|Title +|Required +|What is the title of this proposal. For instance, "Bike lane in Main Street". Must have at least 15 characters as minimum +and 150 characters as maximum. Must start with a capital letter. + +|Body +|Optional +|What is the full description of this proposal. Must have at least 15 characters as minimum and 450 characters as maximum +by default but can be changed with the setting "Maximum proposal body length". + +|This proposal comes from a meeting +|Optional +|Check if this proposal comes from a meeting. + +|Select a meeting +|Required if the "This proposal comes from a meeting" checkbox is checked +|Dropdown selector with all the meetings of this space. The author of the proposal will be the meeting. +|=== + +As an example of what the form could look like depending on the settings enabled, here's a screenshot of the form for a proposal +with the following settings: "Hashtags added to all proposals", "Hashtags suggested to participants for new proposals", +"Geocoding enabled", "Allow attachments", "Allow card image" and "Scopes enabled". + +image:components/proposals/new_proposal_backend02.png[New proposal form - with multiple settings (official proposals)] + +==== Actions + + +.Actions +|=== +|Icon |Name |Definition + +|image:action_edit.png[Edit icon] +|Edit +|Edit form for a proposal. It's the same form as "New proposal". Only visible when the proposal is an xref:_official_proposals["Official proposal"]. + +|image:action_answer.png[Answer proposal icon] +|xref:components/proposals/answers.adoc[Answer proposal] +|Allows you to answer a proposal. + +|image:action_permissions.png[Permissions icon] +|Permissions +| + +|image:action_preview.png[Preview icon] +|Preview +|To see how it's shown in the frontend to participants. +|=== + +== Origin filter + +When navigating in the proposals listing, you can filter the proposals by origin. + +image:components/proposals/origin_filter.png[Proposals origin filter] + +There are five origin options: + +* All: select all the origins +* xref:_official_proposals[Official]: proposals created by administrators +* xref:_citizens_proposals[Citizens]: proposals created by participants +* Groups: proposals created by participants that belong to a user group and choose that option when creating the proposal +* Meetings: proposals created by administrators that have checked this option when creating the proposal + +== Proposal types and mechanisms + +There are different kind of proposals mechanisms that can be enabled in proposals, such as: + +* xref:admin:components/proposals/amendments.adoc[Amendments] +* xref:admin:components/proposals/answers.adoc[Answers] +* xref:admin:components/proposals/collaborative_drafts.adoc[Collaborative drafts] +* xref:admin:components/proposals/participatory_texts.adoc[Participatory texts] \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/components/proposals/amendments.adoc b/docs/pt/modules/admin/pages/components/proposals/amendments.adoc new file mode 100644 index 0000000000..04526d48f2 --- /dev/null +++ b/docs/pt/modules/admin/pages/components/proposals/amendments.adoc @@ -0,0 +1,94 @@ += Amendments + +Com o recurso da emenda, os participantes podem propor alterações a uma proposta já publicada. + +É útil propor melhorias ou correções, especialmente úteis ao redigir leis ou normas com xref:components/propostas/participatory_texts.adoc[Texto Participativo]. + +Ele tem semelhanças com xref:components/propostas/collaborative_drafts. doc[Rascunhos colaborativos], mas a principal diferença +é que com emendas não há necessidade de confiar nas intenções dos outros autores como cada mudança é revisada e deve ser +aprovado pelo autor da proposta original. + +image:components/proposals/amendments/amendment.png[Amendment of a proposal] + +Para configurar alterações no componente das "propostas": + +. Sign in as admin +. Go to admin panel +. In the main sidebar, click in the button for the space that you want to configure the component for. +For instance, it could be "Processes", "Assemblies", or "Conferences" +. Go to components +. Click on "Add component" button +. Click on "Proposals" +. Check the "Amendments enabled" setting +. Review and configure the following related settings: "Amendments Wizard help text" in global component settings and "Amendment creation enabled", "Amendment reaction enabled", "Amendment promotion enabled", and "Amendments visibility" in the step component settings. +. Save the component + +== How it works + +. A participant (Alice) has created a proposal +. Another participant (Bob) has seen the proposal and wants to make some changes +image:components/proposals/amendments/proposal_to_amend.png[] +. Bob click on the "Amend proposal" button +. Bob makes the changes in the "Create amendment draft" form +image:components/proposals/amendments/create_amendment_draft.png[] +. Bob checks if there is any similar amendment +. Bob edits the amendment draft +image:components/proposals/amendments/edit_amendment_draft.png[] +. Bob publishes the amendment draft +image:components/proposals/amendments/publish_amendment_draft.png[] +. Anyone can see the amendment draft +image:components/proposals/amendments/proposal_amendmed.png[] +image:components/proposals/amendments/amendment_list.png[] +image:components/proposals/amendments/amendment_view_side_by_side.png[] +. It's also possible to filter the amended proposals +image:components/proposals/amendments/amendment_list_filter.png[] +. Alice receives a notification that Bob has proposed an amendment to her original proposal +image:components/proposals/amendments/proposal_amendmed_notification.png[] +. Alice can see the amendment proposal +image:components/proposals/amendments/proposal_amendmed_to_review.png[] +. Alice can review the amendment proposal +image:components/proposals/amendments/proposal_amendmed_review.png[] +. Alice can approve the amendment proposal +image:components/proposals/amendments/proposal_amendmed_accepted.png[] +. Anyone can see the final proposal +image:components/proposals/amendments/proposal_amendmed_final.png[] +image:components/proposals/amendments/proposal_amendmed_amendment_list.png[] +. Anyone can see the versions history of the proposal +image:components/proposals/amendments/proposal_amendmed_versions.png[] + +== Relevant component settings + + +.Proposals component form - Settings related to amendments +|=== +|Field |Type |Description + +|Amendments enabled +|Global +|Check to enable xref:components/proposals/amendments.adoc[amendments] in proposals. Other settings visible when enabling one. + +|Amendments Wizard help text +|Global +|What's the help text visible when creating new amendments. + +|Amendment creation enabled +|Step +|Participant can amend proposals. See xref:components/proposals/amendments.adoc[Amendments]. + +|Amendment reaction enabled +|Step +|Proposal's authors will be able to accept or reject Participant's emendations. + +|Amendment promotion enabled +|Step +|Emandation authors will be able to promote to Proposal the rejected emendation. + +|Amendments visibility +|Step +|Choose one of "Amendments are visible to all" or "Amendments are visible only to their authors" +|=== + +== Promotion + +If a proposal is rejected and the "Amendment promotion enabled" is enabled, then the author that have made the rejected +amendment will be able to promote to a new proposal the rejected emendation. \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/components/proposals/answers.adoc b/docs/pt/modules/admin/pages/components/proposals/answers.adoc new file mode 100644 index 0000000000..8e1d8238b1 --- /dev/null +++ b/docs/pt/modules/admin/pages/components/proposals/answers.adoc @@ -0,0 +1,113 @@ += Answers + +Proposals answers allow an administrator or valuator to review a proposal and give it an official response. + +image:components/proposals/proposal_answer_state_accepted.png[Proposal answer state: Accepted] + +For answering a proposal: + +. Sign in as admin or valuator +. Go to admin panel +. In the main sidebar, click in the button for the space that you want to configure the component for. +For instance, it could be "Processes", "Assemblies", or "Conferences" +. Click in the "Proposals" component +. Search the proposal you want to answer +. Click in the "Proposal answer" button image:action_answer.png[Answer proposal icon] +. Fill the form + +Alternatively, you could also: + +. Sign in as admin or valuator +. Navigate to the proposal you want to answer +. Click in the proposal answer button in the header image:components/proposals/answer_button_header.png[Answer proposal button] +. Fill the form + +== Answer page + +The answer page has three sections: + +=== Metadata + +It has general information about the proposal, like the link, who is the author, the proposal body, how many supports, endorsements, comments, and so on. + +=== Private notes + +Allows an administrator or valuator to leave notes that will not be visible to the public. + +=== Answer for proposal + +Allows an administrator to answer a proposal. + +image:components/proposals/proposal_answer.png[Proposal answer form] + + +.Answer for proposal form +|=== +|Field |Type |Description + +|Internal state +|Required +|Choose one of the following: Accepted, Rejected, or Evaluating + +|Answer +|Optional +|An explanation on why the proposal was accepted, rejected, or evaluated + +|Cost +|Required if "Enable costs on proposal answers" is enabled in the proposals component settings and if it's accepted +|A number that indicates the cost of the proposal + +|Cost report +|Required if "Enable costs on proposal answers" is enabled in the proposals component settings and if it's accepted +|An explanation of the cost of the proposal + +|Execution period +|Required if "Enable costs on proposal answers" is enabled in the proposals component settings and if it's accepted +|How much time the proposal will take to be executed +|=== + +== States + +If the proposals component setting "Publish proposal answers immediately" is checked, then the response of the proposal will be visible to the public immediately. + +The state is visible on the proposal page and card. + +image:components/proposals/proposal_answer_state_accepted_card.png[Proposal card answer state: Accepted] + +=== Evaluating + +image:components/proposals/proposal_answer_state_evaluating.png[Proposal answer state: Evaluating] + +=== Accepted + +After proposals have been accepted, they can be imported to the xref:components/budgets.adoc[budgets] component. + +image:components/proposals/proposal_answer_state_accepted.png[Proposal answer state: Accepted] + +=== Rejected + +image:components/proposals/proposal_answer_state_rejected.png[Proposal answer state: Rejected] + +== Publication + +You can control when the answers will be published by using the "Publish proposal answers immediately" checkbox. + +For enabling automatic publication, you'll need to check it. + +On the other hand, if you want to control when to publish the answer a proposal or multiple proposals, you'll need to follow these steps: + +. Sign in as admin or valuator +. Go to admin panel +. In the main sidebar, click in the button for the space that you want to configure the component for. +For instance, it could be "Processes", "Assemblies", or "Conferences" +. Click in the "Proposals" component +. Search the proposal you want to answer +. Click in the left checkbox of the proposal that you want to publish +. Click on the "Actions" button +. Click on the "Publish answers" option +image:components/proposals/proposal_answer_publish.png[Proposal answer publication: action] +. Click on "Publish" button +image:components/proposals/proposal_answer_publish_button.png[Proposal answer publication: publish button] + +NOTE: If you have unchecked the "Publish proposal answers immediately", answered the proposals and then checked the option again, the answers will not be +published automatically. You'll still need to publish the answers manually with the "Actions" button. \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/components/proposals/collaborative_drafts.adoc b/docs/pt/modules/admin/pages/components/proposals/collaborative_drafts.adoc new file mode 100644 index 0000000000..9c26ef25e2 --- /dev/null +++ b/docs/pt/modules/admin/pages/components/proposals/collaborative_drafts.adoc @@ -0,0 +1,70 @@ += Collaborative draft + +With the collaborative draft feature participants can make a proposal with multiple authors. + +It's useful to propose improvements or corrections. + +It has similarities with xref:components/proposals/amendments.adoc[Amendments] but the main difference is that with collaborative +drafts there is a need to trust other authors, as they can make any change to the original proposal without approval by the +original author, although the original author can decide if she promotes the collaborative draft as a proposal. + +image:components/proposals/collaborative_drafts/collaborative_draft_request_access.png[Collaborative draft with request access button] + +To configure "Collaborative Drafts" in Proposals component: + +. Sign in as admin +. Go to admin panel +. In the main sidebar, click in the button for the space that you want to configure the component for. +For instance, it could be "Processes", "Assemblies", or "Conferences" +. Go to components +. Click on "Add component" button +. Click on "Proposals" +. Check the "Collaborative drafts enabled" setting +. Save the component + +== How it works + +. A participant (Alice) wants to create a collaborative draft. For that, she goes to the proposals list page. +. Alice clicks in the "Access collaborative drafts" button +image:components/proposals/collaborative_drafts/proposals_list01.png[] +. Alice clicks in "New collaborative draft" button +image:components/proposals/collaborative_drafts/list_empty.png[] +. Alice fills the form and submits it +image:components/proposals/collaborative_drafts/create_form.png[] +. Once the collaborative draft is created, Alice can: edit, withdraw or publish the collaborative draft and approve or +reject collaboration requests +image:components/proposals/collaborative_drafts/collaborative_draft.png[] +. Another participant (Bob) has seen the collaborative draft and wants to make some changes +image:components/proposals/collaborative_drafts/collaborative_draft_request_access.png[] +. Bob clicks in the "Request access" button +image:components/proposals/collaborative_drafts/access_requested.png[] +. Alice receives the notification +image:components/proposals/collaborative_drafts/notification.png[] +. Alice goes to the collaborative draft. There she can accept or reject the collaboration request +image:components/proposals/collaborative_drafts/author_sidebar.png[] +. Alice approves the collaboration request. Once a request is approved it can't be rejected +. Now the collaborative draft has multiple authors +image:components/proposals/collaborative_drafts/multiple_authors.png[] +. Bob can edit the collaborative draft by clicking in the "Edit collaborative draft" button +image:components/proposals/collaborative_drafts/edit_collaborative_draft.png[] +image:components/proposals/collaborative_drafts/edit_form.png[] +. Once the collabrative draft is edited, then it's possible to see the old versions and its changes +image:components/proposals/collaborative_drafts/collaborative_draft_edited.png[] +image:components/proposals/collaborative_drafts/collaborative_draft_edited_versions.png[] +image:components/proposals/collaborative_drafts/collaborative_draft_edited_versions_show_v2_01.png[] +image:components/proposals/collaborative_drafts/collaborative_draft_edited_versions_show_v2_02.png[] +. Once Alice is satisfied with the collaborative draft, she can publish it by click in the "Publish" button +image:components/proposals/collaborative_drafts/publish_modal.png[] +. When it's published it becomes a proposal +image:components/proposals/collaborative_drafts/proposal.png[] +image:components/proposals/collaborative_drafts/proposals_list02.png[] +. And the collaborative draft is still visible although it can't be edited anymore +image:components/proposals/collaborative_drafts/collaborative_draft_published.png[] + +== Important aspects + +- A collaborative draft can has any number of authors. +- Only the original author can approve or reject the collaboration requests. +- Only the original author can publish the collaborative draft. +- Only the original author can withdraw the collaborative draft. +- Once a collaboration request is approved, it can't be rejected. \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/components/proposals/participatory_texts.adoc b/docs/pt/modules/admin/pages/components/proposals/participatory_texts.adoc new file mode 100644 index 0000000000..c5573a6e6d --- /dev/null +++ b/docs/pt/modules/admin/pages/components/proposals/participatory_texts.adoc @@ -0,0 +1,88 @@ += Participatory texts + +This feature allows you to navigate the proposals as text. It's useful for discussing normatives, plans, or other kinds of texts. + +Every paragraph is split into a proposal, so it's possible to discuss it in a more granular way. + +Some examples of where this feature was used are: + +* https://concertation.greenpeace.fr/processes/vision-greenpeace/f/8/[Vision Greenpeace] in https://concertation.greenpeace.fr/[Greenpeace France Concertation] +* https://www.decidim.barcelona/processes/PAM2020/f/3771/[Procés participatiu del Programa d'Actuació Municipal (PAM) 2020-2023] in https://www.decidim.barcelona/[Decidim Barcelona] + +image:components/proposals/participatory_texts/example01.png[Vision Greenpeace] + +image:components/proposals/participatory_texts/example02.png[PAM 2020-2023 in Decidim Barcelona] + +To configure the "Participatory texts" in proposals component: + +. Sign in as admin +. Go to admin panel +. In the main sidebar, click in the button for the space that you want to configure the component for. +For instance, it could be "Processes", "Assemblies", or "Conferences" +. Go to components +. Click on "Add component" button +. Click on "Proposals" +. Check the "Participatory texts enabled" setting +. Save the component +. Click in the "Participatory texts" button in the empty proposals component +image:components/proposals/participatory_texts/manage_proposals.png[Manage proposals] +. Click in the "Import document" button in the empty Preview participatory text panel +image:components/proposals/participatory_texts/preview_participatory_text_empty.png[Preview empty participatory text] +. Fill the xref:_add_document_form[Add document form] +image:components/proposals/participatory_texts/add_document_form.png[Add document form] +. xref:_preview_the_document[Preview the document] and make corrections +image:components/proposals/participatory_texts/preview_participatory_text.png[Preview participatory text] +. Click on publish the document +image:components/proposals/participatory_texts/imported_document_proposals.png[Imported document proposals] +. Publish the proposal component + +Notice that this feature could break existing proposals, so if there is any proposal it will not work. You'll see the +following message in the components settings: + +==== +Cannot interact with this setting if there are existing proposals. Please, create a new `Proposals component` if you want +to enable this feature or discard all imported proposals in the `Participatory Texts` menu if you want to disable it. +==== + +== Add document form + +Although it's possible to work with both Markdown (.MD) and ODT (.ODT) files, we recommend working with Markdown as it's +easier to see the formatting. + +link:{attachmentsdir}/participatory_text.md[Download the example participatory text]. + +image:components/proposals/participatory_texts/add_document_form.png[Add document form] + + +.Add document form +|=== +|Field |Type |Description + +|Title +|Required +|What's the title of the document? + +|Description +|Optional +|Description for the document + +|Document +|Required +|File. Add a document lesser than 2MB, each section until 3 levels deep will be parsed into proposals. Supported formats are: Markdown, ODT +|=== + +== Preview the document + +After the document is initially imported you have three options: + +. Discard +. Save draft +. Publish document + +== Frontend + +Once the document is imported and the proposals component published, you'll be able to navigate the document: + +image:components/proposals/participatory_texts/frontend.png[Frontend] +image:components/proposals/participatory_texts/frontend_hover.png[Frontend hover in proposal] +image:components/proposals/participatory_texts/frontend_proposal.png[Frontend proposal detail] \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/components/skeleton.adoc b/docs/pt/modules/admin/pages/components/skeleton.adoc new file mode 100644 index 0000000000..a0bbfcdb51 --- /dev/null +++ b/docs/pt/modules/admin/pages/components/skeleton.adoc @@ -0,0 +1,167 @@ += Skeleton + +The Skeleton component allows people to XXX + +From this starting point, there could be other configurations, such as: + +* + +Some examples of where this component was used: + +* + +image:components/skeleton/example01.png[] +image:components/skeleton/example02.png[] +image:components/skeleton/example03.png[] +image:components/skeleton/example04.png[] + +To configure the Skeleton component: + +. Sign in as admin +. Go to admin panel +. In the main sidebar, click in the button for the space that you want to configure the component for. +For instance, it could be "Processes", "Assemblies" or "Conferences". +. Go to components +. Click on "Add component" button +. Click on "Skeleton" +. Fill the xref:_add_component[Add component] form + +== Add component + +image:components/skeleton/component.png[Add component form] + + +.Add component: Skeleton form +|=== +|Field |Type |Description + +|Name +|Required +|What is the title of this component. For instance, "Skeletons" + +|Order position +|Optional +|Which order will it have in relation to the other skeletons. Having a lower number means a higher priority. +For instance, if you have two skeletons, "Skeleton a" with weight "10" and "Skeleton b" with weight "0", then "Skeleton b" will be first when ordering. +|=== + + +.Add component: Skeleton form - Global settings +|=== +|Field |Type |Description + +|Scopes enabled +|Optional +|Check if you want to have Scopes filtering in this component. + +|Scope +|Optional +|Which xref:admin:scopes.adoc[Scope] does this component belongs to. + +|Global scope +|Optional +| + +|Comments enabled +|Optional +|Whether you want to have comments in the meetings. + +|Comments max length +|Optional +|What is the characters limit that participants will have when making comments. Leave 0 for default value. + +|Actions permissions can be set for each skeleton +|Optional +|Whether you want to be able to set permissions for every one of the skeletons. Most of the time you will want to leave this option disabled. + +|Announcement +|Optional +|A general announcement that'll be visible on the general skeletons landing page. +|=== + +In the cases where the space that this component will be used has xref:admin:spaces/processes/phases.adoc[Phases], for instance, in +xref:admin:spaces/processes.adoc[Participatory Processes], then you can also define different behaviors per Step. + + +.Add component: Skeletons form - Step settings +|=== +|Field |Type |Description + +|Comments blocked +|Optional +|Whether you want to enable comments for this phase. + +|Announcement +|Optional +|A general announcement that'll be visible on the general skeleton landing page. +|=== + +== Permissions + +An administrator can choose which kind of xref:customize:authorizations.adoc[Authorizations] a participant need to have to make +certain actions in the skeletons: + +* Create +* Endorse + +== Manage skeletons + +image:components/skeleton/manage_skeletons.png[Manage skeletons table] + +=== Export all + +Allows exporting the skeletons in different formats. + +* Skeletons as CSV +* Skeletons as JSON +* Skeletons as Excel +* Comments as CSV +* Comments as JSON +* Comments as Excel + +=== New skeleton form + +image:components/skeleton/new_skeleton.png[New skeleton form] + + +.New skeleton form +|=== +|Field |Type |Description + +|Title +|Required +|What is the title of this skeleton. For instance, "District A" + +|Order position +|Optional +|Which order will it have in relation to the other skeletons. Having a lower number means a higher priority. +For instance, if you have two skeletons, "Skeleton a" with weight "10" and "Skeleton b" with weight "0", then "Skeleton b" will be first when ordering. + +|Description +|Optional +|What is the description of this skeleton. +|=== + +==== Actions + + +.Actions +|=== +|Icon |Name |Definition + +|image:action_preview.png[Preview icon] +|Preview +|To see how it's shown in the frontend to participants. + +|image:action_list.png[Manage projects icon] +|xref:_manage_projects[Manage projects] +|Allows you to manage the projects of a skeleton. + +|image:action_edit.png[Edit icon] +|Edit +|Edit form for a skeleton. It's the same form as "New skeleton". + +|image:action_delete.png[Delete icon] +|Delete +|To delete this skeleton. Only can be done when there aren't any projects. +|=== \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/components/sortitions.adoc b/docs/pt/modules/admin/pages/components/sortitions.adoc new file mode 100644 index 0000000000..c436fe225f --- /dev/null +++ b/docs/pt/modules/admin/pages/components/sortitions.adoc @@ -0,0 +1,3 @@ += Sortitions + +The Sortitions component allows to select a number of proposals (e.g. candidates for a jury) with random, yet reproducible, procedures that guarantees non-biased and uniform distributions. \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/components/surveys.adoc b/docs/pt/modules/admin/pages/components/surveys.adoc new file mode 100644 index 0000000000..2b4fc6689a --- /dev/null +++ b/docs/pt/modules/admin/pages/components/surveys.adoc @@ -0,0 +1,256 @@ += Survey + +The Survey component allows people to answer questionnaires. This is useful when an organization wants to receive private +feedback, although it's possible to publish the answers manually as well. It allows defining a set of questions with multiple kinds of answers. + +From this starting point, there could be other configurations, such as: + +* if the answering is limited to a time period +* what answer types should have the questions, like short (one line), long (multiple lines), single or multiple options, +sorting through a list, etc. +* if there's an answer validation like how many characters as maximum should have an answer +* if there's a maximum number of options to select in multiple options questions + +Some examples of where this component was used: + +* https://consultation.quebec.ca/processes/donneesquebec/f/82/[Data Quebec: participate in its improvement! (Données Québec : participez à son amélioration!) in Québec consultations] +* https://meta.decidim.org/conferences/decidimfest2020/f/1403/?locale=en[DecidimFest2020 Assessment Survey] + +image:components/surveys/example01.png[Example of a survey] + +To configure the Survey component: + +. Sign in as admin +. Go to admin panel +. In the main sidebar, click in the button for the space that you want to configure the component for. +For instance, it could be "Processes", "Assemblies" or "Conferences". +. Go to components +. Click on "Add component" button +. Click on "Survey" +. Fill the xref:_add_component[Add component] form + +Once a survey is already answered by some users it's not possible to modify its questions, as that would affect the integrity +of the answers. If it's needed to modify the questions, then it's needed to create a new survey and unpublish the original one. + +== Add component + +image:components/surveys/component.png[Add component form] + + +.Add component: Survey form +|=== +|Field |Type |Description + +|Name +|Required +|What is the title of this component. For instance, "Surveys" + +|Order position +|Optional +|Which order will it have in relation to the other surveys. Having a lower number means a higher priority. +For instance, if you have two surveys, "Survey a" with weight "10" and "Survey b" with weight "0", then "Survey b" will be first when ordering. +|=== + + +.Add component: Survey form - Global settings +|=== +|Field |Type |Description + +|Scopes enabled +|Optional +|Check if you want to have Scopes filtering in this component. + +|Scope +|Optional +|Which xref:admin:scopes.adoc[Scope] does this component belongs to. + +|Answers accepted from +|Optional +|Start date when you want to receive answers. Leave blank for no specific date. Expected format: dd/mm/yyyy hh:ii + +|Answers accepted until +|End date when you want to stop receiving answers. Leave blank for no specific date. Expected format: dd/mm/yyyy hh:ii +|Announcement + +|Optional +|A general announcement that'll be visible on the general surveys landing page. +|Delete answers when publishing the survey +|=== + +In the cases where the space that this component will be used has xref:admin:spaces/processes/phases.adoc[Phases], for instance, in +xref:admin:spaces/processes.adoc[Participatory Processes], then you can also define different behaviors per Step. + + +.Add component: Surveys form - Step settings +|=== +|Field |Type |Description + +|Allow answers +|Optional +|Check if you want to receive answers in this survey. + +|Allow unregistered users to answer the survey +|Optional +|If active, no login will be required in order to answer the survey. This may lead to poor or unreliable data and it will +be more vulnerable to automated attacks. Use with caution! Mind that this option only allows an answer by browser session, +but participants can use the Private navigation option and make multiple answers with the same device. + +|Announcement +|Optional +|A general announcement that'll be visible on the general survey landing page. +|=== + +== Permissions + +An administrator can choose which kind of xref:customize:authorizations.adoc[Authorizations] a participant need to have to make +certain actions in the surveys: + +* Answer + +== New survey form + +When you create a new survey you'll need to fill the form with the following fields: + +image:components/surveys/edit_form.png[Edit survey form] + +NOTE: Do you have repetitive surveys? For instance the same feedback form for every process? You can have a survey that +gets copied and is used as a blueprint for so you don't have to manually configure the same survey everytime. Learn more +about xref:_templates[Templates]. + + +.New survey form +|=== +|Field |Type |Description + +|Title +|Required +|What is the title of this survey. For instance, "Feedback" + +|Description +|Optional +|What is the description of this survey. + +|Terms of service +|Required +|Legal conditions that the participants must agree to in order to answer the survey. +|=== + +In the bottom of this form there's a button that allows you to "Add question". + +image:components/surveys/add_question_button.png[] + +You can add multiple questions per survey, and reorder or delete them. It's possible to also add separators between questions. + +Every question has to have a statement and a type as a minimum. + +image:components/surveys/question_form.png[] + + +.Add question form +|=== +|Field |Type |Description + +|Statement +|Required +|The question itself. For instance, "What is your age category?" + +|Description +|Optional +|Explanation of the question being made. + +|Mandatory +|Optional +|Check if this question is required to respond to submit the answer. + +|Character limit +|Optional +|How many characters has as a maxim the answer to this question. Leave to 0 if no limit. Compatible with Short and Long answer question types. + +|Type +|Required +|One of the following: Short answer, Long answer, Single option, Multiple option, Sorting, Files, Matrix (Single option) +or Matrix (Multiple option). See xref:_question_types[Question types] for more information. +|=== + +Depending in the question type, it's possible to add validations to the answers, like if the question is mandatory (participants +would need to provide an answer in order to submit the form) or if the answer is limited to a certain number of characters as maximum in +short and long answers. + +image:components/surveys/question_form_limits_backend.png[] + +image:components/surveys/question_form_limits_frontend.png[] + +== Question types + +A survey can have multiple questions with different types, such as: + +- Short answer +- Long answer +- Single option +- Multiple option +- Sorting +- Files +- Matrix (Single option) +- Matrix (Multiple option) + + +.Question types (click to view image in detail) +|=== +|Type |Frontend |Backend |Description + +|Short answer +|image:components/surveys/type_short_answer_frontend.png[Short answer type - frontend,link=../_images/components/surveys/type_short_answer_frontend.png] +|image:components/surveys/type_short_answer_backend.png[Short answer type - backend,link=../_images/components/surveys/type_short_answer_backend.png] +|Compatible with "Character limit" validation + +|Long answer +|image:components/surveys/type_long_answer_frontend.png[Long answer type - frontend,link=../_images/components/surveys/type_long_answer_frontend.png] +|image:components/surveys/type_long_answer_backend.png[Long answer type - backend,link=../_images/components/surveys/type_long_answer_backend.png] +|Compatible with "Character limit" validation + +|Single option +|image:components/surveys/type_single_option_frontend.png[Single option type - frontend,link=../_images/components/surveys/type_single_option_frontend.png] +|image:components/surveys/type_single_option_backend.png[Single option type - backend,link=../_images/components/surveys/type_single_option_backend.png] +|Participants will have to choose a single option, with radio buttons. At least 2 options always. It's possible to define a "Free text" option, so participants can submit their own answer. + +|Multiple option +|image:components/surveys/type_multiple_option_frontend.png[Multiple option type - frontend,link=../_images/components/surveys/type_multiple_option_frontend.png] +|image:components/surveys/type_multiple_option_backend.png[Multiple option type - backend,link=../_images/components/surveys/type_multiple_option_backend.png] +|Participants will have to choose multiple options, with checkboxes. At least 2 options always. It's possible to add a validation, with the maximum number of choices. It's possible to define a "Free text" option, so participants can submit their own answer. + +|Sorting +|image:components/surveys/type_sorting_frontend.png[Sorting type - frontend,link=../_images/components/surveys/type_sorting_frontend.png] +|image:components/surveys/type_sorting_backend.png[Sorting type - backend,link=../_images/components/surveys/type_sorting_backend.png] +|At least 2 options always. Participants will click in order of preference to sort. + +|Files +|image:components/surveys/type_files_frontend.png[Files type - frontend,link=../_images/components/surveys/type_files_frontend.png] +|image:components/surveys/type_files_backend.png[Files type - backend,link=../_images/components/surveys/type_files_backend.png] +|Participants will be able to upload files. + +|Matrix (Single option) +|image:components/surveys/type_matrix_single_option_frontend.png[Matrix (Single option) type - frontend,link=../_images/components/surveys/type_matrix_single_option_frontend.png] +|image:components/surveys/type_matrix_single_option_backend.png[Matrix (Single option) type - backend,link=../_images/components/surveys/type_matrix_single_option_backend.png] +|Participants will have to choose between rows and columns of single options, with radio buttons. + +|Matrix (Multiple option) +|image:components/surveys/type_matrix_multiple_option_frontend.png[Matrix (Multiple option) type - frontend,link=../_images/components/surveys/type_matrix_multiple_option_frontend.png] +|image:components/surveys/type_matrix_multiple_option_backend.png[Matrix (Multiple option) type - backend,link=../_images/components/surveys/type_matrix_multiple_option_backend.png] +|Participants will have to choose between rows and columns of multiple options, with checkboxes. +|=== + +== Templates + +For the cases where administrators need to define multiple surveys that are mostly the same but used in different contexts, +it's possible to define a template. When there's one defined for a survey, then it'll ask to select the Template and create +the survey based on this one or in the other hand if there's no need to use a template, then it's possible to Skip the template +selection. + +image:components/surveys/edit_questionnaire.png[Choose template form] + +== Export answers + +It's possible to export the survey participant answers to different formats: CSV, JSON, XLSX (Excel) or PDF. + +Note that the platform doesn't handle the answers processing nor presenting results or summary to the users, that need to be +done externally. \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/configuration.adoc b/docs/pt/modules/admin/pages/configuration.adoc new file mode 100644 index 0000000000..eae6e6a6e3 --- /dev/null +++ b/docs/pt/modules/admin/pages/configuration.adoc @@ -0,0 +1,53 @@ += Configuration + +In this page you can configure general settings from Decidim. + +image::admin_configuration.png[Decidim Admin Configuration] + +These are: + +* **Name**. Required. The name that the platform has. Visible at title, emails, etc. +* **Social**. Social handlers for different social networks. Visible at the footer in every page. This are: +** Twitter +** Facebook +** Instagram +** YouTube +** GitHub + +image::settings_configuration_social.png[Social networks configuration in Decidim] + +* **Default locale**. Required. +* **Time Zone**. Required. In which Time Zone is your organization. Used by things like calendars in Meetings. +* **Reference prefix**. Required. +* **Enable badges**. Whether you want or not that your participants have badges as a gamification mechanism, for instance for creating proposals or making comments. +* **Enable groups**. Whether you want or not that your participants have the possibility to create xref:participants/groups.adoc[User Groups]. Useful for example for associations or other collectives. +* **Enable rich text editor for participants**. Whether you want or not that your participants have the possibility to have a https://en.wikipedia.org/wiki/WYSIWYG[What You See Is What You Get (WYSIWYG) editor]. In some text areas, participants will be able to insert some HTML tags by using the rich text editor. +* **Send welcome notification**. Whether you want or not that your participants receive a notification when their first created their account. If enabled you can customize this notification. +** **Customize welcome notification**. +** **Welcome notification subject**. +** **Welcome notification body**. + +.Welcome notification +==== +Hi {\{name}}, thanks for joining {\{organization}} and welcome! + +If you want to get a quick idea of what you can do here, have a look at the Help section. +Once you have read it you will get your first badge. Here's a list of all the badges you can get as you participate in {\{organization}} + +Last but not least, join other people, share with them the experience of being engaged and participating in {\{organization}}. Make proposals, comments, debate, think about how to contribute to the common good, provide arguments to convince, listen and read to be convinced, express your ideas in a concrete and direct way, respond with patience and decision, defend your ideas and keep an open mind to collaborate and join other people's ideas. +==== + +image::settings_configuration_welcome.png[Welcome notification configuration in Decidim] + +* **Admin terms of use body**. Which message an Administrator user will see when accessing for the first time to the Administration panel. + +.Admin terms of use +==== +ADMIN TERMS OF USE + +We trust you have received the usual lecture from the local System Administrator. It usually boils down to these three things: + +* Respect the privacy of others. +* Think before you click. +* With great power comes great responsibility. +==== \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/dashboard.adoc b/docs/pt/modules/admin/pages/dashboard.adoc new file mode 100644 index 0000000000..bf2fc64564 --- /dev/null +++ b/docs/pt/modules/admin/pages/dashboard.adoc @@ -0,0 +1,23 @@ += Dashboard + +For your first time accessing to a Decidim plaform as Admin, you'll receive an invitation email so you can finish setting up your account with your nickname, name and password. + +Once you've finished and you're logged-in, you'll be able to access the Admin panel, starting with the Dashboard page. For this you'll need to click on your username, and click on "Admin dashboard". + +image::admin_dashboard_menu.png[Decidim Admin Dashboard in user menu] + +Here, you'll have a summary of the last activity of the platform. + +image::admin_dashboard.png[Decidim Admin Dashboard] + +You'll have three blocks: + +1. Activity: participants and admins that had logged in in last month, last week and last day. +1. Metrics: the graphics for the evolution of multiple things inside of Decidim: +* Participants +* Proposals +* Comments +* Meetings +* Accepted proposals +* Results +1. Admin log: last actions made by Administrator users in the platform. \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/features/badges.adoc b/docs/pt/modules/admin/pages/features/badges.adoc new file mode 100644 index 0000000000..6cf9a138d3 --- /dev/null +++ b/docs/pt/modules/admin/pages/features/badges.adoc @@ -0,0 +1,76 @@ += Badges + +Badges are recognitions to participant actions and progress in the platform. As participants start discovering, participating +and interacting in the platform, they will earn different badges. Here is the list of badges and some ways participants can earn them. + +It's a https://en.wikipedia.org/wiki/Gamification[gamification] mechanism to improve the engagement of the participants in a ludic way. + +The badges a participant has are visible in her account. There's also a general explanation page with a short description of every badge. + +image:features/badges/example01.png[Example of badges in profile] + +When a participant earns a badge she receives a notification. + +image:features/badges/notification.png[Example of badges notification] + +Badges have multiple levels, depending in the number of times she has made the action. For instance, for Proposals badge +she'll receive the first level badge when arriving at 1 follower, the second level at 15 followers, the third level at 30 followers, +the fourth level at 60 and the fifth level at 100. + + +.Badges +|=== +|Image |Title |Description |How it's earned |Levels + +|image:features/badges/accepted_proposals_badge.png[Accepted proposals badge] +|Accepted proposals +|Granted when particiapnts actively participate with new proposals and these are accepted. +|The participant needs to choose the participation space of her interest with submission for proposals enabled and try to +make proposals that can be carried out. This way they are more likely to be accepted. +|1, 5, 15, 30, 50 + +|image:features/badges/attended_meetings_badge.png[Attended meetings badge] +|Attended meetings +|Granted when participants attend several face-to-face meetings. +|The participant needs to register for the meetings she want to attend +|1, 3, 5, 10, 30 + +|image:features/badges/debates_badge.png[Debates badge] +|Debates +|Granted when participants actively participate in the different debates by leaving comments. +|The participant needs to take part in debates. +|1, 5, 10, 30, 50 + +|image:features/badges/followers_badge.png[Followers badge] +|Followers +|Granted when participant reach a certain number of followers. The platform is a social and political network, so +participants ned to weave their web to communicate with other people in the platform. +|The participant needs to be be active and follow other people. That will surely make other people follow her. +|1, 15, 30, 60, 100 + +|image:features/badges/published_initiatives_badge.png[Published initiatives badge] +|Published initiatives +|Granted when a participant launch new initiatives, partnering with others to carry them out. +|The participant needs to go to the participation space of Intiatives and follow the steps to create a new initiative. +|1, 5, 15, 30, 50 + +|image:features/badges/invitations_badge.png[invitations badge] +|Invitations +|Granted when participants invite some people and they have become participants. +|The participant needs to use the “invite friends” link on her user page to invite her friends. She can customize the +message she's sending. She’ll level up by sending invitations and getting them registered. Note that this feature is disabled +and this badge is not available, so it'll be removed in the future. +|1, 5, 10, 30, 50 + +|image:features/badges/proposal_supports_badge.png[Proposal supports badge] +|Proposal supports +|Granted when participants support other people's proposals. +|The participant needs to browse and spend some time reading other people's proposals and give support to the proposals she like or find interesting. +|5, 15, 50, 100, 500 + +|image:features/badges/proposals_badge.png[Proposals badge] +|Proposals +|Granted when participants actively participate with new proposals. +|The participant needs to choose the participation space of her interest with submission for proposals enabled and create a new proposal. +|1, 5, 10, 30, 60 +|=== \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/features/comments.adoc b/docs/pt/modules/admin/pages/features/comments.adoc new file mode 100644 index 0000000000..43bd35408c --- /dev/null +++ b/docs/pt/modules/admin/pages/features/comments.adoc @@ -0,0 +1,64 @@ += Comments + +Comments are public messages left to the rest of the community. It allows participants to share information or opinions +about a proposal, debate, meeting, initiative, etc. + +image:features/comments/example01.png[Comments example] + +== Create a comment + +. Sign in as a participant +. Go to the content that you want to leave a comment +. Go to the bottom of the page +. Fill the "Add comment" form + +Depending on the component settings, this feature can be disabled. + +image:features/comments/form.png[Comments form] + +=== Form + +It's possible to: + +. mention a participant or user group (like @admin). They'll receive a notification +. add a hashtag (like #Example). This will link to the general search +. make a quote of a comment (like > this is a quote) +. if an URL is entered, then it'll be linked automatically +image:features/comments/rich_text_write.png[Comments with rich text (write)] +image:features/comments/rich_text_read.png[Comments with rich text (read)] +image:features/comments/hashtag_search.png[Hashtags in comments] +. if HTML is added, it'll be escaped and not shown +image:features/comments/xss_write.png[XSS in comments (write)] +image:features/comments/xss_read.png[XSS in comments (read)] +. add emojis to comments +image:features/comments/emoji_selector.png[Emoji selector in comments] + +== Sort + +Comments can be sorted by "Best rated", "Recent", "Older" or "More discussed". + +image:features/comments/order_by.png[Order comments] + +== Actions + +After a comment is created, the author can "Reply", "Report", "Get link", "Edit" and "Delete". Other participants can "Reply", "Report" and "Get link". Some of these actions are visible in the three dots menu: + +image:features/comments/actions.png[Comments actions] + +=== Reply + +It's possible to reply to comments until the 4th anidation level. + +image:features/comments/anidation_levels.png[Anidation levels for comments] + +=== Delete + +Once a comment is deleted is not longer visible. + +image:features/comments/deleted_comment.png[Deleted comment] + +=== Edit + +Once a comment is edited then it's shown that was edited. It doesn't have a version history of the changes made. + +image:features/comments/edited_comment.png[Edited comment] \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/features/conversations.adoc b/docs/pt/modules/admin/pages/features/conversations.adoc new file mode 100644 index 0000000000..4165c50e1d --- /dev/null +++ b/docs/pt/modules/admin/pages/features/conversations.adoc @@ -0,0 +1,57 @@ += Conversations + +With conversations, participants can have private messaging with each other. Only the participants who are in the +conversation can see each others messages. + +A conversation can be started with any participant or group registered on the platform. + +image:features/conversations/conversation.png[Example of a conversation] + +To start a conversations: + +. Sign in as participant +. Go to the participant profile that you want to start a conversation with +image:features/conversations/profile.png[Participant profile] +. Click on the contact icon image:icon_envelope.png[Envelope icon] +. Fill the form +image:features/conversations/start_a_conversation_form.png[Start a conversation form] + +Alternatively, you could also: + +. Sign in as participant +. Click on the conversation icon in the header image:icon_envelope_off.png[Conversations icon] +. Click on the "Start conversation" button +. Search the participant or group that you want to start a conversation with +. Fill the form + +If there are new messages in a conversation, then the participant will see the icon with a color image:icon_envelope_on.png[Conversation icon with color] + +image:features/conversations/conversations.png[Conversations list] + +== Multiple participants in a conversation + +It's possible to have multiple participants in a conversation. + +For this, you need to: + +. Sign in as participant +. Click on the conversation icon in the header image:icon_envelope_off.png[Conversations icon] +. Click on the "Start conversation" button +. Search the participants or groups that you want to start a conversation with +. Fill the form + +image:features/conversations/new_conversation_modal.png[New conversation modal] + +== Group converations + +Just like with participants, is possible to have converstaions with groups. + +image:features/conversations/group_conversations.png[Group conversations list] +image:features/conversations/conversations_group_counter.png[Conversations group counter] + +== Notes + +Some things to consider about conversations: + +* It's not possible to delete a conversation. +* It's not possible to edit a message in a conversation. \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/features/embed.adoc b/docs/pt/modules/admin/pages/features/embed.adoc new file mode 100644 index 0000000000..c35bf2bca7 --- /dev/null +++ b/docs/pt/modules/admin/pages/features/embed.adoc @@ -0,0 +1,23 @@ += Embed + +Sometimes you want to embed some content to an external page. For this you can use the `Embed` feature. + +image:features/embed/example.png[A proposal card embeded in another page] + +== How to embed + +. Navigate to the content you want to embed. +. Click on the `Embed` link in the sidebar. image:features/embed/link.png[] +image:features/embed/sidebar.png[] +. Copy the code from the modal. +image:features/embed/modal.png[] +. Paste that code in the external page where you want to embed it. The CMS or platform that you're using needs to supports +changing HTML code. + +An example of this code is: + +[source,html] +---- + + +---- \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/features/endorsements.adoc b/docs/pt/modules/admin/pages/features/endorsements.adoc new file mode 100644 index 0000000000..b407e0ca97 --- /dev/null +++ b/docs/pt/modules/admin/pages/features/endorsements.adoc @@ -0,0 +1,17 @@ += Endorsements + +Through endorsements, participants can publicly show that they want to support a particular content, for instance, a proposal. + +image:features/endorsements/list.png[List of endorsements] + +This is done through the button in the sidebar. Administrators can enable or disable them by step in a given participatory process, and they can also define permissions with authorizations. + +image:features/endorsements/sidebar.png[Endorsement button in sidebar] + +When a participant belongs to a verified group she can also endorse like that group by selecting the identity. + +image:features/endorsements/modal.png[Select identity modal] + +By default the endorsements list is collapsed. To see it fully visitors need too click in the "(see more)" link. + +image:features/endorsements/full_list.png[Full list of endorsements] \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/features/fingerprint.adoc b/docs/pt/modules/admin/pages/features/fingerprint.adoc new file mode 100644 index 0000000000..0a4c43d309 --- /dev/null +++ b/docs/pt/modules/admin/pages/features/fingerprint.adoc @@ -0,0 +1,29 @@ += Fingerprint + +Although the platform should show the xref:admin:features/versions.adoc[Versions] for almost all of the contents, it'd be +still possible to manipulate the content by directly editing the database. + +As mitigation for this risk, the platform shows a fingerprint for some important fields, for instance, a proposal body and title. + +image:features/fingerprint/modal.png[Check fingerprint modal] + +Its goal is to provide a way to give an informal "receipt" to a participant to they can detect tampering. A fingerprint is +a hashed representation of the content. It's useful to ensure the content hasn't been tampered with, as a single modification +would result in a totally different value. It's calculated using a SHA256 hashing algorithm. In order to replicate it +yourself, you can use a http://www.md5calc.com/sha256[MD5 calculator online] and copy-paste the source data. + +== Check fingerprint + +. Go to the content that you want to check the fingerprint +. Click in the "Check fingerprint" link in the sidebar +image:features/fingerprint/sidebar.png[Check fingerprint link in sidebar] +. Follow the modal instructions + +image:features/fingerprint/md5calc.png[MD5calc.com screenshot] + +It's possible to check the fingerprint with other tools, such as the sha256sum command line tool. + +[source,bash] +---- +echo -n '{"body":{"en":"

**Is your feature request related to a problem? Please describe.**

It would be useful to set a character limit on questionnaire answers to provide guidance for users regarding how long their answers should be.


**Describe the solution you\'d like**

To have a number input field next to each question in the admin, labeled \\"Character limit\\", by default set to zero (no limit), which determines the maximum characters the user answers to those questions can have.


**Describe alternatives you\'ve considered**

Another possibility could be to define this globally for the questionnaire, setting the character limit for each type of question.


**Additional context**

-


**Could this issue impact on users private data?**

No


**Funded by**

Fundació Bosch i Guimpera

"},"title":{"en":"Maximum characters for questionnaire text answers"}}' | sha256sum +---- \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/features/follows.adoc b/docs/pt/modules/admin/pages/features/follows.adoc new file mode 100644 index 0000000000..faab047d79 --- /dev/null +++ b/docs/pt/modules/admin/pages/features/follows.adoc @@ -0,0 +1,27 @@ += Follows + +Most of the contents in Decidim allows to be followed. This means that you'll receive xref:features/notifications.adoc[notifications] +of the activity being made by the thing you're following. + +You can control these notifications in the xref:features/my_account/notifications_settings.adoc[settings of your account]. + +The activity of the things that you're following is visible in your xref:features/my_public_profile/timeline.adoc[profile timeline]. + +For following a thing: + +. Navigate to whatever you want to follow. +. Click in the "Follow" button. +image:button_follow.png[Follow button] +. You'll see the "Follow" button disappear and the "Stop following" button appear. + +To unfollow a thing: + +. Navigate to whatever you want to unfollow. +. Click in the "Stop following" button. +image:button_stop_following.png[Stop following button] +. You'll see the "Stop following" button disappear and the "Follow" button appear. + +Administrators by default follow all the new spaces that are created in the Decidim platform. + +A participant can also follow another participants. This is public and it's visible in the profile sections +xref:features/my_public_profile/follows.adoc[follows] and xref:features/my_public_profile/followers.adoc[followers]. \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/features/hashtags.adoc b/docs/pt/modules/admin/pages/features/hashtags.adoc new file mode 100644 index 0000000000..2d332d6537 --- /dev/null +++ b/docs/pt/modules/admin/pages/features/hashtags.adoc @@ -0,0 +1,5 @@ += Hashtags + +Hashtags are a way to categorize content globally on the platform and make it more easily searchable through these categorizations. It allows different related contents to be easily discoverable under the same topic. Similar functionality is often used in other social media platforms. + +Hashtags can be set for different records within the platform, such as participatory spaces. They can also be generated for content created by the participants to allow easier discovery of the content. Some components may also allow setting suggested hashtags or specific hashtags for all records submitted by the participants. \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/features/metrics.adoc b/docs/pt/modules/admin/pages/features/metrics.adoc new file mode 100644 index 0000000000..0e98422d88 --- /dev/null +++ b/docs/pt/modules/admin/pages/features/metrics.adoc @@ -0,0 +1,15 @@ += Metrics + +NOTE: Looking for how to enable this feature technically? Go to xref:develop:metrics.adoc[Metrics in Developers guide] + +With Metrics participants can see the evolution in time of some resources, such as Proposals, Supports, Endorsements, Followers, Participants, Accepted propsoals, Comments, etc. You can see a real world example of this in https://meta.decidim.org/processes/roadmap/all-metrics[Metadecidim Roadmap process]. + +For this to work it needs to be first xref:develop:metrics.adoc[configured technically] and also enabled by the setting in the participatory space (`Show metrics` checkbox). + +Then this section will be visible in the space landing page. + +image:features/metrics/example.png[Example of metrics] + +By clicking in "Show all metrics", visitors can see other metrics and download this data in CSV format. + +image:features/metrics/page.png[Metrics page] \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/features/my_account.adoc b/docs/pt/modules/admin/pages/features/my_account.adoc new file mode 100644 index 0000000000..f15dc1f51e --- /dev/null +++ b/docs/pt/modules/admin/pages/features/my_account.adoc @@ -0,0 +1,19 @@ += My account + +My account is all the pages where a participant can change her personal data that is displayed in her xref:admin:features/my_public_profile.adoc[My public profile] page, change her notifications settings, see which groups she belongs, etc. + +To go to this section: + +. Sign in as a participant +. Click in the name of the participant in the header +. Click in "My account" + +The actions that she can do are: + +* xref:admin:features/my_account/account.adoc[Account] +* xref:admin:features/my_account/notifications_settings.adoc[Notifications settings] +* xref:admin:features/my_account/authorizations.adoc[Authorizations] +* xref:admin:features/my_account/groups.adoc[Groups] +* xref:admin:features/my_account/my_interests.adoc[My interests] +* xref:admin:features/my_account/my_data.adoc[My data] +* xref:admin:features/my_account/delete_my_account.adoc[Delete my account] \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/features/my_account/account.adoc b/docs/pt/modules/admin/pages/features/my_account/account.adoc new file mode 100644 index 0000000000..9eb98b406b --- /dev/null +++ b/docs/pt/modules/admin/pages/features/my_account/account.adoc @@ -0,0 +1,47 @@ += Account + +In this section is possible to make modifications that will be visible in the participants xref:features/my_public_profile.adoc[public profile] and also modify the email address or the language that the platform will use with the user. + +. Sign in as a participant +. Click in the name of the participant in the header +. Click in "My account" + +image:features/my_account/account.png[My account form] + + +.Participant settings - My account form +|=== +|Field |Type |Description + +|Avatar +|Optional +|Avatar or picture for the participant. Guidance for image: Preferrably a landscape image that does not have any text. +The service crops the image. Maximum file size: 5MB + +|Your name +|Required +|The name of the participant. + +|Nickname +|Required +|The nickname of the participant. + +|Your email +|Required +|The email of the participant, where she'll receive notifications, password recovery, etc. If it's changed it needs to be +confirmed. + +|Personal URL +|Optional +|Metadata that is displayed in the participant's profile. + +|About +|Optional +|Metadata that is displayed in the participant's profile. + +|Locale +|Required +|Choose the language you want to use to browse and receive notifications in Decidim +|=== + +From this page is possible to also modify the participant's password. \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/features/my_account/authorizations.adoc b/docs/pt/modules/admin/pages/features/my_account/authorizations.adoc new file mode 100644 index 0000000000..3838e35959 --- /dev/null +++ b/docs/pt/modules/admin/pages/features/my_account/authorizations.adoc @@ -0,0 +1,23 @@ += Authorizations + +In this section participants will be able to review their Authorizations and see some metadata, like when it was granted +or the status of the authorization. + +It depends on how it's configured for the organization, as depending in the context (like normative or laws) it could work +in different ways. For more information about Authorizations see xref:admin:participants/authorizations.adoc[authorizations +in admin manual] and xref:customize:authorizations.adoc[authorizations in customize guide]. + +image:features/my_account/authorizations.png[Authorizations] + +To go to this section: + +. Sign in as a participant +. Click in the name of the participant in the header +. Click in "My account" +. Click in "Authorizations" in the sidebar + +For any given authorization, you can see the following information: + +* If it's not finished, when the authorization process started +* If it has finished and has been granted, the date when it was granted +* If the authorization provides it, some metadata, such as the scope of the authorization \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/features/my_account/delete_my_account.adoc b/docs/pt/modules/admin/pages/features/my_account/delete_my_account.adoc new file mode 100644 index 0000000000..8ba403a53e --- /dev/null +++ b/docs/pt/modules/admin/pages/features/my_account/delete_my_account.adoc @@ -0,0 +1,21 @@ += Delete my account + +In this section participants will be able to delete their own accounts. This means that they will be unable to access the system anymore. This action is irreversible. All the contributions will be anonymized. + +image:features/my_account/delete_my_account.png[Delete my account form] + +To delete the account: + +. Sign in as a participant +. Click in the name of the participant in the header +. Click in "My account" +. Click in "Delete my account" in the sidebar +. Optionally, she can provide a reason for the deletion +. Click in "Delete my account" +. Click in "Yes, I want to delete my account" + +image:features/my_account/delete_my_account_confirm.png[Confirm account deletion] + +After the account has been deleted, the contributions (such as comments, proposals, etc), will be still visible but all the authorship information will be anonymized, belonging to an special kind of author called "Participant deleted": + +image:features/my_account/delete_my_account_deleted.png[Deleted participant contribution] \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/features/my_account/groups.adoc b/docs/pt/modules/admin/pages/features/my_account/groups.adoc new file mode 100644 index 0000000000..5bccbd4987 --- /dev/null +++ b/docs/pt/modules/admin/pages/features/my_account/groups.adoc @@ -0,0 +1,18 @@ += Groups + +In this section participants can see which Groups they belong to. + +NOTE: Want to create a new group? Go to the xref:admin:features/my_public_profile.adoc[My public profile] page. + +image:features/my_account/groups.png[Groups] + +To go to this section: + +. Sign in as a participant +. Click in the name of the participant in the header +. Click in "My account" +. Click in "Groups" in the sidebar + +Here you can see in which date the group was created and which status does it have (`pending` or `verified`). + +Read more about xref:admin:participants/groups.adoc[Groups in admin manual]. \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/features/my_account/my_data.adoc b/docs/pt/modules/admin/pages/features/my_account/my_data.adoc new file mode 100644 index 0000000000..657fe4af9b --- /dev/null +++ b/docs/pt/modules/admin/pages/features/my_account/my_data.adoc @@ -0,0 +1,29 @@ += My data + +In this section participants can request a file with all the data that they've provided to the platform. + +image:features/my_account/my_data.png[My data] + +To request the data: + +. Sign in as a participant +. Click in the name of the participant in the header +. Click in "My account" +. Click in "My data" in the sidebar +. Click in "Request data" +. Wait a couple of minutes so the files are generated. It could depend in how many proposals, comments, etc you've made +. Go to your email account and find the received email +. Click in "Download" +. Open it with a support zip software +. Enter the password that you've received in the email +. Unzip or extract the contents + +image:features/my_account/my_data_email.png[My data] + +== Zip applications + +For opening the zip file, the software that you use need to support encryption with the AES-256 algorithm. Depending on your operating system you have multiple alternatives. + +* Windows: https://www.7-zip.org/[7-Zip] +* Mac: https://www.keka.io[Keka] +* GNU/Linux: File Roller (available through your package manager) or https://peazip.github.io/[PeaZip] \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/features/my_account/my_interests.adoc b/docs/pt/modules/admin/pages/features/my_account/my_interests.adoc new file mode 100644 index 0000000000..df77a4d79b --- /dev/null +++ b/docs/pt/modules/admin/pages/features/my_account/my_interests.adoc @@ -0,0 +1,15 @@ += My interests + +In this section participants can choose which interests they have to receive more information about. + +By default what they see here is a list of all the xref:admin:scopes.adoc[Scopes] of the organization. Those selections +can be used by administrators when segmenting for the xref:admin:newsletters.adoc[Newsletters]. + +image:features/my_account/my_interests.png[My interests] + +To go to this section: + +. Sign in as a participant +. Click in the name of the participant in the header +. Click in "My account" +. Click in "My interests" in the sidebar \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/features/my_account/notifications_settings.adoc b/docs/pt/modules/admin/pages/features/my_account/notifications_settings.adoc new file mode 100644 index 0000000000..ff949d0ad4 --- /dev/null +++ b/docs/pt/modules/admin/pages/features/my_account/notifications_settings.adoc @@ -0,0 +1,26 @@ += Notifications + +In this section participants can choose which kind of notifications they'll receive. For instance, depending in the activity of the installation and spaces, most people would want to disable the "Everything I follow" + +image:features/my_account/notifications_settings.png[Notifications settings] + +To go to this section: + +. Sign in as a participant +. Click in the name of the participant in the header +. Click in "My account" +. Click in "Notifications settings" in the sidebar + +The options available are: + +* I want to get notifications about +** My own activity, like when someone comments in my proposal or mentions me +** Everything I follow +* Send notifications by email +** I want to receive an email every time I receive a notification +* Newsletters +** I want to receive newsletters +* Receive direct messages from anyone +** Allow anyone to send me a direct message, even if I don't follow them +* Administrators +** I want to receive an email every time something is reported for moderation \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/features/my_public_profile.adoc b/docs/pt/modules/admin/pages/features/my_public_profile.adoc new file mode 100644 index 0000000000..ad704dea44 --- /dev/null +++ b/docs/pt/modules/admin/pages/features/my_public_profile.adoc @@ -0,0 +1,18 @@ += My public profile + +Every participant has a public profile that shows details about them and their activity on the website. + +To go to this section: + +. Sign in as a participant +. Click in the name of the participant in the header +. Click in "My public profile" + +The sections available under the public profile are: + +* xref:admin:features/my_public_profile/timeline.adoc[Timeline] +* xref:admin:features/my_public_profile/activity.adoc[Activity] +* xref:admin:features/badges.adoc[Badges] +* xref:admin:features/my_public_profile/follows.adoc[Follows] +* xref:admin:features/my_public_profile/followers.adoc[Followers] +* xref:admin:features/my_public_profile/groups.adoc[Groups] \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/features/my_public_profile/badges.adoc b/docs/pt/modules/admin/pages/features/my_public_profile/badges.adoc new file mode 100644 index 0000000000..3d44427d06 --- /dev/null +++ b/docs/pt/modules/admin/pages/features/my_public_profile/badges.adoc @@ -0,0 +1,5 @@ += Badges + +The public profile's badges shows which badges the participant has accumulated and what their current level is for each badge. + +More information about badges is available on the xref:admin:features/badges.adoc[Badges feature page]. \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/features/my_public_profile/followers.adoc b/docs/pt/modules/admin/pages/features/my_public_profile/followers.adoc new file mode 100644 index 0000000000..6c12a0f330 --- /dev/null +++ b/docs/pt/modules/admin/pages/features/my_public_profile/followers.adoc @@ -0,0 +1,3 @@ += Followers + +The followers section contains a list of participants and groups that are following the participant that the profile belongs to. \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/features/my_public_profile/follows.adoc b/docs/pt/modules/admin/pages/features/my_public_profile/follows.adoc new file mode 100644 index 0000000000..c9c686c277 --- /dev/null +++ b/docs/pt/modules/admin/pages/features/my_public_profile/follows.adoc @@ -0,0 +1,3 @@ += Follows + +The follows section contains a list of participants and groups the participant is currently following. By following another participant or a group on the platform, the participant will receive notifications about the activity done by those other participants or groups on the platform. Some participants may also require that they need to be following the other participant before they can exchange private messages with each other. \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/features/my_public_profile/groups.adoc b/docs/pt/modules/admin/pages/features/my_public_profile/groups.adoc new file mode 100644 index 0000000000..52885e4050 --- /dev/null +++ b/docs/pt/modules/admin/pages/features/my_public_profile/groups.adoc @@ -0,0 +1,3 @@ += Groups + +The groups section contains all the groups that the user belongs to. More information about the groups feature is available at the xref:admin:features/my_account/groups.adoc[User groups page]. \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/features/my_public_profile/timeline.adoc b/docs/pt/modules/admin/pages/features/my_public_profile/timeline.adoc new file mode 100644 index 0000000000..99909163f4 --- /dev/null +++ b/docs/pt/modules/admin/pages/features/my_public_profile/timeline.adoc @@ -0,0 +1,3 @@ += Timeline + +The timeline view displays the participants activity on the website, including the activity items that should be only visible to the participant currently logged in. This section is not visible to any other user than the participant themselves because it can also contain items that should be visible only to that participant. \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/features/my_public_profile/tmp_notifications.adoc b/docs/pt/modules/admin/pages/features/my_public_profile/tmp_notifications.adoc new file mode 100644 index 0000000000..2aabfc9b49 --- /dev/null +++ b/docs/pt/modules/admin/pages/features/my_public_profile/tmp_notifications.adoc @@ -0,0 +1,5 @@ += Notifications + +In this section participants can see the notifications that the system has sent to them. For instance, if the participant is followign a participatory space or a proposal, they get related notifications about the actions that happen in these sections of the platform. + +This section can be accessed through the bell icon in the header bar of the platform. The bell icon shows highlighted as active when there are notifications and dimmer when there are no new notifications for the user right now. \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/features/notifications.adoc b/docs/pt/modules/admin/pages/features/notifications.adoc new file mode 100644 index 0000000000..18006f9c47 --- /dev/null +++ b/docs/pt/modules/admin/pages/features/notifications.adoc @@ -0,0 +1,16 @@ += Notifications + +Most of the actions in the platform generate notifications so particpants can know when there are new things to watch. + +This is accessible from the `Notifications` menu item (image:icon_bell.png[Notification icon]) in the header, after a participant has logged in. + +To see the notifications: + +. Sign in as participant +. Click in the notifications icon in the header + +If there are notifications, then the participant will see the icon with a color image:icon_bell_on.png[Notification icon with color] + +image:features/notifications/notifications.png[Example of notifications page when there are notifications] + +image:features/notifications/no_notifications_yet.png[Example of notifications page when there aren't notifications] \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/features/search.adoc b/docs/pt/modules/admin/pages/features/search.adoc new file mode 100644 index 0000000000..c774f2e53c --- /dev/null +++ b/docs/pt/modules/admin/pages/features/search.adoc @@ -0,0 +1,3 @@ += Search engine + +*The search engine* allows participants to perform searches across all of the platform’s indexable content, both generally and specifically, by searching within a specific participatory process or inside its components (proposals, results, etc.), through advanced searches. \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/features/share.adoc b/docs/pt/modules/admin/pages/features/share.adoc new file mode 100644 index 0000000000..845476edb6 --- /dev/null +++ b/docs/pt/modules/admin/pages/features/share.adoc @@ -0,0 +1,3 @@ += Share + +Different content on the platform can be easily shared through the share links available on the site. The share links allow easier sharing to different social media services that can be configured for Decidim through the configuration files. \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/features/statistics.adoc b/docs/pt/modules/admin/pages/features/statistics.adoc new file mode 100644 index 0000000000..416e405100 --- /dev/null +++ b/docs/pt/modules/admin/pages/features/statistics.adoc @@ -0,0 +1,3 @@ += Statistics + +Decidim provides general statistics about the whole platform and different participatory spaces can also provide statistics related to that participatory space only. These are generic numbers that indicate the website activity and may also encourage other people to join the platform as they see it being popular. \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/features/versions.adoc b/docs/pt/modules/admin/pages/features/versions.adoc new file mode 100644 index 0000000000..63b7ca2f13 --- /dev/null +++ b/docs/pt/modules/admin/pages/features/versions.adoc @@ -0,0 +1,24 @@ += Versions + +The versions feature allows a visitor to see the evolution of the different versions of resources that can be edited, +like proposals or results. + +With versions it's possible to see who made the change, when the change has been made and exactly what has changed. + +image:features/versions/side_by_side_escaped.png[Versions in resources] + +== See the versions + +. Go to the content that you want to see the version of. +. Click in the "see other versions" link in the sidebar +image:features/versions/sidebar.png[See other versions link in sidebar] +. Click in the past version that you want to see +image:features/versions/list.png[List of versions] +. From there you can change the visualiation of the version differences +image:features/versions/unified_unescaped.png[Unified unescaped view] + +It's possible to view the diffs of the versions in in two formats: side by side or unified. In case that the contents are +in HTML then it's also possible to see the diff unescaped and escaped, and see the full HTML code. + +image:features/versions/side_by_side_unescaped.png[Side by side unescaped view] +image:features/versions/unified_escaped.png[Unified escaped view] \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/global_moderations.adoc b/docs/pt/modules/admin/pages/global_moderations.adoc new file mode 100644 index 0000000000..bb3d553310 --- /dev/null +++ b/docs/pt/modules/admin/pages/global_moderations.adoc @@ -0,0 +1,121 @@ += Global moderations + +The *Global moderations* function allows you to moderate different kind of contents and +ensure that the dialog in your platform is democratic and constructive. Making +use of this function, administrators, collaborators and moderators of a space can +hide the contents/contributions that have been reported, where the complaint is +deemed appropriate, or delete the complaint. + +NOTE: Looking for how to report users? See xref:participants/reported_users.adoc[Reported users]. + +For instance, in the case of https://www.decidim.barcelona/[Decidim Barcelona], +the https://www.decidim.barcelona/pages/terms-and-conditions[Terms of Service] says: + +> It is not allowed to add any illegal or unauthorized content to the site, such +> as information with the following features: +> +> * be it false or misleading; +> * to infringe any law of the City Council or any third party, such as copyright, +> trademarks or other intellectual and industrial property rights or related rights; +> * attacking the privacy of a third party, such as publishing personal details +> of participants, such as name, address, phone number, email, photos or any other +> personal information; +> * containing viruses, Trojans, robots or other programs that may harm the website +> or the City Hall systems, or the website or system of any third party, or which +> intend to circumvent the technical measures designed for the proper functioning +> of the platform; +> * to send spam to users or overload the system; +> * which has the character of message chain, pyramidal game or random game; +> * for commercial purposes, such as publishing job offers or ads; +> * that it is not in keeping with public decency; consequently, content must not +> incite hatred, discriminate, threaten, provoke, have no sexual, violent, coarse or +> offensive meaning or character; +> * to infringe the law or applicable regulation; +> * to campaign by promoting mass voting for other proposals not related to the +> process and the framework for discussion, and +> * to create multiple users by pretending to be different people (astroturfing). + +Anyone can propose a moderation in Decidim, through the "Flag" icon in the participant +profile. After a participant has clicked in this action then she needs to provide a +reason why she's making this report: + +* Contains clickbait, advertising, scams or script bots. +* Contains racism, sexism, slurs, personal attacks, death threats, suicide requests or any form of hate speech. +* Contains illegal activity, suicide threats, personal information, or something else you think doesn't belong on [This organization]. + +Participants can also add extra information regarding their report. + +image:moderation_modal.png[Give reason for moderation modal] + +After a participant has reported a content, it'll be shown in two sections of the +administration panel: + +* Global moderations panel +* Participatory space moderation panel + +To go to the Global moderations panel, you need to: + +. Sign in as administrator +. Go to administration panel +. Click in Global moderations in the sidebar + +There you'll find first all the unprocessed reports if there's any: + +image:global_moderations_list_unhidden.png[Show all the moderated content list] + +It's also possible to filter by the type of content that was moderated and the +state of the reported content (if it was hidden or not). + +* *Id*: unique identificator of the reported content. +* *Type*: which kind of content it was reported, for instance a *Proposal* or a *Comment*. +* *Participatory Space*: which space this content belongs to. +* *Count*: Number of times it has been reported by different users. +* *Reported content URL*: link for seeing the content reported and see the context of the complaint. +* *Reports*: why it has been reported. If the participant that made the report has given extra +information it's possible to see it by hovering it. +* *Creation date*: when it was originally reported. +* *Actions*: you can *Expand*, *Unreport* or *Hide*. + +== Actions (when the report wasn't accepted yet) + +|=== +|Icon |Name |Definition + +|image:action_expand.png[Expand icon] +|Expand +|To see the full metadata of the reported content. + +|image:action_hide.png[Hide icon] +|Hide +|Allows an admin or moderator to hide this content (accepting the report). + +|image:action_unreport.png[Unreport icon] +|Unreport +|Allows an admin or moderator to keep showing this content (rejecting the report). +|=== + +== Actions (after the content is hidden) + +|=== +|Icon |Name |Definition + +|image:action_expand.png[Expand icon] +|Expand +|To see the full metadata of the reported content. + +|image:action_unhide.png[Unhide icon] +|Unhide +|Allows an admin or moderator to unhide this content (showing it publicly again). +|=== + +If the report was "Unreported" and it was a mistake, meaning that for instance the +content was spam but it was a mistake not accepting the report, then you'll need +to find that again in the public view and report it yourself so you can moderate it. + +== Expand + +To see all the metadata of a report, you can see it Expanded. + +image:global_moderations_report01.png[Expanded moderation 01] + +image:global_moderations_report02.png[Expanded moderation 02] \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/help_sections.adoc b/docs/pt/modules/admin/pages/help_sections.adoc new file mode 100644 index 0000000000..7e942f55d7 --- /dev/null +++ b/docs/pt/modules/admin/pages/help_sections.adoc @@ -0,0 +1,23 @@ += Help sections + +The first time a visitor goes to any Space page she'll see an information box about what's this Space about. + +This is how the information box is shown to participants and visitors: + +image:help_sections_frontend.png[Help sections: frontend] + +They can hide this box by clicking in the close button [X]. This gets remembered by the application. They can open this box again by clicking in [Help: ?]. + +image:help_sections_frontend_hide.png[Help sections: hide] + +As this is something that depends on your given installation, an administrator can customize these *Help sections*, adapting them to your needs. + +image:help_sections_backend.png[Help sections: backend] + +== Disable + +You can disable these information boxes by leaving the contents all empty for every language: + +image:help_sections_disable_backend.png[Disable help section in admin] + +image:help_sections_disable_frontend.png[Disabled help section] \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/homepage.adoc b/docs/pt/modules/admin/pages/homepage.adoc new file mode 100644 index 0000000000..b5811167d9 --- /dev/null +++ b/docs/pt/modules/admin/pages/homepage.adoc @@ -0,0 +1,101 @@ += Homepage + +include::partial$under-construction.adoc[] + +You can control how it's the Homepage of your organization. To do so you have the Settings -> Homepage section through the Administration panel: + +image::admin_homepage.png[Decidim Admin Homepage] + +--- + +== How this works + +This means that every section in the Homepage is called **content block**. + +For instance, this is the *How to participate* content block: + +image::homepage_how_to_participate.png[How to participate example] + +For managing these contents you need to Drag and Drop the contents between the two columns, on the left are the Active and in the Right are the Inactive content blocks. + +As an example, here you can see how your page will look with only the *Hero image* content block: + +// TODO: add screenshot + +At the admin this is handled with: + +// TODO: add screenshot + +In your installation you could have other content blocks, as this depends on which modules you have active. Please contact your system administrator if you see something different here, like a missing content block. + +== Content blocks + +These are the different content blocks enabled with the official Decidim modules: + +=== Hero image + +image::homepage_hero_image_back.png[Hero image in Homepage backend content block] + +image::homepage_hero_image_front.png[Hero image in Homepage frontend content block] + +=== Sub hero banner + +Displays the description text of the instance. See xref:admin:appearance.adoc[Appearance]. + +image::homepage_sub_hero_banner.png[Sub hero banner in Homepage content block] + +=== Footer sub hero banner + +// TODO: I think this should be changed with an HTML text and probably removed + +image::homepage_footer_sub_hero_banner.png[Hero image in Homepage content block] + +=== How to participate + +// TODO: I think this should be changed with an HTML text and probably removed + +image::homepage_how_to_participate.png[How to participate in Homepage content block] + +=== Upcoming meetings + +image::homepage_upcoming_meetings.png[Upcoming meetings in Homepage content block] + +=== Last activity + +image::homepage_last_activity.png[Last activity in Homepage content block] + +=== HTML block + +image::homepage_html_block.png[HTML block in Homepage content block] + +=== Highlighted processes + +image::homepage_highlighted_processes.png[Highlighted processes in Homepage content block] + +=== Highlighted assemblies + +image::homepage_highlighted_assemblies.png[Highlighted assemblies in Homepage content block] + +=== Highlighted initiatives + +image::homepage_highlighted_initiatives.png[Highlighted initiatives in Homepage content block] + +=== Highlighted consultations + +image::homepage_highlighted_consultations.png[Highlighted consultations in Homepage content block] + +=== Highlighted conferences + +image::homepage_highlighted_conferences.png[Highlighted conferences in Homepage content block] + +=== Highlighted content banner + +image::homepage_highlighted_content_banner.png[Highlighted content banner in Homepage content block] + +=== Organization statistics + +image::homepage_organization_statistics.png[Organizations statistics in Homepage content block] + +=== Organization metrics + +image::homepage_organization_metrics.png[Organzation metrics in Homepage content block] \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/index.adoc b/docs/pt/modules/admin/pages/index.adoc new file mode 100644 index 0000000000..4c3b2a0763 --- /dev/null +++ b/docs/pt/modules/admin/pages/index.adoc @@ -0,0 +1,27 @@ += Introduction + +Deploying Decidim means taking account of all the activities that play a part in the configuration of the platform and the deployment of the participatory processes. Acquiring knowledge in administering Decidim enables control over fundamental matters such as: + +* configuring a participatory process +* activating a consultation and receiving votes +* moderating the platform +* managing associated legal texts (as the privacy policy) +* managing authorization from the administrators +* monitoring and verifying organizations + +None of these aspects are strictly technical but they do involve a series of political decisions over how we want Decidim to be, what messages and contents it has to contain, what the moderation policy for comments and debates has to be and, above all, how a specific participatory platform has to be, and what functions it has to have active. This is why it is essential to understand the socio-technical implications of the Decidim platform’s administration and management when it comes to deploying the platform. + +To understand how Decidim works, we need to distinguish between xref:spaces.adoc[*spaces*] and xref:components.adoc[*components*]. The participatory spaces are the channels that citizens can participate through when public decisions are being taken. These are participatory processes, initiatives, consultations and assemblies. +Whereas participatory components are mechanisms that enable interaction between users of the platform and the various participatory spaces. These include meetings, pages, proposals and surveys. + +image:introduction.png[Spaces and components] + +Therefore, a participatory space as a participatory process, in the various stages, can incorporate several components such as face-to-face meetings, proposals, surveys and results and the monitoring of these. + +image:introduction_process.png[Components in a participatory process] + +So, participatory spaces are configured by defining (and configuring) the components they are going to have. It is important to bear in mind that these participatory components and the various functions are repeated in the various spaces, offering many opportunities when it comes to configuring the various spaces. This simplifies learning as once a space has been configured, it is then easier to configure another. + +This section provides a full description of how to configure the Decidim platform for any kind of organization and how to configure, manage and administer the various participatory processes. A description has been given in tutorial format, to help with understanding administration tasks, following Decidim’s literal fields and enclosing screenshots to facilitate their interpretation. + +Managing (administering) the Decidim platform is relatively simple and intuitive and no specific IT knowledge is required. The administrators of a Decidim platform, in other words, those with the necessary authorization for managing the platform, can configure the platform in a general way (images, information pages, etc.,) and manage the various participatory processes (configuring, editing, analysing and concluding). \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/information-pages.adoc b/docs/pt/modules/admin/pages/information-pages.adoc new file mode 100644 index 0000000000..b92b94229d --- /dev/null +++ b/docs/pt/modules/admin/pages/information-pages.adoc @@ -0,0 +1,153 @@ += Information pages + +include::partial$legacy.adoc[] + +Here we offer you three informative pages that you can use as a template or re-use replacing the text highlighted in yellow with the correct text. You can find the same documents in spanish or catalan in their respective Administering Decidim document. + +== Information/FAQs + +[[t.6a4146f0a2c8ecae39afa2642bcb7f700ef842af]][[t.0]] + +[width="100%", cols="100%"] +|=== +|_FAQS (EN)_ + +a|If you’d like to take part in participatory processes and have your say, register! Note that to use some of the functions of certain processes (such as voting and prioritising) you will have to verify that you are registered with #Name of the Municipality/ Organization#, by following a very simple step. + +*What is #Name of the Municipality/ Organization?#* + +A platform for building a more participatory #Name of the Municipality/ Organization#, with a shared vision and for delving deeper into local participatory democracy. + +#Platformname# is a participatory platform based on open code. Citizens can see how it is built and can reuse or improve it. https://www.google.com/url?q=https://github.com/AjuntamentdeBarcelona/decidim.barcelona&sa=D&ust=1526042251888000[Check out the code here on GitHub]. + +*How can I participate in Platformname?* + +Get informed + +* Consult the active participatory processes. +* Browse through the proposals made by other citizens +* Access the face-to-face meetings' data and documents and the discussions and debates held there. +* Search contents of interest to you, by district, subject matter and tags. + +Take part + +* Make new proposals. +* Offer arguments in favour or against, or your general thoughts. +* Share the proposals on social media. + +a|Follow the existing proposals + +* Follow the existing proposals: those started on the platform and those generated by face-to-face meetings. +* After the face-to-face meetings have taken place, you can follow the progress of the discussions and debates as well as the contributions generated. +* Tick a proposal of interest to you and follow its entire progress, from the comments made by others to the final documents. + +*What are...?* + +*Participatory processes* + +*#Platformname#* activities that involve citizens and which are carried out in several stages: information, diagnosis, contributions, decisions, results and evaluation of the proposals. + +*Assemblies* + +Permanent participatory channels and bodies. + +*Face-to-face meetings:* + +Meetings and work sessions for contributing to active participatory processes. + +*Surveys* + +Questionnaire for providing information and sharing your opinion. + +*Discussions and debates* + +Digital spaces for getting informed and deciding on the proposals in the processes that have this function enabled. + +*Proposals* + +Contributions you can make as a user. In some cases you will be able to receive votes from other users. Some of them will have a decision-taking function and others a merely consultative function. Each process will have its own characteristic rules. + +*Comments* + +Contributions you can make as a user in response to a proposal or discussion and debate. + +*My residency verification doesn't work.* + +Check the following possibilities: + +* Have you entered your national ID number or document without spaces between the digits, including the final letter? +* Are you sure you are a registered resident in the municipality of #Name of the Municipality/ Organization#? (The municipality is geographically smaller than the Barcelona Metropolitan Area and the Province of Barcelona) +* There may be a problem with your data in the residency register. Consult your nearest CITIZEN HELP AND INFORMATION OFFICE and confirm that your registration information is correct. + +If all the above steps do not solve the problem, email us at #Email# or come to the face-to-face discussions and debates for each process. + +*I am not a registered resident in #Name of the Municipality/ Organization#; why can't I vote for the proposals?* + +Only registered residents in #Name of the Municipality/ Organization# are allowed to vote in processes where proposals can be voted on. When it comes to questions that affect decisions to be taken that are specific to the city, it is the city’s residents who need to take part in such decision-taking. + +It is true that there are people not registered #Name of the Municipality/ Organization# residents who may still be affected by these decisions, but the Register is the broadest available census that we have in #Name of the Municipality/ Organization#: it allows us to reach the maximum number of people while also guaranteeing that the participatory process is secure. On the other hand, not all the processes launched from the platform require their participants to be registered residents in the city. + +*I am not a registered #Name of the Municipality/ Organization# resident. Can I participate?* + +Yes, you can take part even when you are not a registered resident. You can take part in several enabled processes, in face-to-face discussions and debates, and you can launch a proposal, without having to be a registered resident. It is only in some processes that voting for proposals is limited to registered residents, just as only registered residents can vote at municipal elections. + +*Why do I have to verify my account?* + +You need a user account to use the platform. You can do more or fewer things depending on the degree of verification: + +* If you register with the website through an email address without providing any further information (so the verification process is not carried out), you will be able to comment on and debate proposals. +* If after registering, you have carried out the basic verification, i.e. you have verified your residence through the platform (more info at "How do I create and verify my account?"), you can vote for proposals in processes that are feasible (in certain processes). +* You can always take part in person and at any of the face-to-face meetings there are for each participatory process. Contributions that are made face to face will be collected, published and accessible to the platform. + +*Do I need a mobile phone or access to internet to take part?* + +No. You can carry out any action relating to the proposals - whether for creating, supporting, voting for or getting informed about them - face to face at any of the discussions and debates that are held. You can also create a completely verified user account if you wish to use the platform. + +*How do I create and verify my account?* + +The first step is to create an account. Create the account and fill in the information you are asked for. You are required to tick the box stating that you accept our user terms and conditions. On creating a new account, an email will be sent to the address you have specified, and you will have to click on the link it contains (the "Confirm my account" link) to complete the creation of the account. + +Once your basic account has been created and you have logged in using your email and password, the system will give you the option of carrying out a basic verification. To do this, click on the "My account" link on the top right and then click on the "Verify my account" button. + +Some processes, where necessary, will also require you to enter your residency data, to verify you are a registered resident in #Name of the Municipality/ Organization# (it is important to enter the document number along with the letter and your date of birth, and tick the box stating you accept access to the Municipal Register). If your data is correct, your account will allow you to support the proposals. + +*I've forgotten my password and my account doesn't work. What can I do?* + +You can request a new password, which will be sent to your email address. If the above solution does not work, you can email us at #Email#, and we will solve the problem associated with your account. Processes that include face-to-face meetings are open to you to attend and take part in, without the need for you to register with the platform. + +*How can I change my email address, my user name, my password, unsubscribe or activate/deactivate the notifications that are sent to email address?* + +Click on the "Enter" link, enter your email address and password, and click on the "Enter" button. Once you have done so, click on the "My account" link, where you will find all the options, allowing you to change your email address or user name, unsubscribe, or activate/deactivate notifications. Once you have made the appropriate changes, make sure you click on the "Save changes" button. + +*I am unable to create my account correctly.* + +Review the section "My residency verification doesn't work", in case the problem lies in this step; generally speaking, this is the most frequent problem. If this does not solve your problem, review the section "How to create and verify my account", to ensure that your are following the steps correctly. If the problem persists, email us at #Email#, and you will be given assistance. +|=== + +[[h.mkf6otb3mhlh]] +== Terms and conditions of use + +[[t.0c2d2bc083254e4010a82a1ac81ebd7f18f135ee]][[t.1]] + +[width="100%", cols="100%"] +|=== +|_Terms and conditions of use (EN)_ + +a|Legal aspects and conditions of use for the #Platformname# participatory platform at #Name of the Municipality/ Organization# City Council. + +(the ones that the legal services recommend you. You can use the https://www.google.com/url?q=https://decidim.barcelona/pages/terms-and-conditions&sa=D&ust=1526042251902000[Decidim.Barcelona terms and conditions of use] as a model). +|=== + +[[h.3oy7u29]] +== How the platform works + +[[t.44b67a895959076674b8c3aa044e22bbd448f440]][[t.2]] + +[width="100%", cols="100%"] +|=== +|_Accessibility (EN)_ + +a|This refers to the webpage's design and contents, which have to be accessible (without any visual or technological obstacles and for the largest number of users possible), and to standard regulations (WAI, Web Accessibility Initiative). + +Decidim.Barcelona example https://www.google.com/url?q=https://www.decidim.barcelona/pages/accessibility&sa=D&ust=1526042251903000[Accessibility]. +|=== \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/initiatives_initializer.adoc b/docs/pt/modules/admin/pages/initiatives_initializer.adoc new file mode 100644 index 0000000000..80f663fc2c --- /dev/null +++ b/docs/pt/modules/admin/pages/initiatives_initializer.adoc @@ -0,0 +1,174 @@ += Initiatives Initializer + +For using the initiatives module, you'll want to review the configurations that are in the initializer. See the xref:configure:initializer.adoc[general Initializer configuration] for more information regarding this file. + +You'll need to change in the `config/initializer/decidim.rb` file. You could also create an ad-hoc file for these configurations, like `config/initializer/initiatives.rb`. + +After making changes to this file you'll need to also restart your application server. + +== Creation enabled + +Setting that defines whether creation is allowed to any validated user or not. Defaults to true. + +[source,ruby] +.... + config_accessor :creation_enabled do + true + end +.... + +== Similarity threshold + +Setting that defines the similarity minimum value to consider two +initiatives similar. Defaults to 0.25. + +[source,ruby] +.... + config_accessor :similarity_threshold do + 0.25 + end +.... + +== Similarity limit + +Setting that defines how many similar initiatives will be shown. +Defaults to 5. + +[source,ruby] +.... + config_accessor :similarity_limit do + 5 + end +.... + +== Minimum committee members + +Minimum number of committee members required to pass the initiative to +technical validation phase. Only applies to initiatives created by +individuals. + +[source,ruby] +.... + config_accessor :minimum_committee_members do + 2 + end +.... + +== Default signature time period length + +Number of days available to collect supports after an initiative has been +published. + +[source,ruby] +.... + config_accessor :default_signature_time_period_length do + 120 + end +.... + +== Default components + +Components enabled for a new initiative + +[source,ruby] +.... + config_accessor :default_components do + [:pages, :meetings] + end +.... + +== First notification percentage + +Notifies when the given percentage of supports is reached for an +initiative. + +[source,ruby] +.... + config_accessor :first_notification_percentage do + 33 + end +.... + +== Second notification percentage + +Notifies when the given percentage of supports is reached for an +initiative. + +[source,ruby] +.... + config_accessor :second_notification_percentage do + 66 + end +.... + +== Stats cache expiration time + +Sets the expiration time for the statistic data. + +[source,ruby] +.... + config_accessor :stats_cache_expiration_time do + 5.minutes + end +.... + +== Max time in validating state + +Maximum amount of time in validating state. +After this time the initiative will be moved to +discarded state. + +[source,ruby] +.... + config_accessor :max_time_in_validating_state do + 60.days + end +.... + +== Print enabled + +Print functionality enabled. Allows the user to get +a printed version of the initiative from the administration +panel. + +[source,ruby] +.... + config_accessor :print_enabled do + true + end +.... + +== Timestamp service + +Set a service to generate a timestamp on each vote. The +attribute is the name of a class whose instances are +initialized with a string containing the data to be +timestamped and respond to a timestamp method. + +[source,ruby] +.... + config_accessor :timestamp_service +.... + +== PDF signature service + +Set a service to add a signature to pdf of signatures. +The attribute is the name of a class whose instances are +initialized with the document to be signed and respond to a +signed_pdf method with the signature added. + +[source,ruby] +.... + config_accessor :pdf_signature_service +.... + +== Do no require authorization + +This flag allows creating authorizations to unauthorized users. + +[source,ruby] +.... + config_accessor :do_not_require_authorization do + false + end +.... \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/newsletters.adoc b/docs/pt/modules/admin/pages/newsletters.adoc new file mode 100644 index 0000000000..7c3c069551 --- /dev/null +++ b/docs/pt/modules/admin/pages/newsletters.adoc @@ -0,0 +1,164 @@ += Newsletters + +Newsletters are emails sent to the organization's participants with the news. They are +sent to participants that have checked the "Receive an occasional newsletter +with relevant information" when the participant signed up or after in their account. + +image::newsletter_contact_permission.png[Contact permission in participant registration] + +image::newsletter_participant_notifications_settings.png[Contact permission in participant account] + +Some examples of when you can and should sent a newsletter are: + +* When a new process could be interesting for all the citizens in a city, +for instance a Participatory Budgeting process. +* When there are the results published for a given process. +* When an assembly has a important point for discussion. +* When there's a new voting planned. +* When there's a new conference published + +To create a new newsletter, as an administrator you need to: + +. Go to newsletter menu +. Click in the button "New newsletter" +. Select the template that you want to use +. Fill the form with the newsletter contents +. Preview the newsletter +. Select recipients to deliver +. Deliver the newsletter + +== 1. Go to newsletter menu + +It's on the main sidebar of the admin panel. + +image::newsletter_menu.png[Newsletter admin menu] + +== 2. Click in the button "New newsletter" + +In this page you'll have a list of all the sent newsletters, along with the status +(if it was sent already or not) and how many participants have received it. + +image::newsletter_list.png[Newsletter list] + +In the secondary sidebar or in the top of the list you have the button for "New +newsletter". + +== 3. Select template of new newsletter + +Depending on what you want to sent, if it's just a quick update or if it's something +a little more elaborated (with an image and a button), then you can choose for +which kind of template you want to use: + +* Basic (only text) +* Text, image and Call to Action button + +image::newsletter_templates.png[Newsletter new templates selection] + +== 2. Fill the form with the newsletter contents + +Depending in which template you've choosen, you have two different forms for +filling: + +=== Basic (only text) newsletter form + +image::newsletter_new_basic.png[Newsletter new template basic form] + +image::newsletter_new_basic_example.png[Newsletter new template basic form filled] + +[NOTE] +==== +You can use "%\{name}" anywhere in the body or subject and it will be +replaced by the recipient's name. +==== + + +.New Newsletter "basic (only text)" form +|=== +|Field |Type |Description + +|Subject +|Required +|Subject of the email. + +|Body +| +|Body of the email. +|=== + +=== Text, image and Call to Action button newsletter form + +image::newsletter_new_cta01.png[Newsletter new template text, image and CTA form 1] + +image::newsletter_new_cta02.png[Newsletter new template text, image and CTA form 2] + + +.New Newsletter "Image, text and Call To Action button" form +|=== +|Field |Type |Description + +|Subject +|Required +|Subject of the email. + +|Introduction +| +|Body of the email. + +|Call To Action button text +| +|What will the button say. For instance, it could be "Participate" + +|Call To Action button URL +| +|Where will the button link to. For instance, it could be the complete URL of a participatory process. + +|Body +| +|Body of the email. + +|Main image +| +|Guidance for image: Preferrably a landscape image that does not have any text. The service crops the image. Allowed file extensions: jpg jpeg gif png bmp ico +|=== + +== 3. Preview the newsletter + +After you've filled the contents of the newsletter, you can preview it. Until you've +sent it you can go back and edit it anytime you want. + +image::newsletter_preview_basic_example.png[Newsletter new template basic form preview] + +== 4. Select recipients to deliver + +If you want to only communicate about a given space, one useful way of doing this +is through the "Select recipients to deliver". Here you can choose between: + +* Sending the newsletter to all confirmed users +* Sending the newsletter to all confirmed users that have participated in any of +the selected participatory spaces in the list +* Sending the newsletter to all confirmed users that have followed any of +the selected participatory spaces in the list +* Sending the newsletter to all the participants that have selected an scope in +their "My interests" settings in their account. + +It's important to note that even if a participant has confirmed its account and +is following the space, the system will not send her a newsletter email if she +haven't activated the "I want to receive newsletters". + +image::newsletter_select_recipients.png[Newsletter select recipients] + +If you select the "Sent do participants" or "Send to followers" of a given space, +then you can choose which spaces are relevant: + +image::newsletter_select_recipients_spaces.png[Newsletter select recipients spaces] + +== 5. Deliver the newsletter + +Finally if you click in the "Deliver newsletter" button, the newsletter will be +sent to all the selected recipients. + +[NOTE] +==== +Once a newsletter was sent it can't be undone nor edited. If you have multiple +languages active, be careful with reviewing all the languages well before sending. +==== \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/pages.adoc b/docs/pt/modules/admin/pages/pages.adoc new file mode 100644 index 0000000000..70e77220cd --- /dev/null +++ b/docs/pt/modules/admin/pages/pages.adoc @@ -0,0 +1,125 @@ += Pages + +You can configure static Pages, which contains general information to the participants of the platform. + +As an example, some of these pages could refer to: + +* What's this platform? Who's the organization? +* How can I participate here? +* How can I create and verify my account? +* What are the terms of conditions and the legal information about this platform? + +These pages will be available to all the participants through the **Help** top menu section and also at the footer sections. You can define **Topics** to categorize all of these pages. + +As the platform enables the Participants to sign up (register) and save some of their personal data, it's important that there's an especial page, called **Terms and Conditions**. This is where you need to put your legal terms, for instance which entity has control of this data, how much time does this data will be saved, etc. This should be (ideally) written and (at least) reviewed by a lawyer. + +== Create a new page + +For creating a new page, you need to: + +. Sign in as admin +. Click in Pages in the sidebar menu +. Click in "Create page" + +image::pages_backend_form.png[Backend: new page form] + + +.New page form +|=== +|Field |Type |Description + +|Title +|Required +|Title of this page. For instance: "How to participate?" + +|URL Slug +|Required +|String that will be used on the URL. Use partial paths, not full URLs here. Accepts letters, numbers, dashes and slashes, and must start with a letter. For instance if the slug is "hello-world" and your domain is "https://example.org", your page will be at "https://example.org/hello-world" + +|Content +|Required +|All the text of the page. + +|Topic +|Optional +|In which Topic it'll be in. + +|Weight +|Optional +|Which order will it have in relation with the other pages. Having a lower number means a higher priority. For instance, if you have two pages, "Page a" with weight "10" and "Page b" with weight "0", then "Page b" will be first when ordering. + +|Show in the footer +|Optional +|Wether you want to show this page in the general footer (available in every page). +|=== + +image::pages_frontend_footer.png[Frontend: example of a page in the footer] + +== Create a new topic + +For creating a new topic, you need to: + +. Sign in as admin +. Click in Pages in the sidebar menu +. Click in "Create topic" + +image::pages_backend_topic_form.png[Backend: new topic form] + + +.New topic form +|=== +|Field |Type |Description + +|Title +|Required +|Title of this topic. For instance: "Help" + +|Description +|Optional +|What's this topic is about. + +|Weight +|Optional +|Which order will it have in relation with the other topics. Having a lower number means a higher priority. For instance, if you have two topics, "Topic a" with weight "10" and "Topic b" with weight "0", then "Topic b" will be first when ordering. + +|Show in the footer +|Optional +|Wether you want to show this topic in the general footer (available in every page). +|=== + +== Special "Terms and Conditions" page + +This is where you need to put your legal terms, for instance which entity has control of this data, how much time does this data will be saved, etc. This should be (ideally) written and (at least) reviewed by a lawyer. + +It's generated by default in a new installation. It can't be deleted, and it has a few special details related with its legal nature: + +. It's shown in the text area sign up form +. If there are meaningful changes, it has a field that can allow an admin when it's necessary that the participants accept the "Terms and Conditions" again, in the next sign in. + +image::pages_backend_tos_change.png[Backend: ToS change] + +image::pages_frontend_tos_change.png[Frontend: ToS change] + +If a participant rejects to accept the terms, then she has three options: + +. To review this again later. It signs her out automatically. +. To download their personal data +. To delete her account + +image::pages_frontend_tos_reject.png[Frontend: ToS reject] + +== Examples + +=== Pages + +image::pages_frontend_show.png[Frontend: show a page] + +image::pages_backend_edit.png[Backend: edit a page] + +image::pages_backend_list.png[Backend: list pages] + +=== Topics + +image::pages_frontend_list_topics.png[Frontend: list topics of pages] + +image::pages_backend_list_topics.png[Backend: list topics of pages] \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/participants.adoc b/docs/pt/modules/admin/pages/participants.adoc new file mode 100644 index 0000000000..a7efde5673 --- /dev/null +++ b/docs/pt/modules/admin/pages/participants.adoc @@ -0,0 +1,29 @@ += Participants + +Sometimes as an administrator you'll need to make certain tasks with participants, among them: + +* To give permissions to other administrators so they can manage platform's content +* To verify user groups (organizations or collectives) +* To verify participants +* To recognize that a participant has a special status in the platform, with Officializations +* To authenticate that a person has the right to vote, with Authorizations +* To contact a participant + +You can access this section on the main sidebar of the admin panel. + +image:participants_menu.png[Participants menu] + +Once you're in you can see all the different kind of participants and actions that you can do: + +image:participants_sidebar_menu.png[Participants sidebar menu] + +* xref:admin:participants/admins.adoc[Admins] +* xref:admin:participants/groups.adoc[Groups] +* xref:admin:participants/participants.adoc[Participants] +* xref:admin:participants/impersonations.adoc[Impersonations] +** xref:admin:participants/verifications_conflicts.adoc[Verifications conflicts] +* xref:admin:participants/reported_users.adoc[Reported users] +* xref:admin:participants/authorizations.adoc[Authorizations] +** xref:admin:participants/authorizations/identity_documents.adoc[Identity documents] +** xref:admin:participants/authorizations/code_postal_letter.adoc[Code by postal letter] +** xref:admin:participants/authorizations/census.adoc[Organization's census] \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/participants/admins.adoc b/docs/pt/modules/admin/pages/participants/admins.adoc new file mode 100644 index 0000000000..f88bcff92b --- /dev/null +++ b/docs/pt/modules/admin/pages/participants/admins.adoc @@ -0,0 +1,21 @@ += Admins + +In the administrator listing page you can see all the administrators of the platform: + +image:admins.png[Admins list] + +Here you can: + +* invite new administrators +* revoke administrators permissions +* see when was the last time an administrator logged in + +For inviting a new administrator, you need to go to the button "New user" and fill +the form with the admin username, email and which role will she have: + +* Admin: to give full access to the platform +* Participant manager: to give permission to only do xref:admin:participants/impersonations.adoc[Impersonations] + +image:admins_invite.png[Invite participant as administrator form] + +You can invite an already registered or a non registered participant. \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/participants/authorizations.adoc b/docs/pt/modules/admin/pages/participants/authorizations.adoc new file mode 100644 index 0000000000..3937fffc92 --- /dev/null +++ b/docs/pt/modules/admin/pages/participants/authorizations.adoc @@ -0,0 +1,40 @@ += Authorizations + +This section allows you to manage participants' authorizations. It depends on which Authorizations you have configured and +enabled by your developers. To understand more what are authorizations and how to configure them, please refer to the +xref:customize:authorizations.adoc[Authorizations section in the Customize Guide]. + +With authorizations an administrator can define different permissions so participants can make some actions in a component. +For instance you can configure that only participants who have verified herselves by their identity documents can vote on +proposals in a participatory process. + +A participant can see which authorizations does she have available in her account settings. + +image:authorizations_account.png[Authorizations in participants account] + +== Authorizations revocation + +A default Decidim installation will not have verified participants. + +image:authorizations_admin_default.png[Authorizations in a default installation] + +In the moment that there are some participants verified, an administrator can revoke all the authorizations, as the attributes +that give permissions to those participants could be changed in time and the platform didn't receive these changes in the +participants statuses. For instance, an identity document of a participant could be expired, or if a participant have been +authorized by the "code by postal letter", that participant could move in the meantime. + +image:authorizations_admin_revocation.png[Authorizations revocation] + +It's possible to revoke all the authorizations with "Revoke all", or to only revoke authorizations before a given date. +Another possiblity is to revoke only the xref:admin:participants/impersonations.adoc[impersonated participants]. + +== Verification methods + +Some of the available authorizations by default are: + +* xref:admin:participants/authorizations/identity_documents.adoc[Identity documents] +* xref:admin:participants/authorizations/code_postal_letter.adoc[Code by postal letter] +* xref:admin:participants/authorizations/census.adoc[Organization's census] + +If any of these authorizations are not useful for your needs, talk with your implementer to see other alternatives. Learn +more about xref:customize:authorizations.adoc[Authorizations in the Customize Guide section]. \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/participants/authorizations/census.adoc b/docs/pt/modules/admin/pages/participants/authorizations/census.adoc new file mode 100644 index 0000000000..b7e2cfbb9d --- /dev/null +++ b/docs/pt/modules/admin/pages/participants/authorizations/census.adoc @@ -0,0 +1,34 @@ += Organization's census authorization + +The process is as follows: + +. Admins upload a CSV with the emails of the accepted participants +. Participants go to its accounts and requests to be verified +. Only participants with an email in that CSV file can get verified + +NOTE: is this too simple and you need more features related to CSV census imports? +Check all the CSV or file based authorizations in our https://decidim.org/modules/[Modules page]. + +== 1. An administrator uploads the CSV of the participants + +In the admin panel, the administrator can review the request by going to the "Organization's census" in the "Participants" section. + +image:authorizations_organization_census.png[Organization's census in admin panel] + +After the CSV is imported then the administrator can see how many participants where imported. She can also delete this +imported census. + +image:authorizations_organization_census_imported.png[Imported CSV] + +== 2. A participant requests to be verified + +By going to the authorization section in its profile, or by clicking on the action button if this permission is requested, +a participant can request to be verified. + +image:authorizations_organization_census_account.png[Organization's census in participant's accounts] + +== 3. The participant is verified (or not) + +After is verified, as with other verifications, she can see it in her account settings. + +image:authorizations_organization_census_verified.png[Verified by organization's census] \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/participants/authorizations/code_postal_letter.adoc b/docs/pt/modules/admin/pages/participants/authorizations/code_postal_letter.adoc new file mode 100644 index 0000000000..953c5c0eb0 --- /dev/null +++ b/docs/pt/modules/admin/pages/participants/authorizations/code_postal_letter.adoc @@ -0,0 +1,57 @@ += Code by postal letter authorization + +This authorization allows a participant to request for a verification code to be sent to its address, to confirm that she +lives or works in this place. She'll need to then fill the code in the platform. + +The process is: + +. Participants request a verification code to be sent to their address. +. An administrator sends the letter to their address with the verification code. +. An administrator marks the letter as sent. +. Once you mark the letter as sent, the participant will be able to introduce the code. +. If this code matchs, then she gets verified. + +== 1. A participant request the verification code + +By going to the authorization section in its profile, or by clicking on the action button if this permission is requested, +a participant can see the form for filling in her full address to request the verification code. + +image:authorizations_code_postal_letter_request.png[Code by postal letter request by participant] + +If she tries to edit it, she'll see this message: + +image:authorizations_code_postal_letter_edit.png[Edit the postal letter request] + +This is because the letter could be in the process of being sent. If this needs to be corrected, then the participant needs +to contact to the organization. + +== 2. An administrator review this request and sent the letter + +In the admin panel, the administrator can review the request by going to the "Code by postal letter" in the "Participants" section. + +image:authorizations_code_postal_letter_ongoing.png[Code by postal letter ongoing panel in admin] + +Here she can see the verification code and can send it to the participant by mail. After the code is sent she can mark it +as sent with the icon image:action_mark_as_sent.png[Mark as sent]. It'll also show when the letter was sent. + +== 3. A participant fills in the verification code + +After the participant has received the code, she can go to it's account settings and click in the "Code by postal letter" +verfication method. + +image:authorizations_code_postal_letter_verify.png[Code by postal letter ongoing in the participant account] + +Then she'll see the form for confirming the code. + +image:authorizations_code_postal_letter_confirm.png[Code by postal letter confirmation form] + +== 4. The verification code matches or not + +If the verification code matches, then the participant will see the message "Congratulations. You've been successfully verified". + +On the other hand, if the verification code doesn't match, then the participant will see the message "Your verification +code doesn't match ours. Please double-check the letter we sent to you." + +After is verified, as with other verifications, she can see it in her account settings. + +image:authorizations_code_postal_letter_verified.png[Verified by code by postal letter] \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/participants/authorizations/identity_documents.adoc b/docs/pt/modules/admin/pages/participants/authorizations/identity_documents.adoc new file mode 100644 index 0000000000..2502903d6a --- /dev/null +++ b/docs/pt/modules/admin/pages/participants/authorizations/identity_documents.adoc @@ -0,0 +1,141 @@ += Identity documents authorization + +This authorization allows a participant to upload its identity documents. These documents depend on the organization, +they could be a driver's license, a passport, a national identity card, a club membership card, etc. + +These documents will be reviewed by an administrator to accept or reject them. It's possible to do this process in two ways: Online or Offline. + +* Online: the participant will be asked to upload the documents, and the administrator will review these documents. +* Offline: the participant will be asked to fill in some data, and then she'll need to go to a presential place to show her documents face to face. + +== Configuration + +By clicking on the btn:[Config] button in this section, an administrator can configure the settings for this authorization. + +image:authorizations_id_document_configuration.png[ID document authorization configuration] + +NOTE: As you can see, this authorization is based in the original implementers reality, in this case in the Spanish identities document types. +For instance, we're giving as options for document types "DNI, NIE or Passport" or we're asking for "Document number (with letter)" +You can change this by xref:customize:code.adoc[code customizing or overriding] these things. We also accept xref:contribute:governance.adoc[Pull Request contributions] +so it's possible to configure this. + + +.ID Documents authorization configuration +|=== +|Field |Type |Description + +|Available methods +|Required +|At least one method must be selected. Options: Online and/or Offline. + +|Instructions for offline verification +|Required (if offline is selected) +|Directions that participants need to follow to verify their documents when offline verification is selected. For instance, +do they need to go to a specific place to show their documents? Is this place open some days of the week? Is it open +for certain hours? +|=== + +== Online + +The process is: + +. Participants fill in their document type and number and upload a copy of their document. +. An administrator fills in the information present in the uploaded image. +. The information should match whatever the user filled in. +. If the administrator can't clearly see the information or she can't get it verified, she can reject the request and +the user will be able to fix it. + +=== 1. A participant fill in the document information and upload a copy of her document + +By going to the authorization section in its profile, or by clicking on the action button if this permission is requested, +a participant can see the form for uploading a copy of her document. She also needs to fill in her document type and number. + +image:authorizations_id_document_online.png[ID document authorization online form] + +=== 2. An administrator review this document + +After this document is uploaded, an administrator can review it by going to the Identity documents section in the admin +panel. + +image:authorizations_id_document_online_pending.png[ID document authorization pending online verification] + +After clicking on the document, the administrator needs to see the image and fill in the document number. This needs to match +with the one provided by the participant. + +image:authorizations_id_document_online_confirm.png[ID document authorization online confirmation form] + +=== 3. The request is accepted or rejected + +There are two actions an admin can do: + +* Accept: the participant will be fully authorized. +* Reject: the participant will be prompted to amend her documents + +If the request is rejected then the participant can provide other pictures or document. + +image:authorizations_id_document_online_rejected.png[ID document authorization rejected online verification] + +== Offline + +The process is: + +. Participants fill in their document type and number. +. Participants follow the instructions provided to them. For instance, if they need to go to a specific place in a +specific time to show their documents. +. An administrator go to the "Offline verification" panel and fills in the information present in the physical documents. +. The information should match whatever the user filled in. +. If the administrator can't clearly see the information or she can't get it verified, she can reject the request and +the user will be able to fix it. + +For this authorization to work, an administrator need to first configure it in the admin panel with the instructions explaining +what the participant need to do to finish the verification process. + +image:authorizations_id_document_configuration_offline.png[ID document authorization configuration: offline instructions] + +=== 1. A participant fill in the document information and follow the instructions + +By going to the authorization section in its profile, or by clicking on the action button if this permission is requested, +a participant can see the form for filling in her document type and number. + +image:authorizations_id_document_offline_request.png[ID document authorization offline form] + +=== 2. An administrator review this request + +In the admin panel, the administrator can review the request by clicking in the "Offline verification" button. + +image:authorizations_id_document_offline_button.png[ID document authorization offline button in admin] + +Then she'll need to fill some data provided by the participant and by reviewing the document physically provided by her. + +image:authorizations_id_document_offline_confirm.png[ID document authorization offline confirmation form in admin] + + +.ID Documents authorization offline flow +|=== +|Field |Type |Description + +|Participant email +|Required +|Email of the registered participant + +|Type of the document +|Required +|Can be: DNI, NIE or Passport + +|Document number (with letter) +|Required +|Document number of the participant. For instance, "12345678Z" +|=== + +=== 3. The request is accepted or rejected + +In the cases where the verifications don't match (meaning that the email or the document number provided by the +participant and the ones filled by the administrators aren't the same), then the participant need to ammend it with her +user account. + +== Both + +It's also possible to enable both of these verifications methods. In this case, the participant will be asked to choose +which kind of verification she wants to do. + +image:authorizations_id_document_account_choose.png[Choose ID document verification kind] \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/participants/groups.adoc b/docs/pt/modules/admin/pages/participants/groups.adoc new file mode 100644 index 0000000000..3201f6fac9 --- /dev/null +++ b/docs/pt/modules/admin/pages/participants/groups.adoc @@ -0,0 +1,116 @@ += User Groups + +An user group is a group of participants. Depending in the installation and the context of the organization it could be disabled. This is enabled or disabled in the administration dashboard, in Settings -> Configuration -> Edit organization -> Enable groups. + +== Creation + +This action is done by **a participant**. She needs to go to their profile and in the sidebar there's a button that says "Create group": + +image:user_sidebar.png[User sidebar] + +When clicked it'll open the "New group form": + +image:user_group_new_form.png[New user group form] + + +.New group form +|=== +|Field |Type |Description + +|Name +|Required +|Name of your organization, association, collective, group, etc. + +|Nickname +|Required +|Nickname of your organization, association, collective, group, etc. Do not use spaces nor accents. 20 characters maximum. + +|Email +|Required +|Email of your organization, association, collective, group, etc. + +|Avatar +|Optional +|Guidance for image: Preferably a landscape image that does not have any text. The service crops the image. Maximum file size: 5MB. Allowed file extensions: jpg jpeg gif png bmp ico + +|About +|Optional +|Description of what's this group. + +|Document number +|Optional +|Used for verifications. Do not use dashes nor spaces. + +|Phone +|Optional +|Used for verifications. Do not use dashes nor spaces. +|=== + +== Membership + +After a group has been created, it's possible to invite participants to become members of the group. After a participant has accepted to be part of this group then she can become an admin. + +The actions that can be done by a participant in the user group are: + +* Edit group profile +* Manage members +* Manage admins +* Invite participant +* Leave group + +image:user_group_invite_participant.png[User groups: invite a participant] + +== Group verifications + +image:admin_user_group_verification.png[Admin panel: user group verifications] + +This action is done by **an administrator**. A group can be: +* Pending +* Verified +* Rejected + +This can be done with the buttons at the sidebar: + +image:admin_user_group_verification_actions.png[Admin panel: user group verifications actions] + +When a user group is pending it can be verified or rejected. Once is verified it can be rejected and once is rejected it can be verified. + +If you want to verify multiple user groups at the same time you can do so with the option "Verify via CSV": + +image:admin_user_group_verification_csv.png[Admin panel: user group verifications CSV] + +.... +Upload your CSV file. It must have the official emails of the groups in your organization in the first column of the file, without headers. Only groups that have confirmed their email and that have an email appearing in the CSV file will be validated. +.... + +After a group is verified this is publicly visible in their nickname in the platform and there's a message in its profile: "This group is publicly verified, its name has been verified to correspond with its real name". + +image:user_group_verified.png[User group: verified icon] + +== Actions + +As a verified user group, there's some options that your participant account can do in behalf of the group, such as: + +=== Create a Debate, Proposal or Meeting + +There's a dropdown in the form during the creation process: + +image:user_group_create_debate.png[User group: create a debate] + +=== Make a comment + +There's a dropdown in the form when making a comment: + +image:user_group_make_comment.png[User group: make a comment] + +=== Endorse + +When making an Endorse there's a modal window asking who do you want to make the endorse with: + +image:user_group_endorse.png[User group: endorse] + +=== Conversations + +You can also have Conversations as a group. This is in the group profile page: + +image:user_group_conversation.png[User group: conversations] \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/participants/impersonations.adoc b/docs/pt/modules/admin/pages/participants/impersonations.adoc new file mode 100644 index 0000000000..9cd1788be5 --- /dev/null +++ b/docs/pt/modules/admin/pages/participants/impersonations.adoc @@ -0,0 +1,42 @@ += Participants Impersonations + +For participants that don't have the knowledge or don't have an email for registering +an account, there's the Impersonation feature. + +This allows an 'Administrator' or 'Participant manager' to search through a +Verification system for an already existing participant and also to create a +participant without email. + +NOTE: At the code and the User Interface we say both *Impersonation* and *Managed +Participants*. It's the same thing. + +== Panel + +image::participants_impersonations.png[Admin's Impersonations panel] + +This is the panel where you can find all the participants: + +* by filtering by managed or not managed participants +* by searching by name + +After you've clicked in `Manage new participant` you'll go to the form to enter +the personal data to check against the verification: + +image::participants_impersonations_form.png[Admin's Impersonations form] + +NOTE: If you don't see the `Manage new participant` button, is because this feature +only works when you have a Verification of kind `direct` (also known +as `form authorizations`). See in your xref:admin:system.adoc[system panel] which +`Available authorizations` are enabled. You can learn more regarding how to program +your form authorization in https://github.com/decidim/decidim/blob/develop/decidim-verifications/README.md[decidim-verification README]. + +After this data is confirmed then there'll be a session for the participant for +30 minutes: + +image::participants_impersonations_user.png[Impersonated user session] + +Finally, it's also possible to Promote a participant, meaning that after a +participant has been managed, an administrator can add the email and send her +an Invitation: + +image::participants_impersonations_promotion.png[Admin's promotion Impersonations] \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/participants/participants.adoc b/docs/pt/modules/admin/pages/participants/participants.adoc new file mode 100644 index 0000000000..e76ab358b4 --- /dev/null +++ b/docs/pt/modules/admin/pages/participants/participants.adoc @@ -0,0 +1,90 @@ += Participants + +In this page an administrator can: + +* Block a participant, for instance because she's spamming or acting against the Terms of Service +* Contact a participant with Decidim private messages (Conversations) +* Officialize a participant +* See its email + +image:participants_participants.png[Participants list] + +== Actions + +image:participants_participants_actions.png[Participants actions] + +|=== +|Icon |Name |Definition + +|image:action_block.png[Block user] +|xref:_block_user[Block user] +|To block or moderate a participant. + +|image:action_show_email.png[Show email] +|xref:_show_email_address[Show email address] +|To show an email of a participant. + +|image:action_contact.png[Contact] +|xref:_contact[Contact] +|To contact a participant with Decidim private messages (Conversations) + +|image:action_officialize.png[Officialize] +|xref:_officialize[Officialize] +|To recognize that a participant has a special status in the platform + +|image:action_reofficialize.png[Reoffficialize] +|Reoffficialize +|To change an officialization. See xref:_officialize[Officialize] + +|image:action_unofficialize.png[Unofficialize] +|Unofficialize +|To revoke an officialization. See xref:_officialize[Officialize] +|=== + +=== Block user + +After clicking in this option you'll need to provide a justification why you're +blocking this participant: + +image:participants_block_user_justification.png[Justificate the blocked user action] + +Once a blocked participant tries to log-in she'll see an error message: + +image:participants_block_user_alert.png[Message shown to blocked user] + +After a participant was blocked its name is changed to "Blocked user". + +See more at xref:admin:participants/reported_users.adoc[Reported users] + +=== Show email address + +After clicking this option, the admin will see a modal. She'll have to click in +button "Show email address". + +image:participants_show_email.png[Modal in show email] +image:participants_showed_email.png[Modal after the email is shown] + +This action will be logged in the Admin actvity log. + +image:participants_showed_email_admin_log.png[Admin activity log for show email] + +=== Contact + +By clicking on this option, it will open the private messaging (Conversation) for +this participant. + +image:participants_conversation.png[Conversation with a participant]. + +=== Officialize + +This option is useful to recognize that a participant has a special status in the +platform. For instance, if someone is the City Mayor, a City Councillor or the +President of an Association in an organization context. + +After Officializing a participant you can: + +- Change the Officialization text with "Reofficialize" +- Revoke the Officialization status with "Unofficialize" + +image:participants_officialize.png[Officialize a participant] +image:participants_participants_actions_officialize.png[Officialize a participant] \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/participants/reported_users.adoc b/docs/pt/modules/admin/pages/participants/reported_users.adoc new file mode 100644 index 0000000000..6616b10c2b --- /dev/null +++ b/docs/pt/modules/admin/pages/participants/reported_users.adoc @@ -0,0 +1,33 @@ += Reported users + +There are cases where participants could go against the Terms of Service of the +platform, so it's useful to have the option for reporting and blocking users. You +can read more about how moderation and reporting contents work in xref:global_moderations.adoc[Global moderations]. + +A participant can be blocked from the xref:participants/participants.adoc[participants +section in the admin panel] or through this "Reported users" section. + +Anyone can propose a moderation in Decidim, through the "Flag" icon in the participant +profile. After a participant has clicked in this action she needs to provide a +reason why she's making this report: + +* Contains clickbait, advertising, scams or script bots. +* Contains racism, sexism, slurs, personal attacks, death threats, suicide requests +or any form of hate speech. +* Contains illegal activity, suicide threats, personal information, or something +else you think doesn't belong on Demo. +* Other (and add it) + +image:reported_participant_modal.png[Give reason for reporting a participant modal] +image:reported_participant_flag.png[Flag in sidebar profile] + +After clicking in this option you'll need to provide a justification why you're +blocking this participant: + +image:participants_block_user_justification.png[Justificate the blocked user action] + +Once a blocked participant tries to log-in she'll see an error message: + +image:participants_block_user_alert.png[Message shown to blocked user] + +After a participant was blocked its name is changed to "Blocked user". \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/participants/verifications_conflicts.adoc b/docs/pt/modules/admin/pages/participants/verifications_conflicts.adoc new file mode 100644 index 0000000000..1e14b977f6 --- /dev/null +++ b/docs/pt/modules/admin/pages/participants/verifications_conflicts.adoc @@ -0,0 +1,38 @@ += Verification's conflicts + +There are cases depending on which kind of verifications you've enabled that there could be verification's conflicts. + +For instance: + +. A participant get xref:admin:participants/impersonations.adoc[impersonated], and she doesn't provide an email +. Then she creates an account and tries to verify herself with the Census verification + +For security, we try to be extra cautious in these cases, and we want that an administrator reviews these verifications. +As you can see, this depends a lot on which kind of verifications you've enabled in your organization, so it's easy to say +that most of the time an organization will not see any conflicts in this panel. + +image:verifications_conflicts.png[Verification's conflicts panel] + +== Transfer user + +An administrator can review these conflicts by clicking in the Transfer user image:action_transfer_user.png[Transfer user] icon. + +Then she'll see the Transfer user form, where she can provide a reason for the transfer. + +image:verifications_conflicts_transfer_user.png[] + + +.Transfer user form +|=== +|Field |Type |Description + +|Reason +|Required +|Why you want to transfer the user + +|Email +|Required +|The email of the user to transfer +|=== + +After the user is transferred, both accounts (the original and the new one) will be merged. \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/scopes.adoc b/docs/pt/modules/admin/pages/scopes.adoc new file mode 100644 index 0000000000..e189ca92cb --- /dev/null +++ b/docs/pt/modules/admin/pages/scopes.adoc @@ -0,0 +1,105 @@ += Scopes + +Scopes are the set of territories or subjects that an Organization has. A scope may have child scopes. + +For instance, in the case of the city of Barcelona the scopes are its districts, and the children of a district are its neighborhoods. They can also have types, so it can be configured, for example, by thematic and also territorial scopes. + +Most of the components and spaces in Decidim allow you to configure Scopes in one way or another. There are mainly three ways of using Scopes: + +To configure Scope on the Decidim platform, go to menu:Settings[Scopes] in the admin sidebar menu. A list will appear with the existing scopes if there are any: + +image:scopes_list.png[Scopes list] + +If you need so, you need to first configure the Scope type. + +== Form + +image:scopes_types_new_form.png[New scope type form] + + +.Admin New Scope Type form +|=== +|Field |Type |Description + +|Singular +|Required +|Name of the scope type in singular. + +|Plural +|Required +|Name of the scope type in plural. +|=== + +image:scopes_new_form.png[New scope form] + + +.Admin New Scope Form +|=== +|Field |Type |Description + +|Name +|Required +|Name of the scope. + +|Code +|Required +|(Internal) name of the scope. + +|Scope type +|Required +|Which type of scope it's. +|=== + +== Actions + +You have 3 possible actions in this list after a Scope is created: + +|=== +|Icon |Name |Definition + +|image:action_browse.png[Browse icon] +|Browse +|See and configure the children scopes for this Scope. + +|image:action_edit.png[Edit icon] +|Edit +|Edit form for a Scope. It's the same form as "Create a new scope". + +|image:action_delete.png[Delete icon] +|Delete +|To delete this scope. +|=== + +== Features + +The main features related with scopes are: + +. Filtering +. User interests and Newsletters + +=== Filtering + +For filtering. Most of the spaces and components allows an administrator or a participant to associate them to a scope. This allows to filter by scopes when exploring them. + +image:scopes_filter_initiatives.png[Initiatives scopes filtering] + +image:scopes_filter_processes.png[Processes scopes filtering] + +Some examples: + +* With Accountability module, so it's possible to filter Results +* Assemblies and Processes can have Scopes. It's used for filtering multiple assemblies in the main listing page (/assemblies or /processes). These can be hidden by unchecking the "Enable participatory space filters" in the xref:admin:configuration.adoc[admin's configuration page]. +* Filtering in the sidebar is possible in Budgets Projects, Initiatives and Proposals. In some of these components you can control if these filters are shown with the "Scopes enabled" checkbox in the component settings. This will also enable or disable the scope selector in the resource creation form. + +You can also configure a participatory space so the filtering will only concern one scope and its children scopes. For example, let's imagine your organization have 3 different scopes for 3 cities, each of them having children scopes for the cities neighbourhoods. +On a participatory space which concerns only one of the cities, you will be able to select only this scope and its children so that users do not see the scopes of other cities in the filter options. + +=== User interests and Newsletters + +A Participant can choose which Scopes she wants to follow in its account. + +image:account_my_interests.png[Account: my interests] + +This is used by the xref:admin:newsletters.adoc[Newsletters], in the "Select recipients to deliver" step, "Filter for users having activated any selected scope in their account's My Interests settings." section. + +image:newsletter_select_recipients.png[Newsletter: select recipients] \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/spaces.adoc b/docs/pt/modules/admin/pages/spaces.adoc new file mode 100644 index 0000000000..6e3fcfab76 --- /dev/null +++ b/docs/pt/modules/admin/pages/spaces.adoc @@ -0,0 +1,12 @@ += Spaces + +The participatory spaces are the channels that citizens can participate through when public decisions are being taken. By default +the platform is provided with participatory processes, initiatives, consultations, conferences, votings and assemblies, but +any organization can develop its own mechanisms through xref:develop:modules.adoc[Modules]. + +They are accessible through the main sidebar in the administration panel, and also through the main navigation menu in the +public interface. + +image:spaces_admin.png[Spaces in admin sidebar] + +image:spaces_visitor.png[Spaces visible in the public interface] \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/spaces/assemblies.adoc b/docs/pt/modules/admin/pages/spaces/assemblies.adoc new file mode 100644 index 0000000000..82c7e1d8a0 --- /dev/null +++ b/docs/pt/modules/admin/pages/spaces/assemblies.adoc @@ -0,0 +1,308 @@ += Assemblies + +An assembly is a group of members of an organization who meet periodically to make decisions about a specific area or +scope of the organization. + +Assemblies hold meetings, some are private and some are open. If they are open, it is possible to participate in them +(for example: attending if the capacity allows it, adding points to the agenda, or commenting on the proposals and decisions taken by this organ). + +Examples: A general assembly (which meets once a year to define the organisation's main lines of action as well as its +executive bodies by vote), an equality advisory council (which meets every two months to make proposals on how to improve +gender relations in the organisation), an evaluation commission (which meets every month to monitor a process) or a guarantee +body (which collects incidents, abuses or proposals to improve decision-making procedures) are all examples of assemblies. + +The main difference between xref:admin:spaces/processes.adoc[participatory processes] and assemblies is that assemblies don't +have phases, meaning that they don't have timelines. + +You can see a real world usage of assemblies in https://www.decidim.barcelona/assemblies[Decidim Barcelona], where you +can see the different Participation Organs, that are the regular spaces where the City Council meets with citizens and organizations +to get feedback. + +In this section, we'll explain how we can configure an Assembly in Decidim. + +== List + +To configure assemblies on the Decidim platform, click on btn:[Assemblies] in the admin sidebar menu. A list +will appear with the existing assemblies if there are any: + +image:assemblies_list.png[Assemblies list] + +You can filter by the ones that are: + +* Published / Unpublished +* Public / Private + +image:assemblies_list_filter.png[Assemblies list filtered] + +You can also search by title and control how many elements are in the list. + +You have 4 possible actions in this list after an Assembly is created: + +. Export: send by email the configuration for a given assembly. Can be imported in other Decidim installation. +. Duplicate: to duplicate this assembly. +. Configure: to edit the metadata and configuration for a assembly. +. Assemblies: to manage all the children assemblies for a assembly. +. Preview: how it will look once published. + +== New assembly form + +image:assemblies_new_form.png[New assembly form] + + +.New assembly form: General information +|=== +|Field |Type |Description + +|Title +|Required +|Title of the assembly. For instance, "General Committee". + +|Subtitle +|Required +|Subtitle. For instance, "Let's decide our priorities together" + +|Order position +|Required +|Which order will it have in relation with the other assemblies. Having a lower number means a higher priority. For instance, +if you have two assemblies, "Assembly a" with weight "10" and "Assembly b" with weight "0", then "Assembly b" will be first when ordering. + +|URL slug +|Required +|URL slugs are used to generate the URLs that point to this assembly. Only accepts letters, numbers and dashes, and must +start with a letter. Example: if your domain is 'example.org' and your slug 'general-committee' then your URL will +be https://example.org/assemblies/general-committee + +|Hashtag +|Optional +|Hashtag for Twitter + +|Short description +|Required +|A short explanation of what's your participatory process about. + +|Description +|Required +|A long explanation of what's your assembly about. + +|Purpose of action +|Optional +|Internal field that doesn't get shown publicly. To be removed in a future version. + +|Composition +|Optional +|Internal field that doesn't get shown publicly. To be removed in a future version. + +|Internal organisation +|Optional +|Internal field that doesn't get shown publicly. To be removed in a future version. + +|Announcement +|Optional +|The text you enter here will be shown to the user right below the assembly information. +|=== + + +.New assembly form: Duration +|=== +|Field |Type |Description + +|Date created +|Optional +|Information that's displayed in the assembly metadata sidebar. Expected format: dd/mm/yyyy + +|Included at +|Optional +|Information that's displayed in the assembly metadata sidebar. The date when this assembly was added to Decidim. It does +not necessarily have to be the same as the creation date. Expected format: dd/mm/yyyy + +|Duration +|Optional +|Information that's displayed in the assembly metadata sidebar. If the duration of this assembly is limited, select the +end date. Otherwise, it will appear as indefinite. Expected format: dd/mm/yyyy + +|Closing date +|Optional +|Information that's displayed in the assembly metadata sidebar. When this assembly closed. Expected format: dd/mm/yyyy + +|Closing date reason +|Optional +|Information that's displayed in the assembly metadata sidebar. Why this assembly closed. +|=== + + +.New assembly form: Images +|=== +|Field |Type |Description + +|Home image +|Optional +|Image that will be used in presentation cards of this assembly. Guidance for file: Has to be an image or a document. +For images, use preferably landscape images that does not have any text, the service crops the image. Maximum file size: 10MB +Allowed file extensions: jpeg jpg png + +|Banner image +|Optional +|Image that will be used inside of the assembly. Guidance for file: Has to be an image or a document. +For images, use preferably landscape images that does not have any text, the service crops the image. Maximum file size: 10MB +Allowed file extensions: jpeg jpg png +|=== + + +.New assembly form: Filters +|=== +|Field |Type |Description + +|Scopes enabled +|Optional +|Check if you want to have Scopes filtering in this assembly. + +|Scope +|Optional +|Which xref:admin:scopes.adoc[Scope] does this assembly belongs to. + +|Area +|Optional +|Which xref:admin:areas.adoc[Area] does this assembly belongs to. +|=== + + +.New assembly form: Metadata +|=== +|Field |Type |Description + +|What is decided +|Optional +|Information that's displayed in the assembly metadata sidebar. + +|How is it decided +|Optional +|Information that's displayed in the assembly metadata sidebar. + +|Scope metadata +|Optional +|Information that's displayed in the assembly metadata sidebar. + +|Promoter group +|Optional +|Information that's displayed in the assembly metadata sidebar. + +|Organization area +|Optional +|Information that's displayed in the assembly metadata sidebar. + +|Who participates +|Optional +|Information that's displayed in the assembly metadata sidebar. +|=== + + +.New assembly form: Visibility +|=== +|Field |Type |Description + +|Parent assembly +|Optional +|What is the assembly that this assembly belongs to. For instance in Metadecidim, the https://meta.decidim.org/assemblies/coordination-committee[Coordination Committee] +has the parent assembly of the https://meta.decidim.org/assemblies/general-assembly-association[General%20Assembly%20of%20the%20Decidim%20Association]. + +|Highlighted +|Optional +|Check if you want the assembly to have more visibility in the Assemblies public list. It'll also be visible in the +Assembly Content Block in the xref:admin:homepage.adoc[Homepage] configuration. + +|Private space +|Optional +|Check if this assembly should only be accessible by xref:admin:spaces/assemblies/private_participants.adoc[Private Participants] + +|Is transparent +|Optional +|Check if this assembly is private but should be visible to all the rest of participants. This means that other participants +or visitors will see it but they won't be able to interact with it. +|=== + + +.New assembly form: Other +|=== +|Field |Type |Description + +|Created by +|Optional +|Choose one of "City Council", "Public" or "Other". If it's Other, you can specify the name of the organization that created +this assembly. + +|Assembly type +|Optional +|Which xref:_assemblies_types[assembly type] is this assembly. + +|Related processes +|Optional +|Select other participatory processes that are related to this assembly. + +|Social +|Optional +|Which social networks profile does this assembly has. Can be Twitter, Facebook, Instagram, YouTube and/or GitHub. It's +displayed in the assembly metadata sidebar. + +|Show statistics +|Optional +|Check if you want to show the Statistics section. +|=== + +After you've initially created your assembly you have a submenu where you need to keep configuring more information +about your assembly. + +image:assembly_submenu.png[Assembly submenu in admin] + +Here you can keep configuring your process: + +. Info: the same form that we explained in this page. +. xref:admin:spaces/assemblies/components.adoc[Components] +. xref:admin:spaces/assemblies/categories.adoc[Categories] +. xref:admin:spaces/assemblies/attachments.adoc[Attachments] +. xref:admin:spaces/assemblies/members.adoc[Members] +. xref:admin:spaces/assemblies/admins.adoc[Assembly admins] +. xref:admin:spaces/assemblies/private_participants.adoc[Private participants] +. xref:admin:spaces/assemblies/moderations.adoc[Moderations] + +== Assemblies types + +For clasyfing the assemblies in different kinds, you can define Assembly types. These types can be filtered in the public +assemblies page. + +image:assemblies_type_filters.png[Filter by assembly type] + +image:assemblies_new_type_form.png[New assembly type form] + + +.New assembly type form +|=== +|Field |Type |Description + +|Title +|Required +|Title of the this assembly type. For instance, "Consultative". +|=== + +== Settings + +At the moment there's only a setting for configuring the general behaviour of assemblies. + +image:assemblies_settings.png[Assemblies settings] + + +.Settings for assemblies form +|=== +|Field |Type |Description + +|Enable organization chart +|Checkbox +|Whether you want to show the organization chart in the assemblies list. +|=== + +The organization chart is shown in the bottotm of the assemblies page. + +image:assemblies_organization_chart.png[Assemblies organization chart] + +It allows a navigation in the assemblies tree, with the possibility to see the sub-assemblies that belongs to a parent assembly. + +image:assemblies_organization_chart_filtered.png[Assemblies organization chart filtered] \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/spaces/assemblies/admins.adoc b/docs/pt/modules/admin/pages/spaces/assemblies/admins.adoc new file mode 100644 index 0000000000..59313271ef --- /dev/null +++ b/docs/pt/modules/admin/pages/spaces/assemblies/admins.adoc @@ -0,0 +1 @@ +include::partial$page_admins.adoc[] \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/spaces/assemblies/attachments.adoc b/docs/pt/modules/admin/pages/spaces/assemblies/attachments.adoc new file mode 100644 index 0000000000..493f7dc8c8 --- /dev/null +++ b/docs/pt/modules/admin/pages/spaces/assemblies/attachments.adoc @@ -0,0 +1 @@ +include::partial$page_attachments.adoc[] \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/spaces/assemblies/categories.adoc b/docs/pt/modules/admin/pages/spaces/assemblies/categories.adoc new file mode 100644 index 0000000000..3ee4fc09cc --- /dev/null +++ b/docs/pt/modules/admin/pages/spaces/assemblies/categories.adoc @@ -0,0 +1 @@ +include::partial$page_categories.adoc[] \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/spaces/assemblies/components.adoc b/docs/pt/modules/admin/pages/spaces/assemblies/components.adoc new file mode 100644 index 0000000000..7a204dda0b --- /dev/null +++ b/docs/pt/modules/admin/pages/spaces/assemblies/components.adoc @@ -0,0 +1 @@ +include::partial$page_components.adoc[] \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/spaces/assemblies/members.adoc b/docs/pt/modules/admin/pages/spaces/assemblies/members.adoc new file mode 100644 index 0000000000..64a7159a8f --- /dev/null +++ b/docs/pt/modules/admin/pages/spaces/assemblies/members.adoc @@ -0,0 +1,72 @@ += Assembly members + +Assembly members allow showing all the people or groups that belong to a given assembly. It's useful for being transparent. + +You can see an example in https://meta.decidim.org/assemblies/coordination-committee/members[Decidim Coordination Commitee Assembly in Metadecidim]. + +image:assembly_members.png[Assembly members of the Coordination Committee] + +== New assembly member form + +image:assembly_members_list.png[Assembly members admin list] + +For creating a new phase of a participatory process: + +. Sign in as administrator +. Go to the assemblies section in the sidebar +. Click on the assembly Edit action +. Click on the Members link in the sidebar +. Click on the "New member" button +. Fill the form + +image:assembly_members_new_form.png[Assembly members new form] + + +.New assembly member form +|=== +|Field |Type |Description + +|Participant type +|Required +|Wheter this assembly member is non-participant or existing participant. Does she already have an account created on the platform? + +|Full name +|Required if it's non-participant. +| + +|User or group +|Required if it's an existing participant. +|Type at least three characters to search. + +|Position +|Required +|Choose one of President, Vice president, Secretary, or Other. In case it's other, you can fill in the position title. + +|Weight +|Optional +|Which order will it have in relation to the other members. Having a lower number means a higher priority. For instance, if you have two members, "Member a" with weight "10" and "Member b" with weight "0", then "Member b" will be first when ordering. + +|Designation date +|Required +|When was this person or group assigned as a member of this assembly. Expected format: dd/mm/yyyy + +|Designation mode +|Optional +|How was this person designed. + +|Ceased date +|Optional +|When was this person or group ceased to be a member of this assembly. Expected format: dd/mm/yyyy + +|Gender +|Optional +|Which gender does this person most identify with. + +|Birthday +|Optional +|When was this person born. Expected format: dd/mm/yyyy + +|Birthplace +|Optional +|Where was this person born. +|=== \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/spaces/assemblies/moderations.adoc b/docs/pt/modules/admin/pages/spaces/assemblies/moderations.adoc new file mode 100644 index 0000000000..12d6ac0858 --- /dev/null +++ b/docs/pt/modules/admin/pages/spaces/assemblies/moderations.adoc @@ -0,0 +1 @@ +include::partial$page_moderations.adoc[] \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/spaces/assemblies/private_participants.adoc b/docs/pt/modules/admin/pages/spaces/assemblies/private_participants.adoc new file mode 100644 index 0000000000..16c939dfa3 --- /dev/null +++ b/docs/pt/modules/admin/pages/spaces/assemblies/private_participants.adoc @@ -0,0 +1 @@ +include::partial$page_private_participants.adoc[] \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/spaces/conferences.adoc b/docs/pt/modules/admin/pages/spaces/conferences.adoc new file mode 100644 index 0000000000..405be42fa8 --- /dev/null +++ b/docs/pt/modules/admin/pages/spaces/conferences.adoc @@ -0,0 +1,169 @@ += Conferences + +A conference is a collection of meetings arranged in a program, with a number of people invited as speakers, and other +information fields typical of large congresses or social events (registration, list of organizations that support or sponsor the +event, etc.). A conference can be a relevant event for an organization and its members, or take place as part of a participatory +process or follow a consultation. + +Examples: + +* A general assembly for an organization +* The annual meeting of a cooperative + +As a real world example you can see the anual Metadecidim conferences: + +image:spaces/conferences/example01.png[Decidim Fest 2020] + +* https://meta.decidim.org/conferences/decidimfest19[Decidim Fest 2019] +* https://meta.decidim.org/conferences/decidimfest2020[Decidim Fest 2020] +* https://meta.decidim.org/conferences/DecidimFest21[Decidim Fest 2021] + +== Create a new conference + +For adding a new conference, you need to: + +image:spaces/conferences/menu.png[Conferences menu] + +. Sign in as admin +. Go to admin panel +. In the main sidebar, click in the button "Conferences" +. Click in the button "Create a new conference" +. Configure the conference by filling the form + +image:spaces/conferences/new_conference.png[Create a new conference form] + + +.Create a new conference +|=== +|Field |Type |Description + +|Title +|Required +|What is the title of this conference. For instance "Decidim Fest 2021" + +|Slogan +|Required +|A subtitle for this conference. For instance, "Democracy, Technology and Global Justice" + +|URL slug +|Required +|URL slugs are used to generate the URLs that point to this conference. Only accepts letters, numbers, and dashes, and +must start with a letter. Example: if your domain is 'example.org' and your slug 'DecidimFest21' then your URL will be +https://example.org/conferences/DecidimFest21 + +|Hashtag +|Optional +|Hashtag for Twitter + +|Highlighted +|Optional +|Should this conference be more prominent than others? For instance, is this an ongoing or a conference that has happened years ago? + +|Short description +|Required +|A short explanation of what's your conference about. + +|Description +|Required +|A long explanation of what's your conference about. + +|Objectives +|Optional +|What are the objectives or goals for this conference? + +|Location +|Optional +|Where will this conference take place? + +|Home image +|Optional +|Preferrably a landscape image that does not have any text. The service crops +the image. Maximum file size: 10MB. Allowed file extensions: jpeg jpg png + +|Banner image +|Optional +|Preferrably a landscape image that does not have any text. The service crops +the image. Maximum file size: 10MB. Allowed file extensions: jpeg jpg png + +|Scopes enabled +|Optional +|Check if you want to have Scopes filtering in this conference + +|Scope +|Optional +|Which xref:admin:scopes.adoc[Scope] does this conference belongs to. + +|Show statistics +|Optional +|Check if you want to show the Statistics section. + +|Start date +|Required +|When will this conference start. Expected format: dd/mm/yyyy + +|End date +|Required +|When will this conference end. Expected format: dd/mm/yyyy + +|Registrations enabled +|Optional +|Check if you want to handle registrations on the platform. + +|Available slots +|Optional +|Leave it to 0 if you have unlimited slots available. + +|Registration terms +|Required if "Registrations enabled" is checked +|What are the terms of service or conditions that a participant must accept for registering in this conference? + +|Related participatory processes +|Optional +|Select the processes that are related to this conference. Use the *ctrl* function to select more than one option. + +|Related Assemblies +|Optional +|Select the assemblies that are related to this conference. Use the *ctrl* function to select more than one option. + +|Related Consultations +|Optional +|Select the consultations that are related to this conference. Use the *ctrl* function to select more than one option. +|=== + +== Creating the program + +For creating the program of the conference you need to create a new xref:components/meetings.adoc[Meeting component] with the +dates and times of the different talks, workshops, sessions, etc. After publishing the meetings, it will be visible in the landing page +and there'll be a special navigation for these meetings so they're ordered by date and time. + +image:spaces/conferences/program_frontend.png[Conferences program (frontend)] + +image:spaces/conferences/program_backend.png[Conferences program (backend)] + +Also if you they are "In person" meetings with a location then you'll have a list of the venues. + +image:spaces/conferences/program_venues_frontend.png[Conferences venues (frontend)] + +== Menu + +image:spaces/conferences/manage_conferences.png[Conferences list at admin panel] + +After you’ve initially created your conference you have a submenu where you need +to keep configuring more information about it. + +image:spaces/conferences/sidebar.png[Conferences sidebar] + +. Info: the same form that we explained in this page. +. xref:admin:spaces/conferences/components.adoc[Components] +. xref:admin:spaces/conferences/categories.adoc[Categories] +. xref:admin:spaces/conferences/attachments.adoc[Attachments] +. xref:admin:spaces/conferences/media_links.adoc[Media Links] +. xref:admin:spaces/conferences/partners.adoc[Partners] +. xref:admin:spaces/conferences/speakers.adoc[Speakers] +. xref:admin:spaces/conferences/registrations.adoc[Registrations] +.. xref:admin:spaces/conferences/registrations/types.adoc[Registration Types] +.. xref:admin:spaces/conferences/registrations/users.adoc[User Registrations] +.. xref:admin:spaces/conferences/registrations/invites.adoc[Invites] +.. xref:admin:spaces/conferences/registrations/certificates.adoc[Certificate of Attendance] +. xref:admin:spaces/conferences/admins.adoc[Conference admins] +. xref:admin:spaces/conferences/moderations.adoc[Moderations] \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/spaces/conferences/admins.adoc b/docs/pt/modules/admin/pages/spaces/conferences/admins.adoc new file mode 100644 index 0000000000..59313271ef --- /dev/null +++ b/docs/pt/modules/admin/pages/spaces/conferences/admins.adoc @@ -0,0 +1 @@ +include::partial$page_admins.adoc[] \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/spaces/conferences/attachments.adoc b/docs/pt/modules/admin/pages/spaces/conferences/attachments.adoc new file mode 100644 index 0000000000..d36f3e32d1 --- /dev/null +++ b/docs/pt/modules/admin/pages/spaces/conferences/attachments.adoc @@ -0,0 +1,81 @@ += Attachments + +Attachments allow an administrator to upload static files to a conference. + +When a conference is launched, it is important to provide citizens with as much information as possible about them so +that they can participate with knowledge. That is why it is helpful to add files (Attachments) with the information that +is considered relevant. + +Optionally, these documents can be grouped in *Folders*. + +They can be found on the Conference "Media and links" section: + +image:spaces/conferences/attachments.png[Conferences attachments (backend)] + +image:spaces/conferences/media_links_frontend.png[Conferences attachments (frontend)] + +Read more about this in xref:admin:spaces/conferences/media_links.adoc[Media links]. + +== Create a new attachment + +image:spaces/attachments_admin.png[View the attachments of a conference in the admin interface] + +For creating a new phase of a conference: + +. Sign in as administrator +. Go to the conference section in the sidebar +. Click on the conference Edit action +. Click on the Attachments link in the sidebar +. Click on the "New attachment" button + +image:spaces/attachments_new_form.png[Create a new attachment form] + + +.Create attachment +|=== +|Field |Type |Description + +|Attachment or image name +|Required +|What is the title for this attachment. + +|Weight +|Optional +|Which order will it have in relation to the other attachments. Having a lower number means a higher priority. For instance, if you have two categories, "Attachment a" with weight "10" and "Attachment b" with weight "0", then "Attachment b" will be first when ordering. + +|Description +|Required +|A long description explaining what this file is about. + +|Folder +|Optional +|Which folder this attachment belongs to. + +|File +|Required +|Upload the file. Guidance for file: Has to be an image or a document. For images, use preferrably landscape images, the +service crops the image. For CSV files, the separator between columns must be a comma (","). Maximum file size: 10MB. Allowed +file extensions depends in your server configuration. +|=== + +== Create a new folder + +image:spaces/attachments_new_folder_form.png[Create a new folder for attachments form] + + +.Create folder +|=== +|Field |Type |Description + +|Name +|Required +|Name of the folder + +|Weight +|Optional +|Which order will it have in relation to the other folders. Having a lower number means a higher priority. For instance, if you have two folders, "Folder a" with weight "10" and "Folder b" with weight "0", then "Folder b" will be first when ordering. + +|Description +|Required +|A long description explaining what this folder is about. +|=== \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/spaces/conferences/categories.adoc b/docs/pt/modules/admin/pages/spaces/conferences/categories.adoc new file mode 100644 index 0000000000..3ee4fc09cc --- /dev/null +++ b/docs/pt/modules/admin/pages/spaces/conferences/categories.adoc @@ -0,0 +1 @@ +include::partial$page_categories.adoc[] \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/spaces/conferences/components.adoc b/docs/pt/modules/admin/pages/spaces/conferences/components.adoc new file mode 100644 index 0000000000..7a204dda0b --- /dev/null +++ b/docs/pt/modules/admin/pages/spaces/conferences/components.adoc @@ -0,0 +1 @@ +include::partial$page_components.adoc[] \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/spaces/conferences/media_links.adoc b/docs/pt/modules/admin/pages/spaces/conferences/media_links.adoc new file mode 100644 index 0000000000..d39ad23e1d --- /dev/null +++ b/docs/pt/modules/admin/pages/spaces/conferences/media_links.adoc @@ -0,0 +1,45 @@ += Media links + +Conferences can have a section called "Media and links". It shows a list of media files and links that are associated to the conference. + +The media files are the files from the xref:admin:spaces/conferences/attachments.adoc[attachments] sections. +The media links are defined in a section in the admin panel of the conference. + +image:spaces/conferences/media_links_frontend.png[Conferences media links (frontend)] + +== Create a new media link + +image:spaces/conferences/media_links_backend.png[Conferences media links] + +For creating a new media link of a conference: + +. Sign in as administrator +. Go to the conferences section in the sidebar +. Click on the conference Edit action +. Click on the "Media links" link in the sidebar +. Click on the "New Media Link" button +. Fill the form + +image:spaces/conferences/new_media_link.png[Create a new conferences media link] + + +.New media link form +|=== +|Field |Type |Description + +|Title +|Required +|The title of the link + +|Link +|Required +|URL of the link + +|Date +|Required +|Published date of the link + +|Weight +|Optional +|Which order will it have in relation to the other links. Having a lower number means a higher priority. For instance, if you have two links, "Link a" with weight "10" and "Link b" with weight "0", then "Link b" will be first when ordering. +|=== \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/spaces/conferences/moderations.adoc b/docs/pt/modules/admin/pages/spaces/conferences/moderations.adoc new file mode 100644 index 0000000000..12d6ac0858 --- /dev/null +++ b/docs/pt/modules/admin/pages/spaces/conferences/moderations.adoc @@ -0,0 +1 @@ +include::partial$page_moderations.adoc[] \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/spaces/conferences/partners.adoc b/docs/pt/modules/admin/pages/spaces/conferences/partners.adoc new file mode 100644 index 0000000000..e9d5fd13d6 --- /dev/null +++ b/docs/pt/modules/admin/pages/spaces/conferences/partners.adoc @@ -0,0 +1,47 @@ += Partners + +The partners are the sponsors or supporters of a conference. They are listed on the Conference landing page. + +image:spaces/conferences/partners_frontend.png[Conferences partners (frontend)] + +== Create a new partner + +image:spaces/conferences/partners.png[Conferences partners] + +For creating a new partner of a conference: + +. Sign in as administrator +. Go to the conferences section in the sidebar +. Click on the conference Edit action +. Click on the Partners link in the sidebar +. Click on the "New partner" button +. Fill the form + +image:spaces/conferences/new_partner.png[Conferences partners form] + + +.New partner form +|=== +|Field |Type |Description + +|Name +|Required +|What is the name of this partner. + +|Partner type +|Required +|Choose one of these options: Main promotor or Collaborator + +|Weight +|Optional +|Which order will it have in relation to the other partners. Having a lower number means a higher priority. For instance, if you have two partners, "Partner a" with weight "10" and "Partner b" with weight "0", then "Partner b" will be first when ordering. + +|Link +| +| + +|Logo +|Required +|Guidance for image: Preferably a landscape image that does not have any text. The service crops the image. Maximum file size: 5MB +Allowed file extensions: jpg jpeg gif png bmp ico +|=== \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/spaces/conferences/registrations.adoc b/docs/pt/modules/admin/pages/spaces/conferences/registrations.adoc new file mode 100644 index 0000000000..0aa2935425 --- /dev/null +++ b/docs/pt/modules/admin/pages/spaces/conferences/registrations.adoc @@ -0,0 +1,12 @@ += Registrations + +As an administrator of a conference you can manage the registrations for the conference from the platform. + +For doing so, you have these admin sections: + +. xref:admin:spaces/conferences/registrations/types.adoc[**Registrations Types**] allows you to define which ways of registering participants +will have. For instance if there are a number of prices depending if the attendees are students or workers. +. xref:admin:spaces/conferences/registrations/users.adoc[**User Registrations**] allows you to confirm the requests for attending the conference. +. xref:admin:spaces/conferences/registrations/invites.adoc[**Invites**] allows you to invite participants to the conference. +. xref:admin:spaces/conferences/registrations/certificates.adoc[**Certificates of Attendance**] allows you to configure and send certificates +of attendance in PDF format to people that has gone to the conference. \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/spaces/conferences/registrations/certificates.adoc b/docs/pt/modules/admin/pages/spaces/conferences/registrations/certificates.adoc new file mode 100644 index 0000000000..2e526c32a2 --- /dev/null +++ b/docs/pt/modules/admin/pages/spaces/conferences/registrations/certificates.adoc @@ -0,0 +1,39 @@ += Certificates of Attendance + +Administrators can create Certificates of Attendance to participants. + +image:spaces/conferences/certificates_of_attendance.png[Conferences Certificate of Attendance (backend)] + + +.Certificate of Attendance form +|=== +|Field |Type |Description + +|Main logo +|Required +|Logo of the conference of the organization that makes the certificate of attendance. + +|Signature +|Required +|Image of the person that signs the certificate. + +|Sign date +|Required +|Date of the signature. Expected format: dd/mm/yyyy + +|Signature name +|Required +|Name of the person that signs the certificate. +|=== + +After the form is filled then there's a button to "Send certificates of attendance" to all the confirmed xref:admin:spaces/conferences/registrations/users.adoc[registrations] of the conference. + +image:spaces/conferences/certificates_of_attendance_button.png[Conferences Certificate of Attendance send button] + +Once it's sent it can't be resent. + +image:spaces/conferences/certificates_of_attendance_button_disabled.png[Conferences Certificate of Attendance send disabled button] + +The certificates of attendance are sent to the participants by email in PDF format. + +image:spaces/conferences/certificates_of_attendance_pdf.png[Conferences Certificate of Attendance (frontend)] \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/spaces/conferences/registrations/invites.adoc b/docs/pt/modules/admin/pages/spaces/conferences/registrations/invites.adoc new file mode 100644 index 0000000000..bd02c5da95 --- /dev/null +++ b/docs/pt/modules/admin/pages/spaces/conferences/registrations/invites.adoc @@ -0,0 +1,38 @@ += Invites + +Administrators can invite participants to join the conference. + +image:spaces/conferences/invites.png[Conferences user invites (backend)] + +== Flow + +. An administrator sends an invitation to join the conference to a non-existing or existing participant +. The participant accepts the invitation + +image:spaces/conferences/invite_participant_form.png[Invite a participant form] + + +.Invite participant form +|=== +|Field |Type |Description + +|Attendee type +|Required +|Wheter this invited person is a non-existing or existing participant. Does she already have an account created on the platform? + +|Name +|Required if it's a non-existing participant. +|Name of the invited person. + +|Email +|Required if it's a non-existing participant. +|Email of the invited person. + +|User +|Required if it's an existing participant. +|Type at least three characters to search. + +|xref:admin:spaces/conferences/registrations/types.adoc[Registration type] +|Required +|What xref:admin:spaces/conferences/registrations/types.adoc[registration type] does this participant will have. +|=== \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/spaces/conferences/registrations/types.adoc b/docs/pt/modules/admin/pages/spaces/conferences/registrations/types.adoc new file mode 100644 index 0000000000..1625887826 --- /dev/null +++ b/docs/pt/modules/admin/pages/spaces/conferences/registrations/types.adoc @@ -0,0 +1,56 @@ += Registration types + +You can enable registrations in conferences, so it's easier to register to the whole conference, or by days, rather than +going meeting by meeting to enable registration for that particular event. + +After enabling registrations participants will have a button to register to the conference in the landing and the conference's header. + +image:spaces/conferences/registration_landing01.png[Registration button on landing page] + +image:spaces/conferences/registration_landing02.png[Registration button on landing page] + +If you want to enable registration you'll need to define and publish at least one registration type. + +image:spaces/conferences/registration_types_frontend_wo_user.png[Select registration type without a user account] + +== Create a new registration type + +For adding a new registration type, you need to: + +. Sign in as administrator +. Go to the conferences section in the sidebar +. Click on the conference Edit action +. Click on the "Registration types" link in the sidebar +. Click on the "New Registration type" button +. Fill the form +. Publish the registration type + +image:spaces/conferences/new_registration_type.png[Create a new registration type form] + +image:spaces/conferences/registration_types_backend.png[Manage registration types] + + +.Create a new registration type +|=== +|Field |Type |Description + +|Title +|Required +|What is the title of this registration type. + +|Weight +|Which order will it have in relation to the other types. Having a lower number means a higher priority. For instance, if you have two types, "Day 1" with weight "10" and "Day 2" with weight "0", then "Day 2" will be first when ordering. +|Description + +|Required +|Description for this registration type +|Price + +|Optional +|Define a price for this registration type. If you don't define a price, the price will be "Free". +|Select conference meetings +|=== + +If the participant is already logged in then she'll see her username and email in the registration page. + +image:spaces/conferences/registration_types_frontend_w_user.png[Select registration type with user account] \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/spaces/conferences/registrations/users.adoc b/docs/pt/modules/admin/pages/spaces/conferences/registrations/users.adoc new file mode 100644 index 0000000000..33dc8d6b46 --- /dev/null +++ b/docs/pt/modules/admin/pages/spaces/conferences/registrations/users.adoc @@ -0,0 +1,27 @@ += User registrations + +After participants have registered, they will appear in this section. + +image:spaces/conferences/user_registrations.png[Conferences user registrations (backend)] + +As an administrator, you can: + +* Export the registrations +* Confirm a registration + +== Export + +It's possible to export the registrations in multiple formats: CSV, JSON, and XLSX (Excel). + +== Flow + +. A participant registers to the conference +. She receives a pending registration notification +image:spaces/conferences/user_registration_pending_notification.png[Notification for pending user registration] +. She receives a pending registration email +image:spaces/conferences/user_registration_pending_email.png[Email for pending user registration] +. An administrator reviews and confirms the registration with the image:action_check.png[Confirm] button +. The participant receives a confirmed registration notification +image:spaces/conferences/user_registration_confirmed_notification.png[Notification for confirmed user registration] +. She receives a confirmed registration email with an calendar file (.ICS). +image:spaces/conferences/user_registration_confirmed_email.png[Email for confirmed user registration] \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/spaces/conferences/speakers.adoc b/docs/pt/modules/admin/pages/spaces/conferences/speakers.adoc new file mode 100644 index 0000000000..f62160a3e8 --- /dev/null +++ b/docs/pt/modules/admin/pages/spaces/conferences/speakers.adoc @@ -0,0 +1,68 @@ += Speakers + +The speakers are people that are going to talk at the conference. + +image:spaces/conferences/speakers_frontend.png[Conferences speakers (frontend)] + +== Create a new speaker + +image:spaces/conferences/speakers.png[Conferences speakers] + +For creating a new speaker of a conference: + +. Sign in as administrator +. Go to the conferences section in the sidebar +. Click on the conference Edit action +. Click on the Speakers link in the sidebar +. Click on the "New Conference Speaker" button +. Fill the form + +image:spaces/conferences/new_speaker.png[Conferences speakers] + + +.New conference speaker form +|=== +|Field |Type |Description + +|Participant type +|Required +|Wheter this speaker is a non-participant or existing participant. Does she already have an account created on the platform? + +|Full name +|Required if it's non-participant. +|Name of the speaker. + +|User or group +|Required if it's an existing participant. +|Type at least three characters to search. + +|Related meetings +|Optional +|Which meetings does this speaker attend and participates actively? + +|Position +|Required +|Metadata for showing extra information about the speaker. + +|Affiliation +|Required +|Metadata for showing extra information about the speaker. + +|Short Bio +|Optional +|Metadata for showing extra information about the speaker. + +|Twitter handle +|Optional +|Metadata for showing extra information about the speaker. + +|Personal URL +|Optional +|Metadata for showing extra information about the speaker. + +|Avatar +|Optional +|Metadata for showing extra information about the speaker. + +Default image +|=== \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/spaces/consultations.adoc b/docs/pt/modules/admin/pages/spaces/consultations.adoc new file mode 100644 index 0000000000..452763a87f --- /dev/null +++ b/docs/pt/modules/admin/pages/spaces/consultations.adoc @@ -0,0 +1,3 @@ += Consultations + +include::partial$deprecated.adoc[] \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/spaces/initiatives.adoc b/docs/pt/modules/admin/pages/spaces/initiatives.adoc new file mode 100644 index 0000000000..7abb57a326 --- /dev/null +++ b/docs/pt/modules/admin/pages/spaces/initiatives.adoc @@ -0,0 +1,408 @@ += Initiatives + +An initiative is a special type of participatory process that can be promoted by anyone (independently of other channels or participation spaces) through the collection of (online and in-person) signatures for the organization to carry out a specific action (modify a regulation, initiate a project, change the name of a department or a street, etc.). + +The promoters of an initiative can define its objectives, gather support, debate, disseminate it and define meeting points where signatures can be collected from the attendees or debates open to other participants. + +Examples: An initiative can collect signatures to call for a consultation among all the people of an organization, or to create an assembly, or to call for a process of budget increase for a territory or area of the organization. During the process of collecting signatures, more people can add to this demand and carry it forward in the organization. + +Initiatives are to be distinguished from the other participation spaces because they can be used as a participatory tool or mechanism promoted by participants. In other words, the initiatives are mechanisms for semi-direct democracy through which participants can promote a certain action of common interest to the organization, by collecting a specific number of signatures. In this case, what the organization has to do is enable the promotion of these initiatives and offer the necessary technical support and advice to the people concerned. The role of the platform’s administrator, then, is somewhat different from that of the other participation spaces. + +In the first place, you will have to configure the various forms of initiatives. This could be specified in a regulation (like a municipal normative or state law), specifying the number of signatures required for processing the various types of initiatives. For example, an initiative for incorporating one or several items into the Municipal Council’s agenda evidently requires fewer signatures than another initiative for promoting a binding consultation. + +== 0. Initiative setup + +How initiatives work depends on two things: how the initiative module is configured through the xref:admin:initiatives_initializer.adoc[initializer] (in code) and how the initiative type is configured in the administration panel. + +Regarding initiatives type, **an administrator** needs to define one. For Initiatives to work on an organization there must be at least one initiative type created and configured with at least one initiative type scope. If there's only one type then the participant will not get the possibility to choose the initiative type, this step will be skipped in the initiative creation wizard. + +Some real examples from the city of Barcelona are: + +* To add an item to the Municipal Council or Districts agendas +* To perform a participatory process +* To create a new assembly +* To approve or modify a regulation +* To request the holding of a citizen consultation +* To call for assemblies (neighborhood councils or public audiences) + +=== New initiative type form + +image:admin_initiative_type.png[New initiative type form] + + +.Admin new initiative type form: General information +|=== +|Field |Type |Description + +|Title +|Required +|Title of the initiative type. For instance, "New park at city center". + +|Description +|Required +|Explanation of what can be done with this initiative type. + +|Banner image +|Required +|An image for this initiative type. NOTE: At the moment this is not used. +|=== + + +.Admin new initiative type form: Options +|=== +|Field |Type |Description + +|Signature type +|Optional +|Which kind of signature type will be allowed. Options are: Online, In-person and Mixed. The Mixed option allows a participant to choose which signature type will have the initiative. + +|Enable attachments +|Optional +|Whether it'll allow to upload attachments to initiatives. + +|Enable participants to undo their online signatures +|Optional +|Can a participant undo its signature when they already signed? + +|Enable authors to choose the end of the signature collection period +|Optional +|Can the authors of an initiative change the end of the signature collection period? + +|Enable authors to choose the area for their initiative +|Optional +|Can the authors choose the area of their initiative? + +|Enable child scope signatures +|Optional +|This config flag doesn't support offline votes, it enables sub-scopes and works with an authorization handler that associates a scope to the user, make sure you select that authorization, bellow in authorization settings. For it to work, scopes need to be configured in a hierarchical way : 1 Parent - N Child. + +|Only allow global scope initiatives creation +|Optional +|Tick this flag if you enabled "Child scope signature" and configured the global scope as your parent scope. By enabling this, scope selection will be skipped in the initiative creation wizard. + +|Enable promoting committee +|Optional +|Whether it will only allow individual initiatives (made by only one person) or allow collective initiatives (multiple promoters, being multiple individuals or a user group). + +|Minimum of committee members +|Optional +|When "Enable promoting committee" option is checked, defines the minimum number of promoter's committee member to send the initiative to technical validation + +|Collect participant personal data on signature +|Optional +|Adds a step to the signature process. When a participant clicks on the signature button, she'll be redirected to a form asking for some personal data. This will be used with the PDF export action after the recollection period has ended. + +|Legal information about the collection of personal data +|Depends on whether the option "Collect participant personal data on the signature" is checked +|Privacy notice and terms of use for the participant personal data during the signature process. +|=== + + +.Admin new initiative type form: Authorization settings +|=== +|Field |Type |Description + +|Authorization to verify document number on signatures +|Optional +|When a participant is making the signature process, will she be asked for an authorization? + +|Add SMS code validation step to the signature process +| +|During the signature process, will it ask for SMS validation? See xref:services:sms.adoc[configuration of SMS service]. +|=== + +=== New initiative type scope form + +An initiative type can also have scopes associated. For Initiatives it needs at least one scope configured. + +image:admin_initiative_type_scope.png[New initiative type form] + + +.Admin new initiative type scope form +|=== +|Field |Type |Description + +|Scopes +|Required +|A Scope. An author can choose this scope in the creation of the initiative. + +|Signatures required +|Required +|Number of signatures the initiative need to have before the end period so it can be accepted. +|=== + +== 1. Create an initiative + +This action is done by **the author**. The author is a participant that creates the initiative. Depending on how the initiatives module is configured in the initializer or how the initiative type is configured, it may need to ask for authorization, or it will even not show the "New initiative" button. + +image:initiative_list.png[Initiatives list] + +For creating an initiative, a participant must click in the "New initiative" button. Then she'll have a wizard with multiple steps: + +=== 1.1 Choose the initiative type + +image:initiative_new_step1.png[Initiative creation: step 1] + +=== 1.2 Add title and description + +image:initiative_new_step2.png[Initiative creation: step 2] + +=== 1.3 [Optional] Similarity comparison + +Checks the rest of the initiatives if there are other similar initiatives. If there are, the system will show them before continuing. This is a way to avoid duplicates. + +=== 1.4 Finish + +image:initiative_new_step3.png[Initiative creation: step 3] + +image:initiative_new_step4.png[Initiative creation: step 4] + +=== Actions after it was created + +After the initiative was created, a participant can see the initiative page, but until the initiative is reviewed and accepted by an administrator, through the technical validation, it will not be published and visible for all the participants. + +image:initiative_show.png[Initiative show] + +In the sidebar a participant can make some actions: Edit, Print and Send to technical validation. + +image:initiative_actions.png[Initiative actions] + +==== Edit + +After the initiative was created and before it was sent to technical validation, **an author** can edit and correct the initiative if it has any error. + +image:initiative_edit.png[Initiative edit] + +==== Print + +An author can also print the initiative. + +image:initiative_print.png[Print an initiative] + +==== Technical validation + +After the author has reviewed how the initiative will look, she can send it to technical validation. + +image:initiative_send_to_technical_validation.png[Send initiative to technical validation] + +== 2. Send initiative to technical validation + +This action is done by **the author**. + +After it has been reviewed by the author, it can be sent to "Technical validation", but it depends in the configuration of the initiative type, in whether the options "Enable promoting committee" and "Minimum of committee members" are configured. + +=== Promoter's committee + +An initiative type can optionally be supported by a promoter's committee, with a minimum number of committee members. Once the user has created the initiative and before it can be sent for technical validation they need to invite committee members to promote it. + +When the user has created the initiative they will be given a link to share with possible committee members, which will look something like `/initiatives/.../committee_requests/new` + +When a prospective committee member opens the link, they can click a button which allows them to request to be part of the committee. The initiative author then needs to approve each request. The author can approve them by clicking on the "Edit" button of their initiative at the bottom of the form they can approve or reject committee members. + +image:initiative_commitee_members_send_to_technical_false.png[Initiative promotor committee: edit screen] + +The initiative cannot be sent to technical validation until it meets the minimum number of committee members required. You can find the invitation link in the edit form. + +image:initiative_edit_commitee_members.png[Initiative promotor committee: edit screen] + +Share the invitation link with the people you'd like to have on your committee. + +image:initiative_commitee_members_ask.png[Initiative promotor committee: edit screen] + +The people invited with the link will be able to read the initiative and ask to be part of the committee. + +image:initiative_commitee_members_sent.png[Initiative promotor committee: edit screen] + +The request is sent and the author can then and accept or refuse it in the initiative edit form. + +image:initiative_commitee_members_approve.png[Initiative promotor committee: edit screen] + +image:initiative_commitee_members_send_to_technical_true.png[Initiative promotor committee: edit screen] + +Once enough people have joined the promoter committee the initiative author can send it for +technical validation. + +== 3. Publish an initiative + +This action is done by **an administrator**. + +After the initiative was sent to technical validation by a participant, an administrator can view all the initiatives in the admin panel and make some corrections. + +image:initiative_admin_list.png[Admin initiatives list] + +=== Actions + +Regarding the actions in an initiative, an administrator can "Preview", "Edit", "Answer" or "Print" an initiative: + +image:initiative_admin_list_actions.png[Initiative admin list actions] + +|=== +|Icon |Name |Definition + +|image:action_preview.png[Preview icon] +|Preview +|To see how it's shown in the frontend to participants. + +|image:action_edit.png[Edit icon] +|Edit +|Edit form for Initiative. + +|image:action_answer.png[Answer icon] +|Answer +|Allows to answer an Initiative. + +|image:action_print.png[Print icon] +|Print +|Allows to print. +|=== + +=== Components + +Once an initiative has been created it gets the Meetings and Page component enabled by +default. The initiative author has no control over these - an admin will need to manage +them. All of the other usual components may be added by an admin too. + +image:initiative_admin_show.png[Admin initiative show page] + +There are also other features inside initiatives, like Attachments and Moderations for the comments. + +image:initiative_admin_sidebar.png[Admin initiative sidebar] + +=== Publish + +After the initiative was reviewed and technically approved by an admin, for instance for checking that what the initiative is asking is legal or abides to the normative (ie it's municipal competency), then it can be published: + +image:initiative_admin_actions.png[Admin initiative actions] + +== 4. Sign an initiative + +This action is done by **a participant**. + +After the initiative was published, it'll be visible in the initiatives listing page (/initiatives): + +image:initiative_list_published.png[Initiative list after it was published] + +image:initiative_admin_show_published.png[Admin initiative show after it was published] +image:initiative_show_published.png[Initiative show after it was published] + +And authorized participants can sign it: + +image:initiative_admin_show_published_detail.png[Admin initiative show after it was published (detail)] + +image:initiative_show_signed.png[Initiative show after it was signed] + +== 5. Export signatures + +This action is done by **an administrator**. After the initiative has started to get signatures, there's an option for exporting a PDF of the signatures: + +image:initiative_actions_export.png[Initiative actions with Export to PDF] + +image:initiative_actions_export_pdf.png[Initiative exported PDF] + +== 6. Answer an initiative + +After the initiative has collected all the signatures then it can be answered by an administrator. An initiative answer don't have different types. + +image:initiative_backend_answer.png[Initiative backend answer] + +image:initiative_frontend_answer.png[Initiative frontend answer] + +== Initiative statuses + +For better understanding all the status, this is a summary: + +|=== +|Status |Explanation + +|Created +|The initiative has been created but is not yet public for every visitor or the rest of the participants. + +|Technical validation +|The initiative needs to be reviewed by an administrator. From here, it can be "discarded" or "published" + +|Expired +|The initiative wasn't reviewed by an administrator and wasn't approved, and the maximum time for validation has passed. + +|Discarded +|The initiative was reviewed by an administrator and was discarded, so it's not published. + +|Published +|The initiative was reviewed by an administrator and was approved, so it's published. + +|Rejected +|The period for signature recollection has ended and there weren't enough signatures. + +|Accepted +|The period for signature recollection has ended and there were enough signatures. +|=== + +[plantuml] +@startuml +:Created; +:Technical validation; +if (has passed the maximum validation time?) then (yes) + #pink:Expired; + kill; +elseif (validated?) then (no) + #pink:Discarded; + kill; +else (yes) + #palegreen:Published; + if (enough signatures?) then (no) + #pink:Rejected + (not enough signatures); + kill; + else (yes) + #palegreen:Accepted + (enough signatures); + stop; + endif; +endif +@enduml + +Finally, these are all the relevant settings in every moment in the initiatives life cicle: + +[plantuml] +@startuml +(*) --> "Create a new initiative" +if "Has only one type?" then +--> [Yes] "Fill initiative form" +else +--> [No] "Select initiative type" +--> "Fill initiative form" +Endif +partition Created { + if "Is the User a UserGroup?" then + --> [Yes] "Send to Technical Validation" + else + --> [No] Collect the minimum number of committee members (2 by default) + --> "Send to Technical Validation" + Endif +} +partition Validating { + if "Has passed the maximum time for validation (60 days by default)?" then + --> [Yes] "Expired" + else + --> [No] if "Is accepted by an administrator?" then + --> [No] "Discarded" + else + --> [Yes] "Publish" + endIf + endIf +} +partition Published { + --> "Signature process" + if "Has passed the configured time window for validation (60 days by default)?" + --> [Yes] "Expired" + else + --> [No] Export PDF to signatures + --> Check signatures with offline signatures for duplicates (if the Initiative has them) + --> if "Has the initiative get the number of signatures required?" then + --> [No] Rejected + else + --> [Yes] Accepted + endIf + endIf +} +--> (*) +@enduml \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/spaces/processes.adoc b/docs/pt/modules/admin/pages/spaces/processes.adoc new file mode 100644 index 0000000000..f833ec1522 --- /dev/null +++ b/docs/pt/modules/admin/pages/spaces/processes.adoc @@ -0,0 +1,242 @@ += Processes + +A participatory process is a sequence of participatory activities (e.g. first filling out a survey, then making proposals, +discussing them in face-to-face or virtual meetings, and finally prioritizing them) with the aim of defining and making a decision on a specific topic. + +Examples of participatory processes are: a process of electing committee members (where candidatures are first presented, +then debated and finally a candidacy is chosen), participatory budgets (where proposals are made, valued economically, +and voted on with the money available), a strategic planning process, the collaborative drafting of a regulation or norm, +the design of an urban space or the production of a public policy plan. + +A really important concept for making good use of Decidim is to understand the relationship between Phases and Components +in a participatory process in Decidim: + +image::process_steps_components.png[Relation between Steps and Components in a Process in Decidim] + +What this diagram is showing is that for a participatory process you can have 7 phases: + +. Configuration & Presentation +. Diagnostic +. Proposal Creation +. Proposal Selection +. Results +. Evaluation +. Monitoring + +Inside of every one of these Phases, there are some components (like Blog, Meetings, Survey, Debates, Proposals, Results). +Some of these Components allow some features depending on the Phase that we are. + +In this section, we'll explain how we can configure a Participatory Process in Decidim. + +== List + +To configure participatory processes on the Decidim platform, click on btn:[Processes] in the admin sidebar menu. A list +will appear with the existing processes if there are any: + +image::processes_list.png[Participatory processes list] + +You can filter by the ones that are: + +* Published / Unpublished +* Public / Private + +image::processes_list_filter.png[Participatory processes list filtered] + +You can also search by title and control how many elements are in the list. + +You have 4 possible actions in this list after a Participatory Process is created: + +1. Export: send by email the configuration for a given process. Can be imported in other Decidim installation. +1. Duplicate: to duplicate this process. +1. Configure: to edit the metadata and configuration for a process. +1. Preview: how it will look once published. + +== New process form + +image::processes_new_form.png[New participatory process form] + + +.New participatory process form: General information +|=== +|Field |Type |Description + +|Title +|Required +|Title of the participatory process. For instance, "Participatory Budgeting 2020". + +|Subtitle +|Required +|Subtitle. For instance, "Let's decide our priorities together" + +|URL slug +|Required +|URL slugs are used to generate the URLs that point to this process. Only accepts letters, numbers and dashes, and must +start with a letter. Example: if your domain is 'example.org' and your slug 'participatory-budget-2020' then your URL will +be https://example.org/processes/participatory-budget-2020 + +|Hashtag +|Optional +|Hashtag for Twitter + +|Short description +|Required +|A short explanation of what's your participatory process about. + +|Description +|Required +|A long explanation of what's your participatory process about. + +|Announcement +|Optional +|The text you enter here will be shown to the user right below the process information. +|=== + + +.New participatory process form: Duration +|=== +|Field |Type |Description + +|Start date +|Optional +|When this process start. You have a calendar widget to choose the day. Expected format: dd/mm/yyyy + +|End date +|Optional +|When this process start. You have a calendar widget to choose the day. Expected format: dd/mm/yyyy +|=== + + +.New participatory process form: Images +|=== +|Field |Type |Description + +|Home image +|Optional +|Image that will be used in presentation cards of this process. Guidance for file: Has to be an image or a document. +For images, use preferably landscape images, the service crops the image. Maximum file size: 10MB + +|Banner image +|Optional +|Image that will be used inside of the process. Guidance for file: Has to be an image or a document. +For images, use preferably landscape images, the service crops the image. Maximum file size: 10MB +|=== + + +.New participatory process form: Metadata +|=== +|Field |Type |Description + +|Promoter group +|Optional +|Information that's displayed in the process metadata sidebar. + +|Organization area +|Optional +|Information that's displayed in the process metadata sidebar. + +|Scope metadata +|Optional +|Information that's displayed in the process metadata sidebar. + +|Who participates +|Optional +|Information that's displayed in the process metadata sidebar. + +|What is decided +|Optional +|Information that's displayed in the process metadata sidebar. + +|How is it decided +|Optional +|Information that's displayed in the process metadata sidebar. +|=== + +image::process_frontend_metadata.png[Process frontend metadata] + +image::process_backend_metadata.png[Process backend metadata] + + +.New participatory process form: Filters +|=== +|Field |Type |Description + +|Scopes enabled +|Optional +|Check if you want to have Scopes filtering in this process. + +|Scope +|Optional +|Which xref:admin:scopes.adoc[Scope] does this process belongs to. + +|Scope filter depth +|Optional +|Restrict the scope filter depth; The filter will show from general to the selected scope type. This is only relevant if +you have complex relations in Scopes children (like a Russian Doll). For instance if you have a Grandmother -> Mother -> +Child, this setting allows you to choose the Mother, so the participants can only choose the Child. This would be the +case for instance if you have Provinces -> Cities -> Districts, and the process is about a particular City. + +|Area +|Optional +|Which xref:admin:areas.adoc[Area] does this process belongs to. +|=== + + +.New participatory process form: Visibility +|=== +|Field |Type |Description + +|Processes group +|Optional +|Enables to make groups of multiple participatory processes. Ideally for processes that are related between them, for +instance multiple squares in a City or multiple documents using the same participatory rules. + +|Private space +|Optional +|Check if this process should only be accessible by xref:admin:spaces/processes/private_participants.adoc[Private Participants] + +|Promoted +|Optional +|Check if you want the process to have more visibility in the Process public list. It'll also be visible in the +Participatory Process Content Block in the xref:admin:homepage.adoc[Homepage] configuration. This is accessible in the +btn:[Edit] action in a Process. +|=== + + +.New participatory process form: Filters +|=== +|Field |Type |Description + +|Related processes +|Optional +|Select other participatory processes that are related to this one. +|=== + + +.New participatory process form: Filters +|=== +|Field |Type |Description + +|Show statistics +|Optional +|Check if you want to show the Statistics section. + +|Show metrics +|Optional +|Check if you want to show the Metrics section. +|=== + +After you've initially created your process you have a submenu where you need to keep configuring more information +about your participatory process. + +image::process_submenu.png[Process submenu in admin] + +Here you can keep configuring your process: + +. Info: the same form that we explained in this page. +. xref:admin:spaces/processes/phases.adoc[Phases] +. xref:admin:spaces/processes/components.adoc[Components] +. xref:admin:spaces/processes/categories.adoc[Categories] +. xref:admin:spaces/processes/attachments.adoc[Attachments] +. xref:admin:spaces/processes/admins.adoc[Process admins] +. xref:admin:spaces/processes/private_participants.adoc[Private participants] +. xref:admin:spaces/processes/moderations.adoc[Moderations] \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/spaces/processes/admins.adoc b/docs/pt/modules/admin/pages/spaces/processes/admins.adoc new file mode 100644 index 0000000000..59313271ef --- /dev/null +++ b/docs/pt/modules/admin/pages/spaces/processes/admins.adoc @@ -0,0 +1 @@ +include::partial$page_admins.adoc[] \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/spaces/processes/attachments.adoc b/docs/pt/modules/admin/pages/spaces/processes/attachments.adoc new file mode 100644 index 0000000000..493f7dc8c8 --- /dev/null +++ b/docs/pt/modules/admin/pages/spaces/processes/attachments.adoc @@ -0,0 +1 @@ +include::partial$page_attachments.adoc[] \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/spaces/processes/categories.adoc b/docs/pt/modules/admin/pages/spaces/processes/categories.adoc new file mode 100644 index 0000000000..3ee4fc09cc --- /dev/null +++ b/docs/pt/modules/admin/pages/spaces/processes/categories.adoc @@ -0,0 +1 @@ +include::partial$page_categories.adoc[] \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/spaces/processes/components.adoc b/docs/pt/modules/admin/pages/spaces/processes/components.adoc new file mode 100644 index 0000000000..7a204dda0b --- /dev/null +++ b/docs/pt/modules/admin/pages/spaces/processes/components.adoc @@ -0,0 +1 @@ +include::partial$page_components.adoc[] \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/spaces/processes/groups.adoc b/docs/pt/modules/admin/pages/spaces/processes/groups.adoc new file mode 100644 index 0000000000..315bedeaa7 --- /dev/null +++ b/docs/pt/modules/admin/pages/spaces/processes/groups.adoc @@ -0,0 +1,113 @@ += Process groups + +A group of processes proves useful for subdividing large participatory processes into subprocesses according to a criteria, +for instance the xref:admin:scopes.adoc[scope] of every process. + +As an example you can see the https://www.decidim.barcelona/processes_groups/4[Barcelona City Council's Neighborhoods Plan, Pla de Barris]. +This is is a 150 million euro shock plan that aims to reduce inequalities within the city. There are 10 related processes, one for each involved neighborhood. + +image::processes_group_example.png[Participatory process group example] + +== New process group form + +For creating a new process group: + +. Sign in as administrator +. Go to the Processes section in the sidebar +. Click on the Process groups link in the sidebar +. Click on the "New process group" button +. Fill in the form + +image::processes_group_list.png[Participatory process groups list] + +image::processes_group_new_form.png[New participatory process group form] + + +.New participatory process group form: General information +|=== +|Field |Type |Description + +|Title +|Required +|Title of the participatory process group. For instance, "Participatory Budgeting". + +|Description +|Required +|A long explanation of what's your participatory process about. + +|Related processes +|Optional +|Which are the processes that are related to this one? They will be used for populating +the Content Blocks in the Landing page of this Process group. For selecting multiple you'll +need to use the *ctrl* function. + +|Image +|Optional +|Image that will be used in presentation cards of this process group. Guidance for image: +Preferably a landscape image that does not have any text. The service crops the image. +Maximum file size: 10MB. Allowed file extensions: jpeg jpg png +|=== + + +.New participatory process group form: Metadata +|=== +|Field |Type |Description + +Hashtag +Website + +|Promoter group +|Optional +|Information that's displayed in the process metadata content block. + +|Organization area +|Optional +|Information that's displayed in the process metadata content block. + +|Scope metadata +|Optional +|Information that's displayed in the process metadata content block. + +|Who participates +|Optional +|Information that's displayed in the process metadata content block. + +|What is decided +|Optional +|Information that's displayed in the process metadata content block. + +|How is it decided +|Optional +|Information that's displayed in the process metadata content block. +|=== + + +.New participatory process group form: Visibility +|=== +|Field |Type |Description + +|Promoted +|Optional +|Check if you want the process to have more visibility in the Process public list. It'll also be visible in the +ParticpipatoryProcess Content Block in the xref:admin:homepage.adoc[Homepage] configuration. This is accessible in the btn:[Edit] action in a Process. +|=== + +== Landing page + +One of the main features of a process group is to be able to configure the Lnading page, through Content blocks, just like +the general homepage of the platform. This means that you can enable or disable different sections of the landing page and also +configure some fo these sections. + +image::processes_group_landing.png[Participatory process group landing page] + +* Title, description and hashtag +* Metadata +* Image, text and Call to Action button. Configurable. +* Proposals. You can configure how the elements will be sorted: by most recent or random. +* Results. You can configure how the elements will be sorted: by most recent or random. +* Upcoming events +* Statistics +* Participatory processes +* First HTML block +* Second HTML block +* Third HTML block \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/spaces/processes/moderations.adoc b/docs/pt/modules/admin/pages/spaces/processes/moderations.adoc new file mode 100644 index 0000000000..12d6ac0858 --- /dev/null +++ b/docs/pt/modules/admin/pages/spaces/processes/moderations.adoc @@ -0,0 +1 @@ +include::partial$page_moderations.adoc[] \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/spaces/processes/phases.adoc b/docs/pt/modules/admin/pages/spaces/processes/phases.adoc new file mode 100644 index 0000000000..c9c58c5173 --- /dev/null +++ b/docs/pt/modules/admin/pages/spaces/processes/phases.adoc @@ -0,0 +1,89 @@ += Phases + +A participatory process is a sequence of phases ordered in time. Depending on which phase of the process timeline you +are, then you can enable or disable some features. + +Ideally, the Phases of a Participatory Process are always the same and are not changed, so participants can know what are +the rules and timeframe and can organize their lives to know when it'd be best for them to participate in this process. + +As a guideline, the standard structure of a participatory process may be as follows: + +. Presentation +. Diagnosis +. Proposal creation and debate +. Proposals prioritization +. Proposals evaluation +. Monitoring + +Participants can find the link to different phases of a participatory process in the header of the participatory process, +in the link "Process phases". Here they can see the full description and explanation of the phases. The active phase +will be highlighted. + +image:process_phases_header.png[Header with processes phases link] + +image:process_phases.png[Process phases explanation] + +== Create a new phase + +image:process_phases_list.png[Phases of a participatory process] + +For creating a new phase of a participatory process: + +. Sign in as administrator +. Go to the participatory process section in the sidebar +. Click on the participatory process Edit action +. Click on the Phases link in the sidebar +. Click on the "New phase" button + +image:process_phases_new_form.png[Create a new participatory process phase form] + + +.Create meeting +|=== +|Field |Type |Description + +|Title +|Required +|What is the title for this phase. + +|Description +| +|A long description explaining what's this phase for. + +|Start date +| +|Which day this phase will start. Expected format: dd/mm/yyyy + +|End date +| +|Which day this phase will end. Expected format: dd/mm/yyyy + +|Call to Action path +| +|Where will the button link to. For instance, it could point to the new proposal creation form. Use partial paths, not full +URLs here. Accepts letters, numbers, dashes, and, slashes, and must start with a letter. If not set, the button will not be shown. + +|Call to Action text +| +|What will the button say. For instance, it could be "Create a proposal". If not set, the button will not be shown. +|=== + +== Actions + +After a phase was created you have these actions: + +|=== +|Icon |Name |Definition + +|image:action_activate.png[Activate icon] +|Activate +|To make this phase the active one. + +|image:action_edit.png[Edit icon] +|Edit +|To edit this phase. + +|image:action_delete.png[Delete icon] +|Delete +|To delete this phase. +|=== \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/spaces/processes/private_participants.adoc b/docs/pt/modules/admin/pages/spaces/processes/private_participants.adoc new file mode 100644 index 0000000000..16c939dfa3 --- /dev/null +++ b/docs/pt/modules/admin/pages/spaces/processes/private_participants.adoc @@ -0,0 +1 @@ +include::partial$page_private_participants.adoc[] \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/spaces/votings.adoc b/docs/pt/modules/admin/pages/spaces/votings.adoc new file mode 100644 index 0000000000..4ee78af415 --- /dev/null +++ b/docs/pt/modules/admin/pages/spaces/votings.adoc @@ -0,0 +1,3 @@ += Votings + +include::admin:partial$development.adoc[] \ No newline at end of file diff --git a/docs/pt/modules/admin/pages/system.adoc b/docs/pt/modules/admin/pages/system.adoc new file mode 100644 index 0000000000..da7be84a79 --- /dev/null +++ b/docs/pt/modules/admin/pages/system.adoc @@ -0,0 +1,106 @@ += System + +Every Decidim is multi-tenant by default. That means that you can have multiple organizations inside of your same installation. This is being used for instance for the Barcelona and Girona Provincials Governments, for offering Decidim installations to many small cities, or by the City of Barcelona, for giving service to lots of organizations (NGOs, cooperatives, etc). + +Even if you only have one Organization you also need to create one through the System Panel. It's available after you've installed Decidim, at `/system`. For instance if you domain is `example.org`, then it should be available at `http://example.org/system`. + +After you've freshly installed Decidim, you'll be redirected to the System panel log-in page: + +image::system-log_in.png[system panel log in] + +== 1. Create an admin account + +For logging in to this dashboard, you'll need to create a system admin account from your terminal: + +[source, console] +.... +bin/rails decidim_system:create_admin +.... + +You'll be asked for an email and a password. For security, the password will not get displayed back at you and you'll need to confirm it. + +== 2. Access the Dashboard + +With the email and password that you've added in the past step, you'll be able to log in. After you've logged in, you'll see an empty dashboard: + +image::system-dashboard.png[system empty dashboard] + +== 3. Create a new organization + +Inside of the system panel, you need to create your Organization through the form: + +TIP: Please mind that some of these fields can't change through the System Form, as changing them could potentially leave your database in a broken state. You can change it through the console, but you'll be on your own. + + +.System New Organization form +|=== +|Field |Type |Description + +|Name +|Required +|Name of your organization. For instance, "Decidim Barcelona". + +|Reference prefix +|Required +|The reference prefix is used to uniquely identify resources across all organizations. It's for identifying different resources inside of Decidim. For instance, "BCN". You can change how it's created this reference through xref:configure:initializer.adoc[Decidim's initializer] (see **Custom resource reference**). + +|Host +|Required +|Fully qualified domain name. For instance, "example.org" or "decidim.barcelona". + +|Secondary hosts +|Optional +|Others domains or subdomains that point to this same installation. Normally this shouldn't be used. Enter each one of them in a new line. For instance, "example.com" + +|Organization admin name +|Required +|Name of the admin account. For instance, "Admin" + +|Organization admin email +|Required +|Email for the admin account. For instance, "admin@example.org" + +|Organization locales +|Required +|You'll need to configure at least one language. Decidim is multilanguage, meaning that you can have most of the admin contents with any number of languages. For seeing other languages you'll need to configure first the xref:configure:initializer.adoc[Decidim's initializer]. + +|Force authentication +|Optional +|Check if you want to **Force users to authenticate before access organization**. That means that they don't see any published content and they only have access to the log-in form. + +|Users registration mode +|Optional +|Control how you want the login / participant register or signup to work. See below. + +|Available authorizations +|Optional +|How you want to authorize and verify that your participants are who they say they are. It depends a lot on your Organization, country, etc. See xref:customize:authorizations.adoc[Authorizations customization]. + +|SMTP settings +|Optional +|Allows you to configure different SMTP servers for every Organzation in this installation. See xref:services:smtp.adoc[SMTP configuration]. + +|Omniauth settings +|Optional +|Allows you to configure through external OAUTH providers for every Organization in this installation. See xref:services:social_providers.adoc[Social providers configuration]. +|=== + +=== Users registration mode + +==== Allow participants to register and login + +Most of the installations use this setting. Means that everyone can register a participant account and login, without restrictions, only with an email account confirmation (and you can disable that confirmation also if you want to through xref:configure:initializer.adoc[Decidim's initializer]) + +==== Don't allow participants to register, but allow existing participants to login + +This is for when you make a manual import of participants' accounts. + +==== Access only can be done with external accounts + +In the case where you have an external provider configured (like the `Omniauth settings`) and you want to have accounts from only this provider. + +== [Optional] 4. Edit an organization + +Finally, you can also Edit an organization, although some fields can not be changed as some contents in the database depends on them. + +For accessing your newly created Organization, you can do it going to the domain or subdomain that you've configured in `Host`. \ No newline at end of file diff --git a/docs/pt/modules/admin/partials/components_list.adoc b/docs/pt/modules/admin/partials/components_list.adoc new file mode 100644 index 0000000000..f410a9f6b6 --- /dev/null +++ b/docs/pt/modules/admin/partials/components_list.adoc @@ -0,0 +1,18 @@ +The platform currently have the following official components: + +* xref:admin:components/accountability.adoc[*Accountability*]: allows to keep track of the results execution of a space. +It allows administrators to also relate them to the proposals and meetings that originated them. +* xref:admin:components/blog.adoc[*Blog*]: allows administrators to publish posts with news regarding a space. +* xref:admin:components/budgets.adoc[*Budgets*]: allows participants to vote in projects with amounts predefined. Used for +participatory budgeting processes. Allows to define different kind of rules, for instance a minimum percentage of the total budget or a minimum amount of projects. +* xref:admin:components/debates.adoc[*Debates*]: allows participants to have debates. Debates can be time limited or not. +* xref:admin:components/elections.adoc[*Elections*]: to have end-to-end auditable elections in a space. Uses the same +external system as xref:admin:spaces/votings.adoc[Votings] space. +* xref:admin:components/meetings.adoc[*Meetings*]: gatherings in person or online through videoconferences platforms. +* xref:admin:components/pages.adoc[*Page*]: static pages with multi-language support. +* xref:admin:components/proposals.adoc[*Proposals*]: contributions posted by participants which can be given support. +* xref:admin:components/sortitions.adoc[*Sortitions*]: this allows different kind of proposals to be selected randomly. +For instance the proposals could be candidates who form part of a group (such as a committee). +* xref:admin:components/surveys.adoc[*Survey*]: for conducting surveys with different kinds of questions. + +In the cases where your needs are not covered by one of the above components, you can create your own component through a xref:develop:modules.adoc[Module]. \ No newline at end of file diff --git a/docs/pt/modules/admin/partials/deprecated.adoc b/docs/pt/modules/admin/partials/deprecated.adoc new file mode 100644 index 0000000000..ceaa4f0f37 --- /dev/null +++ b/docs/pt/modules/admin/partials/deprecated.adoc @@ -0,0 +1,4 @@ +[CAUTION] +==== +This feature is deprecated and will be removed in the future. If you really depend in this feature and can't find an alternative way of working with this, please put in touch with us at hola [at] decidim [dot] +==== \ No newline at end of file diff --git a/docs/pt/modules/admin/partials/development.adoc b/docs/pt/modules/admin/partials/development.adoc new file mode 100644 index 0000000000..1309f6aa16 --- /dev/null +++ b/docs/pt/modules/admin/partials/development.adoc @@ -0,0 +1,4 @@ +[CAUTION] +==== +This feature is in active development. It is not ready for production use. +==== \ No newline at end of file diff --git a/docs/pt/modules/admin/partials/legacy.adoc b/docs/pt/modules/admin/partials/legacy.adoc new file mode 100644 index 0000000000..22c10a6058 --- /dev/null +++ b/docs/pt/modules/admin/partials/legacy.adoc @@ -0,0 +1,4 @@ +[CAUTION] +==== +This section hasn't been updated. It shows the content of an old version of Decidim. You can collaborate to improving the Documentation, please put in touch with us at hola [at] decidim [dot] org +==== \ No newline at end of file diff --git a/docs/pt/modules/admin/partials/page_admins.adoc b/docs/pt/modules/admin/partials/page_admins.adoc new file mode 100644 index 0000000000..e4527970ba --- /dev/null +++ b/docs/pt/modules/admin/partials/page_admins.adoc @@ -0,0 +1,67 @@ += Space Admins + +You can give permissions to users with special rights in a space, +so they can only have access to some of the administration pages in this space. +These roles are administrators, moderators, collaborators, or valuators. + +* Administrators: they can administer the space and change the space settings. +* Collaborators: they can see the space and its components before it's published and view the space settings. +They can't change anything. +* Moderators: they can see the reported contents of the space and hide or unhide them. +* Valuators: they can evaluate proposals. Used by participatory budgeting processes. + +To invite them, in the space's submenu, go to *Space admins* and click on *New space admin*. This depends in the kind of space +that you're, for instance for participatory processes it'd be *Process admins* and *New process admin*. + +== New space admin form + +image:spaces/admins_form.png[New space admin form] + + +.New space admin form +|=== +|Field |Type |Description + +|Name +|Required +|What is the name of the new admin. + +|Email +|Required +|What is the email of the new admin, so she can receive the invitation. + +|Role +|Required +|Which role does this admin will have in the participatory process? Can be any of Administrator, Collaborator, Moderator, or Valuator. +|=== + +== Roles + +=== Administrators + +A space administrator can administer the space and change the space settings. It can also invite new space administrators. + +image:spaces/admins_role_admin01.png[Process administrators view 01] + +image:spaces/admins_role_admin02.png[Process administrators view 02] + +=== Collaborators + +A space collaborator can only see the space before it's published. + +image:spaces/admins_role_collaborator.png[Process collaborators view] + +=== Moderators + +A space moderator can review the reported contents of the space and hide or unhide them. + +image:spaces/admins_role_moderator.png[Process moderators view] + +=== Process valuators + +A space valuator can review the proposals of the space. She can: + +* change the status of the proposals, by accepting or rejecting them +* add a monetary value to the proposals, so they can be voted with the budget component. + +image:spaces/admins_role_valuator.png[Process valuators view] \ No newline at end of file diff --git a/docs/pt/modules/admin/partials/page_attachments.adoc b/docs/pt/modules/admin/partials/page_attachments.adoc new file mode 100644 index 0000000000..0b7fab6042 --- /dev/null +++ b/docs/pt/modules/admin/partials/page_attachments.adoc @@ -0,0 +1,77 @@ += Attachments + +Attachments allow an administrator to upload static files to a space. + +When a space is launched, it is important to provide citizens with as much information as possible about them so that they can participate with knowledge. That is why it is helpful to add files (Attachments) with the information that is considered relevant. + +Optionally, these documents can be grouped in *Folders*. For example, for a participatory process of remodeling a square, folders could be created with information about possible uses, with plans, with economic information, etc. + +They can be found on the Space homepage: + +image:spaces/attachments_folder.png[View the folder attachments in the public interface] + +image:spaces/attachments.png[View the attachments in the public interface] + +== Create a new attachment + +image:spaces/attachments_admin.png[View the attachments in the admin interface] + +For creating a new attachment of a space: + +. Sign in as administrator +. Go to the space section in the sidebar +. Click on the space Edit action +. Click on the Attachments link in the sidebar +. Click on the "New attachment" button + +image:spaces/attachments_new_form.png[Create a new attachment form] + + +.Create attachment +|=== +|Field |Type |Description + +|Attachment or image name +|Required +|What is the title for this attachment. + +|Weight +|Optional +|Which order will it have in relation to the other attachments. Having a lower number means a higher priority. For instance, if you have two categories, "Attachment a" with weight "10" and "Attachment b" with weight "0", then "Attachment b" will be first when ordering. + +|Description +|Required +|A long description explaining what this file is about. + +|Folder +|Optional +|Which folder this attachment belongs to. + +|File +|Required +|Upload the file. Guidance for file: Has to be an image or a document. For images, use preferrably landscape images, the +service crops the image. For CSV files, the separator between columns must be a comma (","). Maximum file size: 10MB. Allowed +file extensions depends in your server configuration. +|=== + +== Create a new folder + +image:spaces/attachments_new_folder_form.png[Create a new folder for attachments form] + + +.Create folder +|=== +|Field |Type |Description + +|Name +|Required +|Name of the folder + +|Weight +|Optional +|Which order will it have in relation to the other folders. Having a lower number means a higher priority. For instance, if you have two folders, "Folder a" with weight "10" and "Folder b" with weight "0", then "Folder b" will be first when ordering. + +|Description +|Required +|A long description explaining what this folder is about. +|=== \ No newline at end of file diff --git a/docs/pt/modules/admin/partials/page_categories.adoc b/docs/pt/modules/admin/partials/page_categories.adoc new file mode 100644 index 0000000000..8314cf9ab6 --- /dev/null +++ b/docs/pt/modules/admin/partials/page_categories.adoc @@ -0,0 +1,56 @@ += Categories + +Categories (and subcategories) are used for classifying resources inside of a space. + +An administrator can define them, can be assigned to when creating resources, and then participants can filter the +different resources by these categories. For instance, they can be set up in proposals, meetings and debates. + +As an example of this mechanism in action you can see it in https://meta.decidim.org/processes/roadmap/f/122/[Propose new functionalities for Decidim software] process: + +. Administrators have defined the categories in the process. +. Participants can create proposals that have one category. +. Participants can filter by these categories and navigate among all the proposals. + +image:spaces/categories_sidebar.png[Filter categories in proposals] + +image:spaces/categories_form.png[Select a category when creating a proposal] + +NOTE: Once a category is in use it cannot be removed, as there are resources that are using it. + +Decidim has other ways to classify resources, for instance xref:admin:scopes.adoc[Scopes] and xref:admin:features/hashtags.adoc[Hashtags]. +The main difference is that Categories can be defined in a given space, Scopes are global for all the platform, and Hashtags +are defined by the participants. + +Categories can be nested, meaning that a category can have subcategories. + +== Create a new category + +For configuring a new category, go to the space admin panel and click on the "Categories" tab. + +image:spaces/categories.png[View categories in a space admin page] + +Then click in "Add category" and fill the form. + +image:spaces/categories_new_form.png[Create a new category form] + + +.Create category +|=== +|Field |Type |Description + +|Name +|Required +|What is the name for this category. + +|Weight +|Optional +|Which order will it have in relation to the other categories. Having a lower number means a higher priority. For instance, if you have two categories, "Category a" with weight "10" and "Category b" with weight "0", then "Category b" will be first when ordering. + +|Description +|Required +|A long description explaining what this category is about. + +|Parent +|Optional +|What is the parent category. +|=== \ No newline at end of file diff --git a/docs/pt/modules/admin/partials/page_components.adoc b/docs/pt/modules/admin/partials/page_components.adoc new file mode 100644 index 0000000000..5544cc7a1e --- /dev/null +++ b/docs/pt/modules/admin/partials/page_components.adoc @@ -0,0 +1,52 @@ += Components + +include::partial$components_list.adoc[] + +To configure components, click on *Components* from the space submenu. A list will appear showing the components +that have already been configured for the space. + +image::spaces/components.png[Components of space] + +To configure a new component, click on *Add component* from the upper right part of the screen and select the type of +component you wish to configure from the drop-down menu. + +image::spaces/components_new_dropdown.png[Add a component in a space] + +== Actions + +|=== +|Icon |Name |Definition + +|image:action_manage.png[Manage icon] +|Manage +|To manage all the resources inside of a component. For instance, all the Proposals of a Proposal component, the Meetings +in a Meeting component, etc. + +|image:action_publish.png[Publish icon] +|Publish +|To publish a component. This means that the component will be visible to the public. + +|image:action_unpublish.png[Unpublish icon] +|Unpublish +|To unpublish a component. This means that the component will be invisible to the public. + +|image:action_configure.png[Configure icon] +|Configure +|To configure a component with the specific rules. Depends in the component type. For instance, in the case of Meetings: +are comments enabled, participants can create meetings, etc. + +|image:action_permissions.png[Permissions icon] +|Permissions +|To configure which xref:customize:authorizations.adoc[Authorization] will be necessary to make certain actions in +this component. For instance, in the case of Proposals, which Verification will be necessary to create a new proposal or +to give supports. + +|image:action_share.png[Share icon] +|Share +|To share privately before publishing this component. Useful for reviewing with other people inside of your organization. + +|image:action_delete.png[Delete icon] +|Delete +|To delete this component. If there are contents most of the components will not let you delete them so it doesn't break +relations with other resources. In those cases it's recommended to just unpublish the component. +|=== \ No newline at end of file diff --git a/docs/pt/modules/admin/partials/page_moderations.adoc b/docs/pt/modules/admin/partials/page_moderations.adoc new file mode 100644 index 0000000000..aeed3aac33 --- /dev/null +++ b/docs/pt/modules/admin/partials/page_moderations.adoc @@ -0,0 +1,9 @@ += Moderation + +Moderations inside of a space work like xref:global_moderations.adoc[Global moderations]. + +The main difference is that if you want so you can invite Moderators of this specific +space and they will only have access to the reports made for +contents of this space. + +Moderators are a kind of space admins. See it for instance for xref:spaces/processes/admins.adoc[participatory processes admins]. \ No newline at end of file diff --git a/docs/pt/modules/admin/partials/page_private_participants.adoc b/docs/pt/modules/admin/partials/page_private_participants.adoc new file mode 100644 index 0000000000..90580396be --- /dev/null +++ b/docs/pt/modules/admin/partials/page_private_participants.adoc @@ -0,0 +1,75 @@ += Private participants + +There are cases where you want to have a closed census of the participants in a space. For instance this could be a space +for a small group of people, or the members of a comission inside of a big organization. For these cases you can +use the private participants feature. + +image:spaces/private_participants.png[Private participants list] + +For inviting private participants of a space: + +. Sign in as administrator +. Go to the space's section in the sidebar +. Click on the space Edit action +. Click on the "Private participants" link in the sidebar +. Click on the "New participatory space private user" or "Import via CSV" buttons + +== New participatory space private user + +image:spaces/private_participants_new_form.png[New private participant form] + + +.New participatory space private user form +|=== +|Field |Type |Description + +|Name +|Required +|What is the name of the new participant. + +|Email +|Required +|What is the email of the new participant. +|=== + +== Import via CSV + +image:spaces/private_participants_csv_import.png[Import private participants via CSV] + +This form allows you to bulk import the participants of a space. + +It must have two columns with email in the first column of the file and the name in the last column of the file (email, name) +of the users that you want to add to the participatory space. Some tips: + +* The file should not have headers. That means that you do not have to add a column that says "email, name" +* You must avoid using invalid chars like `<>?%&^*#@()[]=+:;"{}\|` in user name. +* The separator between columns must be a comma (",") + +== Actions + +After the participants has been invited, you can resend or delete the invitation. + +image:spaces/private_participants_actions.png[Private participants actions] + +|=== +|Icon |Name |Definition + +|image:action_resend_invitation.png[Resend invitation] +|Resend invitation +|If the invitation wasn't accepted, send it again to the user + +|image:action_delete.png[Delete invitation] +|Delete invitation +|Revoke the invitation sent to the user +|=== + +== Invitation + +When a participant was invited she'll get an email with a link for accepting the invitation: + +image:spaces/private_participants_email_invite.png[Email invitation of a private participant] + +After clicking in this email, she'll have to fill a form for setting her password, accepting the Terms of Service and giving +her consent if she wants to receive newsletters. + +image:spaces/private_participants_user_registration_form.png[User registration form of a private participant] \ No newline at end of file diff --git a/docs/pt/modules/admin/partials/under-construction.adoc b/docs/pt/modules/admin/partials/under-construction.adoc new file mode 100644 index 0000000000..8af7720c26 --- /dev/null +++ b/docs/pt/modules/admin/partials/under-construction.adoc @@ -0,0 +1,4 @@ +[NOTE] +==== +This section hasn't been written yet. You can collaborate to improving the Documentation, please put in touch with us at hola [at] decidim [dot] org +==== \ No newline at end of file diff --git a/docs/pt/modules/contribute/pages/documentation.adoc b/docs/pt/modules/contribute/pages/documentation.adoc new file mode 100644 index 0000000000..ba8b6938b5 --- /dev/null +++ b/docs/pt/modules/contribute/pages/documentation.adoc @@ -0,0 +1,19 @@ += Documentation + +To contribute to the documentation (for instance, this same page that you're reading), you can do it through two ways: editing on GitHub directly or editing locally. + +== Edit on GitHub + +This is the recomended way if you just want to make a quick fix (for instance, a typo or some clarification on a single page). For doing this you'll need to click in the "Edit this page" link in the top of every page. + +image::documentation-edit.png[Edit this page link] + +It'll open the page for editing in GitHub interface and after you've finished it'll guide you to make a Pull Request so maintainers can review your contribution. + +== Edit locally + +If you want to propose lots of changes in the documentation, or if you want to review your changes locally before sending them because you want to review things like formatting, you can install the environment for having the documentation site locally. + +Then you'll need to fork the repository, make a branch and propose your changes as a Pull Request so maintainers can review it. As you see this can be a hassle if you want to make small changes, so the prefered way would be to do it initially with the "Edit this page" link mehod. + +Read the full instructions on how to install this documentation website locally in the https://github.com/decidim/documentation/[Decidim Documentation GitHub repository]. \ No newline at end of file diff --git a/docs/pt/modules/contribute/pages/governance.adoc b/docs/pt/modules/contribute/pages/governance.adoc new file mode 100644 index 0000000000..c1617e40e9 --- /dev/null +++ b/docs/pt/modules/contribute/pages/governance.adoc @@ -0,0 +1,45 @@ += Governance + +== About the code + +For making new features, you can made a https://decidim.org/modules[new module] for your own application. If you want to publish it on the website, you can https://decidim.org/contact[send us an message]. + +If you want to add a new feature or a change on the codebase, the process is: + +. Suggest your change in https://meta.decidim.barcelona/processes/roadmap[Metadecidim] +. Wait until Product Team reviews and accept the feature, as it's important to be consistent with the rest of the software, comply with the Social Contract, etc. +. Then you can make the Pull Request. +. The PR will get reviewed by: +.. Product Team: will review the functionality +.. Mantainers: will review the code quality + +image::workflow-features.png[new feature workflow process] + +Some things that you need to take in account about this process: + +* If you make the PR without Product Team approval then you could get rejected (after investing lots of time on developing). +* Proposals can receive endorsements, although these are not decisive for a proposal to be included on the roadmap. The endorsements serve as indicators of the interest of the proposal or the need it covers. The comments to the proposals are also enabled, to collectively elaborate the initial idea and bring it to a productive result. +* Every Thursday the Product team reviews all new proposals that have been published the previous week +* If no funding is available it is included in the backlog of the corresponding component or module. + +== About the organization + +Decidim was initially created by the city of Barcelona, but quickly it evolved through the help of Localret and other entities and administrations from Catalonia, such as Diputació de Barcelona (Barcelona Provincial Government), and other catalan cities: Terrassa, Sabadell, Gavà, L'Hospitalet de Llobregat, Badalona and Sant Cugat. You can read more about the history in xref:understand:about.adoc[About]. + +Since our first version in 2017 we've detected that it's necessary for the sustainability of the project to not depend in a given institution such as the city of Barcelona, as that could be problematic for the future. Other open source projects made by public institutions that didn't have a strong community or a sustainability strategy get shut down or slowly die without funding. + +Making this kind of open source software from the public institutions and through public contracting law is really difficult and one other issue that we want to tackle with this new organization is about having resources for contracting in-house developers. + +With all this on mind, we started with the https://meta.decidim.org/processes/decidim-gov[Metadecidim Governance participatory process] starting in November 2017: + +**** +A process open to the entire Community regarding the decision-making and representative bodies that we must equip ourselves with in order to build an autonomous, transparent and democratic organisation for the Decidim Project. + +The objective is to define an organizational and representation system (internal organs and how they are chosen) that can be transformed into an autonomous entity or association from which the whole community participates and can manage the project at multiple levels + +The Decidim project needs a system of its own governance that allows it to enjoy sufficient autonomy to continue growing in a sustainable manner, which is why it has to be provided with decision-making and conflict resolution bodies. +**** + +As a result of this participatory process, on February 2019 the Decidim Free Software Association (_Associació de Software Lliure Decidim_ in catalan) was created. You can read more about the https://meta.decidim.org/assemblies/general-assembly-association[General Assembly of the Decidim Association]. + +On 2021, the Decidim Association https://decidim.org/blog/2021-02-09-the-government-of-catalonia-barcelona-city-council-and-the-free-software-association-decidim-sign-a-collaboration-agreement-to-promote-democratic-participation-with-free-and-open-technologies/[has signed a collaboration agreement with the Government of Catalonia and Barcelona City Council to promote the development of the platform]. \ No newline at end of file diff --git a/docs/pt/modules/contribute/pages/index.adoc b/docs/pt/modules/contribute/pages/index.adoc new file mode 100644 index 0000000000..d16f3f107a --- /dev/null +++ b/docs/pt/modules/contribute/pages/index.adoc @@ -0,0 +1,9 @@ += Contribute + +You don't need to know how to code to contribute to Decidim, just having available time and attitude. + +Learn more about https://github.com/decidim/decidim/blob/develop/CONTRIBUTING.adoc[How to contribute to Decidim] in GitHub. + +* xref:contribute:governance.adoc[Governance] +* xref:contribute:translations.adoc[Translations] +* xref:contribute:documentation.adoc[Documentation] \ No newline at end of file diff --git a/docs/pt/modules/contribute/pages/translations.adoc b/docs/pt/modules/contribute/pages/translations.adoc new file mode 100644 index 0000000000..a06acc9fb4 --- /dev/null +++ b/docs/pt/modules/contribute/pages/translations.adoc @@ -0,0 +1,55 @@ += Translations + +For translating Decidim we use a web platform called Crowdin, accesible in https://translate.decidim.org/ + +At the moment is translated in more than 18 languages: Catalan, Czech, Dutch, Finnish, French, German, Greek, Hungarian, +Italian, Japanese, Latvian, Norwegian, Polish, Portuguese, Romanian, Slovak, Spanish and Swedish. + +As Decidim is a living and in constant development process is necessary to maintain, improve and specially update the translations when there's a new release. For doing so: + +== Existing language + +You can ask for permission in the language of your choosing, for instance for Esperanto: + +image::translation-join-01.png[Join to Decidim Translations] + +image::translation-join-02.png[Message in Join Decidim Translations] + +== New language + +If your language isn't created yet, then we need to do it as it's necessary to make some adjustments. You need to contact us by the https://decidim.org/contact[contact form]. + +== How it works + +If you're curios, in the technical level we have a bot (the great decidim-bot) that periodically makes a PR to the relevant branches (last releases and develop). + +image::translation-bot.png[Decidim Bot in GitHub] + +If you want to try a new translation before it gets released, then you can do so by pointing to the xref:install:update.adoc#_from_git_repositories[relevant branch], for instance `chore/l10n/develop`. + +=== Checking locales + +You can make sure new translations are complete for all languages in your application with: + +[source,console] +---- +bin/rails decidim:check_locales +---- + +By default this will check against develop branch. If you're pointing to other branch in your Gemfile, then you can use the TARGET_BRANCH environment variable: + +[source,console] +---- +TARGET_BRANCH=release/0.22-stable bin/rails decidim:check_locales +---- + +Be aware that this task might not be able to detect everything, so make sure you also manually check your application before upgrading. + +If you have 100% in your Crowdin language then you can be pretty sure that everything is translated. + +== Rules + +* All the translations always start from English. If you want to propose changes to the English language then you need to do it in the Ruby on Rails translations files directly (like `decidim-core/config/locales/en.yml`) +* For every language (except English), you can't do changes in the Ruby on Rails translations files directly (for instance `decidim-core/config/locales/es.yml`) as these translations could get invalidated by decidim-bot in the future. See "How it works" section. +* We try to speak of Participants instead of Users when it's possible +* On Spanish and Catalan we follow https://en.wikipedia.org/wiki/Gender_neutrality_in_Spanish[Gender Neutrality] \ No newline at end of file diff --git a/docs/pt/modules/features/pages/components.adoc b/docs/pt/modules/features/pages/components.adoc new file mode 100644 index 0000000000..2e847c7acf --- /dev/null +++ b/docs/pt/modules/features/pages/components.adoc @@ -0,0 +1,183 @@ += Components + +:page-partial: + +*Components* are participatory mechanisms that allow interactions among the platform Participants within each of the Participatory Spaces. + +== Proposals + +*Proposals* are Decidim's most important component. They can be defined as the minimum decision unit. + +Proposals can be made by any of the following *types of creators*: + +* by the *official organisation* managing the platform +* by registered *individual participants* +* by a *group* of registered participants +* from a *meeting* as a result of a discussion or collective deliberation + +Once a proposal has been published, it can be *moderated*, *amended* or *withdrawn* by its author(s). + +Proposals can be *accepted*, *rejected* or kept in an *evaluating* state. Proposals can also be imported to a new phase, so they can be re-written or elaborated in different stages. + +Other features associated with proposals include: + +* *Proposal creation wizard*: While a proposal is being created, the participant is accompanied through the process, which is divided into different steps, with contextual help and previews before the proposal is published. +* *Modification and withdrawal of proposals*: a proposal’s author can modify and/or withdraw it before the support stage opens. +* *Version control*: this makes it possible to keep a record of all the changes made to a proposal, as well as code-generation to verify the proposal’s integrity. +* *Detecting similarities*: This allows anyone making a new proposal to find similar ones previously made on the platform, thereby avoiding duplications. +* *Connections between proposals*: proposals made can be connected to one another using links in the comments section, showing related proposals as cards and giving notifications on the existence of a new connection. +* *Endorsement of proposals*: participants and collectives can endorse proposals and such public endorsement will be shown within the proposal. Followers of the endorsers will be notified that the followed endorsed the proposal. +* *Amendments*: any participant can edit a proposal’s text and a sub-proposal will be created in Amendment Mode (as Pull Request in Github). This sub-proposal can gather endorsements and supports. Besides, the proposal’s author can accept or reject the amendment (or sub-proposal). Where a sub-proposal is rejected, its author can convert it into an official proposal. +* *Collaborative draft for proposals*: Decidim permits collaboration and co-creation over proposals. It incorporates the following features: +** Creating rough drafts with numerous authors. +** Listing of collaborative drafts +** Comments in drafts +** Asking for help from and accepting the help of other collaborators + +== Endorsements + +include::admin:partial$development.adoc[] + +Participants can endorse proposals. Such endorsements can be interpreted as votes, signatures or any other format that demonstrates a positive agreement in accordance with the political will itself. +Participants can issue a single endorsement for each proposal they wish. The number of endorsements can be limited for each participant. +There is no limit to the number of proposals that can be endorsed. + +If the endorsement is a vote, it is possible to configure from the administration panel the *display settings for the voting results*, either during or solely after the voting period. + +There is a *special form used to vote for participatory budgets* which allows participants to vote by "spending" an amount equivalent to the budget in question among the proposed projects. The number of votes is limited here by the selected projects’ accumulated spending amount. + +== Results + +The *results* component is used to turn proposals into results and give official responses to them. +It is possible to merge various proposals into a single result or to create different results related to the same original proposal. + +Results gather information about the original proposal(s), like the meetings where they were created, discussed and debated and the endorsements received. + +== Debates + +Discussions and debates can be opened on questions and specific issues established by administrators or participants. + +== Surveys + +The *surveys* component can be used to design and publish surveys and to display and download their results. + +* *Survey configuration tool*: allows administrators to create questions and answers (open, test types, multiple selection etc.) and launch the survey, as well as download the responses in CSV format. +* *Survey interface for participants*: allows participants to respond to survey questions. + +== Sortitions + +The *sortition* component allows to select a number of proposals (e.g. candidates for a jury) with random, yet reproducible, procedures that guarantees non-biased and uniform distributions. + +== Informative pages + +The *pages* component is used to create informative pages with rich text formatting, embedded pictures and videos. + +== Blogs + +The *blog* component makes possible the creation of posts or news associated with a participatory space, and to navigate them chronologically. + +*Comments associated* with blog entries will be treated like the platform’s other comments, as described below. + +== Newsletter + +The *newsletter* component makes possible to send emails to everyone registered in the platform or, more selectively, to those who participate in a specific space who have agreed, under the terms and conditions of use, to receive this information newsletter email. Personalised emails are sent out addressed directly to the name of the user in the language chosen by the user by default. + +Participants will automatically and directly be able to *unsubscribe* through the email itself by clicking on a link in it and it will also be possible to *track the number of visits* generated by the newsletter. + +== Meetings + +The *meeting* component offers organizations and participants the opportunity to: + +* convene meetings, defining its structure and content +* *categorise* the meeting within a space. +* create *proposals associated with meetings* +* *publish* minutes +* upload *photos* of the meeting + +Meetings relating to a participatory space (a specific process or an assembly) can be shown on a *map* and be *ordered by date or category*. Besides, all the meetings can be shown in *calendar mode*, with the possibility of exporting them to a mobile phone calendar or other apps. + +Some of the meeting component’s advanced features include: + +* *Registration and attendance system*: +** This allows to manage the *type of registration* (open and automatic, closed and accessible only to certain types of participants, etc.), to establish the **number of places **available for attendees, to reserve a place, to do *manual registrations*, sent out *Invitations*, to define the *conditions* that need to be accepted in order to be able to attend the meeting (e.g. image rights release), and *registering the attendance* of participants. +** It allows participants *to register* for a meeting, request *a family reconciliation service* (playroom, childcare space) and to obtain an *accreditation code* for attending at a meeting. +** Those registered who have attended a meeting will have *special access* enabling them to evaluate the meeting or make comments, etc. +** Participants or administrators will be able to receive *notifications* on registration-period openings, the number of places remaining for registrations, reminders of meetings, and the publication of minutes. +* *Managing agendas*: allows to define the duration of meetings, to create agenda’s items and sub-items, title, content, and estimated duration. Participants can propose agenda items. +* System for *drafting, publishing and validating meeting minutes* [IMPORTANT NOTE:This is currently implemented differently]: +** Minutes can be uploaded in video, audio or text format. +** Minutes in text mode are associated with a *collaborative writing board* integrated into Decidim. +** Minutes go through 4 *stages of preparation*: 1. Collaborative writing during the meeting; 2. Preparing the official draft of the minutes; 3. Draft-amendment stage; 4. Publication and final validation of the minutes. +** Minutes can be *commented on* using the comments component. +** *Accompanying documents* may also be added to the minutes. +* *Auto-convening*: verified participants will be able to convene meetings directly through the platform , with support from a certain number of other participants, the meeting will be publicly activated and convening participants will have access to the administration panel [IMPORTANT: not implemented yet] +* *Displaying and exporting meetings*: meetings can be displayed in map mode (for spaces or generally on the platform) or in calendar mode, and can be exported to agenda and calendar managers (in iCalendar format). + +== Search engine + +*The search engine* allows participants to perform searches across all of the platform’s indexable content, both generally and specifically, by searching within a specific participatory process or inside its components (proposals, results, etc.), through advanced searches. + +== Secondary components + +There are other components that only exist on top of basic components are. These components are: + +=== Comments + +The *comments* component enables participants to take part on a deliberative process on an issue or proposal. +Participants can respond to them, endorse them and receive notifications about responses. +Comments can be *ranked* in chronological order or by number of votes in favour. + +=== Participatory texts + +Participatory texts are defined as an ordered collection of proposals that make up a document with complete text. Participation in the text stems from interaction with the proposals that form it. This component basically allows three operations: + +* *Breaking down a text document into ordered proposals* from a document in ODT, XDOC, MarkDown and HTML formats. If the text is structured in sections and subsections, ordered proposals will be created from the lower level subsection; if the text is not structured, a proposal will be created for each paragraph of text. The interface allows proposals to be re-edited, merged, separated, given titles, etc. +* *Composition of proposals in a unified text*: based on a series of proposals, these may be ordered and generate a unified and downloadable text. +* *Viewing and interacting* with documents composed of proposals: A collection of proposals will be shown as a unified text and may be amended or comments can be added in the margin. + +=== Accountability + +The *accountability* component works like a project management system built into the platform. . It offers the possibility of: + +* subdividing results into projects or sub-projects +* defining and applying progress in implementation statuses (0% to 100% implemented) around their implementation +* displaying the extent of the results’ implementation grouped by categories and scopes + +Results, projects and statuses can be updated through a CVS, or manually by the administration interface. + +=== Conferences + +The *conference* component allows an organization to join up a series predefined meetings (chats, workshops etc.) related to a participatory space. + +Configuration settings include: + +* Conference-page generator, which enables the creation of an *internal website* with information about the event. +* The option to generate an *interactive and downloadable programme* on the event (where there are guest speakers, it will include their name, position, organisation, a small biography and links to other websites). +* Email *invitations*. +* Registration system +* *Automatic diploma and certificates of attendance creation* for those who request it, through a support panel that an administrator can verify. +* Links to the event *video and materials* platforms in the programme and documents. +* Automatic links to digital-media websites covering the event. +* The ability to following events through *social networks* (e.g. by incorporating a Twitter feed). + +== Participatory Spaces and Components + +*Participatory Spaces* and *Components* can be combined in different ways. +For example, the various phases of a Participatory Budgeting Process (Participatory Space) can combine *Components* like this: + +1. At an early phase public *Meetings* can be opened for citizens to analyze different needs classified by districts. +1. In turn these *Meetings* can lead to the design of a *Survey*. +1. The *Survey* results can then be used to define a set of categories for projects to be proposed. +1. The *Proposal* component can then be activated for Participants to create and publish their projects as solutions to the identified needs. +1. These *Proposals* can then be commented and, after two weeks of deliberation, *voting* can be activated to select among the projects with a budget-expenditure system. +1. Participants can then be called to a public *Meeting* to evaluate the results. +1. An assessment *Survey* can be launched afterwards for those who could not attend the *Meeting*. +1. Finally, the *Accountability* component may be activated to monitor the degree of execution of the selected projects, and people can comment on it. + +== Displaying components: Cards + +Component items have their individual page but are also displayed as *cards* throughout the platform. + +[#card-anatomy-fig] +._Decidim's proposal card anatomy._ +image::card-anatomy.png[] \ No newline at end of file diff --git a/docs/pt/modules/features/pages/general-description.adoc b/docs/pt/modules/features/pages/general-description.adoc new file mode 100644 index 0000000000..c54b27a835 --- /dev/null +++ b/docs/pt/modules/features/pages/general-description.adoc @@ -0,0 +1,63 @@ += General description and introduction to how Decidim works +:page-partial: + +http://decidim.org[Decidim], from the Catalan for "let's decide", is a digital infrastructure for participatory democracy, built entirely and collaboratively as free software. More specifically, Decidim is a web environment (a _framework_) produced in _Ruby on Rails_ that allows users to create and configure a website platform or portal, to be used in the form of a social network, for democratic participation. The portal allows any organization (local city council, association, university, NGO,trade union, neighborhood or cooperative) to create massive democratic processes for strategic planning, participatory budgeting, collaborative regulatory design, urban spaces design and elections. It also enables the organization of in-person meetings, signing up for them, the publication of minutes, proposing points for the agenda and receiving notifications of the results. Decidim can also help organizing governing bodies, councils or assemblies, the convening of consultations and referendums or channeling citizen or member initiatives to impact different decision making processes. All together Decidim makes possible to digitally structure a complete system of participatory democratic governance for any organization. + +To understand in detail how Decidim operates, a distinction must be made between participatory _spaces_ and _components_ (see <>). + +[#functional-architecture-fig] +._Summary diagram of Decidim's functional architecture showing a combination of components in participatory spaces. The "Vote*" component allows a variety of voting systems, expressions of support or allegiance for a proposal._ +image::functional-architecture-en.svg[width=2000] + +* *Participatory spaces.* These are the frameworks that define how participation will be carried out, the _channels_ or means through which citizens or members of an organization can process requests or coordinate proposals and make decisions. _Initiatives_, _Processes_, _Assemblies_ and _Consultations are all participatory spaces. Specific examples of each of these include: a citizen initiative for directly changing a regulation (_Initiative_); a general assembly or workers’ council (_Assembly_); a participatory budgeting, strategic planning, or electoral process (_Processes_); a referendum or a call to vote “Yes” or “No” to change the name of an organization (_Consultation_). +* *Participatory components.* These are the participatory _mechanisms_ that allow a series of operations and interactions between the platform users within each of the participatory spaces. The following are participatory components: _comments, proposals, amendments, votes, results, debates, surveys, sortitions, pages, blogs, newsletters_ and _meetings_. Other components that build on top of basic components are: _participatory texts_, _accountability_ and _conferences_. + +[#spaces-components-fig] +._Decidim displays participatory spaces on the top menu (dark) and components are displayed on the bottom menu (white)._ +image::spaces-components.png[] + +The ways in which spaces and components interact is the following. Users of the platform (participants) interact through participatory mechanisms known as components which afford a variety of features for the various participatory _spaces_. In other words, participatory _spaces_ such as _Initiatives_, _Assemblies_, _Processes_ and _Consultations_ have components at their disposal which work together as participatory mechanisms. The more notable components include in-person _meetings_, _surveys_, _proposals_, _debates_, _results_ and _comments_. So, for example, the various phases of a participatory budgeting process can combine components in the following way: at an early phase public meetings can be opened for citizens to analyze different needs classified by districts. In turn these meetings can lead to the design of a survey. The survey results can then be used to define a set of categories for projects to be proposed. The proposal component can then be activated for participants to create and publish their projects as solutions to the identified needs. These proposals can then be commented and, after two weeks of deliberation, voting can be activated to select among the projects with a budget-expenditure system. Participants can then be called to a public meeting to evaluate the results, and an assessment survey can be launched afterwards for those who could not attend the meeting. Finally, the accountability component may be activated to monitor the degree of execution of the selected projects, and people can comment on it. What makes Decidim particularly powerful is this combination of components within spaces, which provides an organization with a complete toolkit to easily design and deploy a democratic system and adapt it to the organization's needs. + +Decidim's top navigation bar displays the different types of active *spaces* of the platform. *Processes* is a space that allows to create, activate/deactivate, and manage various participatory processes. These are distinguished from other spaces by being structured in different phases within which all of the components can be incorporated. Examples of participatory processes are: an election process for members of a committee, participatory budgeting, a strategic planning process, the collaborative writing of a regulation or norm, the design of an urban space or the production of a public policy plan. *Assemblies* is a space that offers the possibility of setting decision-making bodies or groups (councils, working groups, committees, etc.) that meet up periodically, detailing their composition, listing and geolocating their meetings, and allowing to take part in them (for instance: attending if the seating capacity and nature of the assembly so permits, adding items to the agenda, or commenting on the proposals and decisions taken by that body). *Consultations* is a space that makes it possible to coordinate referendums, trigger discussions and debates, get voting results published; it can be connected to a secure e-voting system. *Initiatives* is a space that allows participants to collaboratively create initiatives, define their trajectory and goals, gather endorsements, discuss, debate and disseminate initiatives and define meeting points where signatures can be collected from attendees or debates opened to other members of the organization. Initiatives is a special kind of space by which members of the organization can trigger actions that are generally restricted to elected bodies or platform administrators, by collecting (digital) signatures. The organization can define the types of initiatives and set up the number of signatures that are required to trigger the expected result (e.g. to call for a consultation). + +The *components* (also called features) are displayed as a second level menu with white background within spaces (as displayed in <>). The *collaborative draft* for proposals facilitates the collaborative creation of proposals as well as the monitoring and control of changes throughout the process. The *proposals* component allows a user to create a proposal using a creation wizard, compare it with existing ones, publish it in the platform and include additional information like geolocation or attached documents and images. This component also makes possible to navigate, filter and interact with a set of proposals. The proposal component has plenty of configuration options, and different features can be activated or de-activated in time. One such feature is *voting* or *support*: it offers organizations the possibility of activating different voting or support systems around proposals: unlimited, limited to a given threshold, weighted, cost-based, etc. Proposals can also be imported to a new phase, so they can be re-written or elaborated in different stages, where they can also be subject to *amends* which can be voted separately, accepted and merged or rejected, to improve proposals democratically. The *results* component is used to turn proposals into results and give official responses concerning their acceptance or rejection, merging various proposals into a single result or creating different results related to the same original proposal. The *accountability* component offers the possibility of subdividing results into projects, defining and applying progress statuses around their implementation, as well as displaying the extent of the results’ implementation grouped by categories and scopes. In this sense the accountability component works like a project management system built into the platform. The *surveys* component can be used to design and publish surveys and to display and download their results. The *sortition* component allows to select a number of proposals (e.g. candidates for a jury) with random, yet reproducible, procedures that guarantees non-biased and uniform distributions. The *comments* component enables users to add comments, to identify the comment as being in favor, against or neutral in relation to the commented object, to vote comments, respond to them and to receive notifications about responses. The *participatory texts* component can be used to convert lengthy text documents into various proposals or results and, vice versa, to compose and display a unified text based on a collection of proposals or results. This makes possible to work with a full document as continuous text in participatory manner. The *pages* component is used to create informative pages with rich text formatting, embedded pictures and videos. The *blog* component makes possible the creation of posts or news, and to navigate them chronologically. The *meeting* component offers organizations and participants the opportunity to convene meetings, determine their location and time, registration and management of attendees, to define the structure and content of the meeting as well as publishing the minutes, and the resulting proposals. The *conference* component allows an organization to create a website for a big event by joining up a series predefined meetings (chats, workshops etc.), putting together a unified program and managing attendees. The *newsletter* component makes possible to send emails to everyone registered in the platform or, more selectively, to those who participate in a specific space. + +Participants can carry on different *types of actions* within the platform: + +[start=0] +. They can *navigate* and search for information +. They can *create* contents of different types (e.g. proposals and debates). +. They can *vote, support or sign* all three modes allow for participants to aggregate their preference or will for a specific consultation question, proposal or initiative respectively (the difference between these three types of actions involve different levels of security and anonymity: signatures can be audited and attributed to a participant, supports cannot, in order to prevent coercion, while votes involve higher cryptographic guarantees than supports). +. They can *comment* on any object of the platform (proposals, debates, results, sortitions, etc.). +. They can *endorse* any content, meaning that they can publicly declare they support it or find it relevant, with the participants following it then receiving notifications. +. They can *follow* other participants, a participatory process, an initiative, a specific proposal, etc. and receive notifications. +. They can *sign up* for a meeting. +. They can also *share* and *embed* content out of the platform, sharing the link to other social networks and embedding content on other sites. + +Component items (e.g. a proposal, a blog post, a meeting) have their individual page but are also displayed as *cards* throughout the platform, cards being a major design interface to interact with components. <> displays a proposal card with the different types of data and interactions identified within the card. + +[#card-anatomy-fig] +._Decidim's proposal card anatomy._ +image::card-anatomy.png[] + +The users who participate in Decidim can be grouped into three different categories: + +* *Visitors* have access to all of the platform's content without having to sign up or provide any information. +* *Registered* participants can create content and comments, sign-up for meetings, endorse content, follow other participants and objects of the platform, customize their profile and receive notifications, mentions and private messages. By choosing a username and password, accepting the user agreement, and providing an email account (or using an account for several social networks) participants become registered. Registered participants can also have their account officialized (meaning their username is accompanied by a special symbol indicating they really are who they claim they are on their profile). +* *Verified* participants can make decisions. In order to fall under this category they must first be verified as members of the organization, citizens of the municipality, or constituents of the decision-making group (an association, community, collective etc.). Decidim offers different ways to carry out this verification. Once verified, participants will be able to take decisions by supporting proposals, signing initiatives and voting in consultations. + +Administrators can *manage permissions* for registered or verified users selectively. For example proposal creation can be activated for both registered and verified users but supports to proposals only for verified users. It is also possible (although rarely recommended) to consider all registered users as verified and to grant them decision making powers. + +There are different types of administrators: *administrators* of the whole platform or of specific spaces and components, they can also be *moderators* (with the exclusive power of moderating proposals, comments or debates) or *collaborators* that can read unpublished content, create notes and responses to proposals. + +Participants can register as an *individual* or as a *collective* (associations, working groups, etc. within the main organization). User *groups* might also be created so that individuals can be associated to a *group*. Decidim allows participants belonging to such a group to express or act individually or embodying the group identity: when an action is carried the platform prompts the participant to choose wether she wants to act as herself or as the group she belong to. + +Participants can not only navigate the content of Decidim through the top menu and move down the architectural hierarchy, from a space to its different components; they can also get information through the *search engine*, or via *notifications*. Participants can also talk to each other by internal messaging or *chat*. + +The participant's *profile* makes possible to read notifications, manage followers, and monitor different gamification and engagement badges. + +The *home page* of the platform is fully customizable: it can display different types of banners, call-to-action buttons, it can also display statistics and interactive visualizations, activity streams, and maps with the upcoming meetings. + +The content of the platform can be classified by different criteria. A participatory space and its contents (e.g. a participatory process or the proposals within) can be (independently) assigned a *scope*. Scopes are defined for the whole platform, and they can be thematic or territorial (for example, an assembly can be assigned to a specific theme or subject, like "ecology", and to a specific territory, like a district within a city). Content within a space-instance can be assigned to a *category* or sub-category (e.g. topics) that are specific for such a space-instance. For example, the categories "sport facilities", "parks" and "schools" can be created for a participatory budgeting process, and proposals will be assigned to these categories. *Hashtags* can also be freely created and introduced in the body text almost anywhere in the platform (proposals, debates, comments, process description, etc), both by participants and administrators, to classify content and make it searchable. + +Unlike other existing platforms, Decidim’s architecture is *modular*, *scalable*, easy to *configure*, and *integrated* with other tools or apps (data analysis, maps, SMS, mail, social networks, etc.). The platform has been designed in such a way that processes, assemblies and mechanisms can be set up easily and deployed from an administration panel. No knowledge of programming is required to install, configure and activate it. The participatory spaces and components can be developed, activated and deactivated independently. \ No newline at end of file diff --git a/docs/pt/modules/features/pages/general-features.adoc b/docs/pt/modules/features/pages/general-features.adoc new file mode 100644 index 0000000000..176164832f --- /dev/null +++ b/docs/pt/modules/features/pages/general-features.adoc @@ -0,0 +1,77 @@ += General features + +:page-partial: + +Below, we will outline a series of the platform’s general features and characteristics which do not appear in the spaces or components, or in the features directly associated with participants. + +== Installation and settings + +Decidim **can be easily installed **using the command prompt in any GNU/Linux server with the following installed services: PostgreSQL 9.4+, Ruby 2.4.1, NodeJS with yarn (JavaScript dependency manage), ImageMagick and PhantomJS. An automatic installation script allows you to deploy the whole dependency system, libraries, databases and other automatically required services in Heroku or Docker [feature expected for 2018Q4]. + +The portal’s *settings* are **customisable **in the following fields that are filled out on a form from the administration panel: Name of the portal, social network profiles (Twitter, Facebook, Instagram, YouTube, Github); brief description; welcome text; default language; home image; the organisation’s logo; favicon; reference prefix (unique identifier that will apply to the portal’s elements) and the organisation’s URL. + +== Integration with other services and compatibility/creation of additional services + +Decidim can be easily integrated with the following services that can be installed or configured with Decidim: + +* *OpenStreetMap*: to show events and proposals with geo-location +* *Piwik*: website traffic analysis +* *Pad*: collaborative real-time writing boards (technology to be determined) +* *Digital identity and signature*: integration with OAuth2 digital-identity management system, systems based on blockchain and recognised institutional digital identity and signature management systems. +* *Distributed filing system*: Disseminating or copying proposals or other elements from the platform in a distributed filing system (blockchain or IPFS type) [Missing feature]. +* *Microblogging*: integration/compatibility with a standardised and open microblogging protocol/service such as GNU Social or StatusNet type for participants’ activities (proposals, observations and messages) [Missing feature]. + +Decidim automatically generates the following services besides the ones that can be browsed on the website or accessed through an API: + +* *SMTP*: sending emails. +* *Calendar*: integration and compatibility with calendar-management systems and automatic creation and updating of events calendars, etc. + +== Multitenancy + +The multitenancy of the platform can be used on the basis of a single installation. In other words, a single instance of Decidim software allows to deploy as many portals (tenants) as you want under specific settings for each of the tenants. That way an organisation can create participatory portals for its sub-organisations or various organisations can share a server and reduce the maintenance costs of its portals. + +== Multi-language + +Decidim is a *multi-language* platform. Its available languages will be configured during its installation. Menus, administrative forms and, generally, the platform's fixed texts are available in several languages (Spanish, Catalan, Basque, Italian, French, Dutch and Finnish). A **collaborative translation **system in https://crowdin.com/project/decidim enables new languages to be incorporated into the platform. + +As for content, once the official languages of the instance have been set during the installation, all the content that is created from the administration panel has the option of being generated in these languages. The administration panel allows *content to be managed in several languages* through tabs. The content generated by users is displayed on the platform in a single language (the one chosen by the participant through the language selector in the upper part of the menus or automatically through its browser's language settings). + +== Statistics, open data and downloads + +Besides the application programming interface (API) which automatically provides access to public data, Decidim’s home page features a *general statistics table* with the following fields: number of participants, processes, proposals, results, meetings, observations and votes. + +Another *statistics table for each participatory process* shows the number of meetings, proposals, votes and results of a specific process. + +The administration panel lets you **export the proposals, results and observations **of a participatory process in CSV and JSON format and responses to surveys for processing and/or integration with other management systems. Participants can **download the results of a participatory process and the extent of its implementation **through a CSV file. + +Decidim also has a **data-display component **at its disposal on the platform’s general level and on a specific level (showing data from a specific Participatory Space) [Feature expected for 2018Q2-3, AjB-Lote2Mod4]. The following are included among the graphics that are displayed: + +* **Interactive graphics **in the form of a time line showing the development of the various components’ counters. +* *Heat map* of all the meetings, proposals or other content with geo-location tags. +* **Interactive diagrams **(bar or pie charts) with the results of a process (amounts of each of the participatory budget projects, filter by category and status of the proposals - whether selected or not, etc.) + +All of these displays are accompanied by an **option for downloading data **in CSV format [Feature expected for 2018Q2-3, AjB-Lote2Mod4]. + +== API, adaptable website design and mobile app + +Decidim has an application programming interface or API which is a series of independent service calls and data from Decidim's website interface. This allows third parties to develop services on the platform, automatically release data or develop new interfaces, or integrate other services with decidim. + +The API comes with *documentation* and a *formal participatory ontology* [Not completed] + +Decidim's website *design* is completely *adaptable* (_responsive_), using _mobile-first_ design philosophy (designed first for mobiles and later extended to desktop systems and tablets). + +Both the website's design and the API enable the development of mobile apps for Decidim, and a *Mobile App* is expected to be developed soon. + +== Content-classification systems + +As for content classification, the following to be distinguished and adjusted in Decidim: fields, categories and labels (or tags). + +*Scopes* are generic throughout the platform and divided up into *territorial* and **topic **types. Territorial areas, once defined, allow the spaces’ elements to be classified by territory (e.g. if a process or a body or an initiative affects a district or two, the entire city, a region or country, depending on the organisation). Topic areas are likewise defined for the entire platform and allow classification of the various elements of the participatory spaces. + +*Categories and subcategories* are used for classifying content within the various spaces and are defined for each of the levels of the spaces. So, for example, a participatory process may include several categories and subcategories (the process administrator defines them) whereas the process’ meetings, surveys, proposals and other components can be classed under these categories. + +In contrast to fields and categories, *labels* or tags are cross-cutting and freely defined by participants and can apply to any level or component. Labels can be created, embedded and defined in the administration panel. A label-suggestion system allows the people taking part to choose labels similar to the ones that are they are suggesting for labelling any of the platform's elements. Elements can be browsed by labels and the most popular labels displayed. + +== Contextual help system, usability and evaluation tests + +Decidim includes *editable contextual help* for guiding individual and administrative participants in using the platform. It also includes a **automatic evaluation surveys** to be conducted on participants for the purposes of identifying usability and participatory-procedure errors and improving the democratic quality experience of the software . \ No newline at end of file diff --git a/docs/pt/modules/features/pages/participants.adoc b/docs/pt/modules/features/pages/participants.adoc new file mode 100644 index 0000000000..305e9fafeb --- /dev/null +++ b/docs/pt/modules/features/pages/participants.adoc @@ -0,0 +1,53 @@ += Participants + +:page-partial: + +*Participants* of Decidim can be grouped into three different categories: + +* *Visitors* have access to all of the platform's content without having to sign up or provide any information. +* *Registered* participants can submit proposals and comments, sign-up for meetings, endorse content, follow other Participants and receive notifications, mentions and private messages. +Users may register *directly* on the platform or through gateways of other *social networks* (Facebook, Twitter or Google+). To register directly, users will need to associate a email account and a password to the user-account. + Registered participants can also have their account officialized (meaning their username is accompanied by a special symbol indicating they really are who they claim they are on their profile). +* *Verified* participants can make decisions. Decidim offers different ways to carry out this verification. + +Administrators can *manage permissions* for *Registered* users and *Verified* users selectively. For example, _proposal creation_ can be activated for both Registered and Verified users but _supports to proposals_ only for Verified users. + +== Public registration of administrative activity + +The manual verification of participants, as well as other administrative actions can create vulnerability or may enable the administrators to use the platform in an abusive manner. To avoid it, Decidim includes a *public register of administrative activities* so these actions can be publicly and transparently audited. + +== User profile and personal settings + +There is a **user-profile page **where participants can make **changes to their data **(such as email account, password etc.), upload and enable an *avatar* image, set notifications or delete their account. + +The user-profile page also allows participants to add *additional information* to include interests and skills, voluntarily and by selecting the level of visibility of that information. This allows personal notifications to be sent and participants can be matched with others for collaborations. + +== Monitoring and notifications + +Participants receive *automated notifications* regarding the content they have created: responses to comments and comments on their proposals, as well as the results of their proposals (whether accepted or rejected). + +Besides automated notifications, participants can decide to **follow any element** of the system (other proposals, results, processes, assemblies, initiatives, groups or users etc.), and receive notifications. + +== Communication among participants + +**Instant messages **can be sent to participants through the platform, who will receive an email notification. + +*Mentions* can also be added (in the comments section) to any registered user and a notification will be automatically sent. + +== User groups + +Participants can register with the platform as members of one or several organisations/collectives. Once the organisation and membership status have been verified, participants can carry out actions (make proposals or submit comments, etc.), with their user or with the organisation name. + +User groups can also manage user permissions and administration roles assigned to groups, as well as private debate spaces or share information among group users, for example, who attended an in-person meeting. [Feature currently missing] + +== Engagement + +Decidim has a series of features geared to _gamifying_ the platform, to *attract and keep a growing number of participants interested*, as well as to promote practices that boost democratic quality and collective intelligence in participation [the gamification system is expected for 2018Q2-3, AjB-Lote1]. + +The gamification system includes two modes, one centred on users and the other on proposals. + +* The **user-centred **mode incorporates a *points system* based on several criteria (degree of detail of its user profile, number of invitations to others on the platform, number of proposals made and commented on, number of comments, number of endorsements obtained, number of followers, etc.) + +The combination of these and other indicators is used for generating gamification routes for each user and defining threads such as: most participatory person in the district, leadership in discussions and debates, etc. + +* Gamification *centred on proposals/initiatives* allows promoters, signatories and followers to boost interaction with them by incorporating several *metrics* (number of times that the proposal is shared in social networks, degree of controversy (number of positive and negative comments), quality of deliberation (depth of observation tree), number of hits received, etc. \ No newline at end of file diff --git a/docs/pt/modules/features/pages/participatory-spaces.adoc b/docs/pt/modules/features/pages/participatory-spaces.adoc new file mode 100644 index 0000000000..69a8dcab3e --- /dev/null +++ b/docs/pt/modules/features/pages/participatory-spaces.adoc @@ -0,0 +1,66 @@ += Participatory spaces + +:page-partial: + +Participatory spaces define the main participatory channels. They are displayed in the platform's main upper menu. + +The basic logic behind Decidim's structure is that *components work together in the participatory spaces*. There are different types of spaces (initiatives, processes, consultations and assemblies) and various instances within each type (a process for an election and another for participatory budgets, council body for neighbourhoods and another for workers, an initiative to call for a change in legislation and another for something to be included in a plenary meeting agenda, etc.). + +== Processes + +Participatory processes require a general *configuration* form with the following fields: Title or name of the process; short name for URL; hash tag (used as a reference for communications on social networks); short description; long description; home page image; banner image; date of start and finish; field; promoter group (responsible for the participatory process on a political level, may be the local authority or a group made up of the authority’s experts/politicians and associations and other organisations); who it is aimed at; goal of the participatory process and participatory structure. The participatory process allows *accompanying documents* to be added. + +Participatory processes are divided into *stages* (e.g. 1. Information and convening stage; 2. diagnostics stage; 3. proposals stage; 4. prioritisation stage; 5. decision stage; 6. evaluation stage and 7. results-monitoring stage). Each stage includes the following configuration fields: title, description, start date, end date. + +*Highlights of announcements or texts* may also be displayed in the processes, both on the home page and in the heading of each component (proposals, discussions and debates, etc.) Different messages can be configured depending on the particular stage of a process. + +A *participatory process configuration tool* enables the simple activation and deactivation of stages and their components. Decidim's process configuration tool is one of its most powerful features, enabling total flexibility in designing participatory processes according to the various realities and forms of citizen participation. + +The feature of **process groups **enables various processes to be grouped, such as by the Participatory Budgets of different districts or neighbourhoods. + +Participatory processes may have one of the following *process statuses*: 0) published or unpublished; 1) open (started); 2) closed (the participatory process has ended but its results are still under way; 3) finished (both the process and its results phase are complete) and 4) future (has not yet started). + +A process can be **highlighted** (which increases its visibility on the homepage). + +There is also the possibility to **copy participatory processes** from the administration panel. This feature enables process models to be designed and copied so that certain details can be configured within the new processes, avoiding the need to create them from scratch. + +== Assemblies + +Decidim allows the **creation and configuration** of participatory or government *assemblies* (government or participatory bodies; councils; work groups, etc.) defined as structured participant groups which, whether on an individual or representative level, meet up periodically, with the authority to make proposals and decisions. + +The *assemblies section* allows you to see a full list of all of the assemblies that are activated and configured from the administration panel. The basic *settings* require the following fields to be completed for each body: name; image; scope (global, territorial or sectoral); body’s function (purpose of action); type of body (government, executive, consultative / advisory, participatory, work group, commission etc.); creation date; created on the initiative of (City Council, citizens or others); duration (indefinite or fixed, in the latter case, finishing date); date of inclusion in Decidim; date of closure and reason; how it is organised (functions, powers etc.); composition; if it can be joined and how to do that; method of choosing members; type/ function of members within the body; composition of internal work groups as monitoring or advisory committees; characteristics of the body; the body's social networks (name of social network and link) and the body’s next meetings. + +* *Convening meetings*: enables to send automatic meeting invitations, collaboratively create agendas, and register attendance. For a complete list of features see the "meetings" component. +* *Assembly’s characteristics*: open, public, transparent and other characteristics regarding the level of participation that the assembly allows. +* *Composition:* This enables the composition of the body to be defined in greater detail, using the profiles of participants associated with the body as well as other characteristics. A display of the body’s structure is automatically generated based on the composition of participating members: +** *Types of members*: Chair, deputy chair, secretaries, others +** *Membership origin*: by draw; direct election; representation from another assembly; government representation etc. +** *Internal work groups*: for the creation of sub-assemblies. Work groups will be able to relate to the body they belong to +** *Characteristics*: Open/closed; transparent; with various access permits. +* *Display*: allows us to view internal data about each body as well as the associations between assemblies +** *Composition*: the structure of a body is shown in the form of a circle diagram +** *Organisation charts*: allow us to view the hierarchy or network of assemblies and their associations. +* *Map and calendar*: allow us to view the location of all the assemblies on a map and calendar +* *Involvement with other spaces and components* +** *Involvement with processes*: assemblies can be promoter groups, start a process or make proposals within a process. A body’s composition may be the result of a process (for electing posts) +** *Proposals and results*: a body can generate its own proposals or results. +*** It shows how the proposal was agreed on (by consensus, majority, number of votes etc.). +** *Meetings*: assemblies will have a list of associated meetings, but some features may jump from one meeting to another, such as citizen initiatives to include an item in an agenda. Likewise, it must be possible to view minutes separately from the meeting, as they are associated directly with the body . + +== Initiatives + +*Initiatives*. This participatory space allows citizens to make proposals and collect the *requisite number of signatures and/or endorsements* depending on type (the various types are set out in the municipal regulations), giving rise to the start of the administrative procedure for its processing and citizen monitoring. + +Initiatives operate as follows: + +* Any person or citizen association can make a citizen-initiative proposal. There are *several types of initiatives* with various numbers of endorsements/signatures required for their processing (these are all configurable). From the initiative-creation page, a description of each of the methods, the number of signatures required and examples (e.g. explanatory videos) can be viewed. +* To avoid duplicates, once an initiative has been created, the system will present suggestions for **similar initiatives** before continuing with the following step. Once similar proposals have been ruled out, the specific form will be shown for each type of initiative, along with the minimum number of endorsements required. The creator then has an URL at their disposal which can be used to invite others to join in and endorse the initiative. A map is also displayed showing the locations of meeting points to collect signatures should there be any. +* Once the the initiative has been created, the initiative will move to a **technical moderation and validation** stage, where the City Council’s staff can respond in various ways (by approving it, rejecting it or suggesting amendments). +* Initiatives can be monitored and **notifications received on updated** statuses, in addition to which their individual promoter or group can periodically send information newsletters to other uses of the platform who have opted to follow the initiative. +* On reaching the specified end date, an initiative can have two possible states: +** *Rejected*: where it fails to reach the minimum number of signatures, a message will be shown stating "does not meet the number of signatures required" and the initiative's creator will be notified. +** *Accepted*: where it has achieved a sufficient number of signatures or endorsements it will be accepted and the corresponding procedure will start. + +== Consultations + +Consultations (a voting procedure where all of the organisation’s participants are called to vote on specific questions), allows participants **to find out about current or prospective consultations**, *discuss and debate* the consultation’s subject area and *monitor* the results. It also provides a *gateway to an e-voting system* which is external to Decidim but integrated in the interface in order to manage and verify identities. \ No newline at end of file diff --git a/docs/pt/modules/publications/pages/catalan.adoc b/docs/pt/modules/publications/pages/catalan.adoc new file mode 100644 index 0000000000..129537fc69 --- /dev/null +++ b/docs/pt/modules/publications/pages/catalan.adoc @@ -0,0 +1,5 @@ += Catalan Publications + +== Media + +* Barandiaran, X. E., Monterde, A., & Pin, G. (2016). Decidim.barcelona: autonomía, participación y software libre - Software libre. In Xarxaip (Ed.), _Programari lliure i de codi obert-Societat lliure i govern obert._ (pp. 31–32). http://softwarelibre.xarxaip.cat/18.html \ No newline at end of file diff --git a/docs/pt/modules/publications/pages/english.adoc b/docs/pt/modules/publications/pages/english.adoc new file mode 100644 index 0000000000..15df7cacb3 --- /dev/null +++ b/docs/pt/modules/publications/pages/english.adoc @@ -0,0 +1,19 @@ += English Publications + +IMPORTANT: Barandiaran, X., Calleja-López, A. & Monterde, A. (2018). Decidim: political and technopolitical +networks for participatory democracy. __Decidim’s project white paper__. (You can http://ajbcn-meta-decidim.s3.amazonaws.com/uploads/decidim/attachment/file/2005/White_Paper.pdf[download an alpha version of the document here]) + +== Academic + +* Borge, R., Balcells, J. , Padró-Solanet, A. (2019) "A model for the analysis of online citizen deliberation: Barcelona case study", International Journal of Communication. 13, pp. 5671–5695. https://ijoc.org/index.php/ijoc/article/view/10805/2873 + +== Media + +* Preville, P. (2019, November 13) _How Barcelona is leading a new era of digital democracy_ https://medium.com/sidewalk-talk/how-barcelona-is-leading-a-new-era-of-digital-democracy-4a033a98cf32 +* Graham, T. (2018, May 18) - _Barcelona is leading the fightback against smart city surveillance_ https://www.wired.co.uk/article/barcelona-decidim-ada-colau-francesca-bria-decode +* Barandiaran, X. E., & iaran. (2018, April 24). _What is Decidim?_ https://xabier.barandiaran.net/2018/04/24/what-is-decidim/ + +pass:[
][.biblio-abstract-label]#Abstract.# Many people ask what is this project called “Decidim” to which I have devoted my last two year of work with complete dedication. I wanted to share a brief summary here. This text is the…pass:[
] +* Stark, K. (2017, May 9). _Barcelona’s Decidim Offers Open-Source Platform for Participatory Democracy Projects_. https://www.shareable.net/blog/barcelonas-decidim-offers-open-source-platform-for-participatory-democracy-projects + +pass:[
][.biblio-abstract-label]#Abstract.# The word Decidim translated from Catalan means we decide, and it’s the name of Barcelona’s digital infrastructure for participatory democracy. One part functional database and one part political statement, organizers say Decidim is key to a broad digital transformation that is taking place in Barcelona — its institutions, markets, and economy.pass:[
] +* _Decidim: Free Open-Source participatory democracy for cities and organizations | Hacker News_. (n.d.). Retrieved January 21, 2019, from https://news.ycombinator.com/item?id=18952328 +* Oikos Denktank. (n.d.). _(W)E-Democracy - speaker 5 (1) - E-democratic cities - Arnau Monterde and Xabier E. Barandiaran_. Retrieved August 30, 2017, from https://www.youtube.com/watch?v=qrQ8ij4Ekag \ No newline at end of file diff --git a/docs/pt/modules/publications/pages/french.adoc b/docs/pt/modules/publications/pages/french.adoc new file mode 100644 index 0000000000..6d095bf12a --- /dev/null +++ b/docs/pt/modules/publications/pages/french.adoc @@ -0,0 +1,8 @@ += French Publications + +== Media + +* Politics, O. S. (2018a, March 7). _Decidim, la plateforme de participation citoyenne d’envergure européenne_. https://medium.com/open-source-politics/decidim-la-plateforme-de-participation-citoyenne-denvergure-europ%C3%A9enne-9b3cb92681e5 + +pass:[
][.biblio-abstract-label]#Abstract.# Cet article est basé sur une série de conversations que nous avons eues avec Pablo Aragon, Xabier Barandiaran, Josep Jaume[1] et de…pass:[
] +* Politics, O. S. (2018b, March 7). _Le Contrat Social de Decidim, un texte fondateur_. https://medium.com/open-source-politics/le-contrat-social-de-decidim-un-texte-fondateur-7a8916213270 + +pass:[
][.biblio-abstract-label]#Abstract.# Nous reproduisons ici, pour la première fois en français, le « Contrat Social » de la plateforme Decidim, traduit du catalan en passant…pass:[
] \ No newline at end of file diff --git a/docs/pt/modules/publications/pages/german.adoc b/docs/pt/modules/publications/pages/german.adoc new file mode 100644 index 0000000000..14d09475be --- /dev/null +++ b/docs/pt/modules/publications/pages/german.adoc @@ -0,0 +1,10 @@ += German Publications + +== Media + +* Macher, J. (2020, March 4), _Barcelonas Erfolg mit der Plattform Decidim. Deutschlandfunk_ https://www.deutschlandfunk.de/wenn-buerger-politik-gestalten-barcelonas-erfolg-mit-der.795.de.html?dram:article_id=471680 +* Huber, P. (2019, May 29), _In Barcelona schreiben die Bürger das Regierungsprogramm selbst – und machen ihre Stadt sozialer_ https://kontrast.at/barcelona-smart-city-wirtschaft/ +* _Wie Barcelona eine offene “Smart City” im Dienste des Gemeinwohls plant_. (2018, September 9). https://netzpolitik.org/2018/freie-software-als-oeffentliches-gut-und-was-rathaeuser-dafuer-tun-koennen/ + +pass:[
][.biblio-abstract-label]#Abstract.# Im Interview spricht Francesca Bria, Barcelonas Chief Technology and Digital Innovation Officer, über “Digitale Soziale Innovation” und passende Strategien um die lokale Wirtschaft, Privatsphäre und die demokratische Teilhabe der Bürger*innen auch in einer “Smart City” langfristig zu sichern und zupass:[
] +* Macher, J. (n.d.). _Digital und demokratisch (neues deutschland)_. Retrieved December 7, 2019, from https://www.neues-deutschland.de/artikel/1129769.smart-city-digital-und-demokratisch.html + +pass:[
][.biblio-abstract-label]#Abstract.# In Barcelona bedeutet »Smart City«: Mehr Mitsprache für die Menschen. Andere Städte sind dem Beispiel gefolgt.pass:[
] \ No newline at end of file diff --git a/docs/pt/modules/publications/pages/italian.adoc b/docs/pt/modules/publications/pages/italian.adoc new file mode 100644 index 0000000000..4c85f3200d --- /dev/null +++ b/docs/pt/modules/publications/pages/italian.adoc @@ -0,0 +1,6 @@ += Italian Publications + +== Media + +* _Perché Barcelona Smart City è un modello per il mondo. Intervista a Francesca Bria_. (2018, August 13). http://www.designatlarge.it/barcelona-smart-city-francesca-bria/ + +pass:[
][.biblio-abstract-label]#Abstract.# La sovranità tecnologica ai cittadini. Ecco come Barcelona Smart City è diventata un modello per il mondo. Intervista alla CTO Francesca Briapass:[
] \ No newline at end of file diff --git a/docs/pt/modules/publications/pages/spanish.adoc b/docs/pt/modules/publications/pages/spanish.adoc new file mode 100644 index 0000000000..165abbb338 --- /dev/null +++ b/docs/pt/modules/publications/pages/spanish.adoc @@ -0,0 +1,34 @@ += Spanish Publications + +== Academic + +* Barandiaran, X. E., Calleja, A., Monterde, A., Aragón, P., Linares, J., Romero, C., & Pereira, A. (2017). Decidim: Redes políticas y tecnopolíticas para la democracia participativa. __Recerca__. Revista de pensament i anàlisi., 21, 137-150. https://doi.org/10.6035/Recerca.2017.21.8 +* Barandiaran, X. E. (2019). Tecnopolítica, municipalismo y radicalización democrática. In L. Roth, A. Monterde, & A. Calleja-López (Eds.), _Ciudades Democráticas. La revuelta municipalista en el ciclo post-15M_ (pp. 173–207). Icaria. http://ciudadesdemocraticas.tecnopolitica.net/ +* Borge, R., Balcells, J., Padró-Solanet, A., Batlle, A., Orte, A., & Serra, R. (2018) La participación política a través de la plataforma Decidim: análisis de 11 municipios catalanes. Paper presentado en el IX Congreso Internacional en Gobierno, Administración y Políticas Públicas GIGAPP. Madrid, 24-27 Septiembre. https://dryfta-assets.s3-accelerate.amazonaws.com/assets/congreso2018/abstractfiles/1536574598Laparticipacion_politica_a_traves_de_la_plataforma_Decidim.pdf +* Solà, J. (2018). _How are decisions made in Decidim.barcelona_ [Master Thesis, Pompeu Fabra]. https://repositori.upf.edu/handle/10230/36105 +* Barandiaran, X. E., Monterde, A., & Pin, G. (2016a). Decidim.barcelona: autonomia, participació i programari lliure. In Xarxaip (Ed.), _Programari lliure i de codi obert-Societat lliure i govern obert._ (pp. 31–32). +* Barandiaran, X. E., Monterde, A., & Pin, G. (2016b). Decidim.barcelona: autonomía, participación y software libre - Software libre. In Xarxaip (Ed.), _Programari lliure i de codi obert-Societat lliure i govern obert._ (pp. 31–32). http://softwarelibre.xarxaip.cat/18.html +* Aragón, P., Kaltenbrunner, A., Calleja-López, A., Pereira, A., Monterde, A., Barandiaran, X. E., & Gómez, V. (2017). Deliberative Platform Design: The Case Study of the Online Discussions in Decidim Barcelona. _Social Informatics_, 277–287. https://doi.org/10.1007/978-3-319-67256-4_22 + +pass:[
][.biblio-abstract-label]#Abstract.# With the irruption of ICTs and the crisis of political representation, many online platforms have been developed with the aim of improving participatory democratic processes. However, regarding platforms for online petitioning, previous research has not found examples of how to effectively introduce discussions, a crucial feature to promote deliberation. In this study we focus on the case of Decidim Barcelona, the online participatory-democracy platform launched by the City Council of Barcelona in which proposals can be discussed with an interface that combines threaded discussions and comment alignment with the proposal. This innovative approach allows to examine whether neutral, positive or negative comments are more likely to generate discussion cascades. The results reveal that, with this interface, comments marked as negatively aligned with the proposal were more likely to engage users in online discussions and, therefore, helped to promote deliberative decision making.pass:[
] + +== Media + +* Calleja-López, A., Monterde, A., & Barandiaran, X. E. (2017, October 18). _De las redes sociales a las redes (tecno)políticas: redes de tercera generación para la democracia del siglo XXI_ [Text]. http://tecnopolitica.net/content/de-las-redes-sociales-las-redes-tecnopol%C3%ADticas-redes-de-tercera-generaci%C3%B3n-para-la + +pass:[
][.biblio-abstract-label]#Abstract.# La sociedad deviene (en) red.pass:[
] +* _TIPS - Cultura digital - La democracia 2.0_. (2017, February 2). http://www.rtve.es/alacarta/videos/tips/tips-cultura-digital-democracia-20/3896837/ + +pass:[
][.biblio-abstract-label]#Abstract.# TIPS - Cultura digital - La democracia 2.0, Tips online, completo y gratis en RTVE.es A la Carta. Todos los programas de Tips online en RTVE.es A la Cartapass:[
] + +[[ref-4881969-FWFFK8LS]] +* Bravo, E. (2016, July 20). _Cómo mejorar Barcelona con la participación de sus ciudadanos_ [Magazzine]. http://www.yorokobu.es/barcelona-participacion/ + +pass:[
][.biblio-abstract-label]#Abstract.# El cricket es un deporte muy curioso. Los partidos pueden durar días y, entre sus reglas, está la de parar el juego para tomar el té. Una de las potencias en este deporte es Paquistán, país del que procede parte de la población inmigrante de Barcelona. Muchos de los miembros de esa comunidad llevan años […]pass:[
] +* Barandiaran, X. E., Pereira, A., Monterde, A., & Calleja-López, A. (2016). _Plan de desarrollo Decidim Barcelona_. Ajuntament de Barcelona City Council. https://decidim-barcelona.s3.amazonaws.com/uploads/decidim/attachment/file/54/Plan_desarrollo_decidim.pdf + +pass:[
][.biblio-abstract-label]#Abstract.# Este documento detalla el futuro desarrollo de la plataforma digital de participación de l´Ajuntament de Barcelona, decidim.barcelona (disponible en URL https://decidim.barcelona). Los principales objetivos de la plataforma son articular, estandarizar, visualizar y comunicar todos los procesos de participación del Ajuntament de Barcelona y de la ciudad ofreciendo un servicio de infraestructura digital para la democracia directa y participativa a todas las escalas territoriales y asociativas de Barcelona. El documento detalla los objetivos de la plataforma, el flujo de desarrollo, las funcionalidades previstas, y un código ético-político.pass:[
] +* Participa Pamplona. (2017a, July 18). _Decidim Barcelona (Xabier Barandiaran)_. https://www.youtube.com/watch?v=zQYvdwGsg8M + +pass:[
][.biblio-abstract-label]#Abstract.# 1a Jornada de tecnología y democracia (24/05/2017). Infraestructuras digitales para la democracia. Decidim Barcelona Xabier Barandiaran. Coordinador del proyecto Decidim, asesor de la Regiduría de Participación del Ayuntamiento de Barcelona. Teknologia eta demokraziari buruzko 1. jardunaldia (24/05/2017). Demokrazia partizipatiborako azpiegitura digitalak Decidim Barcelona Xabier Barandiaran. Decidim proiektuaren koordinatzailea eta Bartzelonako Udaleko Partaidetza zinegotziaren aholkulariapass:[
] +* Participa Pamplona. (2017b, July 18). _Hacia una democracia participativa inteligente y democrática (Asier Gallastegui y Asier Amezaga)_. https://www.youtube.com/watch?v=z4FTUt8wnRs + +pass:[
][.biblio-abstract-label]#Abstract.# 1a Jornada de tecnología y democracia (24/05/2017). Infraestructuras digitales para la democracia. Decidim Barcelona Xabier Barandiaran. Coordinador del proyecto Decidim, asesor de la Regiduría de Participación del Ayuntamiento de Barcelona. Teknologia eta demokraziari buruzko 1. jardunaldia (24/05/2017). Demokrazia partizipatiborako azpiegitura digitalak Decidim Barcelona Xabier Barandiaran. Decidim proiektuaren koordinatzailea eta Bartzelonako Udaleko Partaidetza zinegotziaren aholkulariapass:[
] +* Participa Pamplona. (2017c, July 18). _Metadecidim. Diseño participativo de la plataforma Decidim Barcelona (Andrés Pereira de Lucena)_. https://www.youtube.com/watch?v=I31yY4ip3rk + +pass:[
][.biblio-abstract-label]#Abstract.# 1a Jornada de tecnología y democracia (24/05/2017). Infraestructuras digitales para la democracia. Andrés Pereira de Lucena. Presidente de la asociación aLabs, coordinador técnico y arquitecto técnico de Decidim. Teknologia eta demokraziari buruzko 1. jardunaldia (24/05/2017). Demokrazia partizipatiborako azpiegitura digitalak Andrés Pereira de Lucena. aLabs elkarteko lehendakaria eta Dicidimen koordinatzaile teknikoa eta arkitekto teknikoa.pass:[
] +* Barandiaran, X. E., & Romero, C. (2018, May 17). _Presentació Decidim Ada Lovelace_. https://www.youtube.com/watch?v=-3eh_v339Cg +* Barcelona Activa. (n.d.). _Fòrum d’Economies Col·laboratives Procomuns 2017. Activitat paral·lela 3_. Retrieved January 13, 2018, from https://www.youtube.com/watch?v=IvDsgJcNxnQ +* Govern Digital. (n.d.). _CGDL2018 - Participació ciutadana: com fer de la política quelcom més proper_. Retrieved April 9, 2018, from https://www.youtube.com/watch?v=7LH6OItIrRU \ No newline at end of file diff --git a/docs/pt/modules/releases/pages/index.adoc b/docs/pt/modules/releases/pages/index.adoc new file mode 100644 index 0000000000..c9f9bc7423 --- /dev/null +++ b/docs/pt/modules/releases/pages/index.adoc @@ -0,0 +1,32 @@ += Releases + +Here you can find all the blog posts for every minor release. + +You can find all the releases (with minor and patches) at +https://rubygems.org/gems/decidim/versions[RubyGems.org] and +https://github.com/decidim/decidim/releases[GitHub]. + +* https://decidim.org/blog/2021-10-07-new-version-0-25-0/[Version 0.25 (2021-10-07)] +** xref:develop:guide_migrate_webpacker_module.adoc[Migrate to Webpacker a module] +** xref:develop:guide_migrate_webpacker_app.adoc[Migrate to Webpacker an instance app] +* https://decidim.org/blog/2021-03-26-new-version-0-24-0/[Version 0.24 (2021-03-26)] +* https://decidim.org/blog/2020-11-12-new-version-0-23-0/[Version 0.23 (2020-11-12)] +* https://decidim.org/blog/2020-09-02-new-version-0-22-0/[Version 0.22 (2020-09-02)] +* https://decidim.org/blog/2020-04-12-new-version-0-21-0/[Version 0.21 (2020-04-12)] +* https://decidim.org/blog/2020-02-06-new-version-0-20-0/[Version 0.20 (2020-02-06)] +* https://decidim.org/blog/2019-10-21-release-0-19-0/[Version 0.19 (2019-10-21)] +* https://decidim.org/blog/2019-07-03-release-0-18-0/[Version 0.18 (2019-07-03)] +* https://decidim.org/blog/2019-03-25-release-0-17-0/[Version 0.17 (2019-03-25)] +* https://decidim.org/blog/2019-01-14-release-0-16-0/[Version 0.16 (2019-01-14)] +* https://decidim.org/blog/2018-12-13-release-0-15-0/[Version 0.15 (2018-12-13)] +* https://decidim.org/blog/2018-08-30-release-0-14-0/[Version 0.14 (2018-08-30)] +* https://decidim.org/blog/2018-07-11-release-0-13-0/[Version 0.13 (2018-07-11)] +* https://decidim.org/blog/2018-06-13-release-0-12-0/[Version 0.12 (2018-06-13)] +* https://decidim.org/blog/2018-04-27-release-0-11-0/[Version 0.11 (2018-04-27)] +* https://decidim.org/blog/2018-03-29-release-0-10-0/[Version 0.10 (2018-03-29)] +* https://decidim.org/blog/2018-02-06-release-0-9-0/[Version 0.9 (2018-02-06)] +* https://decidim.org/blog/2017-12-21-release-0-8-0/[Version 0.8 (2017-12-21)] +* https://decidim.org/blog/2017-11-21-release-0-7-0/[Version 0.7 (2017-11-21)] +* https://decidim.org/blog/2017-09-21-release-0-6-0/[Version 0.6 (2017-09-21)] +* https://decidim.org/blog/2017-08-29-release-0-5-0/[Version 0.5 (2017-08-29)] +* https://decidim.org/blog/2017-07-17-release-0-4-0/[Version 0.4 (2017-07-17)] \ No newline at end of file diff --git a/docs/pt/modules/understand/pages/about.adoc b/docs/pt/modules/understand/pages/about.adoc new file mode 100644 index 0000000000..70b7e66f46 --- /dev/null +++ b/docs/pt/modules/understand/pages/about.adoc @@ -0,0 +1,90 @@ += About + +:experimental: +:icons: font +:page-partial: +:source-highlighter: highlightjs + +Decidim is a technopolitical project. A digital citizen-participation platform for a democratic city, made openly and collaboratively using free software.. It is a public commons infrastructure. Public because it enjoys a clear institutional impetus and commons because the code is open and free, in other words, anyone can see it, use it, copy it or amend it. It is a platform designed for coordinating citizen-participation processes and spaces, aimed at extending and facilitating access to citizen participation, opening new spaces for deliberation and collaboration in co-designing and co-producing public policies and new spaces for direct participation and democracy, thereby enabling disintermediation and cooperation between citizens, institutions and organisations of civil society. + +[#decidim.barcelona-fig] +._decidim.barcelona_. +image::decidim_barcelona_homepage.png[decidim.barcelona homepage] + +== Principles + +The Decidim platform has been designed and developed on the basis of a series of principles that promote further exploration and democratic innovation in the digital era as well as possibilities for improving, opening and developing citizen-participation policies and democratic forms of government at various levels, with special emphasis on the municipal scale. These principles are listed below: + +=== Technopolitical hybridisation + +This is key to preventing what we could define as “digital reductionism" (Calleja-López, 2017), a variant of technocentrism that puts the emphasis mainly or exclusively on the new participatory forms’ digital aspects and infrastructures, without dealing with the necessary powerful innovations in participatory practices, processes and culture that result from the hybridisation of face-to-face and digital participation. The hybrid approach attempts to connect spaces and activities taking place in decidim.barcelona with face-to-face spaces and activities and to consider the multiple variants that may arise for the purposes of boosting new forms of collective action. + +=== Enhanced and multi-modal participation + +The result of digital reductionism is to foster "click-participation" (Calleja-López, 2017), where participation becomes a definite phenomenon, first and foremost for its digital aspect, and, more specifically, for its convenience, speed and non-interference with other players and ideas. There is therefore a need to boost enriched forms of interaction between people in decidim.barcelona, ​​and between them, the platform’s contents and the hybrid participatory processes in a broader sense. This implies, on the one hand, enriching participatory processes with functions that go beyond voting (information and data displaying, deliberation etc.,) and, on the other, designing hybrid processes (e.g. Face-to-face meetings connected to the platform), which turn participation into an enhanced, comprehensive and multimodal participation, rather than reduced and “clicked”. + +=== Transparency and traceability + +With the exception of data that can affect user privacy, details of activities in participatory processes in digital media need to be absolutely traceable and public, if a new level of transparency in participation is to be fostered. Transparent participation and traceability are necessary conditions for confidence in these new processes. + +=== Opening/ releasing + +The principles of releasing and opening refer firstly to the platform’s code and functions, secondly to the processes’ data and contents and thirdly and more generically, to the processes themselves. This implies, in the first two cases, using the most exacting share-alike licenses and standards (e.g. Affero GPLv3 for code, CreativeCommons for content, Open Access Database Licences for data). Decidim needs to be a free-software platform that allows anyone to see, amend and reuse the code it is based on. In the case of processes, these principles connect to several others that we mention in this list, such as transparency and accessibility, and aim to make these processes as participatory and reappropriable as possible on multiple levels. + +=== Cross-cutting participation + +Dealing with many of the keys of success for recent initiatives such as 15M, decidim.barcelona's deployment and communication strategies and media processes need to be geared towards achieving legitimacy first and then participation, within reach of as many social and political groups as possible. + +=== Knowledge, technoscience and collective intelligence + +The new forms of participation should benefit from the possibilities that are offered by both popular and expert knowledge from citizens and data science (data occasionally from the participatory processes themselves) to improve decision-taking and participation. An informed and expert participation, capable of catalysing social knowledge. + +=== Collective and networked participation + +One of the central challenges to achieiving an “enhanced”, digitally mediated, participation, is boosting its collective dimension in the face of atomising tendencies, often resulting from remote-participation conditions. This implies using functions that boost interactions between users in collective processes, whether on a platform or face to face. Digital or face-to-face discussion and deliberation spaces are necessary for coordinating better participation. + +=== Public-commons orientation, reappropriation and recursive participation + +Democracy’s new digital infrastructures have to be a space belonging to, by and for the commons. If democracy is to be promoted, infrastructures themselves have to be radically democratic. This implies consideration of an innovative and alternative model to the one for privatising the public sphere. To this end, Decidim needs to be a digital infrastructure of public-commons construction, ownership and use. In other words, what we define as "technopolitical commons", technology open to participation from everyone and anyone in its design and management, governed through distribution and with collective-production and share-alike models. Compared to the closed and exclusive platforms controlled by big corporations, Decidim is a democratic infrastructure for democracy. + +=== Technopolitical accessibility and training + +It also needs to be a public service, which is why it is essential to ensure citizens have access and training for taking part and exploiting all its potential. Promoting its grassroots-empowered use and use by excluded social groups is a key challenge. Both decidim.barcelona and digital participatory processes have to be governed by more demanding accessibility standards (e.g. Those of the Web Accessibility Initiative, WAI). + +=== Independence, empowerment and affiliation + +If social movements have demonstrated something over the last few years it is the central role played by self-organised collective action in kick-starting and guiding processes of change. In this regard decidim.barcelona and the processes using the platform need to boost social independence and self-organisation. In addition, political affiliation has to be a requisite feature in many of the platform’s processes, given that it is a key element of the platform’s medium- and long-term public and operative legitimacy. In other words, both independent social processes and bottom-up processes that are affiliated to public institutions. + +== Brief history + +During its public presentation in September 2015, Decide Madrid, a digital participatory platform launched by Madrid City Council and based on Consul software, began to experiment with various participatory processes, such as public debates and citizen proposals. Launched by Barcelona City Council, the Decidim Barcelona project, which was also based on Consul but with major changes and adapted to new needs, was presented in February 2016. ​​Its original goal was to coordinate the participatory process for drafting the Municipal Action Plan (PAM) as well as other participatory processes in the city in the future. Some 25,000 people signed up to it in under two months, 10,860 proposals were submitted, 410 meetings held and over 160,000 votes in favour collected. In this way a collaboration and deliberation space opened up between citizens, social organisations and Barcelona City Council. + +A great deal of interest was expressed in many municipalities in going ahead with similar processes, taking advantage of the technology used, given its success and the fact it was free and reusable. To be more specific: Coruña City Council, through its A Porta Aberta platform for Participatory Budget processes; Oviedo City Council, through its Consulta Oviedo, with a space for citizen proposals, and Valencia City Council, through decidimVLC, for preparing participatory budgets. There were also numerous cases of local authorities and other institutions showing great interest in the decidim.barcelona project and its implementation, such as the city councils of Hospitalet, Badalona, ​​Terrassa and Gavà, as well as Barcelona Provincial Council and the Localret Consortium. + +This series of changes and adaptations led in turn to a new technological need involving the adaptation of technology dealing with local-authority diversity, independence and the medium-term sustainability of the platform. Hence the establishment of a scalable and decentralised (or modular) development strategy enabling the entire project to be flexible and grow over time as well as generate a development, functional design and support community, which is sustained at both municipal and (more importantly) inter-municipal levels. + +This led Barcelona City Council to thoroughly reconsider the platform’s architecture and carry out a complete rewrite of the software based on the above-mentioned principles and needs. This rewrite gave rise to the Decidim project, a generic,participatory democratic framework based on Ruby on Rails, whereby any group, organisation or institution that wanted to use it could do so with minimum technical requirements. + +== Open development and free software + +The Decidim platform project has been developed with free software (both at its initial stage, based on Consul, and after the code's complete rewrite) and all its development has been open, enabling its entire development to be traceable and followed right from the very beginning. + +Its creation from free software refers to the fact that the platform's source code has a AGPL v3 Licence or GNU Affero General Public Licence,footnote:[https://github.com/decidim/decidim/blob/develop/LICENSE-AGPLv3.txt] which means the code has to allow for the possibility of its being consulted, copied, amended and reused, so long as the same licence is kept in any work or product derived from it. This is one of the licences that provides most freedom and is copyleft footnote:[Copyleft stands for a whole range of licences that can be applied to IT, artistic and other creations. Copyleft's supporters see copyright as a way of restricting people's right to make and redistribute copies of a work.[2] A copyleft licence, in fact, uses actual copyright legislation to ensure that everyone who receives a copy or derived work can use, amend and even distribute both the work and any derivative versions. In a strictly non-legal sense, then, copyleft is the opposite of copyright. (Wikipedia, 2017).]. In this regard, it makes sense for public authorities to make a clear commitment to this type of software, given that it is through such licences that we can receive social return on our public investments. + +The fact that the software has been openly developed means that the entire development process is transparent and accessible, in other words, that anyone can see, right from the start of the software's development, every change, contribution, community of developers involved etc. By the same token, transparency is becoming a fundamental principle not just in citizen participation but in software development too. + +All this has been done on a platform designed for open collaboration in software development known as GitHub.footnote:[https://github.com/] This platform enables access to codes and monitoring of the software's development. GitHub is designed to host Git repositories, though there are other alternatives to GitHub such as GitLab. + +== Decidim Barcelona + +Decidim Barcelona is the first instance of Decidim and the origin of the project. Decidim Barcelona came about from Barcelona City Council’s need to open up a technologically mediated citizen-participation process around the Municipal Action Plan (PAM), with three major goals: making a process that is transparent and traceable, expanding participation through the digital platform and integrating face-to-face and digital participation. + +This process received over 10,000 proposals and more than 160,000 votes in favour, with a final balance of 71% of citizen proposals accepted and included in PAM through over 1,600 initiatives. Decidim was originally designed exclusively for hosting this process though the need for extending it to other participation processes was quickly spotted. + +It was here that the idea for today's Decidim came about. A participatory platform that enables as many processes as people want, divided up into stages and with the possibility of setting several functions at each stage. The possibility was accordingly left open for designing new functions that could be integrated into the processes (surveys, collaborative-text drafting, result monitoring and so on), as well as the integration of new participatory spaces such as citizen initiatives and participation councils. + +Decidim Barcelona is currently (July 2017) hosting 12 participatory processes and already has some 26,600 participants, almost 12,000 collected proposals, 1,700 results, 670 face-to-face meetings and 185,000 votes in favour collected. The platform’s good results in Barcelona led to its extension to other municipalities, including Hospitalet de Llobregat, Sabadell, Badalona, Terrassa, Gavà, Sant Cugat, Mataró and Vilanova i la Geltrú. + +== Decidim Municipis + +Decidim is a multitenant platform, that is, a platform where as many instances can be used as needed, with a single installation. There are numerous successful examples of multitenant architectures in the world of software, such as the Wordpress free software for blogs project. It is especially useful for institutions that wish to provide Decidim as a third-party service. The Provincial Council's case is especially important as it can be used with a single installation - maintained, updated and sustained by a single entity - for as many local authorities as desired, thereby reducing installation and maintenance costs and providing technological solutions for improving citizen participation in medium-sized and small local authorities that would otherwise have much less access to such resources. \ No newline at end of file diff --git a/docs/pt/modules/understand/pages/background.adoc b/docs/pt/modules/understand/pages/background.adoc new file mode 100644 index 0000000000..d2b4cce858 --- /dev/null +++ b/docs/pt/modules/understand/pages/background.adoc @@ -0,0 +1,29 @@ += Background + +:experimental: +:icons: font +:page-partial: +:source-highlighter: highlightjs + +== Citizen participation in the Network Society + +Becoming a network(ed) society. Information and communication technologies (henceforth, ICTs) and their associated practices are bringing about irreversible changes to the social and political landscape. From the smallest residents’ association to the most intensive electoral campaign, from a neighbourhood organisation or social movement to the European Union, political relations are being increasingly determined by the use of digital devices and technologies. It seems that the future of democratic participation and collective action will be through the development of digital platforms and hybrid processes, which renovate traditional practices and combine them with digital ones (Fuchs, 2007). + +This transition coincides with the decline of representative systems over the last few decades (Norris, 1999; Pharr & Putnam, 2000; Tormey, 2015), which has contributed to the questioning of the legitimacy and sense of democracy itself, reduced and often identified with this system (Crouch, 2004; Keane, 2009; Streeck, 2016). Several authors have used the terms “post-representation" to refer to the emptying of power and meaning of the representative institutions that go from globalisation to disaffection and divestment of citizens (Brito Vieira and Runciman, 2008; Keane, 2009; Rosanvallon , 2011; Tormey, 2015). The various attempts to boost participation have proved unequal to the task of reversing these trends (Keane, 2011; Tormey, 2015). + +This long-running political crisis comes on the back of the financial and economic crisis of 2008, and is directly linked to this earlier crisis. Even so, millions of people mobilised in the face of the crisis, intent not only on demanding but also on experimenting and building a real democracy. The key development here was the 15M network-movement. It is in the context of technological hypermediation that information and communication technologies, used in the 1980s and 1990s to accelerate financial flows and globalisation (Castells, 1996), became crucial spaces and devices for a multitudinous re-appropriation of policy, as well as democratic experimentation (Martinet Ros et al., 2015). + +After four years of numerous successes and failures, new political citizen initiatives in May 2015 managed to take power in Spain’s main cities, including Barcelona. In this respect they were riding on the tide of countries such as Iceland, where the economic crisis had led to a period of citizen re-appropriation of the institutions and fertile democratic innovation, based on an intense and creative use of ICTs. + +Since 15M, most of the experiments aimed at introducing new forms of participatory and deliberative democracy (Barber, 1984; Habermas, 1994, 1996; Della Porta 2013) have been technologically mediated. As can be seen from the case of Iceland (as well as others, such as Finland), the democratising processes of citizen mobilisation and empowerment require technopolitical coordination (Rodotà 1997; Martinet Ros et al., 2015) to achieve their maximum richness and capacity. Technopolitics stems from the politicisation of technologies and technological re-assemblage of politics as well as the co-development and co-production of politics and technologies. As for forms of technopolitical participation and deliberation, digital and face-to-face practices, spaces and processes connect to and feed back from one another, acquiring a multi-layered dimension. These participatory devices are geared towards increasing the number, variety and parity of players that "take part" in the city’s common government, expanding and enriching the areas, forms and periods in which it takes place and helping to boost a collective intelligence (Levy, 1997) capable of taking on the complexity of contemporary urban life. Technopolitics needs to tackle the numerous limits of what has been called “digital democracy" (Hindman, 2008) starting by freeing itself from the technocentric and technooptimistic narratives around digitally mediated participation. + +New participatory processes are being built within a context full of opportunities and fraught with risks. The 2015 government programme and Municipal Action Programme (PAM) for 2016-2019 drawn up for the city of Barcelona gives centre stage to participation and, more specifically, innovation and the development of new democratic participatory models. PAM, ​​the development of which involved thousands of people, meets a clear social demand that calls for ​​a thorough redesign of the democratic system and its participatory mechanisms. This, however, is occurring in a context defined by: a) large politically, economically and socially excluded population sectors; b) increasing difficulty accessing participation as a result of the economic-crisis situation; c) a crisis over the legitimacy and operability of the representative democratic system and public authorities; d) an enormous technological dependency on private corporate infrastructures and services; e) a legal and political context adverse to direct democracy, social independence and territorial sovereignty; f) an abysmal institutional disadvantage in understanding social complexities through techniques analysing social-behaviour data and models that big technological companies and digitally coordinated services possess. + +[[h.2et92p0]] +== Data Control and digital infrastructures for democracy + +In the context of new configurations of informational capitalism (Castells, 1996), so-called “data capitalism" (Lohr, 2015; Morozov, 2015) or "surveillance capitalism" (Zuboff, 2015), the new digital infrastructures of democracy run the risk of contributing to dynamics contrary to such principles as privacy and technological sovereignty. Exclusive, closed and opaque platforms geared towards exploiting social activities for corporate profit are operating as non-democratic spaces occupying more and more areas of social life. This model is particularly dangerous in relation to the new infrastructures and processes of democracy that we are talking about. + +Compared to the exclusive and corporate infrastructural model, the public commons model, which we believe decidim.barcelona’s development needs to be inspired by, ​​is geared towards developing platforms where design, ownership and management are free, open and participatory, shared between public workers and citizens (organised or not). Under this model, not only the platform's code but also the data that are generated in it are processed and appropriated according to the logic of public and common management. The opening-up of everything and anything to participation, the hallmark of the commons as a political principle (as opposed to the private and even state-public sphere --- Laval & Dardot, 2015), seems to be a basic condition for participatory infrastructures to be fully functional. Participation has to be recursive here: it needs to help to define and establish the infrastructural conditions of its own existence and to affect the design, development and management of digital participatory platforms as well as the processes and results (e.g. data) that are generated in them. + +Put in the hands of large digital-service corporations, the algorithmic organisation of social life and the area we are concerned with, political participation, poses a risk to democracy and technological sovereignty that only a public commons effort in digital infrastructures can reverse. Only platforms based on free, open, transparent, secure and public-commons management software offer guarantees when it comes to building democracies of greater quality. The democracy of the future has to be built, then, on democratic infrastructures. \ No newline at end of file diff --git a/docs/pt/modules/understand/pages/social-contract-ca.adoc b/docs/pt/modules/understand/pages/social-contract-ca.adoc new file mode 100644 index 0000000000..cedfaf7ea8 --- /dev/null +++ b/docs/pt/modules/understand/pages/social-contract-ca.adoc @@ -0,0 +1,63 @@ += Contracte Social de Decidim + +[NOTE] +==== +Pots llegir el Contracte Social de Decidim en altres idiomes: xref:understand:social-contract-es.adoc[Castellano] - xref:understand:social-contract.adoc[English] + +Si vols traduïr-ho al teu idioma sisplau https://decidim.org/contact[contacta amb nosaltres]. +==== + +Codi de garanties democràtiques i de col·laboració oberta + +Aquest és el contracte social que tots el membres del projecte Decidim es comprometen a seguir. + +La utilització de la plataforma Decidim per part de qualsevol ajuntament o qualsevol altre ens municipal o supramunicipal, així com altres organitzacions, comporta l'assumpció total i íntegra d'aquest codi. + +== Programari lliure i continguts oberts + +El codi de la plataforma, així com els mòduls, llibreries o qualsevol altre codi que es desenvolupi per al seu funcionament, serà sempre programari lliure amb llicència https://www.gnu.org/licenses/agpl-3.0.en.html[Affero GPLv3 o posterior] en el cas dels nous desenvolupaments, i de llicències compatibles amb aquesta en el cas de reutilització d’altres codis. + +Així mateix, els continguts, dades, APIS i/o interfícies que el Decidim faci servir per interactuar amb qualsevol tipus d’usuari, compliran amb estàndards oberts i interoperables (ex. OpenID, RSS, OStatus, etc.), tendint sempre al màxim nivell d’integració amb els estàndards oberts més estesos. + +De cara a maximitzar la transparència i la col·laboració ciutadana en els processos, òrgans i mecanismes de participació, el contingut de textos, gràfiques, fonts tipogràfiques, àudio, vídeo o altres elements de disseny, es farà públic amb una llicència https://creativecommons.org/licenses/by-sa/4.0/legalcode[Creative Commons By-Sa]. + +Igualment les dades de la plataforma, especialment totes aquelles que es puguin recollir de manera sistemàtica a través de scrappers o altres tècniques de consulta massiva, seran publicades amb llicències http://opendatacommons.org/licenses/odbl[Open Data Commons Open Database License], en formats estandarditzats i accessibles (tipus CSV, JSON, etc.) i, sempre que sigui possible, amb eines que facilitin l’anàlisi i visualizació d’aquestes dades. + +== Transparència, traçabilitat i integritat + +La plataforma, així com la seva configuració, desenvolupament, implementació i ús actual o futur han de garantir i maximitzar en tot moment la transparència, la traçabilitat i la integritat dels diagnòstics, propostes, debats, decisions, o qualsevol altre objecte, mecanisme o procés de participació. + +Per transparència entenem que totes les dades relacionades amb aquests mecanismes i processos estiguin disponibles per a baixar, analitzar i tractar, seguint els formats i estàndards de compartició més exigents (accessibilitat, multi-format, etc.). + +La transparència serà una condició necessària pel seguiment dels processos i mecanismes de participació, però mai, i en cap cas, pel tractament de dades personals que vagin contra la defensa de la privacitat de la persona participant en la plataforma. + +Entenem per traçabilitat de les propostes la possibilitat de realitzar un seguiment complet, cap enrere (passat) i cap endavant (futur), de tot el que ha passat amb les propostes, plans, reglaments o qualsevol altre tipus d'objecte de decisió o participació inclòs en un procés o mecanisme. La plataforma ha de mostrar en tot moment com, per què, per qui i amb quin tipus de garanties un determinat objecte d'un procés de participació va ser descartat, aprovat o bloquejat. + +Entenem per integritat l'autenticitat d'un determinat contingut, i la garantia que aquest no ha estat manipulat o modificat sense que aquesta modificació quedi clarament registrada i sigui visiblement verificable i contrastable, amb l'objecte d'evitar la manipulació de les propostes o resultats dels processos o mecanismes de participació. + +== Igualtat d’oportunitats i indicadors de qualitat + +Al costat de les garanties anteriorment definides, la plataforma es compromet a garantir la igualtat d'oportunitats per a totes les persones, així com les seves propostes o altres contribucions que pugui acollir. La plataforma oferirà les mateixes oportunitats de partida a tots els objectes participatius (propostes, debats, etc.) perquè siguin vistos, discutits, comentats, valorats o tractats, sense discriminació de cap tipus. En aquest sentit la identitat digital de les persones usuàries de la plataforma serà sempre personal i intransferible, la verificació que otorgui drets de decisió a la plataforma ha de ser a més única, i serà l’ens responsable l’encarregat de garantir la no-suplantació d’una persona física o jurídica. + +Amb l’objectiu de garantir la qualitat democràtica de la plataforma es fomentarà l’ús d’indicadors de qualitat a partir dels processos i mecanismes de participació, així com l’activitat de les persones usuàries de la plataforma. També es fomentarà la compartició de la configuració dels diferents components així com de les dades obertes per a la definició d’aquests indicadors. + +La igualtat en la participació política de la ciutadania és un dels principis fonamentals del sistema democràtic i la plataforma, no només ha de garantir la igualtat d’oportunitats pel que fa als usos i funcionalitats, sinó també el dret d’accés. En aquest sentit cada ens promotor de la plataforma es compromet a impulsar aquelles accions que avancin en la direcció de facilitar i acompanyar l’accés a la plataforma a tota la ciutadania per igual de manera universal, propocionant les eines i els recursos adients per a que la plataforma estigui a l’abast de qualsevol persona que en vulgui fer ús. + +== Confidencialitat de les dades + +Es garanteix la confidencialitat i la privacitat de les dades personals que els ciutadans aporten per a participar en qualsevol de les funcionalitats i/o possibilitats de participació que ofereixi la plataforma DECIDIM en tot moment. En cap cas es cediran aquestes dades personals a tercers. Tampoc es farà un ús de les mateixes que vagi més enllà de l'estrictament necessari per a la gestió del registre d'usuaris o millores de la usabilitat de la plataforma. Sempre que la tecnologia de la plataforma ho permeti les expressions de preferències polítiques en els processos de decisió romandran inaccessible fins i tot per l’ administrador/a de la plataforma o els servidors. + +== Rendiment de comptes i responsabilitat + +S’adopta un compromís davant la ciutadania de respondre totes les aportacions i consultes en el mínim temps possible. També s’adopta el compromís de donar seguiment als resultats dels processos de participació, així com de donar resposta a aquelles demandes que específicament ho sol·licitin. Finalment s’assumeix el compromís d’estudiar la incorporació d’indicadors de seguiment dels processos de participació un cop estiguin finalitzats, per tal de poder avaluar de manera sistemàtica el seu desplegament. + +== Millora contínua i col·laboració interinstitucional + +S’adoptaran mecanismes de revisió i avaluació periòdica per facilitar la millora contínua de la plataforma. + +Es prioritzarà la col·laboració i l’intercanvi d’experiències entre institucions involucrades en el projecte, amb l’objectiu de millorar, corregir i generar nous desenvolupaments que ajudin a la millora contínua de la plataforma. + +En aquest sentit es facilitaran les condicions i entorns de col·laboració a l’hora de tirar endavant millores que apuntin a un benefici comú del conjunt de la plataforma, habilitant mecanismes de coordinació interinstitucional quan sigui necessari. +Condicions d’ús + +Totes els punts d’aquest codi han de quedar reflectits en les condicions d’ús que cada ens redacti per a la seva plataforma i mai entraran en contradicció. \ No newline at end of file diff --git a/docs/pt/modules/understand/pages/social-contract-es.adoc b/docs/pt/modules/understand/pages/social-contract-es.adoc new file mode 100644 index 0000000000..9f15eeba3b --- /dev/null +++ b/docs/pt/modules/understand/pages/social-contract-es.adoc @@ -0,0 +1,63 @@ += Contrato social de Decidim + +[NOTE] +==== +Puedes leer el Contrato Social de Decidim en otros idiomas: xref:understand:social-contract-ca.adoc[Català] - xref:understand:social-contract.adoc[English] + +Si lo quieres traducir a tu idioma por favor https://decidim.org/contact[contáctanos]. +==== + +Código de garantías democráticas y colaboración democrática + +Este es el contrato social que todos los miembros del proyecto Decidim se comprometen a seguir. + +El uso y desarrollo de la plataforma Decidim por parte de una institución o grupo social de cualquier tipo implica la aceptación total e integral del presente contrato social y su compromiso con el mismo. + +== Software libre y contenido abierto + +El código de la plataforma, junto con los módulos, las bibliotecas o cualquier otro código que se desarrolle para su funcionamiento y utilización, será siempre un software de código abierto libre con una licencia de https://www.gnu.org/licenses/agpl-3.0.en.html[Affero GPLv3 o versiones posteriores], siempre que el código se cree de nuevo y con licencias que sean compatibles con el anterior código cuando este se reutilice. + +Del mismo modo, el contenido, los datos, las API o cualesquiera otras interfaces que se utilicen para interactuar con cualquier tipo de usuario debe seguir estándares abiertos e interoperables (OpenID, RSS, OStatus, etcétera), procurando siempre maximizar su integración con los estándares abiertos de uso más amplio. + +Con el fin de maximizar la transparencia y la colaboración ciudadana en procesos, órganos y mecanismos participativos, el contenido, así como texto, gráficos, fuentes, audio, vídeo u otros elementos de diseño se publicarán bajo una licencia https://creativecommons.org/licenses/by-sa/4.0/legalcode[Creative Commons By-SA]. + +Los datos disponibles en la plataforma, especialmente todos los datos que se pueden recopilar de manera sistemática a través de scrappers u otras técnicas de consulta masiva, se publicarán bajo licencia http://opendatacommons.org/licenses/odbl[Open Data Commons Open Database], en formatos estandarizados y accesibles (CSV, JSON, etcétera) y, siempre que sea posible, con herramientas que faciliten el análisis y la visualización de datos. + +== Transparencia, trazabilidad e integridad + +La plataforma y su configuración, desarrollo, implementación y uso actuales o futuros deben asegurar y maximizar en todo momento la transparencia, trazabilidad e integridad de documentos, propuestas, debates, decisiones o cualquier otro objeto, mecanismo o proceso participativo. + +Por transparencia entendemos que todos los datos relacionados con todos estos mecanismos y procesos participativos están disponibles para su descarga, análisis y tratamiento, siguiendo los estándares y formatos más exigentes para compartir información (accesibilidad, multiformato, etcétera). + +La transparencia es una condición necesaria para el seguimiento de los procesos y mecanismos participativos, pero en ningún caso debe aplicarse al tratamiento de los datos personales o contra la defensa de la privacidad de las personas que participan en la plataforma. + +Entendemos por trazabilidad la capacidad de hacer un seguimiento completo de propuestas, planes, regulaciones o cualquier otro objeto de participación o decisión, tanto pasados como futuros, incluidos en un proceso o mecanismo. La plataforma debe mostrar en todo momento cómo, por qué, a través de quién y con qué garantías se desestimó, se aprobó o se bloqueó un determinado tipo de objeto de un proceso participativo. + +Entendemos por integridad la autenticidad de un contenido específico, con la seguridad de que no ha sido manipulado o alterado sin que esta modificación esté claramente registrada y sea visiblemente verificable y auditable. El objetivo de la integridad es evitar la manipulación de propuestas o resultados de procesos o mecanismos participativos. + +== Igualdad de oportunidades e indicadores de calidad + +Junto con las garantías previamente definidas, la plataforma promete garantizar la igualdad de oportunidades para todas las personas, así como para sus propuestas u otras contribuciones que la plataforma pueda albergar. La plataforma ofrecerá iguales oportunidades de inicio a todos los objetos participativos (propuestas, debates, etcétera) para que se puedan conocer, debatir, comentar, evaluar o tratar sin que exista discriminación de ningún tipo. En este sentido, la identidad digital de los usuarios de la plataforma será siempre personal y no transferible, la verificación que confiere derechos de decisión sobre la plataforma también debe ser única y la responsable de asegurar la no representación de una persona o entidad será la entidad administrativa responsable de la plataforma. + +La plataforma debe promover, con el objetivo de garantizar su calidad democrática, el uso de indicadores de calidad desarrollados a partir de los datos obtenidos de los procesos participativos y los mecanismos y la actividad de los usuarios. Se promoverá que se comparta la configuración de los diferentes componentes, así como datos abiertos, para la definición de estos indicadores. + +La igualdad en la participación política de la ciudadanía es uno de los principios fundamentales de cualquier sistema democrático, y la plataforma no solo debe garantizar la igualdad de oportunidades con respecto a los usos y las funciones, sino también el derecho de acceso. En ese sentido, la entidad a cargo de la plataforma asume el compromiso de promover acciones enfocadas a proporcionar acceso y apoyo a la plataforma para todos los ciudadanos por igual de manera universal. Las herramientas y los recursos apropiados a la plataforma están disponibles para cualquiera que los quiera usar. + +== Confidencialidad de los datos + +Se garantizará en todo momento la confidencialidad y privacidad de los datos personales que las personas puedan proporcionar para participar en cualquiera de las funcionalidades o posibilidades de participación que la plataforma proporcione. Los datos personales no se transferirán, en ningún caso, a terceros. Tampoco se utilizarán más allá de lo estrictamente necesario para el registro de usuarios y mejoras en la usabilidad de la plataforma. Siempre que la tecnología de la plataforma lo permita, la expresión de las preferencias políticas o la voluntad en los procesos de toma de decisiones seguirá siendo inaccesible incluso para el administrador de la plataforma o el servidor o servidores que la alojan. + +== Compromiso y responsabilidad + +Se establecerá un compromiso con los ciudadanos para responder a todas las consultas y contribuciones en el menor tiempo posible. También se adoptará un compromiso para dar seguimiento a los resultados de los procesos participativos y responder a esas demandas específicamente. Por último, se adoptará el compromiso de estudiar la incorporación de indicadores para el seguimiento de los procesos de participación una vez finalizados con el fin de evaluar sistemáticamente su implementación. + +== Mejora continua y colaboración interinstitucional + +Se estipularán mecanismos de revisión y evaluación periódica para facilitar la mejora continua de la plataforma. + +Se dará prioridad a la colaboración y al intercambio de experiencias entre las instituciones involucradas en el proyecto con el objetivo de mejorar, fijar y construir nuevos desarrollos para la mejora continua de la plataforma. + +En este sentido, se facilitarán las condiciones y los entornos de colaboración cuando se avance en mejoras que apunten a un beneficio común de toda la plataforma, y se permitirán mecanismos de coordinación interinstitucionales cuando sea necesario. +Términos de uso + +Todos los puntos de este código deben reflejarse en el acuerdo de licencia de usuario final (EULA, por sus siglas en inglés), documento que cada organización que presta servicios utilizando Decidim establece con los usuarios y que nunca deberá ser contradicho. \ No newline at end of file diff --git a/docs/pt/modules/understand/pages/social-contract.adoc b/docs/pt/modules/understand/pages/social-contract.adoc new file mode 100644 index 0000000000..240f49069d --- /dev/null +++ b/docs/pt/modules/understand/pages/social-contract.adoc @@ -0,0 +1,60 @@ += Decidim's Social Contract + +[NOTE] +==== +You can also read Decidim's Social Contract in other languages: xref:understand:social-contract-ca.adoc[Català] - xref:understand:social-contract-es.adoc[Castellano] + +If you want to translate it to your own language please https://decidim.org/contact[contact us]. +==== + +Code for democratic guarantees and open collaboration + +This is the social contract that all members of the Decidim community are committed to follow. + +By signing this Social Contract, any individual, institution or social group of any kind, commits to fulfill the principles established here when using, developing and participating in the community of Decidim. + +== Free software and open content + +The code of the platform, along with the modules, libraries or any other code that is developed for its functioning and deployment, will always be Free Open Source Software with an https://www.gnu.org/licenses/agpl-3.0.en.html[Affero GPLv3 license or later versions] whenever the code is newly developed and with licenses that are compatible with the above one when code re-used. + +Likewise, the content, data, APIs and/or any other interfaces that are deployed to interact with any type of user must follow open and interoperable standards (ex. OpenID, RSS, OStatus, etc.), always tending to maximize their integration with the most widely used open standards. + +In order to maximize transparency and citizen collaboration in participatory processes, organs and mechanisms, the content, text, graphics, fonts, audio, video or other design elements will be published under a https://creativecommons.org/licenses/by-sa/4.0/legalcode[Creative Commons By-SA]. + +The data available through the platform, especially all data that can be collected in a systematic way through scrappers or other techniques of massive consultation, will be published and licensed under http://opendatacommons.org/licenses/odbl[Open Data Commons Open Database License], published under standardized and accessible formats (such as CSV, JSON, etc.) and, whenever possible, with tools that facilitate the analysis and visualization of data. + +== Transparency, traceability and integrity + +The platform, and its current or future configuration, development, deployment and use must ensure and maximize, at all times, the transparency, traceability and integrity of documents, proposals, debates, decisions, or any other object, mechanism or participatory process. + +By _transparency_ we understand that all data related to all such participatory mechanisms and processes are available for download, analysis and treatment, following the most demanding standards and formats to share information (accessibility, multi-format, etc.). + +Transparency is a necessary condition for monitoring of participatory processes and mechanisms, but should never, in any case, be applied for the treatment of personal data or against the defense of the privacy of the people participating in the platform. + +We understand by _traceability_ the ability to fully track backward (past) and forward (future) what happened to the proposals, plans, regulations, or any other object of participation or decision included in a process or mechanism. The platform must at all times show how, why, by whom and with what guarantees a certain type of object of a participatory process was dismissed, approved or blocked. + +We understand by _integrity_ the authenticity of a specific content, and ensuring that it has not been tampered with or altered without this modification being clearly recorded and visibly verifiable and auditable. The goal of integrity is to avoid manipulation of proposals or results of participatory processes or mechanisms. + +== Equal opportunities and quality indicators + +Alongside the guarantees previously defined, the platform promises to ensure equal opportunities for all people, as well as for their proposals or other contributions the platform might host. The platform will offer equal starting opportunities to all participatory objects (proposals, debates, etc.) for them to be viewed, discussed, commented, evaluated or treated without discrimination of any kind. In this sense, the digital identity of the users of the platform will always be personal and not transferable, the verification that confers decision rights on the platform should also be unique, and it is the administrative entity in charge of the platform who should be responsible for ensuring non-impersonation of a person or entity. + +The platform should promote, with the aim of ensuring its democratic quality, the use of quality indicators developed on the basis of the data obtained from participatory processes, mechanism and user activity. Sharing of the setting of the different components as well as open data will be promoted for the definition of these indicators + +Equality in political participation of citizens is one of the fundamental principles of any democratic system and the platform, not only has to ensure equal opportunities with respect to the uses and functions, but also the access right. In this sense the entity in charge of the platform assumes the commitment to promote actions that advance in the direction of providing access and support to the platform for all citizens alike universally Giving tools and resources appropriate to the platform is available to anyone who wants to use. + +== Data confidentiality + +The confidentiality and privacy of the personal data that people might provide to participate in any of the functionalities and/or possibilities of participation that the platform provides shall be guaranteed at all times. In no case shall personal data be transferred to third parties. Personal data will not be used beyond what is strictly necessary for the purposes of user registration and improvements on the usability of the platform. Whenever platform technology makes it possible, the expression of political preferences or will in decision-making processes shall remain inaccessible even for the administrator of the platform or the server/s that host it. + +== Accountability and responsibility + +A commitment to citizens shall be taken to respond to all queries and contributions in the shortest time possible. A commitment shall also be adopted to follow-up the results of participatory processes and to respond to those demands which specifically request it. Finally, a commitment shall be taken to study the incorporation of indicators to monitor the participation processes once they are finalized, in order to systematically evaluate its implementation. + +== Continuous improvement and inter-institutional collaboration + +Mechanisms for periodic review and evaluation will be provided in order to facilitate the continuous improvement of the platform. + +Priority will be given to the collaboration and the exchange of experiences between the institutions involved in the project, with the aim to improve, fix and build new developments for the continuous improvement of the platform. + +In this sense, collaborative conditions and environments will be facilitated when moving forward improvements that point to a common benefit of the entire platform, enabling inter-agency coordination mechanisms when necessary. \ No newline at end of file diff --git a/docs/pt/modules/whitepaper/pages/decidim-a-brief-overview.adoc b/docs/pt/modules/whitepaper/pages/decidim-a-brief-overview.adoc new file mode 100644 index 0000000000..886e8bd9f5 --- /dev/null +++ b/docs/pt/modules/whitepaper/pages/decidim-a-brief-overview.adoc @@ -0,0 +1,16 @@ += Decidim: a brief overview +:experimental: +:icons: font +:page-partial: +:source-highlighter: highlightjs + +IMPORTANT: The content of this section is a fragment of Barandiaran, X., Calleja-López, A. & Monterde, A. (2018). Decidim: political and technopolitical +networks for participatory democracy. __Decidim’s project white paper__, pp. 7-26. (You can http://ajbcn-meta-decidim.s3.amazonaws.com/uploads/decidim/attachment/file/2005/White_Paper.pdf[download an alpha version of the document here]) + +*We have been busy building Decidim, it is now time to explain it*. The goal of this white paperfootnote:[A white paper is document that expresses the principles, vision, technical details and insights of a project with the goal of explaining, detailedly and contextually, its value, to help others understand, join and support the project.] is to explain in detail the nature of the Decidim project. The paper comes to fill a long lasting gap and outlines what the project is really about, why it is relevant, and how we (the Metadecidim community) have made it possible and developed it so far. It presents the Decidim platform, its features and design principles, but also other dimensions of the project, from the political to the technical. It also outlines the theoretical and political vision, as well as the practical and organizational work behind the project. This document also situates Decidim in a historical context defined by political struggle. Furthermore, it discusses some of the sociopolitical problems it tries to address and the possibilities it opens up looking forward. Authorship of this document entails not more, not less, than putting together, making explicit and elaborating a set of theoretical and practical principles and guidelines that have been developed by a multitude of participants in our community. + +*How to read this white paper and make it yours*. Readers might be interested on different dimensions of the project and we encourage you to find the chapter or section that best matches your interests. The introduction however is worth reading for any of you. We start with a brief explanation of what is Decidim, a definition of the project, how the platform works, the social contract that binds the project together, a description of the community and ecosystem behind it, the model of democracy that it embodies and the three dimensions of the project: the political, the technopolitical and the technical. We next move into the context in which Decidim has been developed to explain why we thought it was necessary to initiate or join this project, why it is relevant today both in the context of a crisis of democracy as we knew it and the context of an increasing control of social digital infraestructures by a few corporations. The rest of the paper is structured along the three planes or dimensions of the project: the political plane explains the model of democracy that Decidim embodies and makes possible, contrasting it with different limitations and models of contemporary democracy (representative democracy and party politics, technocracy and neoliberal models of governance, etc.) highlighting how Decidim makes possible to strengthen new and old forms of participatory democracy, collective intelligence and multitudinous political identities in public institutions and social organizations alike. The technopolitical planefootnote:[In short, by technopolitics we mean the intersection and hybridization of technology and politics. This is a conception of politics that focuses on the technical articulation of power, its structure and exercise, highlighting and intervening on devices, interfaces, codes, protocols, networks and methods in contrast with conceptions of politics that focuses on ideas, discourses, symbols and reasons. It is a conception of technology that focuses on its political dimensions, its mutability and its construction, highlighting and intervening in the power relationships, ideologies and logics in contrasts to views that understand it as value neutral and objective matters.] explains how this is made possible through the platform, its design principles, best configuration practices and the technological articulation of the project’s internal politics through the platform: the Metadecidim community. Finally, we extend into the details of the technical articulation of the project: how the software is produced, its architectural details, organizing protocols, legal licenses, collaborative practices, training programs, etc. + +include::what-is-decidim.adoc[leveloffset=+1] + +include::why-decidim.adoc[leveloffset=+1] \ No newline at end of file diff --git a/docs/pt/modules/whitepaper/pages/what-is-decidim.adoc b/docs/pt/modules/whitepaper/pages/what-is-decidim.adoc new file mode 100644 index 0000000000..e6c4a8d64a --- /dev/null +++ b/docs/pt/modules/whitepaper/pages/what-is-decidim.adoc @@ -0,0 +1,51 @@ += What is Decidim? +:experimental: +:icons: font +:page-partial: +:source-highlighter: highlightjs + +.Video: https://youtu.be/f6JMgJAQ2tc[Decidim: Free Open-Source participatory democracy for cities and organizations]. +video::f6JMgJAQ2tc[youtube, width=720, height=390] + +Decidim [http://decidim.org[http://decidim.org]], from the Catalan "let's decide" or “we decide”, is a digital platform for participatory democracy. +More specifically, Decidim is a web environment (a _framework_) produced in _Ruby on Rails_ (a programming language) that allows anybody to create and configure a website to be used in the form of a political network for democratic participation. It is built entirely and collaboratively as https://en.wikipedia.org/wiki/Free_software[free software]. + +The platform allows any organization (local city council, association, university, NGO, neighbourhood or cooperative) to create mass processes for strategic planning, participatory budgeting, public consultation, collaborative design, etc. It also makes possible to connect traditional in-person democratic meetings with the digital world: sending meeting invites, managing registrations, facilitating the publication of minutes, etc. +In addition, Decidim enables the structuring of government bodies or assemblies (councils, boards, working groups), the convening of consultations, referendums or channelling citizen or member initiatives to trigger different decision-making processes. Yet, the Decidim project is much more than that. + +*Definition*: _Decidim is a public-common’s, free and open, digital infrastructure for participatory democracy_. + +- By “participatory democracy” we mean that form of “government of the people, for the people and by the people” in which people take part as equals or peers (from latin _pars_, part, and _capere_, to take). By taking part we mean that, under the current political model, people take the part _of_ the sovereign power that belongs to them. And this should be an equal part for each. Moreover, we also mean, under an alternative model, to take part _in_ the autonomy of the social and political life, in the construction of collective potency: the capacity to coordinate and commit to collective action. +- The term “digital infrastructure” makes reference to a set of tools, resources, data-sets, documents, codes (legal, computer, etc.), interfaces and services that are digitalized or made accessible by digital means. This infrastructure is primarily a software platform for participatory democracy. ++ + Participants can create proposals, sign and support them, comment, receive notifications, attend public meetings or receive the minutes of the session. Administrators can design participatory processes, define the structure of democratic organs (like councils or committees), configure types of initiatives or set up consultations. The infrastructure also includes documentation, design (icons, images, logos, etc.), legal documents, datasets or training resources, among others. All these make possible to deploy a participatory democratic system in any organization (be it a municipality, a cooperative, an association, a union or a community). +- By “free and open” we mean that the project’s goods (the assets of the infrastructure) do no fall under the form of private property that excludes others from accessing, using, copying, modifying and re-publishing or reusing these resources but, instead, displays all the legal, technical and social means necessary to share them and open them to collaboration. +- Finally, the term “public-commons” indicates that the project is mostly financed and made possible by public institutions and is managed and designed by an open community constituted by public-servants, members of different associations, university researchers and students, activists and staff from foundations, workers from different companies or simply volunteers that commit to the principles of the project. For this infrastructure to be a common’s it is important that these partners organize democratically in relation to the project. In this sense, Decidim is a reflexive infrastructure that uses the very infrastructure to democratize itself through the MetaDecidim community. + +*Platform features and functional architecture*. Since the digital platform displays and embodies both the means of project organization and its democratic principles, it is important to explain how the platform works. Users of the platform (participants) interact through participatory mechanisms known as _components_ within different participatory _spaces_ that channel their democratic power to specific results. Participatory spaces are the frameworks that define how participation will be carried out, the _channels_ or means through which citizens or members of an organization can process requests or coordinate proposals and make decisions. _Initiatives_, _Processes_, _Assemblies_ and _Consultations_ are all participatory spaces. Specific examples of each of these include: a citizen initiative for directly changing a regulation (_Initiative_); a general assembly or workers’ council (_Assembly_); a participatory budgeting, strategic planning, or electoral process (_Processes_); a referendum or call to vote “Yes” or “No” to change the name of an organization (_Consultation_). The more notable components that are combined into spaces to deliver participatory mechanisms include in-person _meetings_, _proposals_, _blogs, debates, static information pages, surveys_, _results_ and _comments_. So, for example, the various phases of a participatory budgeting process (where members of an organization are called to decide how to spend a budget) can combine components in the following way: at an early phase, public meetings can be opened for citizens to analyze different needs classified by districts. In turn these meetings can lead to the design of a survey. The survey results can next be used to define a set of categories for projects to be proposed. The proposal component might then be activated for participants to create and publish their projects as solutions to the identified needs. These proposals can be commented on. After a period of deliberation, the voting component can be activated to select among the projects using a budget-expenditure system. Participants can then be called to a public meeting to evaluate the results and an assessment survey can then be launched for those who could not attend the meeting. Finally, the accountability component can be activated to monitor the degree of execution of the selected projects and people can comment on it. This is but one example of how components are combined in a space, but there are many other combinatorial possibilities. What makes Decidim particularly powerful is this combination of components within spaces, which provides an organization with a complete toolkit to easily design and deploy a democratic system adapted to its needs. + +*The social contract*: All members and partners of the Decidim project must endorse and follow a “https://decidim.org/contract[social contract]” that defines a set of guiding principles. The social contract can be summarized as follows: 1. _Free software and open content_: Decidim will always remain free and open to collaboration, without legal or technical obstacles for the use, copy and modification. To ensure this we use a set of licenses: https://www.gnu.org/licenses/agpl-3.0.html[Affero GPLv3] for the code, https://creativecommons.org/licenses/by-sa/4.0/[CreativeCommons By-SA] for the content (text, images, design, etc.) and https://opendatacommons.org/licenses/odbl/1-0/[Open Access Database License] for data. This means that Decidim will always remain auditable, collaborable, transparent, appropriable and trustworthy, all of which is fundamental for a democratic infrastructure. 2. _Transparency, traceability and integrity_: the content of participation will always remain transparent, traceable and integral. This means that all the content must be accessible and downloadable, it should always be known what happens with each proposal, its origin, where it was incorporated or why it was rejected, and the content needs to be displayed without been manipulated, any modification (if required) must be registered and be accessible and auditable. 3. _Equal opportunities, democratic quality and inclusiveness_: the platform must guarantee the democratic quality, the non-discrimination and equal opportunities for each participant and proposals, including objective indicators. The platform must comply with accessibility standards, its use must favour the integration of online and offline participation and organizations must deploy the means for mediation and training of participants. 4. _Privacy with verification_: participants must retain privacy of their personal data combined with verification. Personal data should never be displayed, nor sold or transferred to third parties while, at the same time, the unicity and democratic rights of participants must be preserved (meaning there cannot be two verified users corresponding to the same individual with democratic rights and all participants with such rights must be verifiable). 5. _Democratic commitment, responsibility and collaboration_: institutions using Decidim must commit to respond on time, be accountable for decisions taken through the platform, and to openly collaborate on its improvement. + +*Instances*. The best known and intensively used instance of Decidim, as a digital platform for participatory democracy, is https://decidim.barcelona[www.decidim.barcelona], with (as of December 2018) more than 30,000 registered participants, more than 1.5 million page views, over 300,000 visitors, 35 participatory processes, 1,141 public meetings channelled through the platform and 13,297 proposals, out of which over 9,196 have already become public policies grouped into 5,485 results whose implementation level can be monitored by citizens. The instance that actively explores more functionalities is http://meta.decidim.org[meta.decidim.org], the community portal that designs and supports the project. There is also a demo site with the latest version available for exploration and a training instance open to anybody to learn how to configure, administrate and use the platform. There are currently more than 70 instances of Decidim for organizations of different sorts ranging from municipalities such as https://osallistu.hel.fi/[Helsinki] or https://erabaki.pamplona.es/[Pamplona], to regional governments like the https://participa.castillalamancha.es/[Junta de Castilla la Mancha] or the https://participa.gencat.cat/[Generalitat de Catalunya], national governments like the https://monopinion.belgium.be[Belgium Federal State], NGO networks such as https://assembly.fundaction.eu[Fundaction] or https://participa.quorumglobal.org/[QuorumGlobal], cooperatives like https://participa.somenergia.coop/[Som Energia], or the https://participons.debatpublic.fr/[National Commission for Public Debate] (_Commission Nationale du Débat Public_) in France. We have an https://decidim-monitor.herokuapp.com[online monitoring tool] that captures the relevant public data of known Decidim instances around the world. + +*A sustainable ecosystem*. Developed at Barcelona’s http://ajuntament.barcelona.cat/innovaciodemocratica/en[Laboratory for Democratic Innovation], Decidim is the result of the joint effort of a network of collaborating entities and multiple participants leaded by Barcelona’s City Council. Apart from the organizations that use the platform and whose participants and administrators report bugs and suggest improvements, there is a network of 17 different collaborating entities, from software companies to institutional consortia, from research institutions to civil associations. The https://meta.decidim.barcelona/[Metadecidim] community uses an instance of the Decidim platform to organize the different dimensions of the project. As of August 7th 2018 it has 379 registered participants, it hosts minutes of 126 public meetings, details of eight assemblies or working groups, four participatory processes (welcome process, bug reporting, feature proposals, and training workshop process) together with various initiatives and two consultations aimed at defining the roadmap and software design of the platform, bug reporting, community and project governance, research and development. Official documentation and code are developed on https://github.com/decidim[Github] where the project hosts more than 20 repositories with over 50 contributors. They all together generate a sustainable ecosystem that governs, produces and provides services over the platform (deployment, adaptation, configuration, training, consultancy, administration, etc.). + +*Democracy and social empowerment*: Decidim was born in an institutional environment (that of Barcelona City Council during Ada Colau’s mandate 2015-2019 and under the impulse of Gala Pin councillor for participatory democracy), directly aiming at improving and enhancing the political and administrative impact of participatory democracy in the state (municipalities, local governments, etc.). But it also aims at empowering social processes as _a platform for massive social coordination for collective action_ independently of public administrations. Anybody can copy, modify and install Decidim for its own needs, so Decidim is by no means reduced to public institutions. There are different ways in which participatory democracy infrastructures can boost social, economic and political self-organization. Decidim is starting to be used for these purposes: for the internal organization of consumer and producer cooperatives for example, it is also helping movements organize and to design strategic planning, and it might soon be used to coordinate massive strikes or other forms of social action. The modular nature of its architecture is also enabling these organizations to develop their own components and improvements (such as crowdfunding, membership management, etc.) and to plug them back into Decidim, expanding its potential. Decidim comes to fill the gap of public and common’s platforms, providing an alternative to the way in which private platforms coordinate social action (mostly with profit-driven, data extraction and market-oriented goals). Ultimately, Decidim aims to present an alternative to the existing model of digital economy sponsored by corporate digital platforms (Amazon, AirBnB, Uber, etc). + +*The political, the technical and the technopolitical*. As we have repeatedly stressed, Decidim is more than a technological platform. It has required to assemble a variety of codes, realities and dimensions that go beyond programming code. We define it as a “technopolitical project” where legal, political, institutional, practical, social, educational, communicative, economic and epistemic codes merge together. Ultimately, Decidim is in itself a sort of crossroad of the various dimensions of networked democracy and society, a detailed practical map of their complexities and conflicts. We distinguish three general planes or dimensions of the project: the _political_ (focused on the democratic model that Decidim promotes and its impact on public policies and organizations), the _technopolitical_ (focused on how the platform is designed, the mechanisms it embodies, and the way in which it is itself democratically designed), and the _technical_ (focused on the conditions of production, operation and success of the project: the digital factory, collaborative mechanisms, licenses, etc.). The political plane is best illustrated by the use of Decidim in a city or organization, the type of democratic processes and decisions that are made through it. In other words, it covers what kind of politics can be done using Decidim: what kind of governance, conflict and power relationships can be channelled through it, thus, the kind of democracy it is capable to produce. Its model instance is decidim.barcelona, what happens within, how it alters the political space of the city. The second plane, the technopolitical, includes matters concerning the digital architectural design of Decidim: its interfaces, features, design principles, data policies, user experience, etc. It is a primarily a reflexive space of how technologies structure political processes. It is embodied in the Metadecidim platform and the community that surrounds it. Finally, the technical plane encompasses issues concerning primarily the programming and legal codes (information and legal infrastructures), but is also includes issues of education and knowledge (epistemic infrastructures), spatial and working organization. All three dimensions are part of the project. + +.Systematization footnote:[We have chosen Barcelona here as a scale of reference, but it could be the EU, or any other political territory or democratic organization. The term “scale” does not refer here to territorial extension, but to the number of agents and organizational complexity: the political involves more complexity, more agents, more conflict, more diversity and width of decision to be made, the technopolitical is a smaller community scale, the technical is a laboratory or factory that covers a subset of this community.] of various aspects of the Decidim project in the political, technopolitical and technical planes with the city of Barcelona as a reference. +[cols="\"", ,, ,", options="header"] +|=== +|Plane +|Relation +|Platform +|Mode +|Scale + +|Political |Superstructure |decidim.barcelona |Co-decision |City + +|Technopolitical |Structure |Metadecidim |Co-design |Community + +|Technical |Infrastructure |github.com/decidim |Co-production |Laboratory +|=== \ No newline at end of file diff --git a/docs/pt/modules/whitepaper/pages/why-decidim.adoc b/docs/pt/modules/whitepaper/pages/why-decidim.adoc new file mode 100644 index 0000000000..97722615c2 --- /dev/null +++ b/docs/pt/modules/whitepaper/pages/why-decidim.adoc @@ -0,0 +1,55 @@ += Why Decidim? + +:experimental: +:icons: font +:page-partial: +:source-highlighter: highlightjs + +The context that has given birth to Decidim is defined by two interconnected phenomena, each of which displays two poles. On the one hand, the last decades have witnessed a crisis of representative democracy (weakening of the Welfare State, subordination to market forces, inability to deal with global problems such as climate change, etc.) as well as the essay with some alternatives, such as grassroots organizations, new parties and institutional forms. On the other, the rise of cognitive capitalism, a system where the exploitation of information, knowledge, affects, and social relations has become core to the generation of economic value, is opposed by the emergence of free software, knowledge and culture. Both phenomena are deeply intertwined, and Decidim is born right at their very intersection, responding to the challenges and opportunities that they open for democracy. In this section, we briefly analyze these two phenomena, with a special focus on the way they impact contemporary democracy. + +== The contemporary crisis of democracy and its alternatives + +*Success and decline of liberal, representative democracies*. The basic structures of representative democracy have barely been updated in the last two centuries. The last three decades have seen both their success (with the multiplication of liberal democratic states all over the world) and their declinefootnote:[The decline has been ongoing for the last two decades, at least (Rosanvallon, 2008), and has been noticed across the “ideological and methodological spectrum” (Tormey 2015: 15). So much so that the crisis of liberal representative democracy has been identified with the crisis of democracy itself (Keane 2009; DellaPorta 2013). Different authors have denounced the technocratic tendencies and the neoliberal hegemony in this same period as heralding a stage of post-democracy (Crouch, 2004) or post-politics (Zizek, 1999; Rancière, 2001), while others, in a more limited way, have used the term "post-representation" to refer to the emptying of power and meaning of representative institutions by dynamics ranging from globalization and the dismantling of the welfare state to dis-affection and dis-empowerment (Brito Vieira and Runciman, 2008; Keane, 2009; Rosanvallon, 2011; Tormey, 2015). The meanings of “post-representation” are multiple, though, connected with different political readings of the crisis and the potential ways out of it, from those that give conjunctural interpretations to those that tie it to the transformations of modernity, its subjectivities and modes of sociality (Tormey, 2015).] (as diagnosed in a wide literature ranging from Pharr & Putnam, 1999 to Tormey, 2015). The decline has been expressed in various forms; we will mention two: practically, in the inability of contemporary democracies to deal with problems such as rising inequality (Piketty, 2014) or climate change (Klein, 2015); politically, in the decline of participation and trust in political parties and political representatives, as well as other political institutions (Mair, 2006; Castells, 2017). + +*Structural limits of representative democracy*: the triple challenge of complexity.footnote:[This section is a theoretical reconstruction of aspects that are historically embedded and power-laden.] The structure of modern democracies is based on representation (and, more specifically, electoral representation, Manin 1997, Van Reybrouck 2016), that is, on a series of mechanisms by which a few actors (political and administrative) are elected to manage public issues in the name of the whole of the citizenry, and are in principle accountable to it. Representation had its roots in medieval institutions, as a mechanism for nobles and knights to push their demands in exchange for consenting taxation (Pitkin, 1967). But it has proven its limits in coping with complexity and conflict: the complexity and conflictuality of society, of reality, and of organization. + +1. In social terms, it had to face the growth of the franchise, incorporating an ever more diverse constituency, and, in the last decades of the XXth century, the rise in cultural diversity, consumerism and the ideology of consumer choice in Western democracies (Laclau & Mouffe, 1985; Sennett, 1977, 1998) that generated an ever-growing variety of desires and perspectives to be listened to and articulated in government action. Furthermore, representation has proven open to systemic practices of nepotism or corruption, usually by powerful economic interests (Buchanan & Tullock, 1962; Peltzmann, 1976). In this context, representative mechanisms have ended up imposing the will of the few over the complex and conflictual wills of the people in public policy. +1. The second key challenge of complexity had to do with the reality. As the technoscientific transformation of reality accelerated, the responsibility and complexity of the problems facing public policy (f.i.: climate change) has only increased; and yet many of the systems for detecting social problems and mobilizing social knowledge to address them have remained oligarchic. The attack Friedrich Hayek (1944, 1945) launched on socialist planning can be launched against representative democracy too: reality is too complex for a centralized decision-making system. +1. The third challenge of complexity fed back into the previous two: it is the challenge (or meta-challenge) of communication and organization. Mobilizing and organizing the will, the knowledge, and the collective action of society into public policy faced numerous socio-technological limits: the millions of members composing a given social group could not express their will nor contribute their knowledge and effort to address their matters of concernfootnote:[Organization or knowledge may be insufficient to solve the problems facing democracy today. However, we there are reasons to believe they can contribute to do so.]. Still in the XXth century, the infrastructure required to bring an expression of will or knowledge of people distributed geographically or socioeconomically (f.i.: laborally) into a common problem or decision seemed out of reach. Even if they wanted, people could not gather in assemblies or other political processes: people were too many, lived far from each other, had their work schedules, and no free time at all. + +Representative democracy, where the many elect a few every four years, became a raw and oversimplified articulation of the will and knowledge of the many, in terms of the management by the few. So raw and simplified that it couldn’t solve the problems of society and became one of them: the people’s will was not represented or properly constructed but captured, the real problems were not solved by public representatives, but externalized to the market to be solved, and the problems generated by the market too often remained unsolved. + +*Social limits of representative democracy: the challenge of economic powers and the rise of neoliberalism*. The problems of representative democracy today are not of complexity only, though. They have as much to do with issues of social power. Many of the ailments of representative democracy in the last three decades can be rooted in three key shifts of power (DellaPorta, 2013: 23; Offe, 2011: 457): a shift of power from parties and parliaments to executive powers, reducing the meaning of parliamentary and party politics; from State to Market, with processes ranging from externalization and privatization of public services to the introduction of competition logics in public administration ( the process of “emptying out the State”, specially, the Welfare State, Rhodes, 1994), as well as the rise in power of global corporations; and from nation-states to international governmental organizations such as the EU, the IMF or the World Bank, frequently aligned with such corporations, emptying both States and democracies of much of their legitimacy and power (Laval & Dardot, 2017; Crouch, 2011; Sánchez Cuenca, 2014). Political parties have suffered particularly: from the mid XIXth to the mid XXth century, the mass party model was guided by clear programs and rooted in a thick social structure connected to grassroots spaces and organizations, unions, media, and so on. The catch all party model rising in the 80s, however, had pragmatic, variable programs and supported itself primarily in mass media (in particular, tv) and polls. A fragmentation of socioeconomic composition and the discourses around it, no more easily divisible into “capitalist and proletarians” (Laclau & Mouffe, 1985), as well as the rise of a mass-mediatized consumer society based on an exaggerated and depoliticising individualism (Sennett 1977, 1998) paved the way for such party transformations. The traditional mass party saw a steady decline of its grassroots in Western democracies until today. This emptying out of representative democracy was tied to the rise of neoliberalism[multiblock footnote omitted], and has brought a crisis of legitimacy and meaning of democracy itself, frequently identified with representation (Crouch, 2004; Streeck, 2016). The Great Regression of 2008 (Eichengreen & O’Rourke, 2009) and the austerity politics that followed it (Blyth, 2013) seemed to confirm this shift and its implications, with States first going into debt to save the financial sector and then applying (or being applied) austerity policies without or against citizen consultation, guaranteeing the sustenance of capital accumulation while losing more and more capacity for social provision (Jessop, 2015). + +*The alter-globalization challenge to the shift of power away from democracy*. These processes haven’t gone unchallenged. The last two decades have been a period of democratic movements of resistance. At the turn of the century, the alter-globalization movement called for an alternative to the rising neoliberal globalization, an alternative globalization tied to a radicalization of democracy, social justice, human rights, as well as economical and ecological sustainability (Klein, 1999; Stiglitz, 2002; DellaPorta & Tarrow, 2005). This “movement of movements” had socio-technical networks as a key part of its organization. It generated a “cultural politics of networking” where networks operated not only as technologies, but also as models for the definition of social norms and political forms (Juris, 2008): features such as free association and information, non-hierarchical and flexible organizations, globally distributed but synchronized, locally rooted action, or autonomous networked media were among its key features. + +*The crisis of legitimacy of the neoliberal-democracy narrative*. Beyond the work of these movements, it was the 2008 Great Regression what brought about a crisis of legitimacy of the neoliberal narrative. It opened a period of crisis of neoliberalism (Dumezil & Lévy, 2011), not so much in economics but, specially, in political and social terms (in economic terms the crisis lasted less, followed by a deepening of accumulation processes, Jessop, 2015): the discredit of narratives praising free trade, privatization, international economic institutions, and global markets, otherwise, the discredit of the ideological practice preeminent since the 80s, spread along with new social and political movements, from the progressive to the reactionary. This crisis of neoliberalism fed into the crisis of representation mentioned earlier, with a peak of distrust towards official institutions, from politicians and governments to banks. The result has been a crisis of the existing model of neoliberal representative democracy (Castells, 2012, 2017; DellaPorta, 2013; Gerbaudo, 2012, 2017). + +*The 2011 wave of networked movements of the squares*. 2011 is a key year in political terms. Progressive social movements swept the world, from the Arab Springs in the North of Africa to Occupy Wall Street in North America: they challenged the political and economic status quo and the rising inequality, while reclaiming a more radical democracy (Postill, 2017; Gerbaudo, 2012; DellaPorta, 2013, Flesher Fominaya, 2014). The 15M movement was among the key referents of this wave of networked movements of the squares, which intensively used digital networks. In Spain, 15M was at the upshot of a cycle of contention that saw the emergence of new forms of collective organization (from the networked squares of 2011 to the direct action tactics of the Platform of People Affected by Mortgages Romanos, 2014), new political parties (from Podemos to Barcelona en Comú), and the victories in dozens of cities by citizen initiatives in the Spring of 2015 (Cádiz, Barcelona, Madrid, A Coruña, etc.) (Feenstra et. al, 2017; Calleja-López & Toret, 2019). The use of digital platforms were crucial in all of these undertakings, oriented to increase the depth of participation of anyone and everyone into the political field (Aragón et al., 2017; Calleja-López, 2017; Monterde, 2016; Toret et al., 2015). Digital networks seemed to provide spaces where the disaggregating forces of neoliberal society were partially and temporarily countered and redirected to nurture collective action both online and offline. The upward extractivism of global finance and corporations was answered with democratic, locally rooted and globally connected initiatives. In the case of Spain, the struggle around the city, from the squares of 2011 to city halls in 2015, has become ever more relevant in this trajectory, in the form of municipalism (Rubio-Pueyo, 2017; Junqué & Shea, 2018; Roth, Monterde & Calleja-López, 2019). + +*The rise of right-wing populism*. But these achievements have showed limits and perils, too. At the international scale, the wave of movements tended to fizzle out. In countries such as Spain and Tunisia, the movements left new parties or constitutions, even though the general political and economic landscape remained gloomy (Castells, 2017); countries such as the US or Egypt (or Spain itself), has seen the advent of increasingly authoritarian governments. Moreover, right wing movements spread across Europe and North America (Castells, 2017). The final result has been defined as the end of the neoliberal era and the advent of a populist moment (Gerbaudo, 2017; Rodrik 2017), in which the basis of the _status quo_ loses its compelling power and is challenged by actors invoking the common people, from left and right, with recent successes for the latter such as the rise of Donald Trump to the presidency of the US or the Brexit. The various negative effects of neoliberalism, particularly accelerated after the Great Regression, such as increasing inequality, the normalized connivance between economic and political power, the dismantling of welfare structures along with rising public debt, social and political disempowerment in the face of transnational corporate and financial powers, the eclipse of the public sphere resulting from phenomena such as a rising individualism or closed multiculturalism (Sennet 1977, 1998), have generated a suspicion towards the status quo in which right wing and nationalist positions are gaining ground. In many cases, such rise was facilitated by social networks such as Facebook and Twitter, used by corporations (such as Cambridge Analytica), or political actors (such as the Trump or the Brexit communication teams). We analyze the various edges of this phenomenon in the following chapter. Resuming, in the political plane, the last decades have witnessed the tension between processes showing the limits or undermining democracy and others trying either to stop such undermining, or even calling to radicalize democracy. Decidim is firmly rooted in this last trend. + +== The rise of the network society, cognitive capitalism and knowledge commons + +*First generation digital networks: informational networks.* A similar opposition between conservative tendencies and progressive ones can be found on the moving field of the so-called digital economy. The 90s saw the rise of the Internet and the WWW to the status of phenomena of global proportions. The initial hopes for the cyberspace envisioned by figures such as John Perry Barlow (in this Declaration of Independence of Cyberspace) anticipated a time where many of the old social structures would be superseded by a new dawn of human creativity and freedom from old governments and social constraints (bodies, sexes, races, etc.). Since its origin, the construction of the internet resulted from the conflicting interests, visions, and practices of various actors (Abate, 1999; Rasmussen, 2007), specially, military and research actors. The idea of a distributed (and thereby resilient) information network was tied to the threat of possible high scale attacks to information centers by the Soviet Union (Baran, 1964), but even more so to practices and narratives of information and knowledge circulation and freedom among university researchers (Leiner et al., 1997). Already in the 1990s, a first generation of worldwide digital networks, informational networks, paradigmatically exemplified by the World Wide Web, allowed free the flow of information and users between websites. + +*Old and new communication powers: from mass communication to mass self-communication.* This seemed to be the dawn of a “networked public sphere” (Benkler, 2006), where earlier mediators of social communication receded from view. The XXth century protagonism of capital-intensive media such as radio, newspapers or TV, with their olygocratic editorial teams, seemed to give way to an explosion of uncensored digital media such as websites and blogs. Social communication was said to be in its way to de-intermediation, its power to be more equally distributed (Rushkoff, 2002; S Republic of Letters in XVIIth and XVIIIth centuries), had been shaken in the XIXth and XXth centuries by technologies that afforded one-to-many circulation of informhirky, 2009). Early modern communication ecologies, based in one-to-one interactions, either face to face or via letters (which still generated complex systems such as theation such as newspapers, radio or TV: this was the model of broadcasting, which potentiated a centralization of social communication, mass communication, where a the majority of the public played a passive role. The Internet and social media afforded new versions of these earlier communication models, and combined it with a new model, that of many-to-many communication, in which many emissors were able to generate (and react to) messages reaching many others, without having to pass through any mediating center (Kellner, 1999). This was giving way to “mass self-communication” , a model in which mass communication is “self-directed in the elaboration and sending of the message, self-selected in the reception of the message, and self-defined in terms of the formation of the communication space” (Castells, 2009). This did not imply an equal redistribution of communication power in society but rather its re-structuration, with new actors, including networked social movements, having an opportunity to play a role in a media sphere earlier controlled by big corporations. The fourth power of mass media journalism gave way to a fifth power: digital networks (or perhaps to a complex, more decentralized form of the fourth, a “hybrid media system”, Chadwick, 2008). + +*The rise of informational and cognitive capitalism.* The Internet and digital networks did not only affect the public sphere in a potentially democratizing tendency, they also greatly contributed to push globalization forward as a historical process, beginning with the acceleration of global finance (Castells, 1996). At the core of the economy behind neoliberal globalization were information and other immaterial assets, such as knowledge, affects, human relations, etc. The result was a new form of capitalism: informational and cognitive capitalism (Castells, 1996; Fumagalli, 2007; Moulier-Boutang, 2007; Vercellone, 2006). Differently from industrial capitalism, where the transformation of material resources into commodities was at the core of the process of capital accumulation, now it was information, knowledge, affects, and social relations what became key in the generation of economic value. Intellectual property is a key legal mechanism under this new paradigm, used to privately appropriate social knowledge and natural information, e.g.: strong copyrights on books and music, patents on technoscientific innovations, traditional medicines and techniques, or animal and plants DNA (Fumagalli, 2007). This in spite of the fact that information and knowledge are non-rival goods, with zero marginal cost, meaning that they can be reproduced and used without depletion. Furthermore, in most cases their value increases with use: the bigger the spread of trademark the higher its value, the more a song is listened to the higher its value. While digital networks provide the means to freely reproduce and re-distribute this kind of goods, artificial scarcity is generated via legal and technological mechanisms. This appropriation has not only the form of a “theft”, but is rather based on structures and processes (from education to entrepreneurship policies) that orient, transform and produce new personal and collective practices, desires, affects and relations sustaining the neoliberal system (Laval & Dardot, 2014). + +*From cognitive capitalism to platform & surveillance capitalism*. In time, the digital element in these processes has only gained prominence. The so called web 1.0 (O’Reilly, 2005) exhibited various limits to users’ interactions with both digital contents and other users. Differently, web 2.0 was all about interaction: the web as a platform. This exponentially increased the quantity and quality of information that could be extracted. By the late 2000s the emancipatory hopes tied to social networks were heavily in dispute (Morozov, 2011), and by the late 2010s the situation seems to be rather the opposite of the anticipated. From Amazon to Tinder, technological platforms are a way for a few corporations to extract data (going from activity, to opinions, to metadata), while leaving users with a little a say on what is gathered, how it is used or how the resulting benefits are distributed; this institutes a regime of “data extractivism” (as suggested by Evgeny Morozov). These corporations have access to more details of the lives of millions of people than any State or corporation to date. Combined with the development of new techniques of big data analysis and the always increasing rate of computing power, the infrastructural conditions were there for a socioeconomic mutation. Corporations such as Google or Facebook were heralding a specific form of informational and cognitive capitalism, which has been variously qualified as “platform”, “data” or “surveillance” capitalism. These three names speak of three connected elements: digital infrastructures, data, and social control. Digital platforms have become the basic means of production and management of a valuable resource (data) out of its source, human activities (Srnicek, 2017). Data, considered as the new “oil” (The Economist, 2017), “infrastructure” (Kawalek & Bayat, 2017; Prospect, 2017), “labor” (Arrieta et al., 2017), etc. is processed using data science methods and business intelligence (from modern statistics to Artificial Intelligence). Then, it is used in various ways in social processes of data-driven politics, science and economics (Lohr, 2015). This process of extraction, processing, and use is radically oligarchic. Corporations such as Alphabet (which includes Google), Microsoft, Amazon or Facebook have earned a monopolistic positionfootnote:[Alphabet, Microsoft (a giant from the early days of cognitive capitalism) and Amazon occupy three of the four top positions of the rankings by market capitalization. Facebook occupies the 8th place, but remains the third most visited web, with Google and Youtube (both owned by Alphabet) being the first and the second, according to Alexa and SimilarWeb, as of March 2018.]. A few actors have become the owners of both platforms and data and can thereby surveil social life in order to experiment with it: surveilling thereby appears as a first step to what we may define as “surwilling”, or willing and shaping the will of others from above; otherwise, platform corporations move from unveiling social life to orienting (or “willing”) it from above. If surveillance intrudes into privacy, into the negative freedom of people (to use Isaiah Berlin’s), into their freedom-from, surwilling shapes their positive freedom, their freedom-for. Platforms crucially influence the information people get about others and about the world, be it from friends, social actors, mass media, advertising corporations or beyond. The result is the emergence of new forms of knowing and influencing the actions of millions of people, a new techno-political power in the hands of States (such as NSA programs), corporations, or political actors (such as the Trump or the Brexit communication teams). This surveillance (Zuboff, 2015) and surwilling capitalism brings ever closer to a Big Brotherhood dystopia. + +*Towards technopolitical heteronomy? From mass self-communication to mass capture.* Social networks such as Facebook or Twitter have grown to user bases in the billions in only a decade. This has turned them into new intermediaries of social communication, if not of social life as such. Mass self-communication has risen hand in hand with mass capture, the capture of masses of data, human actions and interactions. These platforms feed from, and feed on, some dynamics already diagnosed by Guy Débord (1967) around the society of the spectacle, heralding a society of hypervisibility and exhibition tied to capitalism. Exhibition and self-exhibition (from the intimate everyday life to political opinions and actions, passed through a variety of fiction filters), are stimulated and situated at the center of the functioning of these platforms (Crogan & Kinsley, 2012; Goodwin et al., 2016), which are in turn at the center of an economy of attention. Furthermore, in social networks, surveillance and control is not only top-down but also bottom-bottom. There are two axes of surveillance, vertical and horizontal. While the first tends to be unidirectional, the second is frequently (though not always, as platform privacy settings are variable) horizontal and multidirectional: users can and do surveil each other, with playful or predatory (Albrechtslund, 2008; Tokunaga, 2011) purposes. The monopolistic concentration of power around social network corporations becomes daunting: Facebook, for instance, also owns Instagram and Whatsapp. Key rules of social relations are not produced in and decided by processes, actors or conflicts spread in space and time, but rather are increasingly decided and designed by a reduced number of people and specific interests (geostrategic, economic, etcetera). The power of social networks moves from selling advertisement (a concrete type of content) to a deeper shaping of social attention and affects (Grizzioti, 2016), and thereby, behavior. The social anomie resulting from several decades of neoliberalism had given way to a landscape in which the autonomy resulting from new forms of multitudinous self-organization in networked social movements was underlied and exposed to new forms of corporate influence via technologies, that is to say, technopolitical heteronomy. + +*How datacracy is dissolving democracy.* Democracy became exposed to datacracy, namely, to the strategic use of big data and digital platforms to gain and exercise political and cultural power (Cancellato, 2017; Gambetta, 2018). The rise of Barack Obama in 2008 and Donald Trump in 2016 to United States presidency are examples of how social networks and big data operations have a growing impact on electoral processes, affecting the networked public sphere. Trump invested 94 million dollars in expert consultants and Facebook’s paid advertising services (The Guardian, 2017). More importantly, the campaign included numerous examples of political automation: the use of chatbots, posting bots, false profiles and the automated inflation of metrics and followers (Bessi & Ferrara, 2016). These were frequently tied to the diffusion of _fake news_: biased, incomplete or spurious media stories with exaggerated and emotional adjectivation (Graves, 2018). This fed back with the activity in platforms such as 4chan, Omegle, Reddit and Tumblr, where Trump's followers formed an irregular community, self-appointed as _Alt-Right_ (Nagle, 2017a; 2017b), which showed clear manifestations of sexism, xenophobia, islamophobia, anti-feminism, intolerance and white supremacy, openly or in the form of satirical jokes and memes (Mendoza-Denton, 2018, Van-Zuylen Wood et al, 2018; Pollard, 2018). He may also has been supported by Russian espionage and communication experts, who received large financial incentives, showing the geopolitical character of these technopolitical struggles (The Guardian, 2018a). Finally, there was the hiring of London consulting company Cambridge Analytica, which extracted personal data from 87 million Facebook profiles between 2014 and 2016 to analyze their political preferences (De Llano, 2018), using a Facebook application disguised as a “personality test” (Cadwalladr, 2018; The Guardian, 2018b). This is not exceptional, though. Cambridge Analytica intervened in the last presidential campaigns of Argentina, Mexico, Brazil, Sri Lanka, Malaysia, China, Australia and South Africa, as well as the referendum that caused the separation of Britain from the European Union, known as _Brexit_ (The Guardian, 2018b). These cases have drawn public attention to issues such as the vulnerability of online personal data, the power of corporations and States that can access these databases (either legally or illegally) and use these platforms for influencing and shaping public discourse and action (Mottram, 2018; Tufekci, 2018). In words of Facebook's founder and president, Mark Zuckerberg, the platform has no affinity with any political party, and any client can access its services (Price, 2018). However, Facebook algorithms keep working as “black boxes”. Zuckerberg's company has never shared details of its technical operation or data processing software or policies besides the content of Facebook's terms of use, which still remain general, abstract, and non-negotiable. This opacity becomes ever more problematic as the role of platform algorithms, political automation and Artificial Intelligence (including machine and deep learning) systems grow (Trevathan, 2006; Manovich, 2013; Zysman & Kenney, 2015, 2016). Datacracy will pervade more aspects of people’s lives to the extent that the increasing pervasiveness of digital platforms grows and follows the current corporate and technocratic logics. + +*Free software, knowledge, culture, and internet.* However, in continuous struggle and contact with these dynamics there has also been a proliferation of actors, movements, practices and projects oriented by principles such as democracy, freedom, social justice, or commonality. For instance, as an alternative to commercial social networks, also in the second half of the 2000s, there emerged alternative social networks, from Diaspora (with more than one million users) to n-1, a platform widely used during the 15M movement, together with a self-managed network of blogs (wordpress), voice-call rooms (mumble) and collaborative real-time writing pads (etherpad). They followed in the steps of a tradition dating back, at least, to the 1980s and 1990s: the WWW and free software such as the GNU/Linux operating system, have provided free digital services (free as in “freedom” and not only as in “free beer”, as Richard Stallman put itfootnote:[The four basic freedoms are the freedom to run the program for any purpose; to access its source code, study how it works, and change it; to redistribute copies; to distribute copies of modified versions. They can be retrieved at https://www.gnu.org/philosophy/free-sw.en.html[https://www.gnu.org/philosophy/free-sw.en.html].]) to millions of people over world. Furthermore, the GNU license was a legal tool to produce and reproduce such free digital infrastructures. The Creative Commons license expanded its possibilities to cultural works. First, free software licenses and, later (as the principles and practices of free software spread to other fields, Kelty, 2008) creative commons licenses helped to outline an alternative paradigm of collective appropriation of informational and cognitive wealth. Projects such as Wikipedia brought the free software culture into knowledge. This neatly fitted with the discourse of scientific knowledge (Merton, 1942), traditionally self-proclaimed universalism, communalism, and disinterestedness, specially up to the 1980s and landmarks such as the Bay-Dohle Act, that put science into a path of closure, privatization, and corporate interestedness. By putting the classic Encyclopedia Britannica and Microsoft’s Encarta out of business Wikipedia became an example of and alternative “open knowledge” regime, from its production to its appropriation. Softer forms of this regime, such as “open access”, have gained solid ground in time. Under this alternative paradigm, platforms for digital collaboration became key in the collective production of information and knowledge out of the proprietary logics of informational and cognitive capitalism. The broad category of “digital commons” has served to encompass a variety free software, knowledge and culture products. More broadly, the term FLOK (Free/Libre Open Knowledge) includes also non-digital forms of knowledge that generate common practices and democratic communities out of the proprietary form: from education to hardware, from engineering to culture, from biology to software (Villa-Viñas & Barandiaran 2015). More recently, struggles around Net Neutrality (have brought to the front the centrality of the control of concrete aspects of a common such as the Internet (in this case, the discrimination a types of data traffic on the network by service providers and governments) for the flourishing of other basic rights such as freedom of speech or equality in the network societyfootnote:[Various reports and a history of the battle around Net Neutrality can be found at https://www.laquadrature.net/en/Net_neutrality[https://www.laquadrature.net/en/Net_neutrality].]. + +*Hacker culture, digital communities and knowledge commons*. Free/Libre and Open Knowledge does not stand simply as a commodity or a good that is accessible by means of legal and technical devices. It is followed and often preceded by certain forms of social relation, modes of production and the collaborative culture that is necessary to produce and sustain it. The hacker culture, often associated with an ethics of fun, openness and sharing (Himanen, 2003), is even so with concrete practices (Kelty, 2008) and forms of politics (Barandiaran 2003; Maxigas, 2012); crucially, it involves the attitude to transform the way in which artifacts (in its broader sense: from institutions to modems) are given to us in order to open them up to new possibilities: a practical believe on the capacity (both individual and collective) to challenge existing limits and to collaboratively explore how to break, re-assemble and build upon what is available. In doing so communities are created around technical challenges, common infrastructures, collective resources and struggles. In turn, these communities are faced with a myriad of governing problems and these are solved by a combination of recursive tools and democratic/collaborative procedures: from the mechanisms to solve disputes in Wikipedia, to the voting procedures of the Debian community, from Forks (the duplication of the content and resources of a project to create a new one, something that is made possible by the non-proprietary form of knowledge and technologies involved) to version control systems in software development. Added to the unlimited reproductive capacity of digital goods, all this provides the sphere of Free/Libre Open Knowledge with a productive power and collective management capacity that results on a knowledge commons that often parallels that of profit-driven corporations and has been the object of extensive study (Hess & Ostrom, 2007; Benkler, 2006). + +*Decidim in context.* As we have shown, democracies in the network society face the double challenge of the crisis of representative democracy and the rise of platform capitalism. The first phenomenon is tied to neoliberalism (and its periodic crises) as well as to the emergence of progressive and reactionary networked politics. The second phenomenon underlies new social conditions as well as those very forms of networked politics, while it is opposed by commons-oriented forms of production. The following image can help to understand the role of Decidim in this context. + +.Decidim model for a democratic society. +image::decidim-in-context.svg[Image, width=90%] + +Under platform capitalism, corporations extract social data in huge quantities and turn it into wealth and power over people and institutions (this is what, in the image below, we label “algorithmic governance”), challenging democracy as we know it. New forms of distributed platform capitalism (airbnb, uber, deliveroo, etc.) herald forms of capilar exploitation of social wealth. However, non-corporate, collaborative forms of digital production exist, and they make possible to find alternatives. Decidim is one such alternative. It is conceived as a commons’ digital infrastructure for participatory democracy that is publicly supported and democratically designed, using itself for such purpose. The value of Decidim stands out in a context in which democratic collective intelligence faces the challenge of corporate artificial intelligence and datacracy, where the democratic impulse of networked social movements, from alter-globalization to 15M, faces reactions by market, State and right wing forces, and where public and commons’ institutions require democratic innovative infrastructures to overtake market-driven innovation in solving the complex social challenges of our times. Whereas a dominant trend pushes the governing of infrastructures and services to the top-right of the picture, towards increasing privatization and centralization in the hands of big corporations, the socio-technical potential exists to shift this trend towards the bottom-left corner: towards decentralized and public-common’s ecosystems of services, infrastructures and goods. Decidim contributes to this transition by boosting democratic participation into the governing of public bodies, social organization, the cooperative economy as well as the joint circulation among the three. So far, public emphasis has been put into regulating consumer markets, corporate governance and economy as a means to slow down privatizing trends and its negative consequences; meanwhile, corporate interests keep exerting their lobbying influence into the public and state institutions. Instead, Decidim contributes to the strengthening of innovative forms of commons-oriented economy and participatory democracy. The next section deals with “how” this strengthening operates, explaining how Decidim explores the potential of participation at various scales. \ No newline at end of file diff --git a/en/modules/admin/assets/images/admin_dashboard.png b/en/modules/admin/assets/images/admin_dashboard.png deleted file mode 100644 index c442f865ce..0000000000 Binary files a/en/modules/admin/assets/images/admin_dashboard.png and /dev/null differ diff --git a/en/modules/admin/assets/images/admin_user_group_verification.png b/en/modules/admin/assets/images/admin_user_group_verification.png deleted file mode 100644 index 8a2a747244..0000000000 Binary files a/en/modules/admin/assets/images/admin_user_group_verification.png and /dev/null differ diff --git a/en/modules/admin/assets/images/admin_user_group_verification_actions.png b/en/modules/admin/assets/images/admin_user_group_verification_actions.png deleted file mode 100644 index 5e0edf4183..0000000000 Binary files a/en/modules/admin/assets/images/admin_user_group_verification_actions.png and /dev/null differ diff --git a/en/modules/admin/assets/images/admin_user_group_verification_csv.png b/en/modules/admin/assets/images/admin_user_group_verification_csv.png deleted file mode 100644 index 325dcaa530..0000000000 Binary files a/en/modules/admin/assets/images/admin_user_group_verification_csv.png and /dev/null differ diff --git a/en/modules/admin/assets/images/admins.png b/en/modules/admin/assets/images/admins.png deleted file mode 100644 index 5f2fe6b73c..0000000000 Binary files a/en/modules/admin/assets/images/admins.png and /dev/null differ diff --git a/en/modules/admin/assets/images/admins_invite.png b/en/modules/admin/assets/images/admins_invite.png deleted file mode 100644 index 9798d05f86..0000000000 Binary files a/en/modules/admin/assets/images/admins_invite.png and /dev/null differ diff --git a/en/modules/admin/assets/images/authorizations_account.png b/en/modules/admin/assets/images/authorizations_account.png deleted file mode 100644 index 7b820221f3..0000000000 Binary files a/en/modules/admin/assets/images/authorizations_account.png and /dev/null differ diff --git a/en/modules/admin/assets/images/authorizations_admin_default.png b/en/modules/admin/assets/images/authorizations_admin_default.png deleted file mode 100644 index 68e7438ea3..0000000000 Binary files a/en/modules/admin/assets/images/authorizations_admin_default.png and /dev/null differ diff --git a/en/modules/admin/assets/images/authorizations_admin_revocation.png b/en/modules/admin/assets/images/authorizations_admin_revocation.png deleted file mode 100644 index 88c4484bf2..0000000000 Binary files a/en/modules/admin/assets/images/authorizations_admin_revocation.png and /dev/null differ diff --git a/en/modules/admin/assets/images/authorizations_code_postal_letter_confirm.png b/en/modules/admin/assets/images/authorizations_code_postal_letter_confirm.png deleted file mode 100644 index c7cb0c1037..0000000000 Binary files a/en/modules/admin/assets/images/authorizations_code_postal_letter_confirm.png and /dev/null differ diff --git a/en/modules/admin/assets/images/authorizations_code_postal_letter_edit.png b/en/modules/admin/assets/images/authorizations_code_postal_letter_edit.png deleted file mode 100644 index b4830af00a..0000000000 Binary files a/en/modules/admin/assets/images/authorizations_code_postal_letter_edit.png and /dev/null differ diff --git a/en/modules/admin/assets/images/authorizations_code_postal_letter_ongoing.png b/en/modules/admin/assets/images/authorizations_code_postal_letter_ongoing.png deleted file mode 100644 index 824fa347d9..0000000000 Binary files a/en/modules/admin/assets/images/authorizations_code_postal_letter_ongoing.png and /dev/null differ diff --git a/en/modules/admin/assets/images/authorizations_code_postal_letter_request.png b/en/modules/admin/assets/images/authorizations_code_postal_letter_request.png deleted file mode 100644 index 2ff188dbe3..0000000000 Binary files a/en/modules/admin/assets/images/authorizations_code_postal_letter_request.png and /dev/null differ diff --git a/en/modules/admin/assets/images/authorizations_code_postal_letter_verified.png b/en/modules/admin/assets/images/authorizations_code_postal_letter_verified.png deleted file mode 100644 index 65996b8a2a..0000000000 Binary files a/en/modules/admin/assets/images/authorizations_code_postal_letter_verified.png and /dev/null differ diff --git a/en/modules/admin/assets/images/authorizations_code_postal_letter_verify.png b/en/modules/admin/assets/images/authorizations_code_postal_letter_verify.png deleted file mode 100644 index 211b2bd357..0000000000 Binary files a/en/modules/admin/assets/images/authorizations_code_postal_letter_verify.png and /dev/null differ diff --git a/en/modules/admin/assets/images/authorizations_id_document_account_choose.png b/en/modules/admin/assets/images/authorizations_id_document_account_choose.png deleted file mode 100644 index abb5b8b81f..0000000000 Binary files a/en/modules/admin/assets/images/authorizations_id_document_account_choose.png and /dev/null differ diff --git a/en/modules/admin/assets/images/authorizations_id_document_configuration.png b/en/modules/admin/assets/images/authorizations_id_document_configuration.png deleted file mode 100644 index 85b625b706..0000000000 Binary files a/en/modules/admin/assets/images/authorizations_id_document_configuration.png and /dev/null differ diff --git a/en/modules/admin/assets/images/authorizations_id_document_configuration_offline.png b/en/modules/admin/assets/images/authorizations_id_document_configuration_offline.png deleted file mode 100644 index 8baab477a7..0000000000 Binary files a/en/modules/admin/assets/images/authorizations_id_document_configuration_offline.png and /dev/null differ diff --git a/en/modules/admin/assets/images/authorizations_id_document_offline_button.png b/en/modules/admin/assets/images/authorizations_id_document_offline_button.png deleted file mode 100644 index 7a0f46b531..0000000000 Binary files a/en/modules/admin/assets/images/authorizations_id_document_offline_button.png and /dev/null differ diff --git a/en/modules/admin/assets/images/authorizations_id_document_offline_confirm.png b/en/modules/admin/assets/images/authorizations_id_document_offline_confirm.png deleted file mode 100644 index 85dec306b8..0000000000 Binary files a/en/modules/admin/assets/images/authorizations_id_document_offline_confirm.png and /dev/null differ diff --git a/en/modules/admin/assets/images/authorizations_id_document_offline_request.png b/en/modules/admin/assets/images/authorizations_id_document_offline_request.png deleted file mode 100644 index 294c93d328..0000000000 Binary files a/en/modules/admin/assets/images/authorizations_id_document_offline_request.png and /dev/null differ diff --git a/en/modules/admin/assets/images/authorizations_id_document_online.png b/en/modules/admin/assets/images/authorizations_id_document_online.png deleted file mode 100644 index 3a90faad4b..0000000000 Binary files a/en/modules/admin/assets/images/authorizations_id_document_online.png and /dev/null differ diff --git a/en/modules/admin/assets/images/authorizations_id_document_online_confirm.png b/en/modules/admin/assets/images/authorizations_id_document_online_confirm.png deleted file mode 100644 index f57b4faa68..0000000000 Binary files a/en/modules/admin/assets/images/authorizations_id_document_online_confirm.png and /dev/null differ diff --git a/en/modules/admin/assets/images/authorizations_id_document_online_pending.png b/en/modules/admin/assets/images/authorizations_id_document_online_pending.png deleted file mode 100644 index 5a90b0df43..0000000000 Binary files a/en/modules/admin/assets/images/authorizations_id_document_online_pending.png and /dev/null differ diff --git a/en/modules/admin/assets/images/authorizations_id_document_online_rejected.png b/en/modules/admin/assets/images/authorizations_id_document_online_rejected.png deleted file mode 100644 index 246928f934..0000000000 Binary files a/en/modules/admin/assets/images/authorizations_id_document_online_rejected.png and /dev/null differ diff --git a/en/modules/admin/assets/images/authorizations_organization_census.png b/en/modules/admin/assets/images/authorizations_organization_census.png deleted file mode 100644 index 90a2f965a2..0000000000 Binary files a/en/modules/admin/assets/images/authorizations_organization_census.png and /dev/null differ diff --git a/en/modules/admin/assets/images/authorizations_organization_census_account.png b/en/modules/admin/assets/images/authorizations_organization_census_account.png deleted file mode 100644 index f0d1f799bb..0000000000 Binary files a/en/modules/admin/assets/images/authorizations_organization_census_account.png and /dev/null differ diff --git a/en/modules/admin/assets/images/authorizations_organization_census_imported.png b/en/modules/admin/assets/images/authorizations_organization_census_imported.png deleted file mode 100644 index 54af36e6aa..0000000000 Binary files a/en/modules/admin/assets/images/authorizations_organization_census_imported.png and /dev/null differ diff --git a/en/modules/admin/assets/images/authorizations_organization_census_verified.png b/en/modules/admin/assets/images/authorizations_organization_census_verified.png deleted file mode 100644 index 41012ffd2f..0000000000 Binary files a/en/modules/admin/assets/images/authorizations_organization_census_verified.png and /dev/null differ diff --git a/en/modules/admin/assets/images/global_moderations_list_unhidden.png b/en/modules/admin/assets/images/global_moderations_list_unhidden.png deleted file mode 100644 index e4e14d02bd..0000000000 Binary files a/en/modules/admin/assets/images/global_moderations_list_unhidden.png and /dev/null differ diff --git a/en/modules/admin/assets/images/global_moderations_report01.png b/en/modules/admin/assets/images/global_moderations_report01.png deleted file mode 100644 index a8aa04a7b4..0000000000 Binary files a/en/modules/admin/assets/images/global_moderations_report01.png and /dev/null differ diff --git a/en/modules/admin/assets/images/global_moderations_report02.png b/en/modules/admin/assets/images/global_moderations_report02.png deleted file mode 100644 index b7fdefba33..0000000000 Binary files a/en/modules/admin/assets/images/global_moderations_report02.png and /dev/null differ diff --git a/en/modules/admin/assets/images/introduction.png b/en/modules/admin/assets/images/introduction.png deleted file mode 100644 index 01cc5d6bfe..0000000000 Binary files a/en/modules/admin/assets/images/introduction.png and /dev/null differ diff --git a/en/modules/admin/assets/images/introduction_process.png b/en/modules/admin/assets/images/introduction_process.png deleted file mode 100644 index f7efbe5ab5..0000000000 Binary files a/en/modules/admin/assets/images/introduction_process.png and /dev/null differ diff --git a/en/modules/admin/assets/images/moderation_modal.png b/en/modules/admin/assets/images/moderation_modal.png deleted file mode 100644 index 1ce83b9f45..0000000000 Binary files a/en/modules/admin/assets/images/moderation_modal.png and /dev/null differ diff --git a/en/modules/admin/assets/images/newsletter_contact_permission.png b/en/modules/admin/assets/images/newsletter_contact_permission.png deleted file mode 100644 index 2726cdfc2f..0000000000 Binary files a/en/modules/admin/assets/images/newsletter_contact_permission.png and /dev/null differ diff --git a/en/modules/admin/assets/images/newsletter_list.png b/en/modules/admin/assets/images/newsletter_list.png deleted file mode 100644 index ce1945f443..0000000000 Binary files a/en/modules/admin/assets/images/newsletter_list.png and /dev/null differ diff --git a/en/modules/admin/assets/images/newsletter_menu.png b/en/modules/admin/assets/images/newsletter_menu.png deleted file mode 100644 index dc5566cfbf..0000000000 Binary files a/en/modules/admin/assets/images/newsletter_menu.png and /dev/null differ diff --git a/en/modules/admin/assets/images/newsletter_new_basic.png b/en/modules/admin/assets/images/newsletter_new_basic.png deleted file mode 100644 index f77454a409..0000000000 Binary files a/en/modules/admin/assets/images/newsletter_new_basic.png and /dev/null differ diff --git a/en/modules/admin/assets/images/newsletter_new_basic_example.png b/en/modules/admin/assets/images/newsletter_new_basic_example.png deleted file mode 100644 index 0da5fbf508..0000000000 Binary files a/en/modules/admin/assets/images/newsletter_new_basic_example.png and /dev/null differ diff --git a/en/modules/admin/assets/images/newsletter_new_cta01.png b/en/modules/admin/assets/images/newsletter_new_cta01.png deleted file mode 100644 index a2d546c348..0000000000 Binary files a/en/modules/admin/assets/images/newsletter_new_cta01.png and /dev/null differ diff --git a/en/modules/admin/assets/images/newsletter_new_cta02.png b/en/modules/admin/assets/images/newsletter_new_cta02.png deleted file mode 100644 index 25c1087e31..0000000000 Binary files a/en/modules/admin/assets/images/newsletter_new_cta02.png and /dev/null differ diff --git a/en/modules/admin/assets/images/newsletter_participant_notifications_settings.png b/en/modules/admin/assets/images/newsletter_participant_notifications_settings.png deleted file mode 100644 index 205f054898..0000000000 Binary files a/en/modules/admin/assets/images/newsletter_participant_notifications_settings.png and /dev/null differ diff --git a/en/modules/admin/assets/images/newsletter_preview_basic_example.png b/en/modules/admin/assets/images/newsletter_preview_basic_example.png deleted file mode 100644 index 732bf9917e..0000000000 Binary files a/en/modules/admin/assets/images/newsletter_preview_basic_example.png and /dev/null differ diff --git a/en/modules/admin/assets/images/newsletter_select_recipients.png b/en/modules/admin/assets/images/newsletter_select_recipients.png deleted file mode 100644 index 7d9fef019e..0000000000 Binary files a/en/modules/admin/assets/images/newsletter_select_recipients.png and /dev/null differ diff --git a/en/modules/admin/assets/images/newsletter_select_recipients_spaces.png b/en/modules/admin/assets/images/newsletter_select_recipients_spaces.png deleted file mode 100644 index 79f61dbc9e..0000000000 Binary files a/en/modules/admin/assets/images/newsletter_select_recipients_spaces.png and /dev/null differ diff --git a/en/modules/admin/assets/images/newsletter_templates.png b/en/modules/admin/assets/images/newsletter_templates.png deleted file mode 100644 index 5c3ea3f0d2..0000000000 Binary files a/en/modules/admin/assets/images/newsletter_templates.png and /dev/null differ diff --git a/en/modules/admin/assets/images/pages_backend_edit.png b/en/modules/admin/assets/images/pages_backend_edit.png deleted file mode 100644 index 11a15a18f1..0000000000 Binary files a/en/modules/admin/assets/images/pages_backend_edit.png and /dev/null differ diff --git a/en/modules/admin/assets/images/pages_backend_form.png b/en/modules/admin/assets/images/pages_backend_form.png deleted file mode 100644 index e6050b196e..0000000000 Binary files a/en/modules/admin/assets/images/pages_backend_form.png and /dev/null differ diff --git a/en/modules/admin/assets/images/pages_backend_list.png b/en/modules/admin/assets/images/pages_backend_list.png deleted file mode 100644 index addee9b0b5..0000000000 Binary files a/en/modules/admin/assets/images/pages_backend_list.png and /dev/null differ diff --git a/en/modules/admin/assets/images/pages_backend_list_topics.png b/en/modules/admin/assets/images/pages_backend_list_topics.png deleted file mode 100644 index 469ab9d09a..0000000000 Binary files a/en/modules/admin/assets/images/pages_backend_list_topics.png and /dev/null differ diff --git a/en/modules/admin/assets/images/pages_backend_topic_form.png b/en/modules/admin/assets/images/pages_backend_topic_form.png deleted file mode 100644 index c3d0384b85..0000000000 Binary files a/en/modules/admin/assets/images/pages_backend_topic_form.png and /dev/null differ diff --git a/en/modules/admin/assets/images/pages_backend_tos_change.png b/en/modules/admin/assets/images/pages_backend_tos_change.png deleted file mode 100644 index 76bfeab4a9..0000000000 Binary files a/en/modules/admin/assets/images/pages_backend_tos_change.png and /dev/null differ diff --git a/en/modules/admin/assets/images/pages_frontend_footer.png b/en/modules/admin/assets/images/pages_frontend_footer.png deleted file mode 100644 index e7238ade4e..0000000000 Binary files a/en/modules/admin/assets/images/pages_frontend_footer.png and /dev/null differ diff --git a/en/modules/admin/assets/images/pages_frontend_list_topics.png b/en/modules/admin/assets/images/pages_frontend_list_topics.png deleted file mode 100644 index c4ed4f1878..0000000000 Binary files a/en/modules/admin/assets/images/pages_frontend_list_topics.png and /dev/null differ diff --git a/en/modules/admin/assets/images/pages_frontend_show.png b/en/modules/admin/assets/images/pages_frontend_show.png deleted file mode 100644 index ab2f1e5cf9..0000000000 Binary files a/en/modules/admin/assets/images/pages_frontend_show.png and /dev/null differ diff --git a/en/modules/admin/assets/images/pages_frontend_tos_change.png b/en/modules/admin/assets/images/pages_frontend_tos_change.png deleted file mode 100644 index f2b2017fb2..0000000000 Binary files a/en/modules/admin/assets/images/pages_frontend_tos_change.png and /dev/null differ diff --git a/en/modules/admin/assets/images/pages_frontend_tos_reject.png b/en/modules/admin/assets/images/pages_frontend_tos_reject.png deleted file mode 100644 index 60daed1738..0000000000 Binary files a/en/modules/admin/assets/images/pages_frontend_tos_reject.png and /dev/null differ diff --git a/en/modules/admin/assets/images/participants_block_user_alert.png b/en/modules/admin/assets/images/participants_block_user_alert.png deleted file mode 100644 index d0e697f225..0000000000 Binary files a/en/modules/admin/assets/images/participants_block_user_alert.png and /dev/null differ diff --git a/en/modules/admin/assets/images/participants_block_user_justification.png b/en/modules/admin/assets/images/participants_block_user_justification.png deleted file mode 100644 index 45e68494d3..0000000000 Binary files a/en/modules/admin/assets/images/participants_block_user_justification.png and /dev/null differ diff --git a/en/modules/admin/assets/images/participants_conversation.png b/en/modules/admin/assets/images/participants_conversation.png deleted file mode 100644 index d8b8416223..0000000000 Binary files a/en/modules/admin/assets/images/participants_conversation.png and /dev/null differ diff --git a/en/modules/admin/assets/images/participants_impersonations.png b/en/modules/admin/assets/images/participants_impersonations.png deleted file mode 100644 index 4794d1582d..0000000000 Binary files a/en/modules/admin/assets/images/participants_impersonations.png and /dev/null differ diff --git a/en/modules/admin/assets/images/participants_impersonations_form.png b/en/modules/admin/assets/images/participants_impersonations_form.png deleted file mode 100644 index 642828e6a1..0000000000 Binary files a/en/modules/admin/assets/images/participants_impersonations_form.png and /dev/null differ diff --git a/en/modules/admin/assets/images/participants_impersonations_managed.png b/en/modules/admin/assets/images/participants_impersonations_managed.png deleted file mode 100644 index 21872430e1..0000000000 Binary files a/en/modules/admin/assets/images/participants_impersonations_managed.png and /dev/null differ diff --git a/en/modules/admin/assets/images/participants_impersonations_promotion.png b/en/modules/admin/assets/images/participants_impersonations_promotion.png deleted file mode 100644 index 47cf11ed00..0000000000 Binary files a/en/modules/admin/assets/images/participants_impersonations_promotion.png and /dev/null differ diff --git a/en/modules/admin/assets/images/participants_impersonations_user.png b/en/modules/admin/assets/images/participants_impersonations_user.png deleted file mode 100644 index 8f21421698..0000000000 Binary files a/en/modules/admin/assets/images/participants_impersonations_user.png and /dev/null differ diff --git a/en/modules/admin/assets/images/participants_menu.png b/en/modules/admin/assets/images/participants_menu.png deleted file mode 100644 index d1e879815d..0000000000 Binary files a/en/modules/admin/assets/images/participants_menu.png and /dev/null differ diff --git a/en/modules/admin/assets/images/participants_officialize.png b/en/modules/admin/assets/images/participants_officialize.png deleted file mode 100644 index 681878e9a1..0000000000 Binary files a/en/modules/admin/assets/images/participants_officialize.png and /dev/null differ diff --git a/en/modules/admin/assets/images/participants_participants.png b/en/modules/admin/assets/images/participants_participants.png deleted file mode 100644 index b97172273c..0000000000 Binary files a/en/modules/admin/assets/images/participants_participants.png and /dev/null differ diff --git a/en/modules/admin/assets/images/participants_participants_actions.png b/en/modules/admin/assets/images/participants_participants_actions.png deleted file mode 100644 index 08809e31ee..0000000000 Binary files a/en/modules/admin/assets/images/participants_participants_actions.png and /dev/null differ diff --git a/en/modules/admin/assets/images/participants_participants_actions_officialize.png b/en/modules/admin/assets/images/participants_participants_actions_officialize.png deleted file mode 100644 index bbc8ae1e95..0000000000 Binary files a/en/modules/admin/assets/images/participants_participants_actions_officialize.png and /dev/null differ diff --git a/en/modules/admin/assets/images/participants_show_email.png b/en/modules/admin/assets/images/participants_show_email.png deleted file mode 100644 index eebf9dca61..0000000000 Binary files a/en/modules/admin/assets/images/participants_show_email.png and /dev/null differ diff --git a/en/modules/admin/assets/images/participants_showed_email.png b/en/modules/admin/assets/images/participants_showed_email.png deleted file mode 100644 index ce7df477aa..0000000000 Binary files a/en/modules/admin/assets/images/participants_showed_email.png and /dev/null differ diff --git a/en/modules/admin/assets/images/participants_showed_email_admin_log.png b/en/modules/admin/assets/images/participants_showed_email_admin_log.png deleted file mode 100644 index 6d72039858..0000000000 Binary files a/en/modules/admin/assets/images/participants_showed_email_admin_log.png and /dev/null differ diff --git a/en/modules/admin/assets/images/participants_sidebar_menu.png b/en/modules/admin/assets/images/participants_sidebar_menu.png deleted file mode 100644 index 591bcc0247..0000000000 Binary files a/en/modules/admin/assets/images/participants_sidebar_menu.png and /dev/null differ diff --git a/en/modules/admin/assets/images/process_admins_role_collaborator.png b/en/modules/admin/assets/images/process_admins_role_collaborator.png deleted file mode 100644 index 38f323cc3e..0000000000 Binary files a/en/modules/admin/assets/images/process_admins_role_collaborator.png and /dev/null differ diff --git a/en/modules/admin/assets/images/reported_participant_flag.png b/en/modules/admin/assets/images/reported_participant_flag.png deleted file mode 100644 index 483b4374c8..0000000000 Binary files a/en/modules/admin/assets/images/reported_participant_flag.png and /dev/null differ diff --git a/en/modules/admin/assets/images/spaces/admins_form.png b/en/modules/admin/assets/images/spaces/admins_form.png deleted file mode 100644 index d69d640c1c..0000000000 Binary files a/en/modules/admin/assets/images/spaces/admins_form.png and /dev/null differ diff --git a/en/modules/admin/assets/images/spaces/admins_role_admin01.png b/en/modules/admin/assets/images/spaces/admins_role_admin01.png deleted file mode 100644 index c949a6c74c..0000000000 Binary files a/en/modules/admin/assets/images/spaces/admins_role_admin01.png and /dev/null differ diff --git a/en/modules/admin/assets/images/spaces/admins_role_admin02.png b/en/modules/admin/assets/images/spaces/admins_role_admin02.png deleted file mode 100644 index 19aab7fa0c..0000000000 Binary files a/en/modules/admin/assets/images/spaces/admins_role_admin02.png and /dev/null differ diff --git a/en/modules/admin/assets/images/spaces/admins_role_moderator.png b/en/modules/admin/assets/images/spaces/admins_role_moderator.png deleted file mode 100644 index ed7dafd6b8..0000000000 Binary files a/en/modules/admin/assets/images/spaces/admins_role_moderator.png and /dev/null differ diff --git a/en/modules/admin/assets/images/spaces/admins_role_valuator.png b/en/modules/admin/assets/images/spaces/admins_role_valuator.png deleted file mode 100644 index 798c6c8ec3..0000000000 Binary files a/en/modules/admin/assets/images/spaces/admins_role_valuator.png and /dev/null differ diff --git a/en/modules/admin/assets/images/spaces/attachments.png b/en/modules/admin/assets/images/spaces/attachments.png deleted file mode 100644 index 3274d47e2d..0000000000 Binary files a/en/modules/admin/assets/images/spaces/attachments.png and /dev/null differ diff --git a/en/modules/admin/assets/images/spaces/attachments_admin.png b/en/modules/admin/assets/images/spaces/attachments_admin.png deleted file mode 100644 index 170242178f..0000000000 Binary files a/en/modules/admin/assets/images/spaces/attachments_admin.png and /dev/null differ diff --git a/en/modules/admin/assets/images/spaces/attachments_folder.png b/en/modules/admin/assets/images/spaces/attachments_folder.png deleted file mode 100644 index 27d1e2607e..0000000000 Binary files a/en/modules/admin/assets/images/spaces/attachments_folder.png and /dev/null differ diff --git a/en/modules/admin/assets/images/spaces/attachments_new_folder_form.png b/en/modules/admin/assets/images/spaces/attachments_new_folder_form.png deleted file mode 100644 index 6e54583d03..0000000000 Binary files a/en/modules/admin/assets/images/spaces/attachments_new_folder_form.png and /dev/null differ diff --git a/en/modules/admin/assets/images/spaces/attachments_new_form.png b/en/modules/admin/assets/images/spaces/attachments_new_form.png deleted file mode 100644 index d15d32bc55..0000000000 Binary files a/en/modules/admin/assets/images/spaces/attachments_new_form.png and /dev/null differ diff --git a/en/modules/admin/assets/images/spaces/categories.png b/en/modules/admin/assets/images/spaces/categories.png deleted file mode 100644 index b99f36a0fd..0000000000 Binary files a/en/modules/admin/assets/images/spaces/categories.png and /dev/null differ diff --git a/en/modules/admin/assets/images/spaces/categories_form.png b/en/modules/admin/assets/images/spaces/categories_form.png deleted file mode 100644 index e85b118fb2..0000000000 Binary files a/en/modules/admin/assets/images/spaces/categories_form.png and /dev/null differ diff --git a/en/modules/admin/assets/images/spaces/categories_new_form.png b/en/modules/admin/assets/images/spaces/categories_new_form.png deleted file mode 100644 index 33d6aba202..0000000000 Binary files a/en/modules/admin/assets/images/spaces/categories_new_form.png and /dev/null differ diff --git a/en/modules/admin/assets/images/spaces/categories_sidebar.png b/en/modules/admin/assets/images/spaces/categories_sidebar.png deleted file mode 100644 index 04f56175ab..0000000000 Binary files a/en/modules/admin/assets/images/spaces/categories_sidebar.png and /dev/null differ diff --git a/en/modules/admin/assets/images/spaces/components.png b/en/modules/admin/assets/images/spaces/components.png deleted file mode 100644 index 5506322476..0000000000 Binary files a/en/modules/admin/assets/images/spaces/components.png and /dev/null differ diff --git a/en/modules/admin/assets/images/spaces/components_new_dropdown.png b/en/modules/admin/assets/images/spaces/components_new_dropdown.png deleted file mode 100644 index cec94ef25b..0000000000 Binary files a/en/modules/admin/assets/images/spaces/components_new_dropdown.png and /dev/null differ diff --git a/en/modules/admin/assets/images/spaces/private_participants.png b/en/modules/admin/assets/images/spaces/private_participants.png deleted file mode 100644 index aa421081fa..0000000000 Binary files a/en/modules/admin/assets/images/spaces/private_participants.png and /dev/null differ diff --git a/en/modules/admin/assets/images/spaces/private_participants_actions.png b/en/modules/admin/assets/images/spaces/private_participants_actions.png deleted file mode 100644 index cbc0e7f469..0000000000 Binary files a/en/modules/admin/assets/images/spaces/private_participants_actions.png and /dev/null differ diff --git a/en/modules/admin/assets/images/spaces/private_participants_csv_import.png b/en/modules/admin/assets/images/spaces/private_participants_csv_import.png deleted file mode 100644 index 199ca73a3f..0000000000 Binary files a/en/modules/admin/assets/images/spaces/private_participants_csv_import.png and /dev/null differ diff --git a/en/modules/admin/assets/images/spaces/private_participants_new_form.png b/en/modules/admin/assets/images/spaces/private_participants_new_form.png deleted file mode 100644 index e188a853ad..0000000000 Binary files a/en/modules/admin/assets/images/spaces/private_participants_new_form.png and /dev/null differ diff --git a/en/modules/admin/assets/images/spaces/private_participants_user_registration_form.png b/en/modules/admin/assets/images/spaces/private_participants_user_registration_form.png deleted file mode 100644 index cba02ab654..0000000000 Binary files a/en/modules/admin/assets/images/spaces/private_participants_user_registration_form.png and /dev/null differ diff --git a/en/modules/admin/assets/images/system-dashboard.png b/en/modules/admin/assets/images/system-dashboard.png deleted file mode 100644 index 18d28390e8..0000000000 Binary files a/en/modules/admin/assets/images/system-dashboard.png and /dev/null differ diff --git a/en/modules/admin/assets/images/system-log_in.png b/en/modules/admin/assets/images/system-log_in.png deleted file mode 100644 index 674a6c1179..0000000000 Binary files a/en/modules/admin/assets/images/system-log_in.png and /dev/null differ diff --git a/en/modules/admin/assets/images/user_group_conversation.png b/en/modules/admin/assets/images/user_group_conversation.png deleted file mode 100644 index 847976594f..0000000000 Binary files a/en/modules/admin/assets/images/user_group_conversation.png and /dev/null differ diff --git a/en/modules/admin/assets/images/user_group_create_debate.png b/en/modules/admin/assets/images/user_group_create_debate.png deleted file mode 100644 index 2295406b67..0000000000 Binary files a/en/modules/admin/assets/images/user_group_create_debate.png and /dev/null differ diff --git a/en/modules/admin/assets/images/user_group_endorse.png b/en/modules/admin/assets/images/user_group_endorse.png deleted file mode 100644 index 949361b29b..0000000000 Binary files a/en/modules/admin/assets/images/user_group_endorse.png and /dev/null differ diff --git a/en/modules/admin/assets/images/user_group_invite_participant.png b/en/modules/admin/assets/images/user_group_invite_participant.png deleted file mode 100644 index f03b68c706..0000000000 Binary files a/en/modules/admin/assets/images/user_group_invite_participant.png and /dev/null differ diff --git a/en/modules/admin/assets/images/user_group_make_comment.png b/en/modules/admin/assets/images/user_group_make_comment.png deleted file mode 100644 index 4579930bed..0000000000 Binary files a/en/modules/admin/assets/images/user_group_make_comment.png and /dev/null differ diff --git a/en/modules/admin/assets/images/user_group_new_form.png b/en/modules/admin/assets/images/user_group_new_form.png deleted file mode 100644 index 0b19297cbb..0000000000 Binary files a/en/modules/admin/assets/images/user_group_new_form.png and /dev/null differ diff --git a/en/modules/admin/assets/images/user_group_sidebar.png b/en/modules/admin/assets/images/user_group_sidebar.png deleted file mode 100644 index 36576cd5d7..0000000000 Binary files a/en/modules/admin/assets/images/user_group_sidebar.png and /dev/null differ diff --git a/en/modules/admin/assets/images/user_group_verified.png b/en/modules/admin/assets/images/user_group_verified.png deleted file mode 100644 index 66dd9f85c7..0000000000 Binary files a/en/modules/admin/assets/images/user_group_verified.png and /dev/null differ diff --git a/en/modules/admin/assets/images/user_sidebar.png b/en/modules/admin/assets/images/user_sidebar.png deleted file mode 100644 index 6b97e379e8..0000000000 Binary files a/en/modules/admin/assets/images/user_sidebar.png and /dev/null differ diff --git a/en/modules/admin/assets/images/verifications_conflicts.png b/en/modules/admin/assets/images/verifications_conflicts.png deleted file mode 100644 index b6de1a96ab..0000000000 Binary files a/en/modules/admin/assets/images/verifications_conflicts.png and /dev/null differ diff --git a/en/modules/admin/assets/images/verifications_conflicts_transfer_user.png b/en/modules/admin/assets/images/verifications_conflicts_transfer_user.png deleted file mode 100644 index faabf213f9..0000000000 Binary files a/en/modules/admin/assets/images/verifications_conflicts_transfer_user.png and /dev/null differ diff --git a/en/modules/admin/pages/components/elections.adoc b/en/modules/admin/pages/components/elections.adoc deleted file mode 100644 index e18d4d3fca..0000000000 --- a/en/modules/admin/pages/components/elections.adoc +++ /dev/null @@ -1,3 +0,0 @@ -= Elections - -include::partial$development.adoc[] diff --git a/en/modules/admin/pages/dashboard.adoc b/en/modules/admin/pages/dashboard.adoc deleted file mode 100644 index 8eb300bcb5..0000000000 --- a/en/modules/admin/pages/dashboard.adoc +++ /dev/null @@ -1,17 +0,0 @@ -= Dashboard - -After you've logged in as user Administrator, you'll see the Dashboard, were you'll have a summary of the last activity of the platform. - -image::admin_dashboard.png[Decidim Admin Dashboard] - -You'll have three blocks: - -1. Activity: participants and admins that had logged in in last month, last week and last day. -2. Metrics: the graphics for the evolution of multiple things inside of Decidim: - * Participants - * Proposals - * Comments - * Meetings - * Accepted proposals - * Results -3. Admin log: last actions made by Administrator users in the platform. \ No newline at end of file diff --git a/en/modules/admin/pages/how-to-access-administrator-menu.adoc b/en/modules/admin/pages/how-to-access-administrator-menu.adoc deleted file mode 100644 index e1add8ec90..0000000000 --- a/en/modules/admin/pages/how-to-access-administrator-menu.adoc +++ /dev/null @@ -1,56 +0,0 @@ -== How to access the administrator menu - -include::partial$legacy.adoc[] - - -First you need to start the session. Go to the top right part of Decidim webpage (<>) and click on Sign In. Only those whose administrator authorisation has been configured can access the Dashboard. - -[#MetaDecidim-home-page-fig] -._MetaDecidim home page_. -image::image71.png[image] - -In the *Log in* window (<>) write *Email* and *Password* and click on *Log in*. Remember you will have to have been registered beforehand. Alternatively, you can sign in using your Twitter, Facebook or Google account. - -To sign up, you can use the same window (<>), by clicking on *Create an account* (in the upper part of the screen) or *Sign up* (in the lower part), or even on the home page by clicking on *Sign Up*. - -[#Log-In-fig] -._Log In_. -image::image70.png[image] - -Once inside the *Sign up window* (<>), tick whether you are an *Individual* or *Organization/ Collective*, enter *Your name* (public name that appears on your posts. With the aim of guaranteeing the anonymity, can be any name), *Your short unique identifier in Decidim, Your email, password* you will use, *confirm password* and tick *Receive an occasional newsletter with relevant information* box if you want to receive the information. To finish, click on *By signing up you agree to the terms and conditions of use* (available by clicking on the link), and click on *Sign up*. - -[#Sign-up-fig] -._Sign up_. -image::image6.png[image] - -It’s also possible to sign up using  Twitter, Facebook or Google accounts. - -In addition, organizations should complete the cells: *Organization name, Organization document number* and *phone*. - -Once you have finished your registration, you can complete your user-options settings such as additional information or notifications. Click on user name on the top right of the webpage. A drop-down menu will open (<>), where you can access to: *My account, My public profile, Notifications, Conversations, Admin dashboard, Sign out*. - -[#Accessing-the-user-options-menu-fig] -._Accessing the user-options menu_. -image::image73.png[image] - -Click on *My account* to finish configuring your account settings or to modify them: to add an avatar/ image, change your name or e-mail address or set the level of notifications you wish to receive. The *User settings* window will open (<>). - -[[h.49x2ik5-1]] - -[#User-settings-fig] -._User settings_. -image::image58.png[image] - -To set your notification levels, click on *Notification settings* in the menu on the left of the screen and select *I want to receive an email every time i receive a notification* if you wish to receive an email every time you receive a notification and select *I want to receive newsletters* if you wish to receive information on a relevant activity (<>). - -[#Notification-settigs-fig] -._Notification Settings_. -image::image67.png[image] - -To access the administrator menu, click on the name on the top right of the webpage (in this case, *usuari1*) and select *Admin dashboard* from the drop-down menu. Remember that to access the administrator menu you will need to have your administrator authorisation configured. - -The *Dashboard* (<>) will open, allowing you to configure (by clicking on the options that appear in the menu on the left) the local authority's Decidim platform, static pages, Participatory Processes and process groups, Assemblies and Councils, Initiatives and newsletters and manage users. - -[#Dashboard-fig] -._Dashboard_. -image::image22.png[image] diff --git a/en/modules/admin/pages/spaces/consultations.adoc b/en/modules/admin/pages/spaces/consultations.adoc deleted file mode 100644 index da2aef998c..0000000000 --- a/en/modules/admin/pages/spaces/consultations.adoc +++ /dev/null @@ -1,3 +0,0 @@ -= Consultations - -include::partial$deprecated.adoc[] diff --git a/en/modules/admin/pages/spaces/votings.adoc b/en/modules/admin/pages/spaces/votings.adoc deleted file mode 100644 index 17f03f5d40..0000000000 --- a/en/modules/admin/pages/spaces/votings.adoc +++ /dev/null @@ -1,3 +0,0 @@ -= Votings - -include::partial$development.adoc[] diff --git a/en/modules/features/pages/components.adoc b/en/modules/features/pages/components.adoc deleted file mode 100644 index 85b33037fa..0000000000 --- a/en/modules/features/pages/components.adoc +++ /dev/null @@ -1,145 +0,0 @@ -= Components -:page-partial: - -Decidim’s components are basic participatory mechanisms that are activated and configured for the various participatory spaces or subspaces (stages of a process, the work groups of a body, etc.). - -== Proposals - -Proposals are Decidim's most important component. Proposals can be defined as any element of a strategic plan, a regulation, an investment plan, a change in legislation or any other minimum decision unit. Proposals may be made by any of the following *types of creators*: by the very organisation managing the platform (e.g. a local authority); by registered participants; they may originate from a meeting as a result of a discussion or collective deliberation or may be generated by an assembly or body or by an organisation registered with the platform. They may also **be created directly or collaboratively **and be subject to *amends*. - -Proposals are defined by one or more authors, a title, a text content and a category. They may also include *images*, **geo-location **and *accompanying files*. - -Once a proposal has been published it may be *moderated* (if someone labels it as such and defines the reason for moderating) and it can also be *withdrawn* by author/s themselves. - -Proposals in the *administration* panel can *be ordered* under various criteria, can be commented on internally (without these observations being seen by the public), can be *downloaded* in JSON or CSV format (compatible with spreadsheet software), can be *recategorised* or *moved* to different spaces. In addition, proposals may be *accepted*, *rejected* or kept in an *evaluating* state. - -Other features associated with proposals include: - -* *Version control*: this makes it possible to keep a record of all the changes made to a proposal, as well as code-generation to verify the proposal’s integrity. -* *Detecting similarities*: This allows anyone making a new proposal to find similar ones previously made on the platform, thereby avoiding duplications. -* *Connections between proposals*: proposals made can be connected to one another using links in the comments section, showing related proposals as cards and giving notifications on the existence of a new connection. -* *Support proposal*: participants can provide support for proposals. -* *Endorsement of proposals*: participants and collectives can endorse proposals and such public endorsement will be shown within the proposal, followers of the endorsers will be notified that the followed endorsed the proposal. -* *Modification and withdrawal of proposals*: a proposal’s author may modify and/or withdraw it before the support stage opens. -* *Amends*: any participant can edit a proposal’s text and a sub-proposal will be created in amendment mode (as Pull Request in Github). This sub-proposal may gather endorsements and supports. Besides, the proposal’s author may accept or reject the amendment (or sub-proposal). Where a sub-proposal is rejected, its author may convert it into an official proposal. -* *Proposal creation wizard*: While a proposal is being created, the participant is accompanied through the process, which is divided into different steps, with contextual help and previews before the proposal is published. -* *Collaborative draft for proposals*: Decidim permits collaboration and co-creation over proposals. It incorporates the following features: -** Creating rough drafts with numerous authors. -** The listing of collaborative drafts -** Comments in drafts -** Asking for help from and accepting the help of other collaborators - - -== Participatory texts - -Participatory texts are defined as an ordered collection of proposals that make up a document with complete text. Participation in the text stems from interaction with the proposals that form it. This component basically allows three operations: - -* *Breaking down a text document into ordered proposals* from a document in ODT, XDOC, MarkDown and HTML formats. If the text is structured in sections and subsections, ordered proposals will be created from the lower level subsection; if the text is not structured, a proposal will be created for each paragraph of text. The interface allows proposals to be re-edited, merged, separated, given titles, etc. -* *Composition of proposals in a unified text*: based on a series of proposals, these may be ordered and generate a unified and downloadable text. -* *Viewing and interacting* with documents composed of proposals: A collection of proposals will be shown as a unified text and may be amended or comments can be added in the margin. - -== Results - -Results are proposals (or amendments to proposals) which have ended up being the result of a decision taken in Decidim, whether directly (as a consequence of applying a voting system) or brought about by meetings, assemblies or the expert or political team in charge of a decision area through the platform’s management. - -The results component allows *official responses* to be managed for all the proposals made: with the reason for rejecting or accepting the proposal and the result in which the proposal has been accepted. - -Results collect *metadata on the traceability* of the proposals incorporated into the result, as well as the meetings where they were discussed and debated or created (by those attending these meetings) and the endorsements received. - -== Accountability: monitoring results - -The result-monitoring component enables *results to be turned into projects* or allows them to be broken down into projects or sub-projects. Each of these projects can be described in further detail and allows *the implementation status to be defined*, in sections which range from 0% implementation to 100%. The monitoring component also enables people visiting the platform to *view the level of implementation* (comprehensive, by category and/or subcategory), of the results and projects. Results, projects and statuses can be updated through a CVS, or manually by the administration interface. - -== Support/votes and endorsements - -Participants can endorse proposals. Such endorsements can be interpreted as votes, signatures, endorsements or in any other format that demonstrates a positive agreement in accordance with the political will itself. - -There are *several support/voting and management systems* for this in Decidim. The simplest way is by activating endorsements, so that participants can issue a single endorsement for each proposal they wish, without any limit to the number of proposals that can be voted for. Alternatively, the number of votes can be limited (e.g. 10 per participant). - -From the administration panel it is possible to configure the *display settings for the voting results* either during or solely after the voting period. - -There is a *special form used to vote for participatory budgets* which allows participants to vote by "spending" an amount equivalent to the budget in question among the proposed projects. The number of votes is limited here by the selected projects’ accumulated spending amount. - -== Comments - -Comments are a special component generally associated with another component (proposals, discussions and debates, results, meetings etc.) to enable a deliberative process on an issue or proposal. - -Decidim’s comments system has been designed to encourage deliberation. First-level comments, with respect to the discussion's subject matter, can be classed as: *In favour, against or neutral*. Comments can be *embedded* in subsection commentary threads and *voted on*. Decidim allows *observations to be ranked* by those in favour or against, in chronological order and by number of votes in favour. - -== Informative pages - -This is a page with html content and a title that appears in the inner menu of the participatory spaces. It is possible to embed images, videos and rich text here. - -== Discussions and debates - -Discussions and debates can be opened on questions and specific issues established by administrators or participants. - -== Surveys - -The surveys component allows to design and conduct surveys and to mappe out -the results, processed and displayed for surveys that can be carried out in various participatory spaces. - -* *Survey configuration tool*: allows administrators to create questions and answers (open, test types, multiple selection etc.) and launch the survey, as well as download the responses in CSV format. -* *Survey interface for participants*: allows participants to respond to survey questions. - -== In-person meetings - -This component enables users to convene meetings, *add them to a calendar with geo-location*, upload *meeting minutes*, *debate*, create *proposals associated* with meetings (stating the type of collective endorsement for the proposal), record the *number* of participants, upload *photos* of the meeting and *categorise* the meeting within a space. - -The configuration *settings* for meetings include the following *basic fields*: Title; description; address; location; Location hints; start and end time; scope; category and maximum seating capacity. - -It also includes the following *advanced fields*: nature (public, open, closed); organiser group; existence of reconciliation space; adaptation to people with functional diversity; existence of simultaneous translation; type of meeting (informative, creative, deliberative, decision-making, evaluative, account giving, etc.). - -Meetings relating to a participatory space (a specific process or an assembly) can be shown on a *map* and be *ordered by date or category*. Besides, all the meetings can be shown in *calendar mode*, with the possibility of exporting them to a mobile phone calendar or other apps. - -Some of the meeting component’s advanced features include: - -* *Registration and attendance system*: -** This allows to manage the *type of registration* (open and automatic, closed and accessible only to certain types of participants, etc.), to establish the **number of places **available for attendees, to reserve a place, to do *manual registrations*, sent out *Invitations*, to define the *conditions* that need to be accepted in order to be able to attend the meeting (e.g. image rights release), and *registering the attendance* of participants. -** It allows participants *to register* for a meeting, request *a family reconciliation service* (playroom, childcare space) and to obtain an *accreditation code* for attending at a meeting. -** Those registered who have attended a meeting will have *special access* enabling them to evaluate the meeting or make comments, etc. -** Participants or administrators will be able to receive *notifications* on registration-period openings, the number of places remaining for registrations, reminders of meetings, and the publication of minutes. -* *Managing agendas*: allows to define the duration of meetings, to create agenda’s items and sub-items, title, content, and estimated duration. Participants can propose agenda items. -* System for *drafting, publishing and validating meeting minutes* [IMPORTANT NOTE:This is currently implemented differently]: -** Minutes can be uploaded in video, audio or text format. -** Minutes in text mode are associated with a *collaborative writing board* integrated into Decidim. -** Minutes go through 4 *stages of preparation*: 1. Collaborative writing during the meeting; 2. Preparing the official draft of the minutes; 3. Draft-amendment stage; 4. Publication and final validation of the minutes. -** Minutes can be *commented on* using the comments component. -** *Accompanying documents* may also be added to the minutes. -* *Auto-convening*: verified participants will be able to convene meetings directly through the platform , with support from a certain number of other participants, the meeting will be publicly activated and convening participants will have access to the administration panel [IMPORTANT: not implemented yet] -* *Displaying and exporting meetings*: meetings can be displayed in map mode (for spaces or generally on the platform) or in calendar mode, and can be exported to agenda and calendar managers (in iCalendar format). - -== Conferences - -Conferences are defined as a series of meetings having several specific features (interactive and downloadable programme, registration system, system for generating certificates of attendance and/or diplomas). - -Decidim has a configuration and conference-page generator, which enables the creation of an *internal website for holding conferences* relating to a participatory process or another participatory space. - -Configuration settings include: - -* The option to generate an *interactive programme* on the event (where there are guest speakers, it will include their name, position, organisation, a small biography and links to other websites). -* Email *invitations*. -* *Automatic diploma creation* for those who request it, through a support panel that an administrator can verify. -* Links to the event *video and materials* platforms in the programme and documents. -* Automatic links to digital-media websites covering the event. -* The ability to following events through *social networks* (e.g. by incorporating a Twitter feed). - -== Blogs - -Blogs are a component that allow *news items* to be created and displayed chronologically. Blog entries are another type of content and have to be associated with a participatory space. Blog entries relate to the classification system of the platform’s content. *Comments associated* with blog entries will be treated like the platform’s other comments, as described above. - -== Newsletter - -Decidim has a function which enables a user to send a *newsletter* (email) to everyone registered with the platform who has agreed, under the terms and conditions of use, to receiving this information newsletter email. Personalised emails are sent out addressed directly to the name of the user in the language chosen by the user by default. - -Participants will automatically and directly be able to *unsubscribe* through the email itself by clicking on a link in it and it will also be possible to *track the number of visits* generated by the newsletter. - -== Search engine - -*The search engine* allows participants to perform searches across all of the platform’s indexable content, both generally and specifically, by searching within a specific participatory process or inside its components (proposals, results, etc.), through advanced searches. - -*Pages that can be browsed and filtered from search results* show contents according to their type and ordered by the priority they have been defined under (e.g. Showing first the terms found inside assemblies and later the participatory processes). - -== Sortitions - -This component makes possible to select randomly a number of proposals among a set of proposals (or a category of proposals within a set) maximizing guarantees of randomness and avoiding manipulation of results by the administrator. diff --git a/netlify.toml b/netlify.toml index e4f6c43102..98fef11f57 100644 --- a/netlify.toml +++ b/netlify.toml @@ -1,57 +1,9 @@ [build] - publish = "build/site/" - command = "node_modules/.bin/antora --generator antora-site-generator-lunr --stacktrace --fetch --html-url-extension-style=indexify antora-playbook.yml" + command = "npm run build -- --fetch" [build.environment] - NODE_VERSION = "14" + NODE_VERSION = "16.14.2" BUILD_ONLY = "true" ANTORA_CACHE_DIR = "node_modules/.cache/antora" DOCSEARCH_ENABLED = "true" DOCSEARCH_ENGINE = "lunr" - -[context.deploy-preview] - command = "node_modules/.bin/antora --generator antora-site-generator-lunr --stacktrace --fetch --html-url-extension-style=indexify --url $DEPLOY_PRIME_URL antora-playbook.yml" - -[[redirects]] - from = "/social-contract/en/*" - to = "/en/understand/social-contract/" - -[[redirects]] - from = "/features/en/*" - to = "/en/features/:splat" - -[[redirects]] - from = "/features/es/*" - to = "/en/features/:splat" - -[[redirects]] - from = "/features/ca/*" - to = "/en/features/:splat" - -[[redirects]] - from = "/features/" - to = "/en/features/general-description/" - -[[redirects]] - from = "/whitepaper/en/*" - to = "/en/whitepaper/" - -[[redirects]] - from = "/deploy-and-admin/en/get-decidim/" - to = "/en/install/" - -[[redirects]] - from = "/admin-manual/en/*" - to = "/en/admin/:splat" - -[[redirects]] - from = "/develop/en/" - to = "/en/develop/guide/" - -[[redirects]] - from = "/develop/en/advanced/*" - to = "/en/develop/:splat" - -[[redirects]] - from = "/init/en/" - to = "/en/" diff --git a/package-lock.json b/package-lock.json index ce9bf71ed4..9c1a4deede 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,293 +1,2976 @@ { "name": "decidim-documentation", + "lockfileVersion": 2, "requires": true, - "lockfileVersion": 1, + "packages": { + "": { + "name": "decidim-documentation", + "dependencies": { + "@antora/lunr-extension": "^1.0.0-alpha.6", + "asciidoctor-kroki": "^0.17.0", + "asciidoctor-mathjax": "0.0.5" + }, + "devDependencies": { + "@antora/cli": "^3.0.0", + "@antora/site-generator-default": "^3.0.0" + } + }, + "node_modules/@antora/asciidoc-loader": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@antora/asciidoc-loader/-/asciidoc-loader-3.1.2.tgz", + "integrity": "sha512-j5nNo8XastKxu8WYV9muCgRB4iGo88KIePIegcdQ5tcbuPmamOlp2/XuwYzGDAjWmaadqLD+3y9Mu18hA+wUYg==", + "dev": true, + "dependencies": { + "@antora/logger": "3.1.2", + "@antora/user-require-helper": "~2.0", + "@asciidoctor/core": "~2.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@antora/cli": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@antora/cli/-/cli-3.1.2.tgz", + "integrity": "sha512-/0ddoM9ZsY41LPmow8ic6IG+PIiTik82YJTHCM8CHRme2oNHU1ZBaXbH6ClS9yBwwPzVzwt4Bc6A/yQ/5+2XCA==", + "dev": true, + "dependencies": { + "@antora/logger": "3.1.2", + "@antora/playbook-builder": "3.1.2", + "@antora/user-require-helper": "~2.0", + "commander": "~9.4" + }, + "bin": { + "antora": "bin/antora" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@antora/content-aggregator": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@antora/content-aggregator/-/content-aggregator-3.1.2.tgz", + "integrity": "sha512-gRseJBYO7DpyCa2vwkRM7e2ZQ8D7813Q91sn9fg94D+8H/Em4SborO057jkOOgsxNAcXsQgiHfX2X8L+S+Vkqg==", + "dev": true, + "dependencies": { + "@antora/expand-path-helper": "~2.0", + "@antora/logger": "3.1.2", + "@antora/user-require-helper": "~2.0", + "braces": "~3.0", + "cache-directory": "~2.0", + "glob-stream": "~7.0", + "hpagent": "~1.1", + "isomorphic-git": "~1.21", + "js-yaml": "~4.1", + "multi-progress": "~4.0", + "picomatch": "~2.3", + "progress": "~2.0", + "should-proxy": "~1.0", + "simple-get": "~4.0", + "vinyl": "~2.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@antora/content-classifier": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@antora/content-classifier/-/content-classifier-3.1.2.tgz", + "integrity": "sha512-Kisp/VlnTFiG6YnEMyTCnFqXks1SG6AuYrUADCW+KmDuXI7xZGHrLJjFeTUIDp0+HzuW96TJUhuMB8UL9TDNFA==", + "dev": true, + "dependencies": { + "@antora/asciidoc-loader": "3.1.2", + "@antora/logger": "3.1.2", + "mime-types": "~2.1", + "vinyl": "~2.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@antora/document-converter": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@antora/document-converter/-/document-converter-3.1.2.tgz", + "integrity": "sha512-zOFMK0wcmL3aZuO2k61MaWDZ86vzuG16YIIqebg/V0QZcSsS06Vvo79fplQz91KL2vPgB0+rl//Roqbr28MfUw==", + "dev": true, + "dependencies": { + "@antora/asciidoc-loader": "3.1.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@antora/expand-path-helper": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@antora/expand-path-helper/-/expand-path-helper-2.0.0.tgz", + "integrity": "sha512-CSMBGC+tI21VS2kGW3PV7T2kQTM5eT3f2GTPVLttwaNYbNxDve08en/huzszHJfxo11CcEs26Ostr0F2c1QqeA==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/@antora/file-publisher": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@antora/file-publisher/-/file-publisher-3.1.2.tgz", + "integrity": "sha512-yWE1E4kg5obAzX9nl/oYou86BlSeKCf9lONiYuWqeqdUdeZPxW5RE2YahJk6i9+9Zwrxgm65oc/oDdvsdwSqYw==", + "dev": true, + "dependencies": { + "@antora/expand-path-helper": "~2.0", + "@antora/user-require-helper": "~2.0", + "gulp-vinyl-zip": "~2.5", + "vinyl": "~2.2", + "vinyl-fs": "~3.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@antora/logger": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@antora/logger/-/logger-3.1.2.tgz", + "integrity": "sha512-xmKCpchp0IU8SpKUa/AwlLsvOcO7edNjQ3dOzpxm223avCWm/lCnNBtC++lnLYE7jOfOFYjnhveE16JKPj6akA==", + "dev": true, + "dependencies": { + "@antora/expand-path-helper": "~2.0", + "pino": "~8.7", + "pino-pretty": "~9.1", + "sonic-boom": "~3.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@antora/lunr-extension": { + "version": "1.0.0-alpha.8", + "resolved": "https://registry.npmjs.org/@antora/lunr-extension/-/lunr-extension-1.0.0-alpha.8.tgz", + "integrity": "sha512-vdBgW3rsvbnmA236kT2Dckh9n0Db5za2/WxiLnFLgZ05ZO1KJQa9+R2WHaIFuGE7bKKbY+lqfM/i3KiezbL9YQ==", + "dependencies": { + "cheerio": "1.0.0-rc.10", + "html-entities": "~2.3", + "lunr": "~2.3", + "lunr-languages": "~1.9" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@antora/navigation-builder": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@antora/navigation-builder/-/navigation-builder-3.1.2.tgz", + "integrity": "sha512-gWiFTZDfM31mHgHKs3og6e1/2y4idFFBLwTfXZWbgBlUDKmhWQKeg1CUQUzXR0Ts4SJhiViGlOzptPXQPQURtA==", + "dev": true, + "dependencies": { + "@antora/asciidoc-loader": "3.1.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@antora/page-composer": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@antora/page-composer/-/page-composer-3.1.2.tgz", + "integrity": "sha512-rwYNEGh4cxQHsm+fEk4R+Wi2silRe5eCeyPvW52caXvfaTcmSK92iOnXMYpsthws5UmBV3D+1eSXbjMfe4xC7w==", + "dev": true, + "dependencies": { + "@antora/logger": "3.1.2", + "handlebars": "~4.7", + "require-from-string": "~2.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@antora/playbook-builder": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@antora/playbook-builder/-/playbook-builder-3.1.2.tgz", + "integrity": "sha512-hfQom+UDFXdfDZVscGLtSBHZzkoi2HL8mt2Iiu+xh/6FFiAwCpU8eAlFzYHz2+yf8OpaMytvVNavvJXe3uo3qw==", + "dev": true, + "dependencies": { + "@iarna/toml": "~2.2", + "convict": "~6.2", + "js-yaml": "~4.1", + "json5": "~2.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@antora/redirect-producer": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@antora/redirect-producer/-/redirect-producer-3.1.2.tgz", + "integrity": "sha512-MUzjYH+2nKgW5oY9afkLzUdRsdSb+aOWF7BEPcvdCcA6/Gkm+fFs1bBATrtjjq70tbsKe6pMpsHEHqxuOz0WIQ==", + "dev": true, + "dependencies": { + "vinyl": "~2.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@antora/site-generator": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@antora/site-generator/-/site-generator-3.1.2.tgz", + "integrity": "sha512-BpdX3hcWhtPPpq4+lyQe1XLoaxSPd6dcB+AzQTpg5oIb3+mXte8Tie45WXmiCX9F1Dp6Ug9BDImf/2HJFsbG0Q==", + "dev": true, + "dependencies": { + "@antora/asciidoc-loader": "3.1.2", + "@antora/content-aggregator": "3.1.2", + "@antora/content-classifier": "3.1.2", + "@antora/document-converter": "3.1.2", + "@antora/file-publisher": "3.1.2", + "@antora/logger": "3.1.2", + "@antora/navigation-builder": "3.1.2", + "@antora/page-composer": "3.1.2", + "@antora/playbook-builder": "3.1.2", + "@antora/redirect-producer": "3.1.2", + "@antora/site-mapper": "3.1.2", + "@antora/site-publisher": "3.1.2", + "@antora/ui-loader": "3.1.2", + "@antora/user-require-helper": "~2.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@antora/site-generator-default": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@antora/site-generator-default/-/site-generator-default-3.1.2.tgz", + "integrity": "sha512-zd/7CEYzMo85t4/TVristVG5hMoZqw/bcSnr5+KVEpexBfnl3WtuD10hdo2TL7SSxqEsj0dvDK0PwgHN//l0yg==", + "dev": true, + "dependencies": { + "@antora/site-generator": "3.1.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@antora/site-mapper": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@antora/site-mapper/-/site-mapper-3.1.2.tgz", + "integrity": "sha512-WQEYac4KMIjc2H+5GUkzikgkZ1jSe8KXnDz9dzSL0A5zIwjVxlM2mnzAfzG8g1kKtlh1BwU4Famh97BfRzLQKg==", + "dev": true, + "dependencies": { + "@antora/content-classifier": "3.1.2", + "vinyl": "~2.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@antora/site-publisher": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@antora/site-publisher/-/site-publisher-3.1.2.tgz", + "integrity": "sha512-I/GeYypIVvpRH84amCWK3BUOEUplGpjx2rN+UgaXQ0UvBGVHrex6sfmS0G7R7g0cmK3X5hND44wTFxbaSBPUnw==", + "dev": true, + "dependencies": { + "@antora/file-publisher": "3.1.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@antora/ui-loader": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@antora/ui-loader/-/ui-loader-3.1.2.tgz", + "integrity": "sha512-4tE7FT0pvvQ7PjGBe/NiRhqGdyfvx/8YSZJwcC2RLxFFusrv/8WlGjbgOVU+gGRFy1AKZDFgzbQWtJcyLjsyAQ==", + "dev": true, + "dependencies": { + "@antora/expand-path-helper": "~2.0", + "braces": "~3.0", + "cache-directory": "~2.0", + "glob-stream": "~7.0", + "gulp-vinyl-zip": "~2.5", + "hpagent": "~1.1", + "js-yaml": "~4.1", + "picomatch": "~2.3", + "should-proxy": "~1.0", + "simple-get": "~4.0", + "vinyl": "~2.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@antora/user-require-helper": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@antora/user-require-helper/-/user-require-helper-2.0.0.tgz", + "integrity": "sha512-5fMfBZfw4zLoFdDAPMQX6Frik90uvfD8rXOA4UpXPOUikkX4uT1Rk6m0/4oi8oS3fcjiIl0k/7Nc+eTxW5TcQQ==", + "dev": true, + "dependencies": { + "@antora/expand-path-helper": "~2.0" + }, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/@asciidoctor/core": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/@asciidoctor/core/-/core-2.2.6.tgz", + "integrity": "sha512-TmB2K5UfpDpSbCNBBntXzKHcAk2EA3/P68jmWvmJvglVUdkO9V6kTAuXVe12+h6C4GK0ndwuCrHHtEVcL5t6pQ==", + "dependencies": { + "asciidoctor-opal-runtime": "0.3.3", + "unxhr": "1.0.1" + }, + "engines": { + "node": ">=8.11", + "npm": ">=5.0.0", + "yarn": ">=1.1.0" + } + }, + "node_modules/@iarna/toml": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz", + "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==", + "dev": true + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dev": true, + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, + "node_modules/append-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", + "integrity": "sha512-WLbYiXzD3y/ATLZFufV/rZvWdZOs+Z/+5v1rBZ463Jn398pa6kcde27cvozYnBoxXblGZTFfoPpsaEw0orU5BA==", + "dev": true, + "dependencies": { + "buffer-equal": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/asciidoctor-kroki": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/asciidoctor-kroki/-/asciidoctor-kroki-0.17.0.tgz", + "integrity": "sha512-aObUUfAtcfUTjhAP32bgrcoKXLRta57o3V5k+t73FXDKiLi+QfkHE+9+H4mGPTnghXBtiRYzsu7BbVGfTHoQzQ==", + "dependencies": { + "json5": "2.2.3", + "mkdirp": "2.1.3", + "pako": "2.1.0", + "rusha": "0.8.14", + "unxhr": "1.2.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@asciidoctor/core": "~2.2" + } + }, + "node_modules/asciidoctor-kroki/node_modules/unxhr": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/unxhr/-/unxhr-1.2.0.tgz", + "integrity": "sha512-6cGpm8NFXPD9QbSNx0cD2giy7teZ6xOkCUH3U89WKVkL9N9rBrWjlCwhR94Re18ZlAop4MOc3WU1M3Hv/bgpIw==", + "engines": { + "node": ">=8.11" + } + }, + "node_modules/asciidoctor-mathjax": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/asciidoctor-mathjax/-/asciidoctor-mathjax-0.0.5.tgz", + "integrity": "sha512-mrqgfm6L04dvvaYqDXeCu7PfL31sj65R2gISOL6vXI93vwzRRTeQwDi0OiyVzdYPzZMF4JJtJvrKiPiCk6Vv/g==", + "dependencies": { + "mathjax-full": "^3.0.1" + } + }, + "node_modules/asciidoctor-opal-runtime": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/asciidoctor-opal-runtime/-/asciidoctor-opal-runtime-0.3.3.tgz", + "integrity": "sha512-/CEVNiOia8E5BMO9FLooo+Kv18K4+4JBFRJp8vUy/N5dMRAg+fRNV4HA+o6aoSC79jVU/aT5XvUpxSxSsTS8FQ==", + "dependencies": { + "glob": "7.1.3", + "unxhr": "1.0.1" + }, + "engines": { + "node": ">=8.11" + } + }, + "node_modules/async-lock": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/async-lock/-/async-lock-1.4.0.tgz", + "integrity": "sha512-coglx5yIWuetakm3/1dsX9hxCNox22h7+V80RQOu2XUUMidtArxKoZoOtHUPuR84SycKTXzgGzAUR5hJxujyJQ==", + "dev": true + }, + "node_modules/atomic-sleep": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz", + "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/buffer-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.1.tgz", + "integrity": "sha512-QoV3ptgEaQpvVwbXdSO39iqPQTCxSF7A5U99AxbHYqUdCizL/lH2Z0A2y6nbZucxMEOtNyZfG2s6gsVugGpKkg==", + "dev": true, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/cache-directory": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cache-directory/-/cache-directory-2.0.0.tgz", + "integrity": "sha512-7YKEapH+2Uikde8hySyfobXBqPKULDyHNl/lhKm7cKf/GJFdG/tU/WpLrOg2y9aUrQrWUilYqawFIiGJPS6gDA==", + "dev": true, + "dependencies": { + "xdg-basedir": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/cheerio": { + "version": "1.0.0-rc.10", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.10.tgz", + "integrity": "sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==", + "dependencies": { + "cheerio-select": "^1.5.0", + "dom-serializer": "^1.3.2", + "domhandler": "^4.2.0", + "htmlparser2": "^6.1.0", + "parse5": "^6.0.1", + "parse5-htmlparser2-tree-adapter": "^6.0.1", + "tslib": "^2.2.0" + }, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/cheeriojs/cheerio?sponsor=1" + } + }, + "node_modules/cheerio-select": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-1.6.0.tgz", + "integrity": "sha512-eq0GdBvxVFbqWgmCm7M3XGs1I8oLy/nExUnh6oLqmBditPO9AqQJrkslDpMun/hZ0yyTs8L0m85OHp4ho6Qm9g==", + "dependencies": { + "css-select": "^4.3.0", + "css-what": "^6.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.3.1", + "domutils": "^2.8.0" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/clean-git-ref": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/clean-git-ref/-/clean-git-ref-2.0.1.tgz", + "integrity": "sha512-bLSptAy2P0s6hU4PzuIMKmMJJSE6gLXGH1cntDu7bWJUksvuM+7ReOK61mozULErYvP6a15rnYl0zFDef+pyPw==", + "dev": true + }, + "node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clone-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", + "integrity": "sha512-KLLTJWrvwIP+OPfMn0x2PheDEP20RPUcGXj/ERegTgdmPEZylALQldygiqrPPu8P45uNuPs7ckmReLY6v/iA5g==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/clone-stats": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", + "integrity": "sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag==", + "dev": true + }, + "node_modules/cloneable-readable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz", + "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "process-nextick-args": "^2.0.0", + "readable-stream": "^2.3.5" + } + }, + "node_modules/cloneable-readable/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/cloneable-readable/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/cloneable-readable/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/colorette": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", + "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", + "dev": true + }, + "node_modules/commander": { + "version": "9.4.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.4.1.tgz", + "integrity": "sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==", + "dev": true, + "engines": { + "node": "^12.20.0 || >=14" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "node_modules/convict": { + "version": "6.2.4", + "resolved": "https://registry.npmjs.org/convict/-/convict-6.2.4.tgz", + "integrity": "sha512-qN60BAwdMVdofckX7AlohVJ2x9UvjTNoKVXCL2LxFk1l7757EJqf1nySdMkPQer0bt8kQ5lQiyZ9/2NvrFBuwQ==", + "dev": true, + "dependencies": { + "lodash.clonedeep": "^4.5.0", + "yargs-parser": "^20.2.7" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "node_modules/crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "dev": true, + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/dateformat": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz", + "integrity": "sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dev": true, + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-properties": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", + "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", + "dev": true, + "dependencies": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/diff3": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/diff3/-/diff3-0.0.3.tgz", + "integrity": "sha512-iSq8ngPOt0K53A6eVr4d5Kn6GNrM2nQZtC740pzIriHtn4pOQ2lyzEXQMBeVcWERN0ye7fhBsk9PbLLQOnUx/g==", + "dev": true + }, + "node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/duplexify": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.2.tgz", + "integrity": "sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.4.1", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1", + "stream-shift": "^1.0.0" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/esm": { + "version": "3.2.25", + "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", + "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "node_modules/fast-copy": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/fast-copy/-/fast-copy-3.0.1.tgz", + "integrity": "sha512-Knr7NOtK3HWRYGtHoJrjkaWepqT8thIVGAwt0p0aUs1zqkAzXZV4vo9fFNwyb5fcqK1GKYFYxldQdIDVKhUAfA==", + "dev": true + }, + "node_modules/fast-redact": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.1.2.tgz", + "integrity": "sha512-+0em+Iya9fKGfEQGcd62Yv6onjBmmhV1uh86XVfOU8VwAe6kaFdQCWI9s0/Nnugx5Vd9tdbZ7e6gE2tR9dzXdw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", + "dev": true + }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dev": true, + "dependencies": { + "pend": "~1.2.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "node_modules/flush-write-stream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/flush-write-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/flush-write-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/fs-mkdirp-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", + "integrity": "sha512-+vSd9frUnapVC2RZYfL3FCB2p3g4TBhaUmrsWlSudsGdnxIuUvBB2QM1VZeBtc49QFwrp+wQLrDs3+xxDgI5gQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.11", + "through2": "^2.0.3" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/get-intrinsic": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", + "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob-stream": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-7.0.0.tgz", + "integrity": "sha512-evR4kvr6s0Yo5t4CD4H171n4T8XcnPFznvsbeN8K9FPzc0Q0wYqcOWyGtck2qcvJSLXKnU6DnDyfmbDDabYvRQ==", + "dev": true, + "dependencies": { + "extend": "^3.0.2", + "glob": "^7.2.0", + "glob-parent": "^6.0.2", + "is-negated-glob": "^1.0.0", + "ordered-read-streams": "^1.0.1", + "pumpify": "^2.0.1", + "readable-stream": "^3.6.0", + "remove-trailing-separator": "^1.1.0", + "to-absolute-glob": "^2.0.2", + "unique-stream": "^2.3.1" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob-stream/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/gulp-vinyl-zip": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/gulp-vinyl-zip/-/gulp-vinyl-zip-2.5.0.tgz", + "integrity": "sha512-KPi5/2SUmkXXDvKU4L2U1dkPOP03SbhONTOgNZlL23l9Yopt+euJ1bBXwWrSMbsyh3JLW/TYuC8CI4c4Kq4qrw==", + "dev": true, + "dependencies": { + "queue": "^4.2.1", + "through": "^2.3.8", + "through2": "^2.0.3", + "vinyl": "^2.0.2", + "vinyl-fs": "^3.0.3", + "yauzl": "^2.2.1", + "yazl": "^2.2.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/handlebars": { + "version": "4.7.7", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", + "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/help-me": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/help-me/-/help-me-4.2.0.tgz", + "integrity": "sha512-TAOnTB8Tz5Dw8penUuzHVrKNKlCIbwwbHnXraNJxPwf8LRtE2HlM84RYuezMFcwOJmoYOCWVDyJ8TQGxn9PgxA==", + "dev": true, + "dependencies": { + "glob": "^8.0.0", + "readable-stream": "^3.6.0" + } + }, + "node_modules/help-me/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/help-me/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/help-me/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/hpagent": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hpagent/-/hpagent-1.1.0.tgz", + "integrity": "sha512-bgJcBmNTZaJO03xtXOTNfoFEf/3VwoZ/gJ2O4ekTCZu4LSFtfzQFrJ0kjq8ZSS0+IdghXqQIiDUnpp0eUR9IJg==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/html-entities": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz", + "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==" + }, + "node_modules/htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "dev": true, + "dependencies": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-negated-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", + "integrity": "sha512-czXVVn/QEmgvej1f50BZ648vUI+em0xqMq2Sn+QncCLN4zj1UAxlT+kw/6ggQTOaZPd1HqKQGEqbpQVtJucWug==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-relative": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "dev": true, + "dependencies": { + "is-unc-path": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "dev": true, + "dependencies": { + "unc-path-regex": "^0.1.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==", + "dev": true + }, + "node_modules/is-valid-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", + "integrity": "sha512-AhiROmoEFDSsjx8hW+5sGwgKVIORcXnrlAx/R0ZSeaPw70Vw0CqkGBBhHGL58Uox2eXnU1AnvXJl1XlyedO5bA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/isomorphic-git": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/isomorphic-git/-/isomorphic-git-1.21.0.tgz", + "integrity": "sha512-ZqCAUM63CYepA3fB8H7NVyPSiOkgzIbQ7T+QPrm9xtYgQypN9JUJ5uLMjB5iTfomdJf3mdm6aSxjZwnT6ubvEA==", + "dev": true, + "dependencies": { + "async-lock": "^1.1.0", + "clean-git-ref": "^2.0.1", + "crc-32": "^1.2.0", + "diff3": "0.0.3", + "ignore": "^5.1.4", + "minimisted": "^2.0.0", + "pako": "^1.0.10", + "pify": "^4.0.1", + "readable-stream": "^3.4.0", + "sha.js": "^2.4.9", + "simple-get": "^4.0.1" + }, + "bin": { + "isogit": "cli.cjs" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/isomorphic-git/node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + }, + "node_modules/joycon": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz", + "integrity": "sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/lazystream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", + "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", + "dev": true, + "dependencies": { + "readable-stream": "^2.0.5" + }, + "engines": { + "node": ">= 0.6.3" + } + }, + "node_modules/lazystream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/lazystream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/lazystream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/lead": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz", + "integrity": "sha512-IpSVCk9AYvLHo5ctcIXxOBpMWUe+4TKN3VPWAKUbJikkmsGp0VrSM8IttVc32D6J4WUsiPE6aEFRNmIoF/gdow==", + "dev": true, + "dependencies": { + "flush-write-stream": "^1.0.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", + "dev": true + }, + "node_modules/lunr": { + "version": "2.3.9", + "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", + "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==" + }, + "node_modules/lunr-languages": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/lunr-languages/-/lunr-languages-1.9.0.tgz", + "integrity": "sha512-Be5vFuc8NAheOIjviCRms3ZqFFBlzns3u9DXpPSZvALetgnydAN0poV71pVLFn0keYy/s4VblMMkqewTLe+KPg==" + }, + "node_modules/mathjax-full": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/mathjax-full/-/mathjax-full-3.2.2.tgz", + "integrity": "sha512-+LfG9Fik+OuI8SLwsiR02IVdjcnRCy5MufYLi0C3TdMT56L/pjB0alMVGgoWJF8pN9Rc7FESycZB9BMNWIid5w==", + "dependencies": { + "esm": "^3.2.25", + "mhchemparser": "^4.1.0", + "mj-context-menu": "^0.6.1", + "speech-rule-engine": "^4.0.6" + } + }, + "node_modules/mhchemparser": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/mhchemparser/-/mhchemparser-4.1.1.tgz", + "integrity": "sha512-R75CUN6O6e1t8bgailrF1qPq+HhVeFTM3XQ0uzI+mXTybmphy3b6h4NbLOYhemViQ3lUs+6CKRkC3Ws1TlYREA==" + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minimisted": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/minimisted/-/minimisted-2.0.1.tgz", + "integrity": "sha512-1oPjfuLQa2caorJUM8HV8lGgWCc0qqAO1MNv/k05G4qslmsndV/5WdNZrqCiyqiz3wohia2Ij2B7w2Dr7/IyrA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + } + }, + "node_modules/mj-context-menu": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/mj-context-menu/-/mj-context-menu-0.6.1.tgz", + "integrity": "sha512-7NO5s6n10TIV96d4g2uDpG7ZDpIhMh0QNfGdJw/W47JswFcosz457wqz/b5sAKvl12sxINGFCn80NZHKwxQEXA==" + }, + "node_modules/mkdirp": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-2.1.3.tgz", + "integrity": "sha512-sjAkg21peAG9HS+Dkx7hlG9Ztx7HLeKnvB3NQRcu/mltCVmvkF0pisbiTSfDVYTT86XEfZrTUosLdZLStquZUw==", + "bin": { + "mkdirp": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/multi-progress": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/multi-progress/-/multi-progress-4.0.0.tgz", + "integrity": "sha512-9zcjyOou3FFCKPXsmkbC3ethv51SFPoA4dJD6TscIp2pUmy26kBDZW6h9XofPELrzseSkuD7r0V+emGEeo39Pg==", + "dev": true, + "peerDependencies": { + "progress": "^2.0.0" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/now-and-later": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz", + "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==", + "dev": true, + "dependencies": { + "once": "^1.3.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-exit-leak-free": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.0.tgz", + "integrity": "sha512-VuCaZZAjReZ3vUwgOB8LxAosIurDiAW0s13rI1YwmaP++jvcxP77AWoQvenZebpCA2m8WC1/EosPYPMjnRAp/w==", + "dev": true + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/ordered-read-streams": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", + "integrity": "sha512-Z87aSjx3r5c0ZB7bcJqIgIRX5bxR7A4aSzvIbaxd0oTkWBCOoKfuGHiKj60CHVUgg1Phm5yMZzBdt8XqRs73Mw==", + "dev": true, + "dependencies": { + "readable-stream": "^2.0.1" + } + }, + "node_modules/ordered-read-streams/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/ordered-read-streams/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/ordered-read-streams/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/pako": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pako/-/pako-2.1.0.tgz", + "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==" + }, + "node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", + "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", + "dependencies": { + "parse5": "^6.0.1" + } + }, + "node_modules/path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==", + "dev": true + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pino": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/pino/-/pino-8.7.0.tgz", + "integrity": "sha512-l9sA5uPxmZzwydhMWUcm1gI0YxNnYl8MfSr2h8cwLvOAzQLBLewzF247h/vqHe3/tt6fgtXeG9wdjjoetdI/vA==", + "dev": true, + "dependencies": { + "atomic-sleep": "^1.0.0", + "fast-redact": "^3.1.1", + "on-exit-leak-free": "^2.1.0", + "pino-abstract-transport": "v1.0.0", + "pino-std-serializers": "^6.0.0", + "process-warning": "^2.0.0", + "quick-format-unescaped": "^4.0.3", + "real-require": "^0.2.0", + "safe-stable-stringify": "^2.3.1", + "sonic-boom": "^3.1.0", + "thread-stream": "^2.0.0" + }, + "bin": { + "pino": "bin.js" + } + }, + "node_modules/pino-abstract-transport": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-1.0.0.tgz", + "integrity": "sha512-c7vo5OpW4wIS42hUVcT5REsL8ZljsUfBjqV/e2sFxmFEFZiq1XLUp5EYLtuDH6PEHq9W1egWqRbnLUP5FuZmOA==", + "dev": true, + "dependencies": { + "readable-stream": "^4.0.0", + "split2": "^4.0.0" + } + }, + "node_modules/pino-abstract-transport/node_modules/readable-stream": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.3.0.tgz", + "integrity": "sha512-MuEnA0lbSi7JS8XM+WNJlWZkHAAdm7gETHdFK//Q/mChGyj2akEFtdLZh32jSdkWGbRwCW9pn6g3LWDdDeZnBQ==", + "dev": true, + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/pino-pretty": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/pino-pretty/-/pino-pretty-9.1.1.tgz", + "integrity": "sha512-iJrnjgR4FWQIXZkUF48oNgoRI9BpyMhaEmihonHeCnZ6F50ZHAS4YGfGBT/ZVNsPmd+hzkIPGzjKdY08+/yAXw==", + "dev": true, + "dependencies": { + "colorette": "^2.0.7", + "dateformat": "^4.6.3", + "fast-copy": "^3.0.0", + "fast-safe-stringify": "^2.1.1", + "help-me": "^4.0.1", + "joycon": "^3.1.1", + "minimist": "^1.2.6", + "on-exit-leak-free": "^2.1.0", + "pino-abstract-transport": "^1.0.0", + "pump": "^3.0.0", + "readable-stream": "^4.0.0", + "secure-json-parse": "^2.4.0", + "sonic-boom": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "bin": { + "pino-pretty": "bin.js" + } + }, + "node_modules/pino-pretty/node_modules/readable-stream": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.3.0.tgz", + "integrity": "sha512-MuEnA0lbSi7JS8XM+WNJlWZkHAAdm7gETHdFK//Q/mChGyj2akEFtdLZh32jSdkWGbRwCW9pn6g3LWDdDeZnBQ==", + "dev": true, + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/pino-std-serializers": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-6.1.0.tgz", + "integrity": "sha512-KO0m2f1HkrPe9S0ldjx7za9BJjeHqBku5Ch8JyxETxT8dEFGz1PwgrHaOQupVYitpzbFSYm7nnljxD8dik2c+g==", + "dev": true + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "dev": true, + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/process-warning": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-2.1.0.tgz", + "integrity": "sha512-9C20RLxrZU/rFnxWncDkuF6O999NdIf3E1ws4B0ZeY3sRVPzWBMsYDE2lxjxhiXxg464cQTgKUGm8/i6y2YGXg==", + "dev": true + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/pumpify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-2.0.1.tgz", + "integrity": "sha512-m7KOje7jZxrmutanlkS1daj1dS6z6BgslzOXmcSEpIlCxM3VJH7lG5QLeck/6hgF6F4crFf01UtQmNsJfweTAw==", + "dev": true, + "dependencies": { + "duplexify": "^4.1.1", + "inherits": "^2.0.3", + "pump": "^3.0.0" + } + }, + "node_modules/queue": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/queue/-/queue-4.5.1.tgz", + "integrity": "sha512-AMD7w5hRXcFSb8s9u38acBZ+309u6GsiibP4/0YacJeaurRshogB7v/ZcVPxP5gD5+zIw6ixRHdutiYUJfwKHw==", + "dev": true, + "dependencies": { + "inherits": "~2.0.0" + } + }, + "node_modules/quick-format-unescaped": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz", + "integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==", + "dev": true + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/real-require": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/real-require/-/real-require-0.2.0.tgz", + "integrity": "sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==", + "dev": true, + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/remove-bom-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", + "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5", + "is-utf8": "^0.2.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/remove-bom-stream": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz", + "integrity": "sha512-wigO8/O08XHb8YPzpDDT+QmRANfW6vLqxfaXm1YXhnFf3AkSLyjfG3GEFg4McZkmgL7KvCj5u2KczkvSP6NfHA==", + "dev": true, + "dependencies": { + "remove-bom-buffer": "^3.0.0", + "safe-buffer": "^5.1.0", + "through2": "^2.0.3" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==", + "dev": true + }, + "node_modules/replace-ext": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", + "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-options": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", + "integrity": "sha512-NYDgziiroVeDC29xq7bp/CacZERYsA9bXYd1ZmcJlF3BcrZv5pTb4NG7SjdyKDnXZ84aC4vo2u6sNKIA1LCu/A==", + "dev": true, + "dependencies": { + "value-or-function": "^3.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/rusha": { + "version": "0.8.14", + "resolved": "https://registry.npmjs.org/rusha/-/rusha-0.8.14.tgz", + "integrity": "sha512-cLgakCUf6PedEu15t8kbsjnwIFFR2D4RfL+W3iWFJ4iac7z4B0ZI8fxy4R3J956kAI68HclCFGL8MPoUVC3qVA==" + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safe-stable-stringify": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz", + "integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/secure-json-parse": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.7.0.tgz", + "integrity": "sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==", + "dev": true + }, + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" + } + }, + "node_modules/should-proxy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/should-proxy/-/should-proxy-1.0.4.tgz", + "integrity": "sha512-RPQhIndEIVUCjkfkQ6rs6sOR6pkxJWCNdxtfG5pP0RVgUYbK5911kLTF0TNcCC0G3YCGd492rMollFT2aTd9iQ==", + "dev": true + }, + "node_modules/simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/simple-get": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "decompress-response": "^6.0.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "node_modules/sonic-boom": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-3.2.1.tgz", + "integrity": "sha512-iITeTHxy3B9FGu8aVdiDXUVAcHMF9Ss0cCsAOo2HfCrmVGT3/DT5oYaeu0M/YKZDlKTvChEyPq0zI9Hf33EX6A==", + "dev": true, + "dependencies": { + "atomic-sleep": "^1.0.0" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/speech-rule-engine": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/speech-rule-engine/-/speech-rule-engine-4.0.7.tgz", + "integrity": "sha512-sJrL3/wHzNwJRLBdf6CjJWIlxC04iYKkyXvYSVsWVOiC2DSkHmxsqOhEeMsBA9XK+CHuNcsdkbFDnoUfAsmp9g==", + "dependencies": { + "commander": "9.2.0", + "wicked-good-xpath": "1.3.0", + "xmldom-sre": "0.1.31" + }, + "bin": { + "sre": "bin/sre" + } + }, + "node_modules/speech-rule-engine/node_modules/commander": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.2.0.tgz", + "integrity": "sha512-e2i4wANQiSXgnrBlIatyHtP1odfUp0BbV5Y5nEGbxtIrStkEOAAzCUirvLBNXHLr7kwLvJl6V+4V3XV9x7Wd9w==", + "engines": { + "node": "^12.20.0 || >=14" + } + }, + "node_modules/split2": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.1.0.tgz", + "integrity": "sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ==", + "dev": true, + "engines": { + "node": ">= 10.x" + } + }, + "node_modules/stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", + "dev": true + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/thread-stream": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-2.3.0.tgz", + "integrity": "sha512-kaDqm1DET9pp3NXwR8382WHbnpXnRkN9xGN9dQt3B2+dmXiW8X1SOwmFOxAErEQ47ObhZ96J6yhZNXuyCOL7KA==", + "dev": true, + "dependencies": { + "real-require": "^0.2.0" + } + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true + }, + "node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/through2-filter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz", + "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==", + "dev": true, + "dependencies": { + "through2": "~2.0.0", + "xtend": "~4.0.0" + } + }, + "node_modules/through2/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/through2/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/through2/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/to-absolute-glob": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", + "integrity": "sha512-rtwLUQEwT8ZeKQbyFJyomBRYXyE16U5VKuy0ftxLMK/PZb2fkOsg5r9kHdauuVDbsNdIBoC/HCthpidamQFXYA==", + "dev": true, + "dependencies": { + "is-absolute": "^1.0.0", + "is-negated-glob": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/to-through": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz", + "integrity": "sha512-+QIz37Ly7acM4EMdw2PRN389OneM5+d844tirkGp4dPKzI5OE72V9OsbFp+CIYJDahZ41ZV05hNtcPAQUAm9/Q==", + "dev": true, + "dependencies": { + "through2": "^2.0.3" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/tslib": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", + "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" + }, + "node_modules/uglify-js": { + "version": "3.17.4", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", + "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", + "dev": true, + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unique-stream": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz", + "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==", + "dev": true, + "dependencies": { + "json-stable-stringify-without-jsonify": "^1.0.1", + "through2-filter": "^3.0.0" + } + }, + "node_modules/unxhr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unxhr/-/unxhr-1.0.1.tgz", + "integrity": "sha512-MAhukhVHyaLGDjyDYhy8gVjWJyhTECCdNsLwlMoGFoNJ3o79fpQhtQuzmAE4IxCMDwraF4cW8ZjpAV0m9CRQbg==", + "engines": { + "node": ">=8.11" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/value-or-function": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz", + "integrity": "sha512-jdBB2FrWvQC/pnPtIqcLsMaQgjhdb6B7tk1MMyTKapox+tQZbdRP4uLxu/JY0t7fbfDCUMnuelzEYv5GsxHhdg==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vinyl": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.1.tgz", + "integrity": "sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==", + "dev": true, + "dependencies": { + "clone": "^2.1.1", + "clone-buffer": "^1.0.0", + "clone-stats": "^1.0.0", + "cloneable-readable": "^1.0.0", + "remove-trailing-separator": "^1.0.1", + "replace-ext": "^1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vinyl-fs": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz", + "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==", + "dev": true, + "dependencies": { + "fs-mkdirp-stream": "^1.0.0", + "glob-stream": "^6.1.0", + "graceful-fs": "^4.0.0", + "is-valid-glob": "^1.0.0", + "lazystream": "^1.0.0", + "lead": "^1.0.0", + "object.assign": "^4.0.4", + "pumpify": "^1.3.5", + "readable-stream": "^2.3.3", + "remove-bom-buffer": "^3.0.0", + "remove-bom-stream": "^1.2.0", + "resolve-options": "^1.1.0", + "through2": "^2.0.0", + "to-through": "^2.0.0", + "value-or-function": "^3.0.0", + "vinyl": "^2.0.0", + "vinyl-sourcemap": "^1.1.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vinyl-fs/node_modules/duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "node_modules/vinyl-fs/node_modules/glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", + "dev": true, + "dependencies": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + } + }, + "node_modules/vinyl-fs/node_modules/glob-stream": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", + "integrity": "sha512-uMbLGAP3S2aDOHUDfdoYcdIePUCfysbAd0IAoWVZbeGU/oNQ8asHVSshLDJUPWxfzj8zsCG7/XeHPHTtow0nsw==", + "dev": true, + "dependencies": { + "extend": "^3.0.0", + "glob": "^7.1.1", + "glob-parent": "^3.1.0", + "is-negated-glob": "^1.0.0", + "ordered-read-streams": "^1.0.0", + "pumpify": "^1.3.5", + "readable-stream": "^2.1.5", + "remove-trailing-separator": "^1.0.1", + "to-absolute-glob": "^2.0.0", + "unique-stream": "^2.0.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/vinyl-fs/node_modules/is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/vinyl-fs/node_modules/pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/vinyl-fs/node_modules/pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, + "dependencies": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + } + }, + "node_modules/vinyl-fs/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/vinyl-fs/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/vinyl-fs/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/vinyl-sourcemap": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz", + "integrity": "sha512-NiibMgt6VJGJmyw7vtzhctDcfKch4e4n9TBeoWlirb7FMg9/1Ov9k+A5ZRAtywBpRPiyECvQRQllYM8dECegVA==", + "dev": true, + "dependencies": { + "append-buffer": "^1.0.2", + "convert-source-map": "^1.5.0", + "graceful-fs": "^4.1.6", + "normalize-path": "^2.1.1", + "now-and-later": "^2.0.0", + "remove-bom-buffer": "^3.0.0", + "vinyl": "^2.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/wicked-good-xpath": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/wicked-good-xpath/-/wicked-good-xpath-1.3.0.tgz", + "integrity": "sha512-Gd9+TUn5nXdwj/hFsPVx5cuHHiF5Bwuc30jZ4+ronF1qHK5O7HD0sgmXWSEgwKquT3ClLoKPVbO6qGwVwLzvAw==" + }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "node_modules/xdg-basedir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", + "integrity": "sha512-1Dly4xqlulvPD3fZUQJLY+FUIeqN3N2MM3uqe4rCJftAvOjFa3jFGfctOgluGx4ahPbUCsZkmJILiP0Vi4T6lQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/xmldom-sre": { + "version": "0.1.31", + "resolved": "https://registry.npmjs.org/xmldom-sre/-/xmldom-sre-0.1.31.tgz", + "integrity": "sha512-f9s+fUkX04BxQf+7mMWAp5zk61pciie+fFLC9hX9UVvCeJQfNHRHXpeo5MPcR0EUf57PYLdt+ZO4f3Ipk2oZUw==", + "engines": { + "node": ">=0.1" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, + "engines": { + "node": ">=0.4" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dev": true, + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "node_modules/yazl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/yazl/-/yazl-2.5.1.tgz", + "integrity": "sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==", + "dev": true, + "dependencies": { + "buffer-crc32": "~0.2.3" + } + } + }, "dependencies": { "@antora/asciidoc-loader": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/@antora/asciidoc-loader/-/asciidoc-loader-2.3.3.tgz", - "integrity": "sha512-4dPwCnpKUrME8PZLImOD3BBcyxpaA9tAtySPKACDJPkXc24GcfjI59QbSc+shG1fKptOGaDk68O2ZMu/Gpmlhw==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@antora/asciidoc-loader/-/asciidoc-loader-3.1.2.tgz", + "integrity": "sha512-j5nNo8XastKxu8WYV9muCgRB4iGo88KIePIegcdQ5tcbuPmamOlp2/XuwYzGDAjWmaadqLD+3y9Mu18hA+wUYg==", + "dev": true, + "requires": { + "@antora/logger": "3.1.2", + "@antora/user-require-helper": "~2.0", + "@asciidoctor/core": "~2.2" + } + }, + "@antora/cli": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@antora/cli/-/cli-3.1.2.tgz", + "integrity": "sha512-/0ddoM9ZsY41LPmow8ic6IG+PIiTik82YJTHCM8CHRme2oNHU1ZBaXbH6ClS9yBwwPzVzwt4Bc6A/yQ/5+2XCA==", + "dev": true, + "requires": { + "@antora/logger": "3.1.2", + "@antora/playbook-builder": "3.1.2", + "@antora/user-require-helper": "~2.0", + "commander": "~9.4" + } + }, + "@antora/content-aggregator": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@antora/content-aggregator/-/content-aggregator-3.1.2.tgz", + "integrity": "sha512-gRseJBYO7DpyCa2vwkRM7e2ZQ8D7813Q91sn9fg94D+8H/Em4SborO057jkOOgsxNAcXsQgiHfX2X8L+S+Vkqg==", + "dev": true, + "requires": { + "@antora/expand-path-helper": "~2.0", + "@antora/logger": "3.1.2", + "@antora/user-require-helper": "~2.0", + "braces": "~3.0", + "cache-directory": "~2.0", + "glob-stream": "~7.0", + "hpagent": "~1.1", + "isomorphic-git": "~1.21", + "js-yaml": "~4.1", + "multi-progress": "~4.0", + "picomatch": "~2.3", + "progress": "~2.0", + "should-proxy": "~1.0", + "simple-get": "~4.0", + "vinyl": "~2.2" + } + }, + "@antora/content-classifier": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@antora/content-classifier/-/content-classifier-3.1.2.tgz", + "integrity": "sha512-Kisp/VlnTFiG6YnEMyTCnFqXks1SG6AuYrUADCW+KmDuXI7xZGHrLJjFeTUIDp0+HzuW96TJUhuMB8UL9TDNFA==", + "dev": true, "requires": { - "asciidoctor.js": "1.5.9", - "opal-runtime": "1.0.11" + "@antora/asciidoc-loader": "3.1.2", + "@antora/logger": "3.1.2", + "mime-types": "~2.1", + "vinyl": "~2.2" } }, - "@antora/cli": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/@antora/cli/-/cli-2.3.3.tgz", - "integrity": "sha512-mWxMMWKzTmhmTgAeAVestZf4CRcC4lBD5l521J2fsdGpGx9dQGiwqQZqNcwROJDE+Lg0YfXYYqP1UUKhZwYz6Q==", + "@antora/document-converter": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@antora/document-converter/-/document-converter-3.1.2.tgz", + "integrity": "sha512-zOFMK0wcmL3aZuO2k61MaWDZ86vzuG16YIIqebg/V0QZcSsS06Vvo79fplQz91KL2vPgB0+rl//Roqbr28MfUw==", "dev": true, "requires": { - "@antora/playbook-builder": "2.3.3", - "commander": "~5.1" + "@antora/asciidoc-loader": "3.1.2" } }, - "@antora/content-aggregator": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/@antora/content-aggregator/-/content-aggregator-2.3.3.tgz", - "integrity": "sha512-ehr0VmPltRCmKuSIT5idSnI7S2sn/q9UHBdB85GsvxOqgfM08lnkZrxbdiVqmg+06rLi8qUUCLB3dI4RZ8+xvw==", + "@antora/expand-path-helper": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@antora/expand-path-helper/-/expand-path-helper-2.0.0.tgz", + "integrity": "sha512-CSMBGC+tI21VS2kGW3PV7T2kQTM5eT3f2GTPVLttwaNYbNxDve08en/huzszHJfxo11CcEs26Ostr0F2c1QqeA==", + "dev": true + }, + "@antora/file-publisher": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@antora/file-publisher/-/file-publisher-3.1.2.tgz", + "integrity": "sha512-yWE1E4kg5obAzX9nl/oYou86BlSeKCf9lONiYuWqeqdUdeZPxW5RE2YahJk6i9+9Zwrxgm65oc/oDdvsdwSqYw==", + "dev": true, "requires": { - "@antora/expand-path-helper": "~1.0", - "braces": "~3.0", - "cache-directory": "~2.0", - "camelcase-keys": "~6.2", - "fs-extra": "~8.1", - "isomorphic-git": "0.78.5", - "js-yaml": "~3.14", - "matcher": "~2.1", - "mime-types": "~2.1", - "multi-progress": "~2.0", - "picomatch": "~2.2", - "through2": "~3.0", + "@antora/expand-path-helper": "~2.0", + "@antora/user-require-helper": "~2.0", + "gulp-vinyl-zip": "~2.5", "vinyl": "~2.2", "vinyl-fs": "~3.0" } }, - "@antora/content-classifier": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/@antora/content-classifier/-/content-classifier-2.3.3.tgz", - "integrity": "sha512-VLnOIuL0uRasQsXJ8m2vjpAFdEkpWfs1L32OuVupQ1SwjpUAvJz46W3pVg9qxxEWRRjtidCvcc3KY0LI6X0Jvw==", + "@antora/logger": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@antora/logger/-/logger-3.1.2.tgz", + "integrity": "sha512-xmKCpchp0IU8SpKUa/AwlLsvOcO7edNjQ3dOzpxm223avCWm/lCnNBtC++lnLYE7jOfOFYjnhveE16JKPj6akA==", + "dev": true, "requires": { - "@antora/asciidoc-loader": "2.3.3", - "vinyl": "~2.2" + "@antora/expand-path-helper": "~2.0", + "pino": "~8.7", + "pino-pretty": "~9.1", + "sonic-boom": "~3.2" } }, - "@antora/document-converter": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/@antora/document-converter/-/document-converter-2.3.3.tgz", - "integrity": "sha512-mGdDHRxYPts3QiT/thYVoQz1QgFXN6ZFU2jgjX0VmCzcIwKGK0TOgzbp+1A3V0o92VAISEmrjC812orbtHeKqA==", + "@antora/lunr-extension": { + "version": "1.0.0-alpha.8", + "resolved": "https://registry.npmjs.org/@antora/lunr-extension/-/lunr-extension-1.0.0-alpha.8.tgz", + "integrity": "sha512-vdBgW3rsvbnmA236kT2Dckh9n0Db5za2/WxiLnFLgZ05ZO1KJQa9+R2WHaIFuGE7bKKbY+lqfM/i3KiezbL9YQ==", "requires": { - "@antora/asciidoc-loader": "2.3.3" + "cheerio": "1.0.0-rc.10", + "html-entities": "~2.3", + "lunr": "~2.3", + "lunr-languages": "~1.9" } }, - "@antora/expand-path-helper": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@antora/expand-path-helper/-/expand-path-helper-1.0.0.tgz", - "integrity": "sha512-hg3y6M3OvRTb7jtLAnwwloYDxafbyKYttcf16kGCXvP7Wqosh7c+Ag+ltaZ7VSebpzpphO/umb/BXdpU7rxapw==" - }, "@antora/navigation-builder": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/@antora/navigation-builder/-/navigation-builder-2.3.3.tgz", - "integrity": "sha512-dx8PPFPvRBF+KInDXZU8k5dJ3sIVh1VvfsZhPUI27d5HMi+FRa0le8PK0OK5Hms4ixY/c1lXGcCAPFt0aH4Lxw==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@antora/navigation-builder/-/navigation-builder-3.1.2.tgz", + "integrity": "sha512-gWiFTZDfM31mHgHKs3og6e1/2y4idFFBLwTfXZWbgBlUDKmhWQKeg1CUQUzXR0Ts4SJhiViGlOzptPXQPQURtA==", + "dev": true, "requires": { - "@antora/asciidoc-loader": "2.3.3" + "@antora/asciidoc-loader": "3.1.2" } }, "@antora/page-composer": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/@antora/page-composer/-/page-composer-2.3.3.tgz", - "integrity": "sha512-yp1bHj5twD8TbBn8MHwe7488EB+xVmbyFJBvV2GLMyiWN7DnlCaW/AaCiw05vsU4mDAd+MQ8P+KeNhDRZnlU2w==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@antora/page-composer/-/page-composer-3.1.2.tgz", + "integrity": "sha512-rwYNEGh4cxQHsm+fEk4R+Wi2silRe5eCeyPvW52caXvfaTcmSK92iOnXMYpsthws5UmBV3D+1eSXbjMfe4xC7w==", + "dev": true, "requires": { + "@antora/logger": "3.1.2", "handlebars": "~4.7", "require-from-string": "~2.0" } }, "@antora/playbook-builder": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/@antora/playbook-builder/-/playbook-builder-2.3.3.tgz", - "integrity": "sha512-X9S38WgX2diZISNF4QKdF4ZfdND4ySsMlI26Iz4iybxf7xNlUJE1lAk9RM57Ooq543lEUNSnYHpECb1tog2BNw==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@antora/playbook-builder/-/playbook-builder-3.1.2.tgz", + "integrity": "sha512-hfQom+UDFXdfDZVscGLtSBHZzkoi2HL8mt2Iiu+xh/6FFiAwCpU8eAlFzYHz2+yf8OpaMytvVNavvJXe3uo3qw==", + "dev": true, "requires": { "@iarna/toml": "~2.2", - "camelcase-keys": "~6.2", - "convict": "~6.0", - "js-yaml": "~3.14", - "json5": "~2.1" + "convict": "~6.2", + "js-yaml": "~4.1", + "json5": "~2.2" } }, "@antora/redirect-producer": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/@antora/redirect-producer/-/redirect-producer-2.3.3.tgz", - "integrity": "sha512-69QtpB9wPVsg7/ykJq8zYUrHywSOtfgJEizxK+GmWharjZyrMReNB7IX1pg7Dk8qI6CGB0OOkhIYC41nGmuhmg==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@antora/redirect-producer/-/redirect-producer-3.1.2.tgz", + "integrity": "sha512-MUzjYH+2nKgW5oY9afkLzUdRsdSb+aOWF7BEPcvdCcA6/Gkm+fFs1bBATrtjjq70tbsKe6pMpsHEHqxuOz0WIQ==", + "dev": true, "requires": { - "@antora/asciidoc-loader": "2.3.3", "vinyl": "~2.2" } }, + "@antora/site-generator": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@antora/site-generator/-/site-generator-3.1.2.tgz", + "integrity": "sha512-BpdX3hcWhtPPpq4+lyQe1XLoaxSPd6dcB+AzQTpg5oIb3+mXte8Tie45WXmiCX9F1Dp6Ug9BDImf/2HJFsbG0Q==", + "dev": true, + "requires": { + "@antora/asciidoc-loader": "3.1.2", + "@antora/content-aggregator": "3.1.2", + "@antora/content-classifier": "3.1.2", + "@antora/document-converter": "3.1.2", + "@antora/file-publisher": "3.1.2", + "@antora/logger": "3.1.2", + "@antora/navigation-builder": "3.1.2", + "@antora/page-composer": "3.1.2", + "@antora/playbook-builder": "3.1.2", + "@antora/redirect-producer": "3.1.2", + "@antora/site-mapper": "3.1.2", + "@antora/site-publisher": "3.1.2", + "@antora/ui-loader": "3.1.2", + "@antora/user-require-helper": "~2.0" + } + }, "@antora/site-generator-default": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/@antora/site-generator-default/-/site-generator-default-2.3.3.tgz", - "integrity": "sha512-kY2j2gsBo1U4Jn+WqK09chsFgXbbUvafgqGo3SzFDdjpsG/NvIylLK3g+bbZ0X9N7FysXytlAhyAYlOJDvXjGw==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@antora/site-generator-default/-/site-generator-default-3.1.2.tgz", + "integrity": "sha512-zd/7CEYzMo85t4/TVristVG5hMoZqw/bcSnr5+KVEpexBfnl3WtuD10hdo2TL7SSxqEsj0dvDK0PwgHN//l0yg==", "dev": true, "requires": { - "@antora/asciidoc-loader": "2.3.3", - "@antora/content-aggregator": "2.3.3", - "@antora/content-classifier": "2.3.3", - "@antora/document-converter": "2.3.3", - "@antora/navigation-builder": "2.3.3", - "@antora/page-composer": "2.3.3", - "@antora/playbook-builder": "2.3.3", - "@antora/redirect-producer": "2.3.3", - "@antora/site-mapper": "2.3.3", - "@antora/site-publisher": "2.3.3", - "@antora/ui-loader": "2.3.3" + "@antora/site-generator": "3.1.2" } }, "@antora/site-mapper": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/@antora/site-mapper/-/site-mapper-2.3.3.tgz", - "integrity": "sha512-ERMGWl6s9B42crML7Tt4alPdJ/diSE6zQUSIMbbK7biI1EzjwxUCgKQ5lRJllUuGAdcXuYWQLGrpj/CWJzUXXA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@antora/site-mapper/-/site-mapper-3.1.2.tgz", + "integrity": "sha512-WQEYac4KMIjc2H+5GUkzikgkZ1jSe8KXnDz9dzSL0A5zIwjVxlM2mnzAfzG8g1kKtlh1BwU4Famh97BfRzLQKg==", + "dev": true, "requires": { - "@antora/content-classifier": "2.3.3", + "@antora/content-classifier": "3.1.2", "vinyl": "~2.2" } }, "@antora/site-publisher": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/@antora/site-publisher/-/site-publisher-2.3.3.tgz", - "integrity": "sha512-LAavxXd3wmH0hWqNkKMgQuj/fjE08BTO6zYR51KLBO798h0f7H0OgyBI+p8c7l/QANpAfjaWyBpbR1zOxnLCMQ==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@antora/site-publisher/-/site-publisher-3.1.2.tgz", + "integrity": "sha512-I/GeYypIVvpRH84amCWK3BUOEUplGpjx2rN+UgaXQ0UvBGVHrex6sfmS0G7R7g0cmK3X5hND44wTFxbaSBPUnw==", + "dev": true, "requires": { - "@antora/expand-path-helper": "~1.0", - "fs-extra": "~8.1", - "gulp-vinyl-zip": "~2.2", - "vinyl": "~2.2", - "vinyl-fs": "~3.0" + "@antora/file-publisher": "3.1.2" } }, "@antora/ui-loader": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/@antora/ui-loader/-/ui-loader-2.3.3.tgz", - "integrity": "sha512-bQVb6PE34iDmZj6wZZzYm3rLjguxoSqHZj4QReVQsOle/LdIwl48hV9Iz/Pivy9NtVCui9LL/lmSQzMt0G0jkw==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@antora/ui-loader/-/ui-loader-3.1.2.tgz", + "integrity": "sha512-4tE7FT0pvvQ7PjGBe/NiRhqGdyfvx/8YSZJwcC2RLxFFusrv/8WlGjbgOVU+gGRFy1AKZDFgzbQWtJcyLjsyAQ==", + "dev": true, "requires": { - "@antora/expand-path-helper": "~1.0", - "bl": "~4.0", + "@antora/expand-path-helper": "~2.0", + "braces": "~3.0", "cache-directory": "~2.0", - "camelcase-keys": "~6.2", - "fs-extra": "~8.1", - "got": "~9.6", - "gulp-vinyl-zip": "~2.2", - "js-yaml": "~3.14", - "minimatch-all": "~1.1", - "through2": "~3.0", - "vinyl": "~2.2", - "vinyl-fs": "~3.0" + "glob-stream": "~7.0", + "gulp-vinyl-zip": "~2.5", + "hpagent": "~1.1", + "js-yaml": "~4.1", + "picomatch": "~2.3", + "should-proxy": "~1.0", + "simple-get": "~4.0", + "vinyl": "~2.2" } }, - "@iarna/toml": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz", - "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==" - }, - "@sindresorhus/is": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==" - }, - "@szmarczak/http-timer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "@antora/user-require-helper": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@antora/user-require-helper/-/user-require-helper-2.0.0.tgz", + "integrity": "sha512-5fMfBZfw4zLoFdDAPMQX6Frik90uvfD8rXOA4UpXPOUikkX4uT1Rk6m0/4oi8oS3fcjiIl0k/7Nc+eTxW5TcQQ==", + "dev": true, "requires": { - "defer-to-connect": "^1.0.1" + "@antora/expand-path-helper": "~2.0" } }, - "@types/node": { - "version": "14.0.27", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.0.27.tgz", - "integrity": "sha512-kVrqXhbclHNHGu9ztnAwSncIgJv/FaxmzXJvGXNdcCpV1b8u1/Mi6z6m0vwy0LzKeXFTPLH0NzwmoJ3fNCIq0g==" - }, - "antora-lunr": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/antora-lunr/-/antora-lunr-0.7.1.tgz", - "integrity": "sha512-1AOKBQ8N2sUa6YyqcMd2KoknT6PJyRSj31EaNfGz6eBww3ujtwJyskk6CimbnCDzSKGu0xkW105RtjheFBYWCQ==", + "@asciidoctor/core": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/@asciidoctor/core/-/core-2.2.6.tgz", + "integrity": "sha512-TmB2K5UfpDpSbCNBBntXzKHcAk2EA3/P68jmWvmJvglVUdkO9V6kTAuXVe12+h6C4GK0ndwuCrHHtEVcL5t6pQ==", "requires": { - "cheerio": "^1.0.0-rc.2", - "html-entities": "^1.2.1", - "lunr": "2.3.8" + "asciidoctor-opal-runtime": "0.3.3", + "unxhr": "1.0.1" } }, - "antora-site-generator-lunr": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/antora-site-generator-lunr/-/antora-site-generator-lunr-0.5.0.tgz", - "integrity": "sha512-H3aeOg8iF6pQaf9GYIrw3ZNxh4sgjUVYhpilZdFCMT08r0SMyKgd0/hT1v7qxbkUtS845rlavepeNhCruiib6w==", + "@iarna/toml": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz", + "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==", + "dev": true + }, + "abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dev": true, "requires": { - "@antora/asciidoc-loader": "~2", - "@antora/content-aggregator": "~2", - "@antora/content-classifier": "~2", - "@antora/document-converter": "~2", - "@antora/navigation-builder": "~2", - "@antora/page-composer": "~2", - "@antora/playbook-builder": "~2", - "@antora/redirect-producer": "2", - "@antora/site-mapper": "~2", - "@antora/site-publisher": "~2", - "@antora/ui-loader": "~2", - "antora-lunr": "0.7.1" + "event-target-shim": "^5.0.0" } }, "append-buffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", - "integrity": "sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE=", + "integrity": "sha512-WLbYiXzD3y/ATLZFufV/rZvWdZOs+Z/+5v1rBZ463Jn398pa6kcde27cvozYnBoxXblGZTFfoPpsaEw0orU5BA==", + "dev": true, "requires": { "buffer-equal": "^1.0.0" } }, "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "asciidoctor-kroki": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/asciidoctor-kroki/-/asciidoctor-kroki-0.17.0.tgz", + "integrity": "sha512-aObUUfAtcfUTjhAP32bgrcoKXLRta57o3V5k+t73FXDKiLi+QfkHE+9+H4mGPTnghXBtiRYzsu7BbVGfTHoQzQ==", "requires": { - "sprintf-js": "~1.0.2" + "json5": "2.2.3", + "mkdirp": "2.1.3", + "pako": "2.1.0", + "rusha": "0.8.14", + "unxhr": "1.2.0" + }, + "dependencies": { + "unxhr": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/unxhr/-/unxhr-1.2.0.tgz", + "integrity": "sha512-6cGpm8NFXPD9QbSNx0cD2giy7teZ6xOkCUH3U89WKVkL9N9rBrWjlCwhR94Re18ZlAop4MOc3WU1M3Hv/bgpIw==" + } } }, - "asciidoctor-kroki": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/asciidoctor-kroki/-/asciidoctor-kroki-0.9.2.tgz", - "integrity": "sha512-tcqDezMIuzDmJMPALJeqPjFZonwlCk1gfKJPTU3jpVgrYeWSqlN6renMtCRcuwXVb1Tl2zNE0WC7tNFSuSpp8Q==", + "asciidoctor-mathjax": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/asciidoctor-mathjax/-/asciidoctor-mathjax-0.0.5.tgz", + "integrity": "sha512-mrqgfm6L04dvvaYqDXeCu7PfL31sj65R2gISOL6vXI93vwzRRTeQwDi0OiyVzdYPzZMF4JJtJvrKiPiCk6Vv/g==", "requires": { - "json5": "^2.1.3", - "mkdirp": "^1.0.4", - "pako": "^1.0.10", - "rusha": "^0.8.13", - "unxhr": "1.0.4" + "mathjax-full": "^3.0.1" } }, - "asciidoctor.js": { - "version": "1.5.9", - "resolved": "https://registry.npmjs.org/asciidoctor.js/-/asciidoctor.js-1.5.9.tgz", - "integrity": "sha512-k5JgwyV82TsiCpnYbDPReuHhzf/vRUt6NaZ+OGywkDDGeGG/CPfvN2Gd1MJ0iIZKDyuk4iJHOdY/2x1KBrWMzA==", + "asciidoctor-opal-runtime": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/asciidoctor-opal-runtime/-/asciidoctor-opal-runtime-0.3.3.tgz", + "integrity": "sha512-/CEVNiOia8E5BMO9FLooo+Kv18K4+4JBFRJp8vUy/N5dMRAg+fRNV4HA+o6aoSC79jVU/aT5XvUpxSxSsTS8FQ==", "requires": { - "opal-runtime": "1.0.11" + "glob": "7.1.3", + "unxhr": "1.0.1" } }, "async-lock": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/async-lock/-/async-lock-1.2.4.tgz", - "integrity": "sha512-UBQJC2pbeyGutIfYmErGc9RaJYnpZ1FHaxuKwb0ahvGiiCkPUf3p67Io+YLPmmv3RHY+mF6JEtNW8FlHsraAaA==" + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/async-lock/-/async-lock-1.4.0.tgz", + "integrity": "sha512-coglx5yIWuetakm3/1dsX9hxCNox22h7+V80RQOu2XUUMidtArxKoZoOtHUPuR84SycKTXzgGzAUR5hJxujyJQ==", + "dev": true }, - "balanced-match": { + "atomic-sleep": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz", + "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==", + "dev": true }, - "base64-js": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.2.tgz", - "integrity": "sha1-Ak8Pcq+iW3X5wO5zzU9V7Bvtl4Q=" + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, - "bl": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.0.3.tgz", - "integrity": "sha512-fs4G6/Hu4/EE+F75J8DuN/0IpQqNjAdC7aEQv7Qt8MHGUH7Ckv2MwTEEeN9QehD0pfIDkMI1bkHYkKy7xHyKIg==", - "requires": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true }, "boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" - }, - "bops": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/bops/-/bops-0.0.7.tgz", - "integrity": "sha1-tKClqDmkBkVK8P4FqLkaenZqVOI=", - "requires": { - "base64-js": "0.0.2", - "to-utf8": "0.0.1" - } + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" }, "brace-expansion": { "version": "1.1.11", @@ -302,149 +2985,107 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, "requires": { "fill-range": "^7.0.1" } }, "buffer": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz", - "integrity": "sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4" - }, - "dependencies": { - "base64-js": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", - "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==" - } + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" } }, "buffer-crc32": { "version": "0.2.13", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=" + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true }, "buffer-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", - "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.1.tgz", + "integrity": "sha512-QoV3ptgEaQpvVwbXdSO39iqPQTCxSF7A5U99AxbHYqUdCizL/lH2Z0A2y6nbZucxMEOtNyZfG2s6gsVugGpKkg==", + "dev": true }, "cache-directory": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/cache-directory/-/cache-directory-2.0.0.tgz", "integrity": "sha512-7YKEapH+2Uikde8hySyfobXBqPKULDyHNl/lhKm7cKf/GJFdG/tU/WpLrOg2y9aUrQrWUilYqawFIiGJPS6gDA==", + "dev": true, "requires": { "xdg-basedir": "^3.0.0" } }, - "cacheable-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", - "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", - "requires": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^1.0.2" - }, - "dependencies": { - "get-stream": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", - "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", - "requires": { - "pump": "^3.0.0" - } - }, - "lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - } + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" } }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" - }, - "camelcase-keys": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", - "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "cheerio": { + "version": "1.0.0-rc.10", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.10.tgz", + "integrity": "sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==", "requires": { - "camelcase": "^5.3.1", - "map-obj": "^4.0.0", - "quick-lru": "^4.0.1" + "cheerio-select": "^1.5.0", + "dom-serializer": "^1.3.2", + "domhandler": "^4.2.0", + "htmlparser2": "^6.1.0", + "parse5": "^6.0.1", + "parse5-htmlparser2-tree-adapter": "^6.0.1", + "tslib": "^2.2.0" } }, - "cheerio": { - "version": "1.0.0-rc.3", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.3.tgz", - "integrity": "sha512-0td5ijfUPuubwLUu0OBoe98gZj8C/AA+RW3v67GPlGOrvxWjZmBXiBCRU+I8VEiNyJzjth40POfHiz2RB3gImA==", + "cheerio-select": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-1.6.0.tgz", + "integrity": "sha512-eq0GdBvxVFbqWgmCm7M3XGs1I8oLy/nExUnh6oLqmBditPO9AqQJrkslDpMun/hZ0yyTs8L0m85OHp4ho6Qm9g==", "requires": { - "css-select": "~1.2.0", - "dom-serializer": "~0.1.1", - "entities": "~1.1.1", - "htmlparser2": "^3.9.1", - "lodash": "^4.15.0", - "parse5": "^3.0.1" + "css-select": "^4.3.0", + "css-what": "^6.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.3.1", + "domutils": "^2.8.0" } }, "clean-git-ref": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/clean-git-ref/-/clean-git-ref-2.0.1.tgz", - "integrity": "sha512-bLSptAy2P0s6hU4PzuIMKmMJJSE6gLXGH1cntDu7bWJUksvuM+7ReOK61mozULErYvP6a15rnYl0zFDef+pyPw==" + "integrity": "sha512-bLSptAy2P0s6hU4PzuIMKmMJJSE6gLXGH1cntDu7bWJUksvuM+7ReOK61mozULErYvP6a15rnYl0zFDef+pyPw==", + "dev": true }, "clone": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=" + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "dev": true }, "clone-buffer": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", - "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=" - }, - "clone-response": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", - "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", - "requires": { - "mimic-response": "^1.0.0" - }, - "dependencies": { - "mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" - } - } + "integrity": "sha512-KLLTJWrvwIP+OPfMn0x2PheDEP20RPUcGXj/ERegTgdmPEZylALQldygiqrPPu8P45uNuPs7ckmReLY6v/iA5g==", + "dev": true }, "clone-stats": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", - "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=" + "integrity": "sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag==", + "dev": true }, "cloneable-readable": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz", "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==", + "dev": true, "requires": { "inherits": "^2.0.1", "process-nextick-args": "^2.0.0", @@ -452,9 +3093,10 @@ }, "dependencies": { "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -468,300 +3110,246 @@ "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true }, "string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, "requires": { "safe-buffer": "~5.1.0" } } } }, + "colorette": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", + "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", + "dev": true + }, "commander": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", - "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "version": "9.4.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.4.1.tgz", + "integrity": "sha512-5EEkTNyHNGFPD2H+c/dXXfQZYa/scCKasxWcXJaWnNJ99pnQN9Vnmqow+p+PlFPE63Q6mThaZws1T+HxfpgtPw==", "dev": true }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, "convert-source-map": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", - "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", - "requires": { - "safe-buffer": "~5.1.1" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - } - } + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true }, "convict": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/convict/-/convict-6.0.0.tgz", - "integrity": "sha512-osfPkv5yjVoZqrTWBXuh/ABGpFoaJplbt0WXr0CodR4CSWt8UnzY4PSUyRz/+5BX5YUtWcToG29Kr0B6xhdIMg==", + "version": "6.2.4", + "resolved": "https://registry.npmjs.org/convict/-/convict-6.2.4.tgz", + "integrity": "sha512-qN60BAwdMVdofckX7AlohVJ2x9UvjTNoKVXCL2LxFk1l7757EJqf1nySdMkPQer0bt8kQ5lQiyZ9/2NvrFBuwQ==", + "dev": true, "requires": { "lodash.clonedeep": "^4.5.0", - "yargs-parser": "^18.1.3" + "yargs-parser": "^20.2.7" } }, "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true }, "crc-32": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.0.tgz", - "integrity": "sha512-1uBwHxF+Y/4yF5G48fwnKq6QsIXheor3ZLPT80yGBV1oEUwpPojlEhQbWKVw1VwcTQyMGHK1/XMmTjmlsmTTGA==", - "requires": { - "exit-on-epipe": "~1.0.1", - "printj": "~1.1.0" - } + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "dev": true }, "css-select": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", - "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", "requires": { - "boolbase": "~1.0.0", - "css-what": "2.1", - "domutils": "1.5.1", - "nth-check": "~1.0.1" + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" } }, "css-what": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", - "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==" + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==" }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + "dateformat": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz", + "integrity": "sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==", + "dev": true }, "decompress-response": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", - "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dev": true, "requires": { - "mimic-response": "^2.0.0" + "mimic-response": "^3.1.0" } }, - "defer-to-connect": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", - "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" - }, "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", + "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", + "dev": true, "requires": { - "object-keys": "^1.0.12" + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" } }, "diff3": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/diff3/-/diff3-0.0.3.tgz", - "integrity": "sha1-1OXDpM305f4SEatC5pP8tDIVgPw=" + "integrity": "sha512-iSq8ngPOt0K53A6eVr4d5Kn6GNrM2nQZtC740pzIriHtn4pOQ2lyzEXQMBeVcWERN0ye7fhBsk9PbLLQOnUx/g==", + "dev": true }, "dom-serializer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", - "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", "requires": { - "domelementtype": "^1.3.0", - "entities": "^1.1.1" + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" } }, "domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==" }, "domhandler": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", - "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", "requires": { - "domelementtype": "1" + "domelementtype": "^2.2.0" } }, "domutils": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", - "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", "requires": { - "dom-serializer": "0", - "domelementtype": "1" + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" } }, - "duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" - }, "duplexify": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", - "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.2.tgz", + "integrity": "sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==", + "dev": true, "requires": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", + "end-of-stream": "^1.4.1", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1", "stream-shift": "^1.0.0" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } } }, "end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, "requires": { "once": "^1.4.0" } }, "entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" }, - "escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==" + "esm": { + "version": "3.2.25", + "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", + "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==" }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + "event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "dev": true }, - "exit-on-epipe": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz", - "integrity": "sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw==" + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true }, "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "fast-copy": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/fast-copy/-/fast-copy-3.0.1.tgz", + "integrity": "sha512-Knr7NOtK3HWRYGtHoJrjkaWepqT8thIVGAwt0p0aUs1zqkAzXZV4vo9fFNwyb5fcqK1GKYFYxldQdIDVKhUAfA==", + "dev": true + }, + "fast-redact": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.1.2.tgz", + "integrity": "sha512-+0em+Iya9fKGfEQGcd62Yv6onjBmmhV1uh86XVfOU8VwAe6kaFdQCWI9s0/Nnugx5Vd9tdbZ7e6gE2tR9dzXdw==", + "dev": true + }, + "fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", + "dev": true }, "fd-slicer": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dev": true, "requires": { "pend": "~1.2.0" } }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "flush-write-stream": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", - "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", - "requires": { - "inherits": "^2.0.3", - "readable-stream": "^2.3.6" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "to-regex-range": "^5.0.1" } }, - "fs-mkdirp-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", - "integrity": "sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes=", + "flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "dev": true, "requires": { - "graceful-fs": "^4.1.11", - "through2": "^2.0.3" + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" }, "dependencies": { "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -775,197 +3363,119 @@ "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true }, "string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, "requires": { "safe-buffer": "~5.1.0" } - }, - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } } } }, + "fs-mkdirp-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", + "integrity": "sha512-+vSd9frUnapVC2RZYfL3FCB2p3g4TBhaUmrsWlSudsGdnxIuUvBB2QM1VZeBtc49QFwrp+wQLrDs3+xxDgI5gQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "through2": "^2.0.3" + } + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "requires": { - "pump": "^3.0.0" - }, - "dependencies": { - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - } - } + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true }, - "git-apply-delta": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/git-apply-delta/-/git-apply-delta-0.0.7.tgz", - "integrity": "sha1-+3auFEVA15RAtSsx3gPmPJk8chk=", + "get-intrinsic": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", + "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", + "dev": true, "requires": { - "bops": "~0.0.6", - "varint": "0.0.3" + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" } }, "glob": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", - "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", "requires": { + "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "2 || 3", + "minimatch": "^3.0.4", "once": "^1.3.0", "path-is-absolute": "^1.0.0" } }, "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" + "is-glob": "^4.0.3" } }, "glob-stream": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", - "integrity": "sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ=", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-7.0.0.tgz", + "integrity": "sha512-evR4kvr6s0Yo5t4CD4H171n4T8XcnPFznvsbeN8K9FPzc0Q0wYqcOWyGtck2qcvJSLXKnU6DnDyfmbDDabYvRQ==", + "dev": true, "requires": { - "extend": "^3.0.0", - "glob": "^7.1.1", - "glob-parent": "^3.1.0", + "extend": "^3.0.2", + "glob": "^7.2.0", + "glob-parent": "^6.0.2", "is-negated-glob": "^1.0.0", - "ordered-read-streams": "^1.0.0", - "pumpify": "^1.3.5", - "readable-stream": "^2.1.5", - "remove-trailing-separator": "^1.0.1", - "to-absolute-glob": "^2.0.0", - "unique-stream": "^2.0.2" + "ordered-read-streams": "^1.0.1", + "pumpify": "^2.0.1", + "readable-stream": "^3.6.0", + "remove-trailing-separator": "^1.1.0", + "to-absolute-glob": "^2.0.2", + "unique-stream": "^2.3.1" }, "dependencies": { "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" } - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "globalyzer": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.4.tgz", - "integrity": "sha512-LeguVWaxgHN0MNbWC6YljNMzHkrCny9fzjmEUdnF1kQ7wATFD1RHFRqA1qxaX2tgxGENlcxjOflopBwj3YZiXA==" - }, - "globrex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", - "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==" - }, - "got": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", - "requires": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" - }, - "dependencies": { - "decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", - "requires": { - "mimic-response": "^1.0.0" - } - }, - "mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" } } }, "graceful-fs": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", - "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true }, "gulp-vinyl-zip": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/gulp-vinyl-zip/-/gulp-vinyl-zip-2.2.1.tgz", - "integrity": "sha512-9lwCZUkrENzP649hVQB2r+8GgeGtVrqA2fEeVDX6aYr6+yJjdczWu0r1C6WvbZdzhXcA61MtR5MEyjR9a3D7cw==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/gulp-vinyl-zip/-/gulp-vinyl-zip-2.5.0.tgz", + "integrity": "sha512-KPi5/2SUmkXXDvKU4L2U1dkPOP03SbhONTOgNZlL23l9Yopt+euJ1bBXwWrSMbsyh3JLW/TYuC8CI4c4Kq4qrw==", + "dev": true, "requires": { "queue": "^4.2.1", "through": "^2.3.8", @@ -974,50 +3484,13 @@ "vinyl-fs": "^3.0.3", "yauzl": "^2.2.1", "yazl": "^2.2.1" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - } } }, "handlebars": { "version": "4.7.7", "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", + "dev": true, "requires": { "minimist": "^1.2.5", "neo-async": "^2.6.0", @@ -1026,48 +3499,111 @@ "wordwrap": "^1.0.0" } }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.1" + } + }, "has-symbols": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true + }, + "help-me": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/help-me/-/help-me-4.2.0.tgz", + "integrity": "sha512-TAOnTB8Tz5Dw8penUuzHVrKNKlCIbwwbHnXraNJxPwf8LRtE2HlM84RYuezMFcwOJmoYOCWVDyJ8TQGxn9PgxA==", + "dev": true, + "requires": { + "glob": "^8.0.0", + "readable-stream": "^3.6.0" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + } + }, + "minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "hpagent": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hpagent/-/hpagent-1.1.0.tgz", + "integrity": "sha512-bgJcBmNTZaJO03xtXOTNfoFEf/3VwoZ/gJ2O4ekTCZu4LSFtfzQFrJ0kjq8ZSS0+IdghXqQIiDUnpp0eUR9IJg==", + "dev": true }, "html-entities": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.3.1.tgz", - "integrity": "sha512-rhE/4Z3hIhzHAUKbW8jVcCyuT5oJCXXqhN/6mXXVCpzTmvJnoH2HL/bt3EZ6p55jbFJBeAe1ZNpL5BugLujxNA==" + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz", + "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==" }, "htmlparser2": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", - "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", - "requires": { - "domelementtype": "^1.3.1", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^3.1.1" + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" } }, - "http-cache-semantics": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" - }, "ieee754": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", - "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true }, "ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==" + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "requires": { "once": "^1.3.0", "wrappy": "1" @@ -1082,6 +3618,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "dev": true, "requires": { "is-relative": "^1.0.0", "is-windows": "^1.0.1" @@ -1090,35 +3627,41 @@ "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true }, "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true }, "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, "requires": { - "is-extglob": "^2.1.0" + "is-extglob": "^2.1.1" } }, "is-negated-glob": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", - "integrity": "sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=" + "integrity": "sha512-czXVVn/QEmgvej1f50BZ648vUI+em0xqMq2Sn+QncCLN4zj1UAxlT+kw/6ggQTOaZPd1HqKQGEqbpQVtJucWug==", + "dev": true }, "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true }, "is-relative": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "dev": true, "requires": { "is-unc-path": "^1.0.0" } @@ -1127,6 +3670,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "dev": true, "requires": { "unc-path-regex": "^0.1.2" } @@ -1134,100 +3678,94 @@ "is-utf8": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" + "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==", + "dev": true }, "is-valid-glob": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", - "integrity": "sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao=" + "integrity": "sha512-AhiROmoEFDSsjx8hW+5sGwgKVIORcXnrlAx/R0ZSeaPw70Vw0CqkGBBhHGL58Uox2eXnU1AnvXJl1XlyedO5bA==", + "dev": true }, "is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true }, "isomorphic-git": { - "version": "0.78.5", - "resolved": "https://registry.npmjs.org/isomorphic-git/-/isomorphic-git-0.78.5.tgz", - "integrity": "sha512-LrF5t9x7RdFeg84NsYpZo9qF1MZeb56LpBm6Jv47qMjnWMv0Il/3wPTA8I/lUYywgVbvF/e7xypHauj5auKW3w==", + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/isomorphic-git/-/isomorphic-git-1.21.0.tgz", + "integrity": "sha512-ZqCAUM63CYepA3fB8H7NVyPSiOkgzIbQ7T+QPrm9xtYgQypN9JUJ5uLMjB5iTfomdJf3mdm6aSxjZwnT6ubvEA==", + "dev": true, "requires": { "async-lock": "^1.1.0", "clean-git-ref": "^2.0.1", "crc-32": "^1.2.0", "diff3": "0.0.3", - "git-apply-delta": "0.0.7", - "globalyzer": "^0.1.4", - "globrex": "^0.1.2", "ignore": "^5.1.4", - "marky": "^1.2.1", "minimisted": "^2.0.0", "pako": "^1.0.10", "pify": "^4.0.1", "readable-stream": "^3.4.0", "sha.js": "^2.4.9", - "simple-get": "^3.0.2" + "simple-get": "^4.0.1" + }, + "dependencies": { + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + } } }, + "joycon": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz", + "integrity": "sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==", + "dev": true + }, "js-yaml": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", - "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "argparse": "^2.0.1" } }, - "json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" - }, "json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=" + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true }, "json5": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", - "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", - "requires": { - "minimist": "^1.2.5" - } - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "keyv": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", - "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", - "requires": { - "json-buffer": "3.0.0" - } + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==" }, "lazystream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", - "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", + "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", + "dev": true, "requires": { "readable-stream": "^2.0.5" }, "dependencies": { "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -1241,12 +3779,14 @@ "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true }, "string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, "requires": { "safe-buffer": "~5.1.0" } @@ -1256,188 +3796,183 @@ "lead": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz", - "integrity": "sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI=", + "integrity": "sha512-IpSVCk9AYvLHo5ctcIXxOBpMWUe+4TKN3VPWAKUbJikkmsGp0VrSM8IttVc32D6J4WUsiPE6aEFRNmIoF/gdow==", + "dev": true, "requires": { "flush-write-stream": "^1.0.2" } }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, "lodash.clonedeep": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=" - }, - "lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" + "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", + "dev": true }, "lunr": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.8.tgz", - "integrity": "sha512-oxMeX/Y35PNFuZoHp+jUj5OSEmLCaIH4KTFJh7a93cHBoFmpw2IoPs22VIz7vyO2YUnx2Tn9dzIwO2P/4quIRg==" - }, - "map-obj": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.1.0.tgz", - "integrity": "sha512-glc9y00wgtwcDmp7GaE/0b0OnxpNJsVf3ael/An6Fe2Q51LLwN1er6sdomLRzz5h0+yMpiYLhWYF5R7HeqVd4g==" - }, - "marky": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/marky/-/marky-1.2.1.tgz", - "integrity": "sha512-md9k+Gxa3qLH6sUKpeC2CNkJK/Ld+bEz5X96nYwloqphQE0CKCVEKco/6jxEZixinqNdz5RFi/KaCyfbMDMAXQ==" - }, - "matcher": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/matcher/-/matcher-2.1.0.tgz", - "integrity": "sha512-o+nZr+vtJtgPNklyeUKkkH42OsK8WAfdgaJE2FNxcjLPg+5QbeEoT6vRj8Xq/iv18JlQ9cmKsEu0b94ixWf1YQ==", + "version": "2.3.9", + "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", + "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==" + }, + "lunr-languages": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/lunr-languages/-/lunr-languages-1.9.0.tgz", + "integrity": "sha512-Be5vFuc8NAheOIjviCRms3ZqFFBlzns3u9DXpPSZvALetgnydAN0poV71pVLFn0keYy/s4VblMMkqewTLe+KPg==" + }, + "mathjax-full": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/mathjax-full/-/mathjax-full-3.2.2.tgz", + "integrity": "sha512-+LfG9Fik+OuI8SLwsiR02IVdjcnRCy5MufYLi0C3TdMT56L/pjB0alMVGgoWJF8pN9Rc7FESycZB9BMNWIid5w==", "requires": { - "escape-string-regexp": "^2.0.0" + "esm": "^3.2.25", + "mhchemparser": "^4.1.0", + "mj-context-menu": "^0.6.1", + "speech-rule-engine": "^4.0.6" } }, + "mhchemparser": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/mhchemparser/-/mhchemparser-4.1.1.tgz", + "integrity": "sha512-R75CUN6O6e1t8bgailrF1qPq+HhVeFTM3XQ0uzI+mXTybmphy3b6h4NbLOYhemViQ3lUs+6CKRkC3Ws1TlYREA==" + }, "mime-db": { - "version": "1.44.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", - "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==" + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true }, "mime-types": { - "version": "2.1.27", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", - "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, "requires": { - "mime-db": "1.44.0" + "mime-db": "1.52.0" } }, "mimic-response": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", - "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==" + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "dev": true }, "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "requires": { "brace-expansion": "^1.1.7" } }, - "minimatch-all": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/minimatch-all/-/minimatch-all-1.1.0.tgz", - "integrity": "sha1-QMSWonouEo0Zv3WOdrsBoMcUV4c=", - "requires": { - "minimatch": "^3.0.2" - } - }, "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true }, "minimisted": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/minimisted/-/minimisted-2.0.1.tgz", "integrity": "sha512-1oPjfuLQa2caorJUM8HV8lGgWCc0qqAO1MNv/k05G4qslmsndV/5WdNZrqCiyqiz3wohia2Ij2B7w2Dr7/IyrA==", + "dev": true, "requires": { "minimist": "^1.2.5" } }, + "mj-context-menu": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/mj-context-menu/-/mj-context-menu-0.6.1.tgz", + "integrity": "sha512-7NO5s6n10TIV96d4g2uDpG7ZDpIhMh0QNfGdJw/W47JswFcosz457wqz/b5sAKvl12sxINGFCn80NZHKwxQEXA==" + }, "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-2.1.3.tgz", + "integrity": "sha512-sjAkg21peAG9HS+Dkx7hlG9Ztx7HLeKnvB3NQRcu/mltCVmvkF0pisbiTSfDVYTT86XEfZrTUosLdZLStquZUw==" }, "multi-progress": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/multi-progress/-/multi-progress-2.0.0.tgz", - "integrity": "sha1-Kcy0LPJIdLHGOE8DEnzl3/eyLyw=", - "requires": { - "progress": "^1.1.8" - } + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/multi-progress/-/multi-progress-4.0.0.tgz", + "integrity": "sha512-9zcjyOou3FFCKPXsmkbC3ethv51SFPoA4dJD6TscIp2pUmy26kBDZW6h9XofPELrzseSkuD7r0V+emGEeo39Pg==", + "dev": true, + "requires": {} }, "neo-async": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true }, "normalize-path": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, "requires": { "remove-trailing-separator": "^1.0.1" } }, - "normalize-url": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", - "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==" - }, "now-and-later": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz", "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==", + "dev": true, "requires": { "once": "^1.3.2" } }, "nth-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", "requires": { - "boolbase": "~1.0.0" + "boolbase": "^1.0.0" } }, "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true }, "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dev": true, "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" } }, + "on-exit-leak-free": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.0.tgz", + "integrity": "sha512-VuCaZZAjReZ3vUwgOB8LxAosIurDiAW0s13rI1YwmaP++jvcxP77AWoQvenZebpCA2m8WC1/EosPYPMjnRAp/w==", + "dev": true + }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "requires": { "wrappy": "1" } }, - "opal-runtime": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/opal-runtime/-/opal-runtime-1.0.11.tgz", - "integrity": "sha512-L+6pnRvXPlDtbamBRnJAnB9mEMXmsIQ/b+0r/2xJ5/n/nxheEkLo+Pm5QNQ08LEbEN9TI6/kedhIspqRRu6tXA==", - "requires": { - "glob": "6.0.4", - "xmlhttprequest": "1.8.0" - } - }, "ordered-read-streams": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", - "integrity": "sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4=", + "integrity": "sha512-Z87aSjx3r5c0ZB7bcJqIgIRX5bxR7A4aSzvIbaxd0oTkWBCOoKfuGHiKj60CHVUgg1Phm5yMZzBdt8XqRs73Mw==", + "dev": true, "requires": { "readable-stream": "^2.0.1" }, "dependencies": { "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -1451,127 +3986,234 @@ "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true }, "string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, "requires": { "safe-buffer": "~5.1.0" } } } }, - "p-cancelable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==" - }, "pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pako/-/pako-2.1.0.tgz", + "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==" }, "parse5": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz", - "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" + }, + "parse5-htmlparser2-tree-adapter": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", + "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", "requires": { - "@types/node": "*" + "parse5": "^6.0.1" } }, "path-dirname": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" + "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==", + "dev": true }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" }, "pend": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=" + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "dev": true }, "picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==" + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true }, "pify": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true }, - "prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" + "pino": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/pino/-/pino-8.7.0.tgz", + "integrity": "sha512-l9sA5uPxmZzwydhMWUcm1gI0YxNnYl8MfSr2h8cwLvOAzQLBLewzF247h/vqHe3/tt6fgtXeG9wdjjoetdI/vA==", + "dev": true, + "requires": { + "atomic-sleep": "^1.0.0", + "fast-redact": "^3.1.1", + "on-exit-leak-free": "^2.1.0", + "pino-abstract-transport": "v1.0.0", + "pino-std-serializers": "^6.0.0", + "process-warning": "^2.0.0", + "quick-format-unescaped": "^4.0.3", + "real-require": "^0.2.0", + "safe-stable-stringify": "^2.3.1", + "sonic-boom": "^3.1.0", + "thread-stream": "^2.0.0" + } + }, + "pino-abstract-transport": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-1.0.0.tgz", + "integrity": "sha512-c7vo5OpW4wIS42hUVcT5REsL8ZljsUfBjqV/e2sFxmFEFZiq1XLUp5EYLtuDH6PEHq9W1egWqRbnLUP5FuZmOA==", + "dev": true, + "requires": { + "readable-stream": "^4.0.0", + "split2": "^4.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.3.0.tgz", + "integrity": "sha512-MuEnA0lbSi7JS8XM+WNJlWZkHAAdm7gETHdFK//Q/mChGyj2akEFtdLZh32jSdkWGbRwCW9pn6g3LWDdDeZnBQ==", + "dev": true, + "requires": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10" + } + } + } + }, + "pino-pretty": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/pino-pretty/-/pino-pretty-9.1.1.tgz", + "integrity": "sha512-iJrnjgR4FWQIXZkUF48oNgoRI9BpyMhaEmihonHeCnZ6F50ZHAS4YGfGBT/ZVNsPmd+hzkIPGzjKdY08+/yAXw==", + "dev": true, + "requires": { + "colorette": "^2.0.7", + "dateformat": "^4.6.3", + "fast-copy": "^3.0.0", + "fast-safe-stringify": "^2.1.1", + "help-me": "^4.0.1", + "joycon": "^3.1.1", + "minimist": "^1.2.6", + "on-exit-leak-free": "^2.1.0", + "pino-abstract-transport": "^1.0.0", + "pump": "^3.0.0", + "readable-stream": "^4.0.0", + "secure-json-parse": "^2.4.0", + "sonic-boom": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "readable-stream": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.3.0.tgz", + "integrity": "sha512-MuEnA0lbSi7JS8XM+WNJlWZkHAAdm7gETHdFK//Q/mChGyj2akEFtdLZh32jSdkWGbRwCW9pn6g3LWDdDeZnBQ==", + "dev": true, + "requires": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10" + } + } + } + }, + "pino-std-serializers": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-6.1.0.tgz", + "integrity": "sha512-KO0m2f1HkrPe9S0ldjx7za9BJjeHqBku5Ch8JyxETxT8dEFGz1PwgrHaOQupVYitpzbFSYm7nnljxD8dik2c+g==", + "dev": true }, - "printj": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/printj/-/printj-1.1.2.tgz", - "integrity": "sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ==" + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "dev": true }, "process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "process-warning": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-2.1.0.tgz", + "integrity": "sha512-9C20RLxrZU/rFnxWncDkuF6O999NdIf3E1ws4B0ZeY3sRVPzWBMsYDE2lxjxhiXxg464cQTgKUGm8/i6y2YGXg==", + "dev": true }, "progress": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", - "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=" + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true }, "pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, "requires": { "end-of-stream": "^1.1.0", "once": "^1.3.1" } }, "pumpify": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", - "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-2.0.1.tgz", + "integrity": "sha512-m7KOje7jZxrmutanlkS1daj1dS6z6BgslzOXmcSEpIlCxM3VJH7lG5QLeck/6hgF6F4crFf01UtQmNsJfweTAw==", + "dev": true, "requires": { - "duplexify": "^3.6.0", + "duplexify": "^4.1.1", "inherits": "^2.0.3", - "pump": "^2.0.0" + "pump": "^3.0.0" } }, "queue": { "version": "4.5.1", "resolved": "https://registry.npmjs.org/queue/-/queue-4.5.1.tgz", "integrity": "sha512-AMD7w5hRXcFSb8s9u38acBZ+309u6GsiibP4/0YacJeaurRshogB7v/ZcVPxP5gD5+zIw6ixRHdutiYUJfwKHw==", + "dev": true, "requires": { "inherits": "~2.0.0" } }, - "quick-lru": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", - "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==" + "quick-format-unescaped": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz", + "integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==", + "dev": true }, "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, "requires": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" } }, + "real-require": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/real-require/-/real-require-0.2.0.tgz", + "integrity": "sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==", + "dev": true + }, "remove-bom-buffer": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==", + "dev": true, "requires": { "is-buffer": "^1.1.5", "is-utf8": "^0.2.1" @@ -1580,175 +4222,186 @@ "remove-bom-stream": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz", - "integrity": "sha1-BfGlk/FuQuH7kOv1nejlaVJflSM=", + "integrity": "sha512-wigO8/O08XHb8YPzpDDT+QmRANfW6vLqxfaXm1YXhnFf3AkSLyjfG3GEFg4McZkmgL7KvCj5u2KczkvSP6NfHA==", + "dev": true, "requires": { "remove-bom-buffer": "^3.0.0", "safe-buffer": "^5.1.0", "through2": "^2.0.3" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - } - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - } - } - }, - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - } } }, "remove-trailing-separator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" + "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==", + "dev": true }, "replace-ext": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", - "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==" + "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==", + "dev": true }, "require-from-string": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true }, "resolve-options": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", - "integrity": "sha1-MrueOcBtZzONyTeMDW1gdFZq0TE=", + "integrity": "sha512-NYDgziiroVeDC29xq7bp/CacZERYsA9bXYd1ZmcJlF3BcrZv5pTb4NG7SjdyKDnXZ84aC4vo2u6sNKIA1LCu/A==", + "dev": true, "requires": { "value-or-function": "^3.0.0" } }, - "responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", - "requires": { - "lowercase-keys": "^1.0.0" - } - }, "rusha": { - "version": "0.8.13", - "resolved": "https://registry.npmjs.org/rusha/-/rusha-0.8.13.tgz", - "integrity": "sha1-mghOe4YLF7/zAVuSxnpqM2GRUTo=" + "version": "0.8.14", + "resolved": "https://registry.npmjs.org/rusha/-/rusha-0.8.14.tgz", + "integrity": "sha512-cLgakCUf6PedEu15t8kbsjnwIFFR2D4RfL+W3iWFJ4iac7z4B0ZI8fxy4R3J956kAI68HclCFGL8MPoUVC3qVA==" }, "safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "safe-stable-stringify": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz", + "integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==", + "dev": true + }, + "secure-json-parse": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.7.0.tgz", + "integrity": "sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==", + "dev": true }, "sha.js": { "version": "2.4.11", "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, "requires": { "inherits": "^2.0.1", "safe-buffer": "^5.0.1" } }, + "should-proxy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/should-proxy/-/should-proxy-1.0.4.tgz", + "integrity": "sha512-RPQhIndEIVUCjkfkQ6rs6sOR6pkxJWCNdxtfG5pP0RVgUYbK5911kLTF0TNcCC0G3YCGd492rMollFT2aTd9iQ==", + "dev": true + }, "simple-concat": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==" + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "dev": true }, "simple-get": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.0.tgz", - "integrity": "sha512-bCR6cP+aTdScaQCnQKbPKtJOKDp/hj9EDLJo3Nw4y1QksqaovlW/bnptB6/c1e+qmNIDHRK+oXFDdEqBT8WzUA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", + "dev": true, "requires": { - "decompress-response": "^4.2.0", + "decompress-response": "^6.0.0", "once": "^1.3.1", "simple-concat": "^1.0.0" } }, + "sonic-boom": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-3.2.1.tgz", + "integrity": "sha512-iITeTHxy3B9FGu8aVdiDXUVAcHMF9Ss0cCsAOo2HfCrmVGT3/DT5oYaeu0M/YKZDlKTvChEyPq0zI9Hf33EX6A==", + "dev": true, + "requires": { + "atomic-sleep": "^1.0.0" + } + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + "speech-rule-engine": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/speech-rule-engine/-/speech-rule-engine-4.0.7.tgz", + "integrity": "sha512-sJrL3/wHzNwJRLBdf6CjJWIlxC04iYKkyXvYSVsWVOiC2DSkHmxsqOhEeMsBA9XK+CHuNcsdkbFDnoUfAsmp9g==", + "requires": { + "commander": "9.2.0", + "wicked-good-xpath": "1.3.0", + "xmldom-sre": "0.1.31" + }, + "dependencies": { + "commander": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.2.0.tgz", + "integrity": "sha512-e2i4wANQiSXgnrBlIatyHtP1odfUp0BbV5Y5nEGbxtIrStkEOAAzCUirvLBNXHLr7kwLvJl6V+4V3XV9x7Wd9w==" + } + } + }, + "split2": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.1.0.tgz", + "integrity": "sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ==", + "dev": true }, "stream-shift": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", - "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", + "dev": true }, "string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, "requires": { "safe-buffer": "~5.2.0" } }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "thread-stream": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-2.3.0.tgz", + "integrity": "sha512-kaDqm1DET9pp3NXwR8382WHbnpXnRkN9xGN9dQt3B2+dmXiW8X1SOwmFOxAErEQ47ObhZ96J6yhZNXuyCOL7KA==", + "dev": true, + "requires": { + "real-require": "^0.2.0" + } + }, "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true }, "through2": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz", - "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==", - "requires": { - "inherits": "^2.0.4", - "readable-stream": "2 || 3" - } - }, - "through2-filter": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz", - "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, "requires": { - "through2": "~2.0.0", - "xtend": "~4.0.0" + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" }, "dependencies": { "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -1762,45 +4415,45 @@ "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true }, "string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, "requires": { "safe-buffer": "~5.1.0" } - }, - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } } } }, + "through2-filter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz", + "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==", + "dev": true, + "requires": { + "through2": "~2.0.0", + "xtend": "~4.0.0" + } + }, "to-absolute-glob": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", - "integrity": "sha1-GGX0PZ50sIItufFFt4z/fQ98hJs=", + "integrity": "sha512-rtwLUQEwT8ZeKQbyFJyomBRYXyE16U5VKuy0ftxLMK/PZb2fkOsg5r9kHdauuVDbsNdIBoC/HCthpidamQFXYA==", + "dev": true, "requires": { "is-absolute": "^1.0.0", "is-negated-glob": "^1.0.0" } }, - "to-readable-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", - "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==" - }, "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, "requires": { "is-number": "^7.0.0" } @@ -1808,111 +4461,62 @@ "to-through": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz", - "integrity": "sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY=", + "integrity": "sha512-+QIz37Ly7acM4EMdw2PRN389OneM5+d844tirkGp4dPKzI5OE72V9OsbFp+CIYJDahZ41ZV05hNtcPAQUAm9/Q==", + "dev": true, "requires": { "through2": "^2.0.3" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - } } }, - "to-utf8": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/to-utf8/-/to-utf8-0.0.1.tgz", - "integrity": "sha1-0Xrqcv8vujm55DYBvns/9y4ImFI=" + "tslib": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", + "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" }, "uglify-js": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.10.0.tgz", - "integrity": "sha512-Esj5HG5WAyrLIdYU74Z3JdG2PxdIusvj6IWHMtlyESxc7kcDz7zYlYjpnSokn1UbpV0d/QX9fan7gkCNd/9BQA==", + "version": "3.17.4", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", + "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", + "dev": true, "optional": true }, "unc-path-regex": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", - "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=" + "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==", + "dev": true }, "unique-stream": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz", "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==", + "dev": true, "requires": { "json-stable-stringify-without-jsonify": "^1.0.1", "through2-filter": "^3.0.0" } }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" - }, "unxhr": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unxhr/-/unxhr-1.0.4.tgz", - "integrity": "sha512-W0qjLVsaTdVB2GRHFIxPI/5Ej07aLs3kSLUgLYhrqrUP4c12jXYYJJeGwGLl9PWlR4YSP6Yq5johgv113C4N8g==" - }, - "url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", - "requires": { - "prepend-http": "^2.0.0" - } + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unxhr/-/unxhr-1.0.1.tgz", + "integrity": "sha512-MAhukhVHyaLGDjyDYhy8gVjWJyhTECCdNsLwlMoGFoNJ3o79fpQhtQuzmAE4IxCMDwraF4cW8ZjpAV0m9CRQbg==" }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true }, "value-or-function": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz", - "integrity": "sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM=" - }, - "varint": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/varint/-/varint-0.0.3.tgz", - "integrity": "sha1-uCHemwSzizzSL3LBjZSp+3KrNRg=" + "integrity": "sha512-jdBB2FrWvQC/pnPtIqcLsMaQgjhdb6B7tk1MMyTKapox+tQZbdRP4uLxu/JY0t7fbfDCUMnuelzEYv5GsxHhdg==", + "dev": true }, "vinyl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.0.tgz", - "integrity": "sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.1.tgz", + "integrity": "sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==", + "dev": true, "requires": { "clone": "^2.1.1", "clone-buffer": "^1.0.0", @@ -1926,6 +4530,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz", "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==", + "dev": true, "requires": { "fs-mkdirp-stream": "^1.0.0", "glob-stream": "^6.1.0", @@ -1946,10 +4551,81 @@ "vinyl-sourcemap": "^1.1.0" }, "dependencies": { + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dev": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + } + }, + "glob-stream": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", + "integrity": "sha512-uMbLGAP3S2aDOHUDfdoYcdIePUCfysbAd0IAoWVZbeGU/oNQ8asHVSshLDJUPWxfzj8zsCG7/XeHPHTtow0nsw==", + "dev": true, + "requires": { + "extend": "^3.0.0", + "glob": "^7.1.1", + "glob-parent": "^3.1.0", + "is-negated-glob": "^1.0.0", + "ordered-read-streams": "^1.0.0", + "pumpify": "^1.3.5", + "readable-stream": "^2.1.5", + "remove-trailing-separator": "^1.0.1", + "to-absolute-glob": "^2.0.0", + "unique-stream": "^2.0.2" + } + }, + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + }, + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + } + }, "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -1963,31 +4639,25 @@ "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true }, "string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, "requires": { "safe-buffer": "~5.1.0" } - }, - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } } } }, "vinyl-sourcemap": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz", - "integrity": "sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY=", + "integrity": "sha512-NiibMgt6VJGJmyw7vtzhctDcfKch4e4n9TBeoWlirb7FMg9/1Ov9k+A5ZRAtywBpRPiyECvQRQllYM8dECegVA==", + "dev": true, "requires": { "append-buffer": "^1.0.2", "convert-source-map": "^1.5.0", @@ -1998,44 +4668,50 @@ "vinyl": "^2.0.0" } }, + "wicked-good-xpath": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/wicked-good-xpath/-/wicked-good-xpath-1.3.0.tgz", + "integrity": "sha512-Gd9+TUn5nXdwj/hFsPVx5cuHHiF5Bwuc30jZ4+ronF1qHK5O7HD0sgmXWSEgwKquT3ClLoKPVbO6qGwVwLzvAw==" + }, "wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "xdg-basedir": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", - "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=" + "integrity": "sha512-1Dly4xqlulvPD3fZUQJLY+FUIeqN3N2MM3uqe4rCJftAvOjFa3jFGfctOgluGx4ahPbUCsZkmJILiP0Vi4T6lQ==", + "dev": true }, - "xmlhttprequest": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz", - "integrity": "sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw=" + "xmldom-sre": { + "version": "0.1.31", + "resolved": "https://registry.npmjs.org/xmldom-sre/-/xmldom-sre-0.1.31.tgz", + "integrity": "sha512-f9s+fUkX04BxQf+7mMWAp5zk61pciie+fFLC9hX9UVvCeJQfNHRHXpeo5MPcR0EUf57PYLdt+ZO4f3Ipk2oZUw==" }, "xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true }, "yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true }, "yauzl": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dev": true, "requires": { "buffer-crc32": "~0.2.3", "fd-slicer": "~1.1.0" @@ -2045,6 +4721,7 @@ "version": "2.5.1", "resolved": "https://registry.npmjs.org/yazl/-/yazl-2.5.1.tgz", "integrity": "sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==", + "dev": true, "requires": { "buffer-crc32": "~0.2.3" } diff --git a/package.json b/package.json index 2464844ce8..7286d19ec6 100644 --- a/package.json +++ b/package.json @@ -2,15 +2,18 @@ "name": "decidim-documentation", "private": true, "scripts": { - "build": "DOCSEARCH_ENABLED=true DOCSEARCH_ENGINE=lunr antora --generator antora-site-generator-lunr antora-playbook.yml $@" + "prebuild": "./bin/playbook-changer.js", + "build": "antora antora-playbook.yml $@", + "postbuild": "git restore antora-playbook.yml", + "test": "./bin/test" }, "devDependencies": { - "@antora/cli": "^2.3.0", - "@antora/site-generator-default": "^2.3.0" + "@antora/cli": "^3.0.0", + "@antora/site-generator-default": "^3.0.0" }, "dependencies": { - "antora-lunr": "^0.7.1", - "antora-site-generator-lunr": "^0.5.0", - "asciidoctor-kroki": "^0.9.2" + "@antora/lunr-extension": "^1.0.0-alpha.6", + "asciidoctor-kroki": "^0.17.0", + "asciidoctor-mathjax": "0.0.5" } } diff --git a/supplemental_ui/_redirects b/supplemental_ui/_redirects new file mode 100644 index 0000000000..e2067ddd25 --- /dev/null +++ b/supplemental_ui/_redirects @@ -0,0 +1,28 @@ +/en/admin/* /en/develop/admin/:splat +/en/configure/* /en/develop/configure/:splat +/en/contribute/* /en/develop/contribute/:splat +/en/customize/* /en/develop/customize/:splat +/en/develop/* /en/develop/develop/:splat +/en/features/* /en/develop/features/:splat +/en/install/* /en/develop/install/:splat +/en/publications/* /en/develop/publications/:splat +/en/releases/* /en/develop/releases/:splat +/en/services/* /en/develop/services/:splat +/en/understand/* /en/develop/understand/:splat +/en/whitepaper/* /en/develop/whitepaper/:splat + +/en/v0.27/index.html /en/v0.27/ +/en/v0.26/index.html /en/v0.26/ +/en/develop/index.html /en/develop/ + +/social-contract/en/* /en/understand/social-contract/ +/features/en/* /en/features/:splat +/features/es/* /en/features/:splat +/features/ca/* /en/features/:splat +/features/ /en/features/general-description/ +/whitepaper/en/* /en/whitepaper/ +/deploy-and-admin/en/get-decidim/ /en/install/ +/admin-manual/en/* /en/admin/:splat +/develop/en/ /en/develop/guide/ +/develop/en/advanced/* /en/develop/:splat +/init/en/ /en/ diff --git a/supplemental_ui/css/search.css b/supplemental_ui/css/search.css deleted file mode 100644 index d9af4ac3ba..0000000000 --- a/supplemental_ui/css/search.css +++ /dev/null @@ -1,115 +0,0 @@ -.navbar-brand .navbar-item + .navbar-item { - flex-grow: 1; - justify-content: flex-end; -} - -@media screen and (min-width: 1024px) { - .navbar-brand { - flex-grow: 1; - } - - .navbar-menu { - flex-grow: 0; - } -} - -#search-input { - color: #333; - font-family: inherit; - font-size: 0.95rem; - width: 150px; - border: 1px solid #dbdbdb; - border-radius: 0.1em; - line-height: 1.5; - padding: 0 0.25em; -} - -@media screen and (min-width: 769px) { - #search-input { - width: 200px; - } -} - -.search-result-dropdown-menu { - position: absolute; - z-index: 100; - display: block; - right: 0; - left: inherit; - top: 100%; - border-radius: 4px; - margin: 6px 0 0; - padding: 0; - text-align: left; - height: auto; - background: transparent; - border: none; - max-width: 600px; - min-width: 500px; - box-shadow: 0 1px 0 0 rgba(0, 0, 0, 0.2), 0 2px 3px 0 rgba(0, 0, 0, 0.1); -} - -@media screen and (max-width: 768px) { - .navbar-brand .navbar-item + .navbar-item { - padding-left: 0; - padding-right: 0; - } - - .search-result-dropdown-menu { - min-width: calc(100vw - 3.75rem); - } -} - -.search-result-dataset { - position: relative; - border: 1px solid #d9d9d9; - background: #fff; - border-radius: 4px; - overflow: auto; - padding: 0 8px 8px; - max-height: calc(100vh - 5.25rem); - color: #333; -} - -.search-result-highlight { - color: #174d8c; - background: rgba(143, 187, 237, 0.1); - padding: .1em .05em; -} - -.search-result-item { - display: flex; - font-size: 1rem; - margin-bottom: 0.5rem; - margin-top: 0.5rem; -} - -.search-result-document-title { - width: 33%; - border-right: 1px solid #ddd; - color: #a4a7ae; - font-size: 0.8rem; - padding: 0.25rem 0.5rem 0.25rem 0; - text-align: right; - position: relative; - word-wrap: break-word; -} - -.search-result-document-hit { - flex: 1; - font-size: 0.75em; - color: #02060c; - font-weight: 700; -} - -.search-result-document-hit > a { - color: inherit; - display: block; - padding: 0.5rem 0 0.5rem 1rem; - margin-bottom: 0.25rem; -} - -.search-result-document-hit > a:hover { - background-color: rgba(69, 142, 225, 0.05); -} - diff --git a/supplemental_ui/js/vendor/lunr.js b/supplemental_ui/js/vendor/lunr.js deleted file mode 100644 index c3537658a6..0000000000 --- a/supplemental_ui/js/vendor/lunr.js +++ /dev/null @@ -1,3475 +0,0 @@ -/** - * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.8 - * Copyright (C) 2019 Oliver Nightingale - * @license MIT - */ - -;(function(){ - -/** - * A convenience function for configuring and constructing - * a new lunr Index. - * - * A lunr.Builder instance is created and the pipeline setup - * with a trimmer, stop word filter and stemmer. - * - * This builder object is yielded to the configuration function - * that is passed as a parameter, allowing the list of fields - * and other builder parameters to be customised. - * - * All documents _must_ be added within the passed config function. - * - * @example - * var idx = lunr(function () { - * this.field('title') - * this.field('body') - * this.ref('id') - * - * documents.forEach(function (doc) { - * this.add(doc) - * }, this) - * }) - * - * @see {@link lunr.Builder} - * @see {@link lunr.Pipeline} - * @see {@link lunr.trimmer} - * @see {@link lunr.stopWordFilter} - * @see {@link lunr.stemmer} - * @namespace {function} lunr - */ -var lunr = function (config) { - var builder = new lunr.Builder - - builder.pipeline.add( - lunr.trimmer, - lunr.stopWordFilter, - lunr.stemmer - ) - - builder.searchPipeline.add( - lunr.stemmer - ) - - config.call(builder, builder) - return builder.build() -} - -lunr.version = "2.3.8" -/*! - * lunr.utils - * Copyright (C) 2019 Oliver Nightingale - */ - -/** - * A namespace containing utils for the rest of the lunr library - * @namespace lunr.utils - */ -lunr.utils = {} - -/** - * Print a warning message to the console. - * - * @param {String} message The message to be printed. - * @memberOf lunr.utils - * @function - */ -lunr.utils.warn = (function (global) { - /* eslint-disable no-console */ - return function (message) { - if (global.console && console.warn) { - console.warn(message) - } - } - /* eslint-enable no-console */ -})(this) - -/** - * Convert an object to a string. - * - * In the case of `null` and `undefined` the function returns - * the empty string, in all other cases the result of calling - * `toString` on the passed object is returned. - * - * @param {Any} obj The object to convert to a string. - * @return {String} string representation of the passed object. - * @memberOf lunr.utils - */ -lunr.utils.asString = function (obj) { - if (obj === void 0 || obj === null) { - return "" - } else { - return obj.toString() - } -} - -/** - * Clones an object. - * - * Will create a copy of an existing object such that any mutations - * on the copy cannot affect the original. - * - * Only shallow objects are supported, passing a nested object to this - * function will cause a TypeError. - * - * Objects with primitives, and arrays of primitives are supported. - * - * @param {Object} obj The object to clone. - * @return {Object} a clone of the passed object. - * @throws {TypeError} when a nested object is passed. - * @memberOf Utils - */ -lunr.utils.clone = function (obj) { - if (obj === null || obj === undefined) { - return obj - } - - var clone = Object.create(null), - keys = Object.keys(obj) - - for (var i = 0; i < keys.length; i++) { - var key = keys[i], - val = obj[key] - - if (Array.isArray(val)) { - clone[key] = val.slice() - continue - } - - if (typeof val === 'string' || - typeof val === 'number' || - typeof val === 'boolean') { - clone[key] = val - continue - } - - throw new TypeError("clone is not deep and does not support nested objects") - } - - return clone -} -lunr.FieldRef = function (docRef, fieldName, stringValue) { - this.docRef = docRef - this.fieldName = fieldName - this._stringValue = stringValue -} - -lunr.FieldRef.joiner = "/" - -lunr.FieldRef.fromString = function (s) { - var n = s.indexOf(lunr.FieldRef.joiner) - - if (n === -1) { - throw "malformed field ref string" - } - - var fieldRef = s.slice(0, n), - docRef = s.slice(n + 1) - - return new lunr.FieldRef (docRef, fieldRef, s) -} - -lunr.FieldRef.prototype.toString = function () { - if (this._stringValue == undefined) { - this._stringValue = this.fieldName + lunr.FieldRef.joiner + this.docRef - } - - return this._stringValue -} -/*! - * lunr.Set - * Copyright (C) 2019 Oliver Nightingale - */ - -/** - * A lunr set. - * - * @constructor - */ -lunr.Set = function (elements) { - this.elements = Object.create(null) - - if (elements) { - this.length = elements.length - - for (var i = 0; i < this.length; i++) { - this.elements[elements[i]] = true - } - } else { - this.length = 0 - } -} - -/** - * A complete set that contains all elements. - * - * @static - * @readonly - * @type {lunr.Set} - */ -lunr.Set.complete = { - intersect: function (other) { - return other - }, - - union: function (other) { - return other - }, - - contains: function () { - return true - } -} - -/** - * An empty set that contains no elements. - * - * @static - * @readonly - * @type {lunr.Set} - */ -lunr.Set.empty = { - intersect: function () { - return this - }, - - union: function (other) { - return other - }, - - contains: function () { - return false - } -} - -/** - * Returns true if this set contains the specified object. - * - * @param {object} object - Object whose presence in this set is to be tested. - * @returns {boolean} - True if this set contains the specified object. - */ -lunr.Set.prototype.contains = function (object) { - return !!this.elements[object] -} - -/** - * Returns a new set containing only the elements that are present in both - * this set and the specified set. - * - * @param {lunr.Set} other - set to intersect with this set. - * @returns {lunr.Set} a new set that is the intersection of this and the specified set. - */ - -lunr.Set.prototype.intersect = function (other) { - var a, b, elements, intersection = [] - - if (other === lunr.Set.complete) { - return this - } - - if (other === lunr.Set.empty) { - return other - } - - if (this.length < other.length) { - a = this - b = other - } else { - a = other - b = this - } - - elements = Object.keys(a.elements) - - for (var i = 0; i < elements.length; i++) { - var element = elements[i] - if (element in b.elements) { - intersection.push(element) - } - } - - return new lunr.Set (intersection) -} - -/** - * Returns a new set combining the elements of this and the specified set. - * - * @param {lunr.Set} other - set to union with this set. - * @return {lunr.Set} a new set that is the union of this and the specified set. - */ - -lunr.Set.prototype.union = function (other) { - if (other === lunr.Set.complete) { - return lunr.Set.complete - } - - if (other === lunr.Set.empty) { - return this - } - - return new lunr.Set(Object.keys(this.elements).concat(Object.keys(other.elements))) -} -/** - * A function to calculate the inverse document frequency for - * a posting. This is shared between the builder and the index - * - * @private - * @param {object} posting - The posting for a given term - * @param {number} documentCount - The total number of documents. - */ -lunr.idf = function (posting, documentCount) { - var documentsWithTerm = 0 - - for (var fieldName in posting) { - if (fieldName == '_index') continue // Ignore the term index, its not a field - documentsWithTerm += Object.keys(posting[fieldName]).length - } - - var x = (documentCount - documentsWithTerm + 0.5) / (documentsWithTerm + 0.5) - - return Math.log(1 + Math.abs(x)) -} - -/** - * A token wraps a string representation of a token - * as it is passed through the text processing pipeline. - * - * @constructor - * @param {string} [str=''] - The string token being wrapped. - * @param {object} [metadata={}] - Metadata associated with this token. - */ -lunr.Token = function (str, metadata) { - this.str = str || "" - this.metadata = metadata || {} -} - -/** - * Returns the token string that is being wrapped by this object. - * - * @returns {string} - */ -lunr.Token.prototype.toString = function () { - return this.str -} - -/** - * A token update function is used when updating or optionally - * when cloning a token. - * - * @callback lunr.Token~updateFunction - * @param {string} str - The string representation of the token. - * @param {Object} metadata - All metadata associated with this token. - */ - -/** - * Applies the given function to the wrapped string token. - * - * @example - * token.update(function (str, metadata) { - * return str.toUpperCase() - * }) - * - * @param {lunr.Token~updateFunction} fn - A function to apply to the token string. - * @returns {lunr.Token} - */ -lunr.Token.prototype.update = function (fn) { - this.str = fn(this.str, this.metadata) - return this -} - -/** - * Creates a clone of this token. Optionally a function can be - * applied to the cloned token. - * - * @param {lunr.Token~updateFunction} [fn] - An optional function to apply to the cloned token. - * @returns {lunr.Token} - */ -lunr.Token.prototype.clone = function (fn) { - fn = fn || function (s) { return s } - return new lunr.Token (fn(this.str, this.metadata), this.metadata) -} -/*! - * lunr.tokenizer - * Copyright (C) 2019 Oliver Nightingale - */ - -/** - * A function for splitting a string into tokens ready to be inserted into - * the search index. Uses `lunr.tokenizer.separator` to split strings, change - * the value of this property to change how strings are split into tokens. - * - * This tokenizer will convert its parameter to a string by calling `toString` and - * then will split this string on the character in `lunr.tokenizer.separator`. - * Arrays will have their elements converted to strings and wrapped in a lunr.Token. - * - * Optional metadata can be passed to the tokenizer, this metadata will be cloned and - * added as metadata to every token that is created from the object to be tokenized. - * - * @static - * @param {?(string|object|object[])} obj - The object to convert into tokens - * @param {?object} metadata - Optional metadata to associate with every token - * @returns {lunr.Token[]} - * @see {@link lunr.Pipeline} - */ -lunr.tokenizer = function (obj, metadata) { - if (obj == null || obj == undefined) { - return [] - } - - if (Array.isArray(obj)) { - return obj.map(function (t) { - return new lunr.Token( - lunr.utils.asString(t).toLowerCase(), - lunr.utils.clone(metadata) - ) - }) - } - - var str = obj.toString().toLowerCase(), - len = str.length, - tokens = [] - - for (var sliceEnd = 0, sliceStart = 0; sliceEnd <= len; sliceEnd++) { - var char = str.charAt(sliceEnd), - sliceLength = sliceEnd - sliceStart - - if ((char.match(lunr.tokenizer.separator) || sliceEnd == len)) { - - if (sliceLength > 0) { - var tokenMetadata = lunr.utils.clone(metadata) || {} - tokenMetadata["position"] = [sliceStart, sliceLength] - tokenMetadata["index"] = tokens.length - - tokens.push( - new lunr.Token ( - str.slice(sliceStart, sliceEnd), - tokenMetadata - ) - ) - } - - sliceStart = sliceEnd + 1 - } - - } - - return tokens -} - -/** - * The separator used to split a string into tokens. Override this property to change the behaviour of - * `lunr.tokenizer` behaviour when tokenizing strings. By default this splits on whitespace and hyphens. - * - * @static - * @see lunr.tokenizer - */ -lunr.tokenizer.separator = /[\s\-]+/ -/*! - * lunr.Pipeline - * Copyright (C) 2019 Oliver Nightingale - */ - -/** - * lunr.Pipelines maintain an ordered list of functions to be applied to all - * tokens in documents entering the search index and queries being ran against - * the index. - * - * An instance of lunr.Index created with the lunr shortcut will contain a - * pipeline with a stop word filter and an English language stemmer. Extra - * functions can be added before or after either of these functions or these - * default functions can be removed. - * - * When run the pipeline will call each function in turn, passing a token, the - * index of that token in the original list of all tokens and finally a list of - * all the original tokens. - * - * The output of functions in the pipeline will be passed to the next function - * in the pipeline. To exclude a token from entering the index the function - * should return undefined, the rest of the pipeline will not be called with - * this token. - * - * For serialisation of pipelines to work, all functions used in an instance of - * a pipeline should be registered with lunr.Pipeline. Registered functions can - * then be loaded. If trying to load a serialised pipeline that uses functions - * that are not registered an error will be thrown. - * - * If not planning on serialising the pipeline then registering pipeline functions - * is not necessary. - * - * @constructor - */ -lunr.Pipeline = function () { - this._stack = [] -} - -lunr.Pipeline.registeredFunctions = Object.create(null) - -/** - * A pipeline function maps lunr.Token to lunr.Token. A lunr.Token contains the token - * string as well as all known metadata. A pipeline function can mutate the token string - * or mutate (or add) metadata for a given token. - * - * A pipeline function can indicate that the passed token should be discarded by returning - * null, undefined or an empty string. This token will not be passed to any downstream pipeline - * functions and will not be added to the index. - * - * Multiple tokens can be returned by returning an array of tokens. Each token will be passed - * to any downstream pipeline functions and all will returned tokens will be added to the index. - * - * Any number of pipeline functions may be chained together using a lunr.Pipeline. - * - * @interface lunr.PipelineFunction - * @param {lunr.Token} token - A token from the document being processed. - * @param {number} i - The index of this token in the complete list of tokens for this document/field. - * @param {lunr.Token[]} tokens - All tokens for this document/field. - * @returns {(?lunr.Token|lunr.Token[])} - */ - -/** - * Register a function with the pipeline. - * - * Functions that are used in the pipeline should be registered if the pipeline - * needs to be serialised, or a serialised pipeline needs to be loaded. - * - * Registering a function does not add it to a pipeline, functions must still be - * added to instances of the pipeline for them to be used when running a pipeline. - * - * @param {lunr.PipelineFunction} fn - The function to check for. - * @param {String} label - The label to register this function with - */ -lunr.Pipeline.registerFunction = function (fn, label) { - if (label in this.registeredFunctions) { - lunr.utils.warn('Overwriting existing registered function: ' + label) - } - - fn.label = label - lunr.Pipeline.registeredFunctions[fn.label] = fn -} - -/** - * Warns if the function is not registered as a Pipeline function. - * - * @param {lunr.PipelineFunction} fn - The function to check for. - * @private - */ -lunr.Pipeline.warnIfFunctionNotRegistered = function (fn) { - var isRegistered = fn.label && (fn.label in this.registeredFunctions) - - if (!isRegistered) { - lunr.utils.warn('Function is not registered with pipeline. This may cause problems when serialising the index.\n', fn) - } -} - -/** - * Loads a previously serialised pipeline. - * - * All functions to be loaded must already be registered with lunr.Pipeline. - * If any function from the serialised data has not been registered then an - * error will be thrown. - * - * @param {Object} serialised - The serialised pipeline to load. - * @returns {lunr.Pipeline} - */ -lunr.Pipeline.load = function (serialised) { - var pipeline = new lunr.Pipeline - - serialised.forEach(function (fnName) { - var fn = lunr.Pipeline.registeredFunctions[fnName] - - if (fn) { - pipeline.add(fn) - } else { - throw new Error('Cannot load unregistered function: ' + fnName) - } - }) - - return pipeline -} - -/** - * Adds new functions to the end of the pipeline. - * - * Logs a warning if the function has not been registered. - * - * @param {lunr.PipelineFunction[]} functions - Any number of functions to add to the pipeline. - */ -lunr.Pipeline.prototype.add = function () { - var fns = Array.prototype.slice.call(arguments) - - fns.forEach(function (fn) { - lunr.Pipeline.warnIfFunctionNotRegistered(fn) - this._stack.push(fn) - }, this) -} - -/** - * Adds a single function after a function that already exists in the - * pipeline. - * - * Logs a warning if the function has not been registered. - * - * @param {lunr.PipelineFunction} existingFn - A function that already exists in the pipeline. - * @param {lunr.PipelineFunction} newFn - The new function to add to the pipeline. - */ -lunr.Pipeline.prototype.after = function (existingFn, newFn) { - lunr.Pipeline.warnIfFunctionNotRegistered(newFn) - - var pos = this._stack.indexOf(existingFn) - if (pos == -1) { - throw new Error('Cannot find existingFn') - } - - pos = pos + 1 - this._stack.splice(pos, 0, newFn) -} - -/** - * Adds a single function before a function that already exists in the - * pipeline. - * - * Logs a warning if the function has not been registered. - * - * @param {lunr.PipelineFunction} existingFn - A function that already exists in the pipeline. - * @param {lunr.PipelineFunction} newFn - The new function to add to the pipeline. - */ -lunr.Pipeline.prototype.before = function (existingFn, newFn) { - lunr.Pipeline.warnIfFunctionNotRegistered(newFn) - - var pos = this._stack.indexOf(existingFn) - if (pos == -1) { - throw new Error('Cannot find existingFn') - } - - this._stack.splice(pos, 0, newFn) -} - -/** - * Removes a function from the pipeline. - * - * @param {lunr.PipelineFunction} fn The function to remove from the pipeline. - */ -lunr.Pipeline.prototype.remove = function (fn) { - var pos = this._stack.indexOf(fn) - if (pos == -1) { - return - } - - this._stack.splice(pos, 1) -} - -/** - * Runs the current list of functions that make up the pipeline against the - * passed tokens. - * - * @param {Array} tokens The tokens to run through the pipeline. - * @returns {Array} - */ -lunr.Pipeline.prototype.run = function (tokens) { - var stackLength = this._stack.length - - for (var i = 0; i < stackLength; i++) { - var fn = this._stack[i] - var memo = [] - - for (var j = 0; j < tokens.length; j++) { - var result = fn(tokens[j], j, tokens) - - if (result === null || result === void 0 || result === '') continue - - if (Array.isArray(result)) { - for (var k = 0; k < result.length; k++) { - memo.push(result[k]) - } - } else { - memo.push(result) - } - } - - tokens = memo - } - - return tokens -} - -/** - * Convenience method for passing a string through a pipeline and getting - * strings out. This method takes care of wrapping the passed string in a - * token and mapping the resulting tokens back to strings. - * - * @param {string} str - The string to pass through the pipeline. - * @param {?object} metadata - Optional metadata to associate with the token - * passed to the pipeline. - * @returns {string[]} - */ -lunr.Pipeline.prototype.runString = function (str, metadata) { - var token = new lunr.Token (str, metadata) - - return this.run([token]).map(function (t) { - return t.toString() - }) -} - -/** - * Resets the pipeline by removing any existing processors. - * - */ -lunr.Pipeline.prototype.reset = function () { - this._stack = [] -} - -/** - * Returns a representation of the pipeline ready for serialisation. - * - * Logs a warning if the function has not been registered. - * - * @returns {Array} - */ -lunr.Pipeline.prototype.toJSON = function () { - return this._stack.map(function (fn) { - lunr.Pipeline.warnIfFunctionNotRegistered(fn) - - return fn.label - }) -} -/*! - * lunr.Vector - * Copyright (C) 2019 Oliver Nightingale - */ - -/** - * A vector is used to construct the vector space of documents and queries. These - * vectors support operations to determine the similarity between two documents or - * a document and a query. - * - * Normally no parameters are required for initializing a vector, but in the case of - * loading a previously dumped vector the raw elements can be provided to the constructor. - * - * For performance reasons vectors are implemented with a flat array, where an elements - * index is immediately followed by its value. E.g. [index, value, index, value]. This - * allows the underlying array to be as sparse as possible and still offer decent - * performance when being used for vector calculations. - * - * @constructor - * @param {Number[]} [elements] - The flat list of element index and element value pairs. - */ -lunr.Vector = function (elements) { - this._magnitude = 0 - this.elements = elements || [] -} - - -/** - * Calculates the position within the vector to insert a given index. - * - * This is used internally by insert and upsert. If there are duplicate indexes then - * the position is returned as if the value for that index were to be updated, but it - * is the callers responsibility to check whether there is a duplicate at that index - * - * @param {Number} insertIdx - The index at which the element should be inserted. - * @returns {Number} - */ -lunr.Vector.prototype.positionForIndex = function (index) { - // For an empty vector the tuple can be inserted at the beginning - if (this.elements.length == 0) { - return 0 - } - - var start = 0, - end = this.elements.length / 2, - sliceLength = end - start, - pivotPoint = Math.floor(sliceLength / 2), - pivotIndex = this.elements[pivotPoint * 2] - - while (sliceLength > 1) { - if (pivotIndex < index) { - start = pivotPoint - } - - if (pivotIndex > index) { - end = pivotPoint - } - - if (pivotIndex == index) { - break - } - - sliceLength = end - start - pivotPoint = start + Math.floor(sliceLength / 2) - pivotIndex = this.elements[pivotPoint * 2] - } - - if (pivotIndex == index) { - return pivotPoint * 2 - } - - if (pivotIndex > index) { - return pivotPoint * 2 - } - - if (pivotIndex < index) { - return (pivotPoint + 1) * 2 - } -} - -/** - * Inserts an element at an index within the vector. - * - * Does not allow duplicates, will throw an error if there is already an entry - * for this index. - * - * @param {Number} insertIdx - The index at which the element should be inserted. - * @param {Number} val - The value to be inserted into the vector. - */ -lunr.Vector.prototype.insert = function (insertIdx, val) { - this.upsert(insertIdx, val, function () { - throw "duplicate index" - }) -} - -/** - * Inserts or updates an existing index within the vector. - * - * @param {Number} insertIdx - The index at which the element should be inserted. - * @param {Number} val - The value to be inserted into the vector. - * @param {function} fn - A function that is called for updates, the existing value and the - * requested value are passed as arguments - */ -lunr.Vector.prototype.upsert = function (insertIdx, val, fn) { - this._magnitude = 0 - var position = this.positionForIndex(insertIdx) - - if (this.elements[position] == insertIdx) { - this.elements[position + 1] = fn(this.elements[position + 1], val) - } else { - this.elements.splice(position, 0, insertIdx, val) - } -} - -/** - * Calculates the magnitude of this vector. - * - * @returns {Number} - */ -lunr.Vector.prototype.magnitude = function () { - if (this._magnitude) return this._magnitude - - var sumOfSquares = 0, - elementsLength = this.elements.length - - for (var i = 1; i < elementsLength; i += 2) { - var val = this.elements[i] - sumOfSquares += val * val - } - - return this._magnitude = Math.sqrt(sumOfSquares) -} - -/** - * Calculates the dot product of this vector and another vector. - * - * @param {lunr.Vector} otherVector - The vector to compute the dot product with. - * @returns {Number} - */ -lunr.Vector.prototype.dot = function (otherVector) { - var dotProduct = 0, - a = this.elements, b = otherVector.elements, - aLen = a.length, bLen = b.length, - aVal = 0, bVal = 0, - i = 0, j = 0 - - while (i < aLen && j < bLen) { - aVal = a[i], bVal = b[j] - if (aVal < bVal) { - i += 2 - } else if (aVal > bVal) { - j += 2 - } else if (aVal == bVal) { - dotProduct += a[i + 1] * b[j + 1] - i += 2 - j += 2 - } - } - - return dotProduct -} - -/** - * Calculates the similarity between this vector and another vector. - * - * @param {lunr.Vector} otherVector - The other vector to calculate the - * similarity with. - * @returns {Number} - */ -lunr.Vector.prototype.similarity = function (otherVector) { - return this.dot(otherVector) / this.magnitude() || 0 -} - -/** - * Converts the vector to an array of the elements within the vector. - * - * @returns {Number[]} - */ -lunr.Vector.prototype.toArray = function () { - var output = new Array (this.elements.length / 2) - - for (var i = 1, j = 0; i < this.elements.length; i += 2, j++) { - output[j] = this.elements[i] - } - - return output -} - -/** - * A JSON serializable representation of the vector. - * - * @returns {Number[]} - */ -lunr.Vector.prototype.toJSON = function () { - return this.elements -} -/* eslint-disable */ -/*! - * lunr.stemmer - * Copyright (C) 2019 Oliver Nightingale - * Includes code from - http://tartarus.org/~martin/PorterStemmer/js.txt - */ - -/** - * lunr.stemmer is an english language stemmer, this is a JavaScript - * implementation of the PorterStemmer taken from http://tartarus.org/~martin - * - * @static - * @implements {lunr.PipelineFunction} - * @param {lunr.Token} token - The string to stem - * @returns {lunr.Token} - * @see {@link lunr.Pipeline} - * @function - */ -lunr.stemmer = (function(){ - var step2list = { - "ational" : "ate", - "tional" : "tion", - "enci" : "ence", - "anci" : "ance", - "izer" : "ize", - "bli" : "ble", - "alli" : "al", - "entli" : "ent", - "eli" : "e", - "ousli" : "ous", - "ization" : "ize", - "ation" : "ate", - "ator" : "ate", - "alism" : "al", - "iveness" : "ive", - "fulness" : "ful", - "ousness" : "ous", - "aliti" : "al", - "iviti" : "ive", - "biliti" : "ble", - "logi" : "log" - }, - - step3list = { - "icate" : "ic", - "ative" : "", - "alize" : "al", - "iciti" : "ic", - "ical" : "ic", - "ful" : "", - "ness" : "" - }, - - c = "[^aeiou]", // consonant - v = "[aeiouy]", // vowel - C = c + "[^aeiouy]*", // consonant sequence - V = v + "[aeiou]*", // vowel sequence - - mgr0 = "^(" + C + ")?" + V + C, // [C]VC... is m>0 - meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$", // [C]VC[V] is m=1 - mgr1 = "^(" + C + ")?" + V + C + V + C, // [C]VCVC... is m>1 - s_v = "^(" + C + ")?" + v; // vowel in stem - - var re_mgr0 = new RegExp(mgr0); - var re_mgr1 = new RegExp(mgr1); - var re_meq1 = new RegExp(meq1); - var re_s_v = new RegExp(s_v); - - var re_1a = /^(.+?)(ss|i)es$/; - var re2_1a = /^(.+?)([^s])s$/; - var re_1b = /^(.+?)eed$/; - var re2_1b = /^(.+?)(ed|ing)$/; - var re_1b_2 = /.$/; - var re2_1b_2 = /(at|bl|iz)$/; - var re3_1b_2 = new RegExp("([^aeiouylsz])\\1$"); - var re4_1b_2 = new RegExp("^" + C + v + "[^aeiouwxy]$"); - - var re_1c = /^(.+?[^aeiou])y$/; - var re_2 = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; - - var re_3 = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; - - var re_4 = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; - var re2_4 = /^(.+?)(s|t)(ion)$/; - - var re_5 = /^(.+?)e$/; - var re_5_1 = /ll$/; - var re3_5 = new RegExp("^" + C + v + "[^aeiouwxy]$"); - - var porterStemmer = function porterStemmer(w) { - var stem, - suffix, - firstch, - re, - re2, - re3, - re4; - - if (w.length < 3) { return w; } - - firstch = w.substr(0,1); - if (firstch == "y") { - w = firstch.toUpperCase() + w.substr(1); - } - - // Step 1a - re = re_1a - re2 = re2_1a; - - if (re.test(w)) { w = w.replace(re,"$1$2"); } - else if (re2.test(w)) { w = w.replace(re2,"$1$2"); } - - // Step 1b - re = re_1b; - re2 = re2_1b; - if (re.test(w)) { - var fp = re.exec(w); - re = re_mgr0; - if (re.test(fp[1])) { - re = re_1b_2; - w = w.replace(re,""); - } - } else if (re2.test(w)) { - var fp = re2.exec(w); - stem = fp[1]; - re2 = re_s_v; - if (re2.test(stem)) { - w = stem; - re2 = re2_1b_2; - re3 = re3_1b_2; - re4 = re4_1b_2; - if (re2.test(w)) { w = w + "e"; } - else if (re3.test(w)) { re = re_1b_2; w = w.replace(re,""); } - else if (re4.test(w)) { w = w + "e"; } - } - } - - // Step 1c - replace suffix y or Y by i if preceded by a non-vowel which is not the first letter of the word (so cry -> cri, by -> by, say -> say) - re = re_1c; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - w = stem + "i"; - } - - // Step 2 - re = re_2; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - suffix = fp[2]; - re = re_mgr0; - if (re.test(stem)) { - w = stem + step2list[suffix]; - } - } - - // Step 3 - re = re_3; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - suffix = fp[2]; - re = re_mgr0; - if (re.test(stem)) { - w = stem + step3list[suffix]; - } - } - - // Step 4 - re = re_4; - re2 = re2_4; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - re = re_mgr1; - if (re.test(stem)) { - w = stem; - } - } else if (re2.test(w)) { - var fp = re2.exec(w); - stem = fp[1] + fp[2]; - re2 = re_mgr1; - if (re2.test(stem)) { - w = stem; - } - } - - // Step 5 - re = re_5; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - re = re_mgr1; - re2 = re_meq1; - re3 = re3_5; - if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) { - w = stem; - } - } - - re = re_5_1; - re2 = re_mgr1; - if (re.test(w) && re2.test(w)) { - re = re_1b_2; - w = w.replace(re,""); - } - - // and turn initial Y back to y - - if (firstch == "y") { - w = firstch.toLowerCase() + w.substr(1); - } - - return w; - }; - - return function (token) { - return token.update(porterStemmer); - } -})(); - -lunr.Pipeline.registerFunction(lunr.stemmer, 'stemmer') -/*! - * lunr.stopWordFilter - * Copyright (C) 2019 Oliver Nightingale - */ - -/** - * lunr.generateStopWordFilter builds a stopWordFilter function from the provided - * list of stop words. - * - * The built in lunr.stopWordFilter is built using this generator and can be used - * to generate custom stopWordFilters for applications or non English languages. - * - * @function - * @param {Array} token The token to pass through the filter - * @returns {lunr.PipelineFunction} - * @see lunr.Pipeline - * @see lunr.stopWordFilter - */ -lunr.generateStopWordFilter = function (stopWords) { - var words = stopWords.reduce(function (memo, stopWord) { - memo[stopWord] = stopWord - return memo - }, {}) - - return function (token) { - if (token && words[token.toString()] !== token.toString()) return token - } -} - -/** - * lunr.stopWordFilter is an English language stop word list filter, any words - * contained in the list will not be passed through the filter. - * - * This is intended to be used in the Pipeline. If the token does not pass the - * filter then undefined will be returned. - * - * @function - * @implements {lunr.PipelineFunction} - * @params {lunr.Token} token - A token to check for being a stop word. - * @returns {lunr.Token} - * @see {@link lunr.Pipeline} - */ -lunr.stopWordFilter = lunr.generateStopWordFilter([ - 'a', - 'able', - 'about', - 'across', - 'after', - 'all', - 'almost', - 'also', - 'am', - 'among', - 'an', - 'and', - 'any', - 'are', - 'as', - 'at', - 'be', - 'because', - 'been', - 'but', - 'by', - 'can', - 'cannot', - 'could', - 'dear', - 'did', - 'do', - 'does', - 'either', - 'else', - 'ever', - 'every', - 'for', - 'from', - 'get', - 'got', - 'had', - 'has', - 'have', - 'he', - 'her', - 'hers', - 'him', - 'his', - 'how', - 'however', - 'i', - 'if', - 'in', - 'into', - 'is', - 'it', - 'its', - 'just', - 'least', - 'let', - 'like', - 'likely', - 'may', - 'me', - 'might', - 'most', - 'must', - 'my', - 'neither', - 'no', - 'nor', - 'not', - 'of', - 'off', - 'often', - 'on', - 'only', - 'or', - 'other', - 'our', - 'own', - 'rather', - 'said', - 'say', - 'says', - 'she', - 'should', - 'since', - 'so', - 'some', - 'than', - 'that', - 'the', - 'their', - 'them', - 'then', - 'there', - 'these', - 'they', - 'this', - 'tis', - 'to', - 'too', - 'twas', - 'us', - 'wants', - 'was', - 'we', - 'were', - 'what', - 'when', - 'where', - 'which', - 'while', - 'who', - 'whom', - 'why', - 'will', - 'with', - 'would', - 'yet', - 'you', - 'your' -]) - -lunr.Pipeline.registerFunction(lunr.stopWordFilter, 'stopWordFilter') -/*! - * lunr.trimmer - * Copyright (C) 2019 Oliver Nightingale - */ - -/** - * lunr.trimmer is a pipeline function for trimming non word - * characters from the beginning and end of tokens before they - * enter the index. - * - * This implementation may not work correctly for non latin - * characters and should either be removed or adapted for use - * with languages with non-latin characters. - * - * @static - * @implements {lunr.PipelineFunction} - * @param {lunr.Token} token The token to pass through the filter - * @returns {lunr.Token} - * @see lunr.Pipeline - */ -lunr.trimmer = function (token) { - return token.update(function (s) { - return s.replace(/^\W+/, '').replace(/\W+$/, '') - }) -} - -lunr.Pipeline.registerFunction(lunr.trimmer, 'trimmer') -/*! - * lunr.TokenSet - * Copyright (C) 2019 Oliver Nightingale - */ - -/** - * A token set is used to store the unique list of all tokens - * within an index. Token sets are also used to represent an - * incoming query to the index, this query token set and index - * token set are then intersected to find which tokens to look - * up in the inverted index. - * - * A token set can hold multiple tokens, as in the case of the - * index token set, or it can hold a single token as in the - * case of a simple query token set. - * - * Additionally token sets are used to perform wildcard matching. - * Leading, contained and trailing wildcards are supported, and - * from this edit distance matching can also be provided. - * - * Token sets are implemented as a minimal finite state automata, - * where both common prefixes and suffixes are shared between tokens. - * This helps to reduce the space used for storing the token set. - * - * @constructor - */ -lunr.TokenSet = function () { - this.final = false - this.edges = {} - this.id = lunr.TokenSet._nextId - lunr.TokenSet._nextId += 1 -} - -/** - * Keeps track of the next, auto increment, identifier to assign - * to a new tokenSet. - * - * TokenSets require a unique identifier to be correctly minimised. - * - * @private - */ -lunr.TokenSet._nextId = 1 - -/** - * Creates a TokenSet instance from the given sorted array of words. - * - * @param {String[]} arr - A sorted array of strings to create the set from. - * @returns {lunr.TokenSet} - * @throws Will throw an error if the input array is not sorted. - */ -lunr.TokenSet.fromArray = function (arr) { - var builder = new lunr.TokenSet.Builder - - for (var i = 0, len = arr.length; i < len; i++) { - builder.insert(arr[i]) - } - - builder.finish() - return builder.root -} - -/** - * Creates a token set from a query clause. - * - * @private - * @param {Object} clause - A single clause from lunr.Query. - * @param {string} clause.term - The query clause term. - * @param {number} [clause.editDistance] - The optional edit distance for the term. - * @returns {lunr.TokenSet} - */ -lunr.TokenSet.fromClause = function (clause) { - if ('editDistance' in clause) { - return lunr.TokenSet.fromFuzzyString(clause.term, clause.editDistance) - } else { - return lunr.TokenSet.fromString(clause.term) - } -} - -/** - * Creates a token set representing a single string with a specified - * edit distance. - * - * Insertions, deletions, substitutions and transpositions are each - * treated as an edit distance of 1. - * - * Increasing the allowed edit distance will have a dramatic impact - * on the performance of both creating and intersecting these TokenSets. - * It is advised to keep the edit distance less than 3. - * - * @param {string} str - The string to create the token set from. - * @param {number} editDistance - The allowed edit distance to match. - * @returns {lunr.Vector} - */ -lunr.TokenSet.fromFuzzyString = function (str, editDistance) { - var root = new lunr.TokenSet - - var stack = [{ - node: root, - editsRemaining: editDistance, - str: str - }] - - while (stack.length) { - var frame = stack.pop() - - // no edit - if (frame.str.length > 0) { - var char = frame.str.charAt(0), - noEditNode - - if (char in frame.node.edges) { - noEditNode = frame.node.edges[char] - } else { - noEditNode = new lunr.TokenSet - frame.node.edges[char] = noEditNode - } - - if (frame.str.length == 1) { - noEditNode.final = true - } - - stack.push({ - node: noEditNode, - editsRemaining: frame.editsRemaining, - str: frame.str.slice(1) - }) - } - - if (frame.editsRemaining == 0) { - continue - } - - // insertion - if ("*" in frame.node.edges) { - var insertionNode = frame.node.edges["*"] - } else { - var insertionNode = new lunr.TokenSet - frame.node.edges["*"] = insertionNode - } - - if (frame.str.length == 0) { - insertionNode.final = true - } - - stack.push({ - node: insertionNode, - editsRemaining: frame.editsRemaining - 1, - str: frame.str - }) - - // deletion - // can only do a deletion if we have enough edits remaining - // and if there are characters left to delete in the string - if (frame.str.length > 1) { - stack.push({ - node: frame.node, - editsRemaining: frame.editsRemaining - 1, - str: frame.str.slice(1) - }) - } - - // deletion - // just removing the last character from the str - if (frame.str.length == 1) { - frame.node.final = true - } - - // substitution - // can only do a substitution if we have enough edits remaining - // and if there are characters left to substitute - if (frame.str.length >= 1) { - if ("*" in frame.node.edges) { - var substitutionNode = frame.node.edges["*"] - } else { - var substitutionNode = new lunr.TokenSet - frame.node.edges["*"] = substitutionNode - } - - if (frame.str.length == 1) { - substitutionNode.final = true - } - - stack.push({ - node: substitutionNode, - editsRemaining: frame.editsRemaining - 1, - str: frame.str.slice(1) - }) - } - - // transposition - // can only do a transposition if there are edits remaining - // and there are enough characters to transpose - if (frame.str.length > 1) { - var charA = frame.str.charAt(0), - charB = frame.str.charAt(1), - transposeNode - - if (charB in frame.node.edges) { - transposeNode = frame.node.edges[charB] - } else { - transposeNode = new lunr.TokenSet - frame.node.edges[charB] = transposeNode - } - - if (frame.str.length == 1) { - transposeNode.final = true - } - - stack.push({ - node: transposeNode, - editsRemaining: frame.editsRemaining - 1, - str: charA + frame.str.slice(2) - }) - } - } - - return root -} - -/** - * Creates a TokenSet from a string. - * - * The string may contain one or more wildcard characters (*) - * that will allow wildcard matching when intersecting with - * another TokenSet. - * - * @param {string} str - The string to create a TokenSet from. - * @returns {lunr.TokenSet} - */ -lunr.TokenSet.fromString = function (str) { - var node = new lunr.TokenSet, - root = node - - /* - * Iterates through all characters within the passed string - * appending a node for each character. - * - * When a wildcard character is found then a self - * referencing edge is introduced to continually match - * any number of any characters. - */ - for (var i = 0, len = str.length; i < len; i++) { - var char = str[i], - final = (i == len - 1) - - if (char == "*") { - node.edges[char] = node - node.final = final - - } else { - var next = new lunr.TokenSet - next.final = final - - node.edges[char] = next - node = next - } - } - - return root -} - -/** - * Converts this TokenSet into an array of strings - * contained within the TokenSet. - * - * This is not intended to be used on a TokenSet that - * contains wildcards, in these cases the results are - * undefined and are likely to cause an infinite loop. - * - * @returns {string[]} - */ -lunr.TokenSet.prototype.toArray = function () { - var words = [] - - var stack = [{ - prefix: "", - node: this - }] - - while (stack.length) { - var frame = stack.pop(), - edges = Object.keys(frame.node.edges), - len = edges.length - - if (frame.node.final) { - /* In Safari, at this point the prefix is sometimes corrupted, see: - * https://github.com/olivernn/lunr.js/issues/279 Calling any - * String.prototype method forces Safari to "cast" this string to what - * it's supposed to be, fixing the bug. */ - frame.prefix.charAt(0) - words.push(frame.prefix) - } - - for (var i = 0; i < len; i++) { - var edge = edges[i] - - stack.push({ - prefix: frame.prefix.concat(edge), - node: frame.node.edges[edge] - }) - } - } - - return words -} - -/** - * Generates a string representation of a TokenSet. - * - * This is intended to allow TokenSets to be used as keys - * in objects, largely to aid the construction and minimisation - * of a TokenSet. As such it is not designed to be a human - * friendly representation of the TokenSet. - * - * @returns {string} - */ -lunr.TokenSet.prototype.toString = function () { - // NOTE: Using Object.keys here as this.edges is very likely - // to enter 'hash-mode' with many keys being added - // - // avoiding a for-in loop here as it leads to the function - // being de-optimised (at least in V8). From some simple - // benchmarks the performance is comparable, but allowing - // V8 to optimize may mean easy performance wins in the future. - - if (this._str) { - return this._str - } - - var str = this.final ? '1' : '0', - labels = Object.keys(this.edges).sort(), - len = labels.length - - for (var i = 0; i < len; i++) { - var label = labels[i], - node = this.edges[label] - - str = str + label + node.id - } - - return str -} - -/** - * Returns a new TokenSet that is the intersection of - * this TokenSet and the passed TokenSet. - * - * This intersection will take into account any wildcards - * contained within the TokenSet. - * - * @param {lunr.TokenSet} b - An other TokenSet to intersect with. - * @returns {lunr.TokenSet} - */ -lunr.TokenSet.prototype.intersect = function (b) { - var output = new lunr.TokenSet, - frame = undefined - - var stack = [{ - qNode: b, - output: output, - node: this - }] - - while (stack.length) { - frame = stack.pop() - - // NOTE: As with the #toString method, we are using - // Object.keys and a for loop instead of a for-in loop - // as both of these objects enter 'hash' mode, causing - // the function to be de-optimised in V8 - var qEdges = Object.keys(frame.qNode.edges), - qLen = qEdges.length, - nEdges = Object.keys(frame.node.edges), - nLen = nEdges.length - - for (var q = 0; q < qLen; q++) { - var qEdge = qEdges[q] - - for (var n = 0; n < nLen; n++) { - var nEdge = nEdges[n] - - if (nEdge == qEdge || qEdge == '*') { - var node = frame.node.edges[nEdge], - qNode = frame.qNode.edges[qEdge], - final = node.final && qNode.final, - next = undefined - - if (nEdge in frame.output.edges) { - // an edge already exists for this character - // no need to create a new node, just set the finality - // bit unless this node is already final - next = frame.output.edges[nEdge] - next.final = next.final || final - - } else { - // no edge exists yet, must create one - // set the finality bit and insert it - // into the output - next = new lunr.TokenSet - next.final = final - frame.output.edges[nEdge] = next - } - - stack.push({ - qNode: qNode, - output: next, - node: node - }) - } - } - } - } - - return output -} -lunr.TokenSet.Builder = function () { - this.previousWord = "" - this.root = new lunr.TokenSet - this.uncheckedNodes = [] - this.minimizedNodes = {} -} - -lunr.TokenSet.Builder.prototype.insert = function (word) { - var node, - commonPrefix = 0 - - if (word < this.previousWord) { - throw new Error ("Out of order word insertion") - } - - for (var i = 0; i < word.length && i < this.previousWord.length; i++) { - if (word[i] != this.previousWord[i]) break - commonPrefix++ - } - - this.minimize(commonPrefix) - - if (this.uncheckedNodes.length == 0) { - node = this.root - } else { - node = this.uncheckedNodes[this.uncheckedNodes.length - 1].child - } - - for (var i = commonPrefix; i < word.length; i++) { - var nextNode = new lunr.TokenSet, - char = word[i] - - node.edges[char] = nextNode - - this.uncheckedNodes.push({ - parent: node, - char: char, - child: nextNode - }) - - node = nextNode - } - - node.final = true - this.previousWord = word -} - -lunr.TokenSet.Builder.prototype.finish = function () { - this.minimize(0) -} - -lunr.TokenSet.Builder.prototype.minimize = function (downTo) { - for (var i = this.uncheckedNodes.length - 1; i >= downTo; i--) { - var node = this.uncheckedNodes[i], - childKey = node.child.toString() - - if (childKey in this.minimizedNodes) { - node.parent.edges[node.char] = this.minimizedNodes[childKey] - } else { - // Cache the key for this node since - // we know it can't change anymore - node.child._str = childKey - - this.minimizedNodes[childKey] = node.child - } - - this.uncheckedNodes.pop() - } -} -/*! - * lunr.Index - * Copyright (C) 2019 Oliver Nightingale - */ - -/** - * An index contains the built index of all documents and provides a query interface - * to the index. - * - * Usually instances of lunr.Index will not be created using this constructor, instead - * lunr.Builder should be used to construct new indexes, or lunr.Index.load should be - * used to load previously built and serialized indexes. - * - * @constructor - * @param {Object} attrs - The attributes of the built search index. - * @param {Object} attrs.invertedIndex - An index of term/field to document reference. - * @param {Object} attrs.fieldVectors - Field vectors - * @param {lunr.TokenSet} attrs.tokenSet - An set of all corpus tokens. - * @param {string[]} attrs.fields - The names of indexed document fields. - * @param {lunr.Pipeline} attrs.pipeline - The pipeline to use for search terms. - */ -lunr.Index = function (attrs) { - this.invertedIndex = attrs.invertedIndex - this.fieldVectors = attrs.fieldVectors - this.tokenSet = attrs.tokenSet - this.fields = attrs.fields - this.pipeline = attrs.pipeline -} - -/** - * A result contains details of a document matching a search query. - * @typedef {Object} lunr.Index~Result - * @property {string} ref - The reference of the document this result represents. - * @property {number} score - A number between 0 and 1 representing how similar this document is to the query. - * @property {lunr.MatchData} matchData - Contains metadata about this match including which term(s) caused the match. - */ - -/** - * Although lunr provides the ability to create queries using lunr.Query, it also provides a simple - * query language which itself is parsed into an instance of lunr.Query. - * - * For programmatically building queries it is advised to directly use lunr.Query, the query language - * is best used for human entered text rather than program generated text. - * - * At its simplest queries can just be a single term, e.g. `hello`, multiple terms are also supported - * and will be combined with OR, e.g `hello world` will match documents that contain either 'hello' - * or 'world', though those that contain both will rank higher in the results. - * - * Wildcards can be included in terms to match one or more unspecified characters, these wildcards can - * be inserted anywhere within the term, and more than one wildcard can exist in a single term. Adding - * wildcards will increase the number of documents that will be found but can also have a negative - * impact on query performance, especially with wildcards at the beginning of a term. - * - * Terms can be restricted to specific fields, e.g. `title:hello`, only documents with the term - * hello in the title field will match this query. Using a field not present in the index will lead - * to an error being thrown. - * - * Modifiers can also be added to terms, lunr supports edit distance and boost modifiers on terms. A term - * boost will make documents matching that term score higher, e.g. `foo^5`. Edit distance is also supported - * to provide fuzzy matching, e.g. 'hello~2' will match documents with hello with an edit distance of 2. - * Avoid large values for edit distance to improve query performance. - * - * Each term also supports a presence modifier. By default a term's presence in document is optional, however - * this can be changed to either required or prohibited. For a term's presence to be required in a document the - * term should be prefixed with a '+', e.g. `+foo bar` is a search for documents that must contain 'foo' and - * optionally contain 'bar'. Conversely a leading '-' sets the terms presence to prohibited, i.e. it must not - * appear in a document, e.g. `-foo bar` is a search for documents that do not contain 'foo' but may contain 'bar'. - * - * To escape special characters the backslash character '\' can be used, this allows searches to include - * characters that would normally be considered modifiers, e.g. `foo\~2` will search for a term "foo~2" instead - * of attempting to apply a boost of 2 to the search term "foo". - * - * @typedef {string} lunr.Index~QueryString - * @example Simple single term query - * hello - * @example Multiple term query - * hello world - * @example term scoped to a field - * title:hello - * @example term with a boost of 10 - * hello^10 - * @example term with an edit distance of 2 - * hello~2 - * @example terms with presence modifiers - * -foo +bar baz - */ - -/** - * Performs a search against the index using lunr query syntax. - * - * Results will be returned sorted by their score, the most relevant results - * will be returned first. For details on how the score is calculated, please see - * the {@link https://lunrjs.com/guides/searching.html#scoring|guide}. - * - * For more programmatic querying use lunr.Index#query. - * - * @param {lunr.Index~QueryString} queryString - A string containing a lunr query. - * @throws {lunr.QueryParseError} If the passed query string cannot be parsed. - * @returns {lunr.Index~Result[]} - */ -lunr.Index.prototype.search = function (queryString) { - return this.query(function (query) { - var parser = new lunr.QueryParser(queryString, query) - parser.parse() - }) -} - -/** - * A query builder callback provides a query object to be used to express - * the query to perform on the index. - * - * @callback lunr.Index~queryBuilder - * @param {lunr.Query} query - The query object to build up. - * @this lunr.Query - */ - -/** - * Performs a query against the index using the yielded lunr.Query object. - * - * If performing programmatic queries against the index, this method is preferred - * over lunr.Index#search so as to avoid the additional query parsing overhead. - * - * A query object is yielded to the supplied function which should be used to - * express the query to be run against the index. - * - * Note that although this function takes a callback parameter it is _not_ an - * asynchronous operation, the callback is just yielded a query object to be - * customized. - * - * @param {lunr.Index~queryBuilder} fn - A function that is used to build the query. - * @returns {lunr.Index~Result[]} - */ -lunr.Index.prototype.query = function (fn) { - // for each query clause - // * process terms - // * expand terms from token set - // * find matching documents and metadata - // * get document vectors - // * score documents - - var query = new lunr.Query(this.fields), - matchingFields = Object.create(null), - queryVectors = Object.create(null), - termFieldCache = Object.create(null), - requiredMatches = Object.create(null), - prohibitedMatches = Object.create(null) - - /* - * To support field level boosts a query vector is created per - * field. An empty vector is eagerly created to support negated - * queries. - */ - for (var i = 0; i < this.fields.length; i++) { - queryVectors[this.fields[i]] = new lunr.Vector - } - - fn.call(query, query) - - for (var i = 0; i < query.clauses.length; i++) { - /* - * Unless the pipeline has been disabled for this term, which is - * the case for terms with wildcards, we need to pass the clause - * term through the search pipeline. A pipeline returns an array - * of processed terms. Pipeline functions may expand the passed - * term, which means we may end up performing multiple index lookups - * for a single query term. - */ - var clause = query.clauses[i], - terms = null, - clauseMatches = lunr.Set.complete - - if (clause.usePipeline) { - terms = this.pipeline.runString(clause.term, { - fields: clause.fields - }) - } else { - terms = [clause.term] - } - - for (var m = 0; m < terms.length; m++) { - var term = terms[m] - - /* - * Each term returned from the pipeline needs to use the same query - * clause object, e.g. the same boost and or edit distance. The - * simplest way to do this is to re-use the clause object but mutate - * its term property. - */ - clause.term = term - - /* - * From the term in the clause we create a token set which will then - * be used to intersect the indexes token set to get a list of terms - * to lookup in the inverted index - */ - var termTokenSet = lunr.TokenSet.fromClause(clause), - expandedTerms = this.tokenSet.intersect(termTokenSet).toArray() - - /* - * If a term marked as required does not exist in the tokenSet it is - * impossible for the search to return any matches. We set all the field - * scoped required matches set to empty and stop examining any further - * clauses. - */ - if (expandedTerms.length === 0 && clause.presence === lunr.Query.presence.REQUIRED) { - for (var k = 0; k < clause.fields.length; k++) { - var field = clause.fields[k] - requiredMatches[field] = lunr.Set.empty - } - - break - } - - for (var j = 0; j < expandedTerms.length; j++) { - /* - * For each term get the posting and termIndex, this is required for - * building the query vector. - */ - var expandedTerm = expandedTerms[j], - posting = this.invertedIndex[expandedTerm], - termIndex = posting._index - - for (var k = 0; k < clause.fields.length; k++) { - /* - * For each field that this query term is scoped by (by default - * all fields are in scope) we need to get all the document refs - * that have this term in that field. - * - * The posting is the entry in the invertedIndex for the matching - * term from above. - */ - var field = clause.fields[k], - fieldPosting = posting[field], - matchingDocumentRefs = Object.keys(fieldPosting), - termField = expandedTerm + "/" + field, - matchingDocumentsSet = new lunr.Set(matchingDocumentRefs) - - /* - * if the presence of this term is required ensure that the matching - * documents are added to the set of required matches for this clause. - * - */ - if (clause.presence == lunr.Query.presence.REQUIRED) { - clauseMatches = clauseMatches.union(matchingDocumentsSet) - - if (requiredMatches[field] === undefined) { - requiredMatches[field] = lunr.Set.complete - } - } - - /* - * if the presence of this term is prohibited ensure that the matching - * documents are added to the set of prohibited matches for this field, - * creating that set if it does not yet exist. - */ - if (clause.presence == lunr.Query.presence.PROHIBITED) { - if (prohibitedMatches[field] === undefined) { - prohibitedMatches[field] = lunr.Set.empty - } - - prohibitedMatches[field] = prohibitedMatches[field].union(matchingDocumentsSet) - - /* - * Prohibited matches should not be part of the query vector used for - * similarity scoring and no metadata should be extracted so we continue - * to the next field - */ - continue - } - - /* - * The query field vector is populated using the termIndex found for - * the term and a unit value with the appropriate boost applied. - * Using upsert because there could already be an entry in the vector - * for the term we are working with. In that case we just add the scores - * together. - */ - queryVectors[field].upsert(termIndex, clause.boost, function (a, b) { return a + b }) - - /** - * If we've already seen this term, field combo then we've already collected - * the matching documents and metadata, no need to go through all that again - */ - if (termFieldCache[termField]) { - continue - } - - for (var l = 0; l < matchingDocumentRefs.length; l++) { - /* - * All metadata for this term/field/document triple - * are then extracted and collected into an instance - * of lunr.MatchData ready to be returned in the query - * results - */ - var matchingDocumentRef = matchingDocumentRefs[l], - matchingFieldRef = new lunr.FieldRef (matchingDocumentRef, field), - metadata = fieldPosting[matchingDocumentRef], - fieldMatch - - if ((fieldMatch = matchingFields[matchingFieldRef]) === undefined) { - matchingFields[matchingFieldRef] = new lunr.MatchData (expandedTerm, field, metadata) - } else { - fieldMatch.add(expandedTerm, field, metadata) - } - - } - - termFieldCache[termField] = true - } - } - } - - /** - * If the presence was required we need to update the requiredMatches field sets. - * We do this after all fields for the term have collected their matches because - * the clause terms presence is required in _any_ of the fields not _all_ of the - * fields. - */ - if (clause.presence === lunr.Query.presence.REQUIRED) { - for (var k = 0; k < clause.fields.length; k++) { - var field = clause.fields[k] - requiredMatches[field] = requiredMatches[field].intersect(clauseMatches) - } - } - } - - /** - * Need to combine the field scoped required and prohibited - * matching documents into a global set of required and prohibited - * matches - */ - var allRequiredMatches = lunr.Set.complete, - allProhibitedMatches = lunr.Set.empty - - for (var i = 0; i < this.fields.length; i++) { - var field = this.fields[i] - - if (requiredMatches[field]) { - allRequiredMatches = allRequiredMatches.intersect(requiredMatches[field]) - } - - if (prohibitedMatches[field]) { - allProhibitedMatches = allProhibitedMatches.union(prohibitedMatches[field]) - } - } - - var matchingFieldRefs = Object.keys(matchingFields), - results = [], - matches = Object.create(null) - - /* - * If the query is negated (contains only prohibited terms) - * we need to get _all_ fieldRefs currently existing in the - * index. This is only done when we know that the query is - * entirely prohibited terms to avoid any cost of getting all - * fieldRefs unnecessarily. - * - * Additionally, blank MatchData must be created to correctly - * populate the results. - */ - if (query.isNegated()) { - matchingFieldRefs = Object.keys(this.fieldVectors) - - for (var i = 0; i < matchingFieldRefs.length; i++) { - var matchingFieldRef = matchingFieldRefs[i] - var fieldRef = lunr.FieldRef.fromString(matchingFieldRef) - matchingFields[matchingFieldRef] = new lunr.MatchData - } - } - - for (var i = 0; i < matchingFieldRefs.length; i++) { - /* - * Currently we have document fields that match the query, but we - * need to return documents. The matchData and scores are combined - * from multiple fields belonging to the same document. - * - * Scores are calculated by field, using the query vectors created - * above, and combined into a final document score using addition. - */ - var fieldRef = lunr.FieldRef.fromString(matchingFieldRefs[i]), - docRef = fieldRef.docRef - - if (!allRequiredMatches.contains(docRef)) { - continue - } - - if (allProhibitedMatches.contains(docRef)) { - continue - } - - var fieldVector = this.fieldVectors[fieldRef], - score = queryVectors[fieldRef.fieldName].similarity(fieldVector), - docMatch - - if ((docMatch = matches[docRef]) !== undefined) { - docMatch.score += score - docMatch.matchData.combine(matchingFields[fieldRef]) - } else { - var match = { - ref: docRef, - score: score, - matchData: matchingFields[fieldRef] - } - matches[docRef] = match - results.push(match) - } - } - - /* - * Sort the results objects by score, highest first. - */ - return results.sort(function (a, b) { - return b.score - a.score - }) -} - -/** - * Prepares the index for JSON serialization. - * - * The schema for this JSON blob will be described in a - * separate JSON schema file. - * - * @returns {Object} - */ -lunr.Index.prototype.toJSON = function () { - var invertedIndex = Object.keys(this.invertedIndex) - .sort() - .map(function (term) { - return [term, this.invertedIndex[term]] - }, this) - - var fieldVectors = Object.keys(this.fieldVectors) - .map(function (ref) { - return [ref, this.fieldVectors[ref].toJSON()] - }, this) - - return { - version: lunr.version, - fields: this.fields, - fieldVectors: fieldVectors, - invertedIndex: invertedIndex, - pipeline: this.pipeline.toJSON() - } -} - -/** - * Loads a previously serialized lunr.Index - * - * @param {Object} serializedIndex - A previously serialized lunr.Index - * @returns {lunr.Index} - */ -lunr.Index.load = function (serializedIndex) { - var attrs = {}, - fieldVectors = {}, - serializedVectors = serializedIndex.fieldVectors, - invertedIndex = Object.create(null), - serializedInvertedIndex = serializedIndex.invertedIndex, - tokenSetBuilder = new lunr.TokenSet.Builder, - pipeline = lunr.Pipeline.load(serializedIndex.pipeline) - - if (serializedIndex.version != lunr.version) { - lunr.utils.warn("Version mismatch when loading serialised index. Current version of lunr '" + lunr.version + "' does not match serialized index '" + serializedIndex.version + "'") - } - - for (var i = 0; i < serializedVectors.length; i++) { - var tuple = serializedVectors[i], - ref = tuple[0], - elements = tuple[1] - - fieldVectors[ref] = new lunr.Vector(elements) - } - - for (var i = 0; i < serializedInvertedIndex.length; i++) { - var tuple = serializedInvertedIndex[i], - term = tuple[0], - posting = tuple[1] - - tokenSetBuilder.insert(term) - invertedIndex[term] = posting - } - - tokenSetBuilder.finish() - - attrs.fields = serializedIndex.fields - - attrs.fieldVectors = fieldVectors - attrs.invertedIndex = invertedIndex - attrs.tokenSet = tokenSetBuilder.root - attrs.pipeline = pipeline - - return new lunr.Index(attrs) -} -/*! - * lunr.Builder - * Copyright (C) 2019 Oliver Nightingale - */ - -/** - * lunr.Builder performs indexing on a set of documents and - * returns instances of lunr.Index ready for querying. - * - * All configuration of the index is done via the builder, the - * fields to index, the document reference, the text processing - * pipeline and document scoring parameters are all set on the - * builder before indexing. - * - * @constructor - * @property {string} _ref - Internal reference to the document reference field. - * @property {string[]} _fields - Internal reference to the document fields to index. - * @property {object} invertedIndex - The inverted index maps terms to document fields. - * @property {object} documentTermFrequencies - Keeps track of document term frequencies. - * @property {object} documentLengths - Keeps track of the length of documents added to the index. - * @property {lunr.tokenizer} tokenizer - Function for splitting strings into tokens for indexing. - * @property {lunr.Pipeline} pipeline - The pipeline performs text processing on tokens before indexing. - * @property {lunr.Pipeline} searchPipeline - A pipeline for processing search terms before querying the index. - * @property {number} documentCount - Keeps track of the total number of documents indexed. - * @property {number} _b - A parameter to control field length normalization, setting this to 0 disabled normalization, 1 fully normalizes field lengths, the default value is 0.75. - * @property {number} _k1 - A parameter to control how quickly an increase in term frequency results in term frequency saturation, the default value is 1.2. - * @property {number} termIndex - A counter incremented for each unique term, used to identify a terms position in the vector space. - * @property {array} metadataWhitelist - A list of metadata keys that have been whitelisted for entry in the index. - */ -lunr.Builder = function () { - this._ref = "id" - this._fields = Object.create(null) - this._documents = Object.create(null) - this.invertedIndex = Object.create(null) - this.fieldTermFrequencies = {} - this.fieldLengths = {} - this.tokenizer = lunr.tokenizer - this.pipeline = new lunr.Pipeline - this.searchPipeline = new lunr.Pipeline - this.documentCount = 0 - this._b = 0.75 - this._k1 = 1.2 - this.termIndex = 0 - this.metadataWhitelist = [] -} - -/** - * Sets the document field used as the document reference. Every document must have this field. - * The type of this field in the document should be a string, if it is not a string it will be - * coerced into a string by calling toString. - * - * The default ref is 'id'. - * - * The ref should _not_ be changed during indexing, it should be set before any documents are - * added to the index. Changing it during indexing can lead to inconsistent results. - * - * @param {string} ref - The name of the reference field in the document. - */ -lunr.Builder.prototype.ref = function (ref) { - this._ref = ref -} - -/** - * A function that is used to extract a field from a document. - * - * Lunr expects a field to be at the top level of a document, if however the field - * is deeply nested within a document an extractor function can be used to extract - * the right field for indexing. - * - * @callback fieldExtractor - * @param {object} doc - The document being added to the index. - * @returns {?(string|object|object[])} obj - The object that will be indexed for this field. - * @example Extracting a nested field - * function (doc) { return doc.nested.field } - */ - -/** - * Adds a field to the list of document fields that will be indexed. Every document being - * indexed should have this field. Null values for this field in indexed documents will - * not cause errors but will limit the chance of that document being retrieved by searches. - * - * All fields should be added before adding documents to the index. Adding fields after - * a document has been indexed will have no effect on already indexed documents. - * - * Fields can be boosted at build time. This allows terms within that field to have more - * importance when ranking search results. Use a field boost to specify that matches within - * one field are more important than other fields. - * - * @param {string} fieldName - The name of a field to index in all documents. - * @param {object} attributes - Optional attributes associated with this field. - * @param {number} [attributes.boost=1] - Boost applied to all terms within this field. - * @param {fieldExtractor} [attributes.extractor] - Function to extract a field from a document. - * @throws {RangeError} fieldName cannot contain unsupported characters '/' - */ -lunr.Builder.prototype.field = function (fieldName, attributes) { - if (/\//.test(fieldName)) { - throw new RangeError ("Field '" + fieldName + "' contains illegal character '/'") - } - - this._fields[fieldName] = attributes || {} -} - -/** - * A parameter to tune the amount of field length normalisation that is applied when - * calculating relevance scores. A value of 0 will completely disable any normalisation - * and a value of 1 will fully normalise field lengths. The default is 0.75. Values of b - * will be clamped to the range 0 - 1. - * - * @param {number} number - The value to set for this tuning parameter. - */ -lunr.Builder.prototype.b = function (number) { - if (number < 0) { - this._b = 0 - } else if (number > 1) { - this._b = 1 - } else { - this._b = number - } -} - -/** - * A parameter that controls the speed at which a rise in term frequency results in term - * frequency saturation. The default value is 1.2. Setting this to a higher value will give - * slower saturation levels, a lower value will result in quicker saturation. - * - * @param {number} number - The value to set for this tuning parameter. - */ -lunr.Builder.prototype.k1 = function (number) { - this._k1 = number -} - -/** - * Adds a document to the index. - * - * Before adding fields to the index the index should have been fully setup, with the document - * ref and all fields to index already having been specified. - * - * The document must have a field name as specified by the ref (by default this is 'id') and - * it should have all fields defined for indexing, though null or undefined values will not - * cause errors. - * - * Entire documents can be boosted at build time. Applying a boost to a document indicates that - * this document should rank higher in search results than other documents. - * - * @param {object} doc - The document to add to the index. - * @param {object} attributes - Optional attributes associated with this document. - * @param {number} [attributes.boost=1] - Boost applied to all terms within this document. - */ -lunr.Builder.prototype.add = function (doc, attributes) { - var docRef = doc[this._ref], - fields = Object.keys(this._fields) - - this._documents[docRef] = attributes || {} - this.documentCount += 1 - - for (var i = 0; i < fields.length; i++) { - var fieldName = fields[i], - extractor = this._fields[fieldName].extractor, - field = extractor ? extractor(doc) : doc[fieldName], - tokens = this.tokenizer(field, { - fields: [fieldName] - }), - terms = this.pipeline.run(tokens), - fieldRef = new lunr.FieldRef (docRef, fieldName), - fieldTerms = Object.create(null) - - this.fieldTermFrequencies[fieldRef] = fieldTerms - this.fieldLengths[fieldRef] = 0 - - // store the length of this field for this document - this.fieldLengths[fieldRef] += terms.length - - // calculate term frequencies for this field - for (var j = 0; j < terms.length; j++) { - var term = terms[j] - - if (fieldTerms[term] == undefined) { - fieldTerms[term] = 0 - } - - fieldTerms[term] += 1 - - // add to inverted index - // create an initial posting if one doesn't exist - if (this.invertedIndex[term] == undefined) { - var posting = Object.create(null) - posting["_index"] = this.termIndex - this.termIndex += 1 - - for (var k = 0; k < fields.length; k++) { - posting[fields[k]] = Object.create(null) - } - - this.invertedIndex[term] = posting - } - - // add an entry for this term/fieldName/docRef to the invertedIndex - if (this.invertedIndex[term][fieldName][docRef] == undefined) { - this.invertedIndex[term][fieldName][docRef] = Object.create(null) - } - - // store all whitelisted metadata about this token in the - // inverted index - for (var l = 0; l < this.metadataWhitelist.length; l++) { - var metadataKey = this.metadataWhitelist[l], - metadata = term.metadata[metadataKey] - - if (this.invertedIndex[term][fieldName][docRef][metadataKey] == undefined) { - this.invertedIndex[term][fieldName][docRef][metadataKey] = [] - } - - this.invertedIndex[term][fieldName][docRef][metadataKey].push(metadata) - } - } - - } -} - -/** - * Calculates the average document length for this index - * - * @private - */ -lunr.Builder.prototype.calculateAverageFieldLengths = function () { - - var fieldRefs = Object.keys(this.fieldLengths), - numberOfFields = fieldRefs.length, - accumulator = {}, - documentsWithField = {} - - for (var i = 0; i < numberOfFields; i++) { - var fieldRef = lunr.FieldRef.fromString(fieldRefs[i]), - field = fieldRef.fieldName - - documentsWithField[field] || (documentsWithField[field] = 0) - documentsWithField[field] += 1 - - accumulator[field] || (accumulator[field] = 0) - accumulator[field] += this.fieldLengths[fieldRef] - } - - var fields = Object.keys(this._fields) - - for (var i = 0; i < fields.length; i++) { - var fieldName = fields[i] - accumulator[fieldName] = accumulator[fieldName] / documentsWithField[fieldName] - } - - this.averageFieldLength = accumulator -} - -/** - * Builds a vector space model of every document using lunr.Vector - * - * @private - */ -lunr.Builder.prototype.createFieldVectors = function () { - var fieldVectors = {}, - fieldRefs = Object.keys(this.fieldTermFrequencies), - fieldRefsLength = fieldRefs.length, - termIdfCache = Object.create(null) - - for (var i = 0; i < fieldRefsLength; i++) { - var fieldRef = lunr.FieldRef.fromString(fieldRefs[i]), - fieldName = fieldRef.fieldName, - fieldLength = this.fieldLengths[fieldRef], - fieldVector = new lunr.Vector, - termFrequencies = this.fieldTermFrequencies[fieldRef], - terms = Object.keys(termFrequencies), - termsLength = terms.length - - - var fieldBoost = this._fields[fieldName].boost || 1, - docBoost = this._documents[fieldRef.docRef].boost || 1 - - for (var j = 0; j < termsLength; j++) { - var term = terms[j], - tf = termFrequencies[term], - termIndex = this.invertedIndex[term]._index, - idf, score, scoreWithPrecision - - if (termIdfCache[term] === undefined) { - idf = lunr.idf(this.invertedIndex[term], this.documentCount) - termIdfCache[term] = idf - } else { - idf = termIdfCache[term] - } - - score = idf * ((this._k1 + 1) * tf) / (this._k1 * (1 - this._b + this._b * (fieldLength / this.averageFieldLength[fieldName])) + tf) - score *= fieldBoost - score *= docBoost - scoreWithPrecision = Math.round(score * 1000) / 1000 - // Converts 1.23456789 to 1.234. - // Reducing the precision so that the vectors take up less - // space when serialised. Doing it now so that they behave - // the same before and after serialisation. Also, this is - // the fastest approach to reducing a number's precision in - // JavaScript. - - fieldVector.insert(termIndex, scoreWithPrecision) - } - - fieldVectors[fieldRef] = fieldVector - } - - this.fieldVectors = fieldVectors -} - -/** - * Creates a token set of all tokens in the index using lunr.TokenSet - * - * @private - */ -lunr.Builder.prototype.createTokenSet = function () { - this.tokenSet = lunr.TokenSet.fromArray( - Object.keys(this.invertedIndex).sort() - ) -} - -/** - * Builds the index, creating an instance of lunr.Index. - * - * This completes the indexing process and should only be called - * once all documents have been added to the index. - * - * @returns {lunr.Index} - */ -lunr.Builder.prototype.build = function () { - this.calculateAverageFieldLengths() - this.createFieldVectors() - this.createTokenSet() - - return new lunr.Index({ - invertedIndex: this.invertedIndex, - fieldVectors: this.fieldVectors, - tokenSet: this.tokenSet, - fields: Object.keys(this._fields), - pipeline: this.searchPipeline - }) -} - -/** - * Applies a plugin to the index builder. - * - * A plugin is a function that is called with the index builder as its context. - * Plugins can be used to customise or extend the behaviour of the index - * in some way. A plugin is just a function, that encapsulated the custom - * behaviour that should be applied when building the index. - * - * The plugin function will be called with the index builder as its argument, additional - * arguments can also be passed when calling use. The function will be called - * with the index builder as its context. - * - * @param {Function} plugin The plugin to apply. - */ -lunr.Builder.prototype.use = function (fn) { - var args = Array.prototype.slice.call(arguments, 1) - args.unshift(this) - fn.apply(this, args) -} -/** - * Contains and collects metadata about a matching document. - * A single instance of lunr.MatchData is returned as part of every - * lunr.Index~Result. - * - * @constructor - * @param {string} term - The term this match data is associated with - * @param {string} field - The field in which the term was found - * @param {object} metadata - The metadata recorded about this term in this field - * @property {object} metadata - A cloned collection of metadata associated with this document. - * @see {@link lunr.Index~Result} - */ -lunr.MatchData = function (term, field, metadata) { - var clonedMetadata = Object.create(null), - metadataKeys = Object.keys(metadata || {}) - - // Cloning the metadata to prevent the original - // being mutated during match data combination. - // Metadata is kept in an array within the inverted - // index so cloning the data can be done with - // Array#slice - for (var i = 0; i < metadataKeys.length; i++) { - var key = metadataKeys[i] - clonedMetadata[key] = metadata[key].slice() - } - - this.metadata = Object.create(null) - - if (term !== undefined) { - this.metadata[term] = Object.create(null) - this.metadata[term][field] = clonedMetadata - } -} - -/** - * An instance of lunr.MatchData will be created for every term that matches a - * document. However only one instance is required in a lunr.Index~Result. This - * method combines metadata from another instance of lunr.MatchData with this - * objects metadata. - * - * @param {lunr.MatchData} otherMatchData - Another instance of match data to merge with this one. - * @see {@link lunr.Index~Result} - */ -lunr.MatchData.prototype.combine = function (otherMatchData) { - var terms = Object.keys(otherMatchData.metadata) - - for (var i = 0; i < terms.length; i++) { - var term = terms[i], - fields = Object.keys(otherMatchData.metadata[term]) - - if (this.metadata[term] == undefined) { - this.metadata[term] = Object.create(null) - } - - for (var j = 0; j < fields.length; j++) { - var field = fields[j], - keys = Object.keys(otherMatchData.metadata[term][field]) - - if (this.metadata[term][field] == undefined) { - this.metadata[term][field] = Object.create(null) - } - - for (var k = 0; k < keys.length; k++) { - var key = keys[k] - - if (this.metadata[term][field][key] == undefined) { - this.metadata[term][field][key] = otherMatchData.metadata[term][field][key] - } else { - this.metadata[term][field][key] = this.metadata[term][field][key].concat(otherMatchData.metadata[term][field][key]) - } - - } - } - } -} - -/** - * Add metadata for a term/field pair to this instance of match data. - * - * @param {string} term - The term this match data is associated with - * @param {string} field - The field in which the term was found - * @param {object} metadata - The metadata recorded about this term in this field - */ -lunr.MatchData.prototype.add = function (term, field, metadata) { - if (!(term in this.metadata)) { - this.metadata[term] = Object.create(null) - this.metadata[term][field] = metadata - return - } - - if (!(field in this.metadata[term])) { - this.metadata[term][field] = metadata - return - } - - var metadataKeys = Object.keys(metadata) - - for (var i = 0; i < metadataKeys.length; i++) { - var key = metadataKeys[i] - - if (key in this.metadata[term][field]) { - this.metadata[term][field][key] = this.metadata[term][field][key].concat(metadata[key]) - } else { - this.metadata[term][field][key] = metadata[key] - } - } -} -/** - * A lunr.Query provides a programmatic way of defining queries to be performed - * against a {@link lunr.Index}. - * - * Prefer constructing a lunr.Query using the {@link lunr.Index#query} method - * so the query object is pre-initialized with the right index fields. - * - * @constructor - * @property {lunr.Query~Clause[]} clauses - An array of query clauses. - * @property {string[]} allFields - An array of all available fields in a lunr.Index. - */ -lunr.Query = function (allFields) { - this.clauses = [] - this.allFields = allFields -} - -/** - * Constants for indicating what kind of automatic wildcard insertion will be used when constructing a query clause. - * - * This allows wildcards to be added to the beginning and end of a term without having to manually do any string - * concatenation. - * - * The wildcard constants can be bitwise combined to select both leading and trailing wildcards. - * - * @constant - * @default - * @property {number} wildcard.NONE - The term will have no wildcards inserted, this is the default behaviour - * @property {number} wildcard.LEADING - Prepend the term with a wildcard, unless a leading wildcard already exists - * @property {number} wildcard.TRAILING - Append a wildcard to the term, unless a trailing wildcard already exists - * @see lunr.Query~Clause - * @see lunr.Query#clause - * @see lunr.Query#term - * @example query term with trailing wildcard - * query.term('foo', { wildcard: lunr.Query.wildcard.TRAILING }) - * @example query term with leading and trailing wildcard - * query.term('foo', { - * wildcard: lunr.Query.wildcard.LEADING | lunr.Query.wildcard.TRAILING - * }) - */ - -lunr.Query.wildcard = new String ("*") -lunr.Query.wildcard.NONE = 0 -lunr.Query.wildcard.LEADING = 1 -lunr.Query.wildcard.TRAILING = 2 - -/** - * Constants for indicating what kind of presence a term must have in matching documents. - * - * @constant - * @enum {number} - * @see lunr.Query~Clause - * @see lunr.Query#clause - * @see lunr.Query#term - * @example query term with required presence - * query.term('foo', { presence: lunr.Query.presence.REQUIRED }) - */ -lunr.Query.presence = { - /** - * Term's presence in a document is optional, this is the default value. - */ - OPTIONAL: 1, - - /** - * Term's presence in a document is required, documents that do not contain - * this term will not be returned. - */ - REQUIRED: 2, - - /** - * Term's presence in a document is prohibited, documents that do contain - * this term will not be returned. - */ - PROHIBITED: 3 -} - -/** - * A single clause in a {@link lunr.Query} contains a term and details on how to - * match that term against a {@link lunr.Index}. - * - * @typedef {Object} lunr.Query~Clause - * @property {string[]} fields - The fields in an index this clause should be matched against. - * @property {number} [boost=1] - Any boost that should be applied when matching this clause. - * @property {number} [editDistance] - Whether the term should have fuzzy matching applied, and how fuzzy the match should be. - * @property {boolean} [usePipeline] - Whether the term should be passed through the search pipeline. - * @property {number} [wildcard=lunr.Query.wildcard.NONE] - Whether the term should have wildcards appended or prepended. - * @property {number} [presence=lunr.Query.presence.OPTIONAL] - The terms presence in any matching documents. - */ - -/** - * Adds a {@link lunr.Query~Clause} to this query. - * - * Unless the clause contains the fields to be matched all fields will be matched. In addition - * a default boost of 1 is applied to the clause. - * - * @param {lunr.Query~Clause} clause - The clause to add to this query. - * @see lunr.Query~Clause - * @returns {lunr.Query} - */ -lunr.Query.prototype.clause = function (clause) { - if (!('fields' in clause)) { - clause.fields = this.allFields - } - - if (!('boost' in clause)) { - clause.boost = 1 - } - - if (!('usePipeline' in clause)) { - clause.usePipeline = true - } - - if (!('wildcard' in clause)) { - clause.wildcard = lunr.Query.wildcard.NONE - } - - if ((clause.wildcard & lunr.Query.wildcard.LEADING) && (clause.term.charAt(0) != lunr.Query.wildcard)) { - clause.term = "*" + clause.term - } - - if ((clause.wildcard & lunr.Query.wildcard.TRAILING) && (clause.term.slice(-1) != lunr.Query.wildcard)) { - clause.term = "" + clause.term + "*" - } - - if (!('presence' in clause)) { - clause.presence = lunr.Query.presence.OPTIONAL - } - - this.clauses.push(clause) - - return this -} - -/** - * A negated query is one in which every clause has a presence of - * prohibited. These queries require some special processing to return - * the expected results. - * - * @returns boolean - */ -lunr.Query.prototype.isNegated = function () { - for (var i = 0; i < this.clauses.length; i++) { - if (this.clauses[i].presence != lunr.Query.presence.PROHIBITED) { - return false - } - } - - return true -} - -/** - * Adds a term to the current query, under the covers this will create a {@link lunr.Query~Clause} - * to the list of clauses that make up this query. - * - * The term is used as is, i.e. no tokenization will be performed by this method. Instead conversion - * to a token or token-like string should be done before calling this method. - * - * The term will be converted to a string by calling `toString`. Multiple terms can be passed as an - * array, each term in the array will share the same options. - * - * @param {object|object[]} term - The term(s) to add to the query. - * @param {object} [options] - Any additional properties to add to the query clause. - * @returns {lunr.Query} - * @see lunr.Query#clause - * @see lunr.Query~Clause - * @example adding a single term to a query - * query.term("foo") - * @example adding a single term to a query and specifying search fields, term boost and automatic trailing wildcard - * query.term("foo", { - * fields: ["title"], - * boost: 10, - * wildcard: lunr.Query.wildcard.TRAILING - * }) - * @example using lunr.tokenizer to convert a string to tokens before using them as terms - * query.term(lunr.tokenizer("foo bar")) - */ -lunr.Query.prototype.term = function (term, options) { - if (Array.isArray(term)) { - term.forEach(function (t) { this.term(t, lunr.utils.clone(options)) }, this) - return this - } - - var clause = options || {} - clause.term = term.toString() - - this.clause(clause) - - return this -} -lunr.QueryParseError = function (message, start, end) { - this.name = "QueryParseError" - this.message = message - this.start = start - this.end = end -} - -lunr.QueryParseError.prototype = new Error -lunr.QueryLexer = function (str) { - this.lexemes = [] - this.str = str - this.length = str.length - this.pos = 0 - this.start = 0 - this.escapeCharPositions = [] -} - -lunr.QueryLexer.prototype.run = function () { - var state = lunr.QueryLexer.lexText - - while (state) { - state = state(this) - } -} - -lunr.QueryLexer.prototype.sliceString = function () { - var subSlices = [], - sliceStart = this.start, - sliceEnd = this.pos - - for (var i = 0; i < this.escapeCharPositions.length; i++) { - sliceEnd = this.escapeCharPositions[i] - subSlices.push(this.str.slice(sliceStart, sliceEnd)) - sliceStart = sliceEnd + 1 - } - - subSlices.push(this.str.slice(sliceStart, this.pos)) - this.escapeCharPositions.length = 0 - - return subSlices.join('') -} - -lunr.QueryLexer.prototype.emit = function (type) { - this.lexemes.push({ - type: type, - str: this.sliceString(), - start: this.start, - end: this.pos - }) - - this.start = this.pos -} - -lunr.QueryLexer.prototype.escapeCharacter = function () { - this.escapeCharPositions.push(this.pos - 1) - this.pos += 1 -} - -lunr.QueryLexer.prototype.next = function () { - if (this.pos >= this.length) { - return lunr.QueryLexer.EOS - } - - var char = this.str.charAt(this.pos) - this.pos += 1 - return char -} - -lunr.QueryLexer.prototype.width = function () { - return this.pos - this.start -} - -lunr.QueryLexer.prototype.ignore = function () { - if (this.start == this.pos) { - this.pos += 1 - } - - this.start = this.pos -} - -lunr.QueryLexer.prototype.backup = function () { - this.pos -= 1 -} - -lunr.QueryLexer.prototype.acceptDigitRun = function () { - var char, charCode - - do { - char = this.next() - charCode = char.charCodeAt(0) - } while (charCode > 47 && charCode < 58) - - if (char != lunr.QueryLexer.EOS) { - this.backup() - } -} - -lunr.QueryLexer.prototype.more = function () { - return this.pos < this.length -} - -lunr.QueryLexer.EOS = 'EOS' -lunr.QueryLexer.FIELD = 'FIELD' -lunr.QueryLexer.TERM = 'TERM' -lunr.QueryLexer.EDIT_DISTANCE = 'EDIT_DISTANCE' -lunr.QueryLexer.BOOST = 'BOOST' -lunr.QueryLexer.PRESENCE = 'PRESENCE' - -lunr.QueryLexer.lexField = function (lexer) { - lexer.backup() - lexer.emit(lunr.QueryLexer.FIELD) - lexer.ignore() - return lunr.QueryLexer.lexText -} - -lunr.QueryLexer.lexTerm = function (lexer) { - if (lexer.width() > 1) { - lexer.backup() - lexer.emit(lunr.QueryLexer.TERM) - } - - lexer.ignore() - - if (lexer.more()) { - return lunr.QueryLexer.lexText - } -} - -lunr.QueryLexer.lexEditDistance = function (lexer) { - lexer.ignore() - lexer.acceptDigitRun() - lexer.emit(lunr.QueryLexer.EDIT_DISTANCE) - return lunr.QueryLexer.lexText -} - -lunr.QueryLexer.lexBoost = function (lexer) { - lexer.ignore() - lexer.acceptDigitRun() - lexer.emit(lunr.QueryLexer.BOOST) - return lunr.QueryLexer.lexText -} - -lunr.QueryLexer.lexEOS = function (lexer) { - if (lexer.width() > 0) { - lexer.emit(lunr.QueryLexer.TERM) - } -} - -// This matches the separator used when tokenising fields -// within a document. These should match otherwise it is -// not possible to search for some tokens within a document. -// -// It is possible for the user to change the separator on the -// tokenizer so it _might_ clash with any other of the special -// characters already used within the search string, e.g. :. -// -// This means that it is possible to change the separator in -// such a way that makes some words unsearchable using a search -// string. -lunr.QueryLexer.termSeparator = lunr.tokenizer.separator - -lunr.QueryLexer.lexText = function (lexer) { - while (true) { - var char = lexer.next() - - if (char == lunr.QueryLexer.EOS) { - return lunr.QueryLexer.lexEOS - } - - // Escape character is '\' - if (char.charCodeAt(0) == 92) { - lexer.escapeCharacter() - continue - } - - if (char == ":") { - return lunr.QueryLexer.lexField - } - - if (char == "~") { - lexer.backup() - if (lexer.width() > 0) { - lexer.emit(lunr.QueryLexer.TERM) - } - return lunr.QueryLexer.lexEditDistance - } - - if (char == "^") { - lexer.backup() - if (lexer.width() > 0) { - lexer.emit(lunr.QueryLexer.TERM) - } - return lunr.QueryLexer.lexBoost - } - - // "+" indicates term presence is required - // checking for length to ensure that only - // leading "+" are considered - if (char == "+" && lexer.width() === 1) { - lexer.emit(lunr.QueryLexer.PRESENCE) - return lunr.QueryLexer.lexText - } - - // "-" indicates term presence is prohibited - // checking for length to ensure that only - // leading "-" are considered - if (char == "-" && lexer.width() === 1) { - lexer.emit(lunr.QueryLexer.PRESENCE) - return lunr.QueryLexer.lexText - } - - if (char.match(lunr.QueryLexer.termSeparator)) { - return lunr.QueryLexer.lexTerm - } - } -} - -lunr.QueryParser = function (str, query) { - this.lexer = new lunr.QueryLexer (str) - this.query = query - this.currentClause = {} - this.lexemeIdx = 0 -} - -lunr.QueryParser.prototype.parse = function () { - this.lexer.run() - this.lexemes = this.lexer.lexemes - - var state = lunr.QueryParser.parseClause - - while (state) { - state = state(this) - } - - return this.query -} - -lunr.QueryParser.prototype.peekLexeme = function () { - return this.lexemes[this.lexemeIdx] -} - -lunr.QueryParser.prototype.consumeLexeme = function () { - var lexeme = this.peekLexeme() - this.lexemeIdx += 1 - return lexeme -} - -lunr.QueryParser.prototype.nextClause = function () { - var completedClause = this.currentClause - this.query.clause(completedClause) - this.currentClause = {} -} - -lunr.QueryParser.parseClause = function (parser) { - var lexeme = parser.peekLexeme() - - if (lexeme == undefined) { - return - } - - switch (lexeme.type) { - case lunr.QueryLexer.PRESENCE: - return lunr.QueryParser.parsePresence - case lunr.QueryLexer.FIELD: - return lunr.QueryParser.parseField - case lunr.QueryLexer.TERM: - return lunr.QueryParser.parseTerm - default: - var errorMessage = "expected either a field or a term, found " + lexeme.type - - if (lexeme.str.length >= 1) { - errorMessage += " with value '" + lexeme.str + "'" - } - - throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) - } -} - -lunr.QueryParser.parsePresence = function (parser) { - var lexeme = parser.consumeLexeme() - - if (lexeme == undefined) { - return - } - - switch (lexeme.str) { - case "-": - parser.currentClause.presence = lunr.Query.presence.PROHIBITED - break - case "+": - parser.currentClause.presence = lunr.Query.presence.REQUIRED - break - default: - var errorMessage = "unrecognised presence operator'" + lexeme.str + "'" - throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) - } - - var nextLexeme = parser.peekLexeme() - - if (nextLexeme == undefined) { - var errorMessage = "expecting term or field, found nothing" - throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) - } - - switch (nextLexeme.type) { - case lunr.QueryLexer.FIELD: - return lunr.QueryParser.parseField - case lunr.QueryLexer.TERM: - return lunr.QueryParser.parseTerm - default: - var errorMessage = "expecting term or field, found '" + nextLexeme.type + "'" - throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end) - } -} - -lunr.QueryParser.parseField = function (parser) { - var lexeme = parser.consumeLexeme() - - if (lexeme == undefined) { - return - } - - if (parser.query.allFields.indexOf(lexeme.str) == -1) { - var possibleFields = parser.query.allFields.map(function (f) { return "'" + f + "'" }).join(', '), - errorMessage = "unrecognised field '" + lexeme.str + "', possible fields: " + possibleFields - - throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) - } - - parser.currentClause.fields = [lexeme.str] - - var nextLexeme = parser.peekLexeme() - - if (nextLexeme == undefined) { - var errorMessage = "expecting term, found nothing" - throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) - } - - switch (nextLexeme.type) { - case lunr.QueryLexer.TERM: - return lunr.QueryParser.parseTerm - default: - var errorMessage = "expecting term, found '" + nextLexeme.type + "'" - throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end) - } -} - -lunr.QueryParser.parseTerm = function (parser) { - var lexeme = parser.consumeLexeme() - - if (lexeme == undefined) { - return - } - - parser.currentClause.term = lexeme.str.toLowerCase() - - if (lexeme.str.indexOf("*") != -1) { - parser.currentClause.usePipeline = false - } - - var nextLexeme = parser.peekLexeme() - - if (nextLexeme == undefined) { - parser.nextClause() - return - } - - switch (nextLexeme.type) { - case lunr.QueryLexer.TERM: - parser.nextClause() - return lunr.QueryParser.parseTerm - case lunr.QueryLexer.FIELD: - parser.nextClause() - return lunr.QueryParser.parseField - case lunr.QueryLexer.EDIT_DISTANCE: - return lunr.QueryParser.parseEditDistance - case lunr.QueryLexer.BOOST: - return lunr.QueryParser.parseBoost - case lunr.QueryLexer.PRESENCE: - parser.nextClause() - return lunr.QueryParser.parsePresence - default: - var errorMessage = "Unexpected lexeme type '" + nextLexeme.type + "'" - throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end) - } -} - -lunr.QueryParser.parseEditDistance = function (parser) { - var lexeme = parser.consumeLexeme() - - if (lexeme == undefined) { - return - } - - var editDistance = parseInt(lexeme.str, 10) - - if (isNaN(editDistance)) { - var errorMessage = "edit distance must be numeric" - throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) - } - - parser.currentClause.editDistance = editDistance - - var nextLexeme = parser.peekLexeme() - - if (nextLexeme == undefined) { - parser.nextClause() - return - } - - switch (nextLexeme.type) { - case lunr.QueryLexer.TERM: - parser.nextClause() - return lunr.QueryParser.parseTerm - case lunr.QueryLexer.FIELD: - parser.nextClause() - return lunr.QueryParser.parseField - case lunr.QueryLexer.EDIT_DISTANCE: - return lunr.QueryParser.parseEditDistance - case lunr.QueryLexer.BOOST: - return lunr.QueryParser.parseBoost - case lunr.QueryLexer.PRESENCE: - parser.nextClause() - return lunr.QueryParser.parsePresence - default: - var errorMessage = "Unexpected lexeme type '" + nextLexeme.type + "'" - throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end) - } -} - -lunr.QueryParser.parseBoost = function (parser) { - var lexeme = parser.consumeLexeme() - - if (lexeme == undefined) { - return - } - - var boost = parseInt(lexeme.str, 10) - - if (isNaN(boost)) { - var errorMessage = "boost must be numeric" - throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) - } - - parser.currentClause.boost = boost - - var nextLexeme = parser.peekLexeme() - - if (nextLexeme == undefined) { - parser.nextClause() - return - } - - switch (nextLexeme.type) { - case lunr.QueryLexer.TERM: - parser.nextClause() - return lunr.QueryParser.parseTerm - case lunr.QueryLexer.FIELD: - parser.nextClause() - return lunr.QueryParser.parseField - case lunr.QueryLexer.EDIT_DISTANCE: - return lunr.QueryParser.parseEditDistance - case lunr.QueryLexer.BOOST: - return lunr.QueryParser.parseBoost - case lunr.QueryLexer.PRESENCE: - parser.nextClause() - return lunr.QueryParser.parsePresence - default: - var errorMessage = "Unexpected lexeme type '" + nextLexeme.type + "'" - throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end) - } -} - - /** - * export the module via AMD, CommonJS or as a browser global - * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js - */ - ;(function (root, factory) { - if (typeof define === 'function' && define.amd) { - // AMD. Register as an anonymous module. - define(factory) - } else if (typeof exports === 'object') { - /** - * Node. Does not work with strict CommonJS, but - * only CommonJS-like enviroments that support module.exports, - * like Node. - */ - module.exports = factory() - } else { - // Browser globals (root is window) - root.lunr = factory() - } - }(this, function () { - /** - * Just return a value to define the module export. - * This example returns an object, but the module - * can return a function as the exported value. - */ - return lunr - })) -})(); diff --git a/supplemental_ui/js/vendor/search.js b/supplemental_ui/js/vendor/search.js deleted file mode 100644 index fcf4046150..0000000000 --- a/supplemental_ui/js/vendor/search.js +++ /dev/null @@ -1,212 +0,0 @@ -/* eslint-env browser */ -window.antoraLunr = (function (lunr) { - var searchInput = document.getElementById('search-input') - var searchResult = document.createElement('div') - searchResult.classList.add('search-result-dropdown-menu') - searchInput.parentNode.appendChild(searchResult) - - function highlightText (doc, position) { - var hits = [] - var start = position[0] - var length = position[1] - - var text = doc.text - var highlightSpan = document.createElement('span') - highlightSpan.classList.add('search-result-highlight') - highlightSpan.innerText = text.substr(start, length) - - var end = start + length - var textEnd = text.length - 1 - var contextOffset = 15 - var contextAfter = end + contextOffset > textEnd ? textEnd : end + contextOffset - var contextBefore = start - contextOffset < 0 ? 0 : start - contextOffset - if (start === 0 && end === textEnd) { - hits.push(highlightSpan) - } else if (start === 0) { - hits.push(highlightSpan) - hits.push(document.createTextNode(text.substr(end, contextAfter))) - } else if (end === textEnd) { - hits.push(document.createTextNode(text.substr(0, start))) - hits.push(highlightSpan) - } else { - hits.push(document.createTextNode('...' + text.substr(contextBefore, start - contextBefore))) - hits.push(highlightSpan) - hits.push(document.createTextNode(text.substr(end, contextAfter - end) + '...')) - } - return hits - } - - function highlightTitle (hash, doc, position) { - var hits = [] - var start = position[0] - var length = position[1] - - var highlightSpan = document.createElement('span') - highlightSpan.classList.add('search-result-highlight') - var title - if (hash) { - title = doc.titles.filter(function (item) { - return item.id === hash - })[0].text - } else { - title = doc.title - } - highlightSpan.innerText = title.substr(start, length) - - var end = start + length - var titleEnd = title.length - 1 - if (start === 0 && end === titleEnd) { - hits.push(highlightSpan) - } else if (start === 0) { - hits.push(highlightSpan) - hits.push(document.createTextNode(title.substr(length, titleEnd))) - } else if (end === titleEnd) { - hits.push(document.createTextNode(title.substr(0, start))) - hits.push(highlightSpan) - } else { - hits.push(document.createTextNode(title.substr(0, start))) - hits.push(highlightSpan) - hits.push(document.createTextNode(title.substr(end, titleEnd))) - } - return hits - } - - function highlightHit (metadata, hash, doc) { - var hits = [] - for (var token in metadata) { - var fields = metadata[token] - for (var field in fields) { - var positions = fields[field] - if (positions.position) { - var position = positions.position[0] // only higlight the first match - if (field === 'title') { - hits = highlightTitle(hash, doc, position) - } else if (field === 'text') { - hits = highlightText(doc, position) - } - } - } - } - return hits - } - - function createSearchResult(result, store, searchResultDataset) { - result.forEach(function (item) { - var url = item.ref - var hash - if (url.includes('#')) { - hash = url.substring(url.indexOf('#') + 1) - url = url.replace('#' + hash, '') - } - var doc = store[url] - var metadata = item.matchData.metadata - var hits = highlightHit(metadata, hash, doc) - searchResultDataset.appendChild(createSearchResultItem(doc, item, hits)) - }) - } - - function createSearchResultItem (doc, item, hits) { - var documentTitle = document.createElement('div') - documentTitle.classList.add('search-result-document-title') - documentTitle.innerText = doc.title - var documentHit = document.createElement('div') - documentHit.classList.add('search-result-document-hit') - var documentHitLink = document.createElement('a') - var rootPath = window.antora.basePath - documentHitLink.href = rootPath + item.ref - documentHit.appendChild(documentHitLink) - hits.forEach(function (hit) { - documentHitLink.appendChild(hit) - }) - var searchResultItem = document.createElement('div') - searchResultItem.classList.add('search-result-item') - searchResultItem.appendChild(documentTitle) - searchResultItem.appendChild(documentHit) - searchResultItem.addEventListener('mousedown', function (e) { - e.preventDefault() - }) - return searchResultItem - } - - function createNoResult (text) { - var searchResultItem = document.createElement('div') - searchResultItem.classList.add('search-result-item') - var documentHit = document.createElement('div') - documentHit.classList.add('search-result-document-hit') - var message = document.createElement('strong') - message.innerText = 'No results found for query "' + text + '"' - documentHit.appendChild(message) - searchResultItem.appendChild(documentHit) - return searchResultItem - } - - function search (index, text) { - // execute an exact match search - var result = index.search(text) - if (result.length > 0) { - return result - } - // no result, use a begins with search - result = index.search(text + '*') - if (result.length > 0) { - return result - } - // no result, use a contains search - result = index.search('*' + text + '*') - return result - } - - function searchIndex (index, store, text) { - // reset search result - while (searchResult.firstChild) { - searchResult.removeChild(searchResult.firstChild) - } - if (text.trim() === '') { - return - } - var result = search(index, text) - var searchResultDataset = document.createElement('div') - searchResultDataset.classList.add('search-result-dataset') - searchResult.appendChild(searchResultDataset) - if (result.length > 0) { - createSearchResult(result, store, searchResultDataset) - } else { - searchResultDataset.appendChild(createNoResult(text)) - } - } - - function debounce (func, wait, immediate) { - var timeout - return function () { - var context = this - var args = arguments - var later = function () { - timeout = null - if (!immediate) func.apply(context, args) - } - var callNow = immediate && !timeout - clearTimeout(timeout) - timeout = setTimeout(later, wait) - if (callNow) func.apply(context, args) - } - } - - function init (data) { - var index = Object.assign({index: lunr.Index.load(data.index), store: data.store}) - var search = debounce(function () { - searchIndex(index.index, index.store, searchInput.value) - }, 100) - searchInput.addEventListener('keydown', search) - - // this is prevented in case of mousedown attached to SearchResultItem - searchInput.addEventListener('blur', function (e) { - while (searchResult.firstChild) { - searchResult.removeChild(searchResult.firstChild) - } - }) - } - - return { - init: init, - } -})(window.lunr) diff --git a/supplemental_ui/partials/footer-scripts.hbs b/supplemental_ui/partials/footer-scripts.hbs deleted file mode 100644 index 7d4519ea08..0000000000 --- a/supplemental_ui/partials/footer-scripts.hbs +++ /dev/null @@ -1,12 +0,0 @@ - - -{{#if (eq env.DOCSEARCH_ENGINE 'lunr')}} - - - -{{/if}} - diff --git a/supplemental_ui/partials/head-meta.hbs b/supplemental_ui/partials/head-meta.hbs index c3b0c98beb..414ebd80ae 100644 --- a/supplemental_ui/partials/head-meta.hbs +++ b/supplemental_ui/partials/head-meta.hbs @@ -1,2 +1 @@ - diff --git a/supplemental_ui/partials/header-content.hbs b/supplemental_ui/partials/header-content.hbs deleted file mode 100644 index 21e32fdb3d..0000000000 --- a/supplemental_ui/partials/header-content.hbs +++ /dev/null @@ -1,28 +0,0 @@ - diff --git a/supplemental_ui/ui.yml b/supplemental_ui/ui.yml new file mode 100644 index 0000000000..c27fe5b65a --- /dev/null +++ b/supplemental_ui/ui.yml @@ -0,0 +1,2 @@ +static_files: +- _redirects diff --git a/vale.ini b/vale.ini new file mode 100644 index 0000000000..11aaa103b8 --- /dev/null +++ b/vale.ini @@ -0,0 +1,6 @@ +StylesPath = .github/styles +Vocab = Decidim +MinAlertLevel = suggestion +Packages = alex, Google +[*.{adoc}] +BasedOnStyles = Vale, alex, Google