Skip to content

Commit

Permalink
Merge pull request #304 from CatoTH/v4.1
Browse files Browse the repository at this point in the history
V4.1
  • Loading branch information
CatoTH authored Oct 3, 2018
2 parents ef95392 + bfeedfa commit b72aa57
Show file tree
Hide file tree
Showing 320 changed files with 5,562 additions and 3,877 deletions.
12 changes: 12 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
root = true

[*]
end_of_line = lf
insert_final_newline = true
charset = utf-8

[*.{php,js,ts}]
indent_style = space
indent_size = 4
insert_final_newline = true
trim_trailing_whitespace = true
27 changes: 24 additions & 3 deletions History.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,26 @@
# Version history

## Version 4.1.0 [not released yet]

- Several improvements regarding applications, especially the generated PDFs:
- Motion types can now force motion titles to have a certain beginning, like "Application: ".
- A new PDF template is introduced specifically for applications, if the LaTeX-based PDF-renderer is used.
- For each section of a motion type, it is now possible to specify if the title will be explicitly printed in the PDF of not.
- If the uploaded image is way too big (bigger than 1000x2000px), it is resized to keep the size of the PDF at a reasonable size.
- Two new statuses are introduced: "Resoluton" and "Resolution (preliminary)". Motions of these states...
- are shown on the consultation home page separately in a slightly different view (initiators are not mentioned anymore).
- have a different header as regular motions in the web- and the PDF-view.
- can neither have amendments nor comments.
- Several improvements regarding merging amendments into motions / creating the final motion version:
- When editing the merged view with the amendments' change inlined into the text, this draft can be exported into a PDF to document the merging process.
- After creating the final text, administrators can decide if the new version of this motion is a regular motion again, or a (preliminary) resolution.
- When creating a motion, the confirmation page now shows a preview of the generated PDF.
- In the initiator form, the resolution date for organizations submitting a motion is now optional. An additional optional field to add one's gender was added.
- When exporting the proposed procedure list into ODS, there is now an option to also include the comments.
- Bugfix: When a motion type was created from the scratch and motion sections positioned right were added, the layout didn't switch to two-column mode.
- Bugfix: When an optional image was not uploaded, the LaTeX-based PDF export did not work.
- Internal: translatable strings can now include a comment / description which will be displayed in the translation page.

### Version 4.0.2 (2018-09-15)

- Bugfix: The PDF export of applications failed if a tabular data section was added in the motion, but no data rows were set.
Expand Down Expand Up @@ -146,8 +167,8 @@ Thanks to Eric Sesterhenn of [X41 D-SEC GmbH](https://www.x41-dsec.de/) for repo
- Proposers of motions now can receive an e-mail if a amendment to their motion is published (enabled by default)
- When merging all amendments into the motion at once...
- drafts are saved periodically and can be set as public. This way, regular users have read-only access to the current work-in-progress draft of the revised motion.
- when a paragraph of an amendment lead to a collission with changes made by another amendment, all changes of that paragraph of that amendment were marked as colliding. Now, we include as many changes as possible into the merged version and only leave the actually colliding changes in the colliding paragraph below the merged version. This reduces the amount of necessary manual work.
- it is now possible to exclude some amendments from merging, to prevent lots of collissions for amendments that replace major parts of the motion
- when a paragraph of an amendment led to a collision with changes made by another amendment, all changes of that paragraph of that amendment were marked as colliding. Now, we include as many changes as possible into the merged version and only leave the actually colliding changes in the colliding paragraph below the merged version. This reduces the amount of necessary manual work.
- it is now possible to exclude some amendments from merging, to prevent lots of collisions for amendments that replace major parts of the motion
- Replacing several consecutive paragraphes in an amendment is now displayed in a more sensible way (first all deletions in a row, then all insertions; they were alternating before)
- Administrators can now be set per consultation, without granting them access to all consultations of this site
- It's possible to change the motion type of a motion now after creating it. However, this works only between motion types that are structurally similar.
Expand Down Expand Up @@ -301,7 +322,7 @@ This release was mainly sponsored by the [German Green Party](https://www.gruene
### Version 3.3.4 (2016-06-11)

- Bugfix: empty lines vanished under some circumstances
- Bugfix: a class name collission in EmailNotifications.php was resolved
- Bugfix: a class name collision in EmailNotifications.php was resolved
- Bugfix: uploaded images in motions / applications were not shown

### Version 3.3.3 (2016-05-29)
Expand Down
11 changes: 8 additions & 3 deletions assets/db/create.sql
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,9 @@ CREATE TABLE `###TABLE_PREFIX###amendmentSupporter` (
`resolutionDate` DATE DEFAULT NULL,
`contactName` TEXT,
`contactEmail` VARCHAR(100) DEFAULT NULL,
`contactPhone` VARCHAR(100) DEFAULT NULL
`contactPhone` VARCHAR(100) DEFAULT NULL,
`dateCreation` TIMESTAMP NOT NULL,
`extraData` TEXT DEFAULT NULL
)
ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4;
Expand Down Expand Up @@ -274,7 +276,8 @@ CREATE TABLE `###TABLE_PREFIX###consultationSettingsMotionSection` (
`lineNumbers` TINYINT(4) NOT NULL DEFAULT '0',
`hasComments` TINYINT(4) NOT NULL,
`hasAmendments` TINYINT(4) NOT NULL DEFAULT '1',
`positionRight` SMALLINT(6) DEFAULT '0'
`positionRight` SMALLINT(6) DEFAULT '0',
`printTitle` TINYINT(4) NOT NULL DEFAULT '1'
)
ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4;
Expand Down Expand Up @@ -525,7 +528,9 @@ CREATE TABLE `###TABLE_PREFIX###motionSupporter` (
`resolutionDate` DATE DEFAULT NULL,
`contactName` TEXT,
`contactEmail` VARCHAR(100) DEFAULT NULL,
`contactPhone` VARCHAR(100) DEFAULT NULL
`contactPhone` VARCHAR(100) DEFAULT NULL,
`dateCreation` TIMESTAMP NOT NULL,
`extraData` TEXT DEFAULT NULL
)
ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4;
Expand Down
34 changes: 20 additions & 14 deletions assets/db/data.sql
Original file line number Diff line number Diff line change
Expand Up @@ -5,23 +5,26 @@ SET @OLD_SQL_MODE = @@SQL_MODE, SQL_MODE = 'TRADITIONAL,ALLOW_INVALID_DATES';
INSERT INTO `###TABLE_PREFIX###texTemplate` (`id`, `siteId`, `title`, `texLayout`, `texContent`) VALUES
(1, NULL, 'Standard (Grünes CI)',
'\\documentclass[paper=a4, 11pt, pagesize, parskip=half, DIV=calc]{scrartcl}\r\n\\usepackage[T1]{fontenc}\r\n\\usepackage{lmodern}\r\n\\usepackage[%LANGUAGE%]{babel}\r\n\\usepackage{fixltx2e}\r\n\\usepackage{lineno}\r\n\\usepackage{tabularx}\r\n\\usepackage{scrpage2}\r\n\\usepackage[normalem]{ulem}\r\n\\usepackage[right]{eurosym}\r\n\\usepackage{fontspec}\r\n\\usepackage{geometry}\r\n\\usepackage{color}\r\n\\usepackage{lastpage}\r\n\\usepackage[normalem]{ulem}\r\n\\usepackage{hyperref}\r\n\\usepackage{wrapfig}\r\n\\usepackage{enumitem}\r\n\\usepackage{graphicx}\r\n\r\n\\newfontfamily\\ArvoGruen[\r\n Path=%ASSETROOT%Arvo/\r\n]{Arvo_Gruen_1004.otf}\r\n\\newfontfamily\\ArvoRegular[\r\n Path=%ASSETROOT%Arvo/\r\n]{Arvo-Regular_v104.ttf}\r\n\\newfontfamily\\AntragsgruenSection[\r\n Path=%ASSETROOT%Arvo/\r\n]{Arvo-Regular_v104.ttf}\r\n\\setmainfont[\r\n Path=%ASSETROOT%PT-Sans/,\r\n BoldFont=PTS75F.ttf,\r\n ItalicFont=PTS56F.ttf,\r\n BoldItalicFont=PTS76F.ttf\r\n]{PTS55F.ttf}\r\n\r\n\\definecolor{Insert}{rgb}{0,0.6,0}\r\n\\definecolor{Delete}{rgb}{1,0,0}\r\n\r\n\\hypersetup{\r\n colorlinks=true,\r\n linkcolor=blue,\r\n filecolor=blue, \r\n urlcolor=blue,\r\n} \r\n\\urlstyle{same}\r\n\r\n\\title{%TITLE%}\r\n\\author{%AUTHOR%}\r\n\\geometry{a4paper, portrait, top=10mm, left=20mm, right=15mm, bottom=25mm, includehead=true}\r\n\r\n\\pagestyle{scrheadings}\r\n\\clearscrheadfoot\r\n\\renewcommand\\sectionmark[1]{\\markright{\\MakeMarkcase {\\hskip .5em\\relax#1}}}\r\n\\setcounter{secnumdepth}{0}\r\n\r\n\\newcommand\\invisiblesection[1]{%\r\n \\refstepcounter{section}%\r\n \\addcontentsline{toc}{section}{\\protect\\numberline{\\thesection}#1}%\r\n \\sectionmark{#1}\r\n}\r\n\r\n\\ohead{\\ArvoRegular \\footnotesize \\rightmark}\r\n\\ofoot{\\ArvoRegular \\footnotesize Seite \\thepage\\\r\n% / \\pageref{LastPage}\r\n}\r\n\\setheadsepline{0.4pt}\r\n\\setfootsepline{0.4pt}\r\n\r\n\\begin{document}\r\n\r\n\\shorthandoff{"}\r\n\\sloppy\r\n\\hyphenpenalty=10000\r\n\\hbadness=10000\r\n\r\n%CONTENT%\r\n\r\n\\end{document}',
'\\setcounter{page}{1}\r\n\\thispagestyle{empty}\r\n\r\n\\vspace*{-25mm}\r\n\\begin{flushright}\r\n \\ArvoRegular\r\n \\small\r\n \\textbf{\\normalsize %INTRODUCTION_BIG%}\\\\\r\n %INTRODUCTION_SMALL%\r\n\\end{flushright}\r\n\r\n\\begin{tabularx}{\\textwidth}{|lX|}\r\n \\cline{1-2}\r\n \\ArvoGruen\r\n& \\\\\r\n \\multicolumn{2}{|l|}{\r\n \\parbox{17cm}{\\raggedright\\textbf{\\LARGE %TITLEPREFIX%} %TITLE% }} \\\\\r\n & \\\\\r\n %MOTION_DATA_TABLE%\r\n & \\\\\r\n \\cline{1-2}\r\n\\end{tabularx}\r\n\r\n\\invisiblesection{\\ArvoRegular %TITLE_LONG%}\r\n\r\n%TEXT%\r\n'),
'\\setcounter{page}{1}\r\n\\thispagestyle{empty}\r\n\r\n\\vspace*{-25mm}\r\n\\begin{flushright}\r\n \\ArvoRegular\r\n \\small\r\n \\textbf{\\normalsize %INTRODUCTION_BIG%}\\\\\r\n %INTRODUCTION_SMALL%\r\n\\end{flushright}\r\n\r\n\\begin{tabularx}{\\textwidth}{|lX|}\r\n \\cline{1-2}\r\n \\ArvoGruen\r\n& \\\\\r\n \\multicolumn{2}{|l|}{\r\n \\parbox{17cm}{\\raggedright\\textbf{\\LARGE %TITLEPREFIX%} %TITLE% }} \\\\\r\n & \\\\\r\n %MOTION_DATA_TABLE%\r\n & \\\\\r\n \\cline{1-2}\r\n\\end{tabularx}\r\n\\vspace{4mm}\r\n\r\n\\invisiblesection{\\ArvoRegular %TITLE_LONG%}\r\n\r\n%TEXT%\r\n'),
(2, NULL, 'Ohne Zeilennummern',
'\\documentclass[paper=a4, 11pt, pagesize, parskip=half, DIV=calc]{scrartcl}\r\n\\usepackage[T1]{fontenc}\r\n\\usepackage{lmodern}\r\n\\usepackage[%LANGUAGE%]{babel}\r\n\\usepackage{fixltx2e}\r\n\\usepackage{lineno}\r\n\\usepackage{tabularx}\r\n\\usepackage{scrpage2}\r\n\\usepackage[normalem]{ulem}\r\n\\usepackage[right]{eurosym}\r\n\\usepackage{fontspec}\r\n\\usepackage{geometry}\r\n\\usepackage{color}\r\n\\usepackage{lastpage}\r\n\\usepackage[normalem]{ulem}\r\n\\usepackage{hyperref}\r\n\\usepackage{wrapfig}\r\n\\usepackage{enumitem}\r\n\\usepackage{graphicx}\r\n\r\n\\newfontfamily\\ArvoGruen[\r\n Path=%ASSETROOT%Arvo/\r\n]{Arvo_Gruen_1004.otf}\r\n\\newfontfamily\\ArvoRegular[\r\n Path=%ASSETROOT%Arvo/\r\n]{Arvo-Regular_v104.ttf}\r\n\\newfontfamily\\AntragsgruenSection[\r\n Path=%ASSETROOT%Arvo/\r\n]{Arvo-Regular_v104.ttf}\r\n\\setmainfont[\r\n Path=%ASSETROOT%PT-Sans/,\r\n BoldFont=PTS75F.ttf,\r\n ItalicFont=PTS56F.ttf,\r\n BoldItalicFont=PTS76F.ttf\r\n]{PTS55F.ttf}\r\n\r\n\\definecolor{Insert}{rgb}{0,0.6,0}\r\n\\definecolor{Delete}{rgb}{1,0,0}\r\n\r\n\\hypersetup{\r\n colorlinks=true,\r\n linkcolor=blue,\r\n filecolor=blue, \r\n urlcolor=blue,\r\n} \r\n\\urlstyle{same}\r\n\r\n\\title{%TITLE%}\r\n\\author{%AUTHOR%}\r\n\\geometry{a4paper, portrait, top=10mm, left=20mm, right=15mm, bottom=25mm, includehead=true}\r\n\r\n\\pagestyle{scrheadings}\r\n\\clearscrheadfoot\r\n\\renewcommand\\sectionmark[1]{\\markright{\\MakeMarkcase {\\hskip .5em\\relax#1}}}\r\n\\setcounter{secnumdepth}{0}\r\n\r\n\\newcommand\\invisiblesection[1]{%\r\n \\refstepcounter{section}%\r\n \\addcontentsline{toc}{section}{\\protect\\numberline{\\thesection}#1}%\r\n \\sectionmark{#1}\r\n}\r\n\r\n\\ohead{\\ArvoRegular \\footnotesize \\rightmark}\r\n\\setheadsepline{0.4pt}\r\n\\setfootsepline{0.4pt}\r\n\r\n\\begin{document}\r\n\r\n\\shorthandoff{"}\r\n\\sloppy\r\n\\hyphenpenalty=10000\r\n\\hbadness=10000\r\n\r\n%CONTENT%\r\n\r\n\\end{document}',
'\\setcounter{page}{1}\r\n\\thispagestyle{empty}\r\n\r\n\\vspace*{-25mm}\r\n\\begin{flushright}\r\n \\ArvoRegular\r\n \\small\r\n \\textbf{\\normalsize %INTRODUCTION_BIG%}\\\\\r\n %INTRODUCTION_SMALL%\r\n\\end{flushright}\r\n\r\n\\begin{tabularx}{\\textwidth}{|lX|}\r\n \\cline{1-2}\r\n \\ArvoGruen\r\n& \\\\\r\n \\multicolumn{2}{|l|}{\r\n \\parbox{17cm}{\\raggedright\\textbf{\\LARGE %TITLEPREFIX%} %TITLE% }} \\\\\r\n & \\\\\r\n %MOTION_DATA_TABLE%\r\n & \\\\\r\n \\cline{1-2}\r\n\\end{tabularx}\r\n\r\n\\invisiblesection{\\ArvoRegular %TITLE_LONG%}\r\n\r\n%TEXT%\r\n');
'\\setcounter{page}{1}\r\n\\thispagestyle{empty}\r\n\r\n\\vspace*{-25mm}\r\n\\begin{flushright}\r\n \\ArvoRegular\r\n \\small\r\n \\textbf{\\normalsize %INTRODUCTION_BIG%}\\\\\r\n %INTRODUCTION_SMALL%\r\n\\end{flushright}\r\n\r\n\\begin{tabularx}{\\textwidth}{|lX|}\r\n \\cline{1-2}\r\n \\ArvoGruen\r\n& \\\\\r\n \\multicolumn{2}{|l|}{\r\n \\parbox{17cm}{\\raggedright\\textbf{\\LARGE %TITLEPREFIX%} %TITLE% }} \\\\\r\n & \\\\\r\n %MOTION_DATA_TABLE%\r\n & \\\\\r\n \\cline{1-2}\r\n\\end{tabularx}\r\n\\vspace{4mm}\r\n\r\n\\invisiblesection{\\ArvoRegular %TITLE_LONG%}\r\n\r\n%TEXT%\r\n'),
(3, NULL, 'Bewerbungen',
'\\documentclass[paper=a4, 11pt, pagesize, parskip=half, DIV=calc]{scrartcl}\r\n\\usepackage[T1]{fontenc}\r\n\\usepackage{lmodern}\r\n\\usepackage[%LANGUAGE%]{babel}\r\n\\usepackage{fixltx2e}\r\n\\usepackage{ragged2e}\r\n\\usepackage{lineno}\r\n\\usepackage{tabularx}\r\n\\usepackage{scrpage2}\r\n\\usepackage[normalem]{ulem}\r\n\\usepackage[right]{eurosym}\r\n\\usepackage{fontspec}\r\n\\usepackage{geometry}\r\n\\usepackage{color}\r\n\\usepackage{lastpage}\r\n\\usepackage[normalem]{ulem}\r\n\\usepackage{hyperref}\r\n\\usepackage{wrapfig}\r\n\\usepackage{enumitem}\r\n\\usepackage{graphicx}\r\n\r\n\\newfontfamily\\ArvoGruen[\r\n Path=%ASSETROOT%Arvo/\r\n]{Arvo_Gruen_1004.otf}\r\n\\newfontfamily\\ArvoRegular[\r\n Path=%ASSETROOT%Arvo/\r\n]{Arvo-Regular_v104.ttf}\r\n\\newfontfamily\\AntragsgruenSection[\r\n Path=%ASSETROOT%Arvo/\r\n]{Arvo-Regular_v104.ttf}\r\n\\setmainfont[\r\n Path=%ASSETROOT%PT-Sans/,\r\n BoldFont=PTS75F.ttf,\r\n ItalicFont=PTS56F.ttf,\r\n BoldItalicFont=PTS76F.ttf\r\n]{PTS55F.ttf}\r\n\r\n\\definecolor{Insert}{rgb}{0,0.6,0}\r\n\\definecolor{Delete}{rgb}{1,0,0}\r\n\r\n\\hypersetup{\r\n colorlinks=true,\r\n linkcolor=blue,\r\n filecolor=blue, \r\n urlcolor=blue,\r\n} \r\n\\urlstyle{same}\r\n\r\n\\title{%TITLE%}\r\n\\author{%AUTHOR%}\r\n\\geometry{a4paper, portrait, top=10mm, left=20mm, right=15mm, bottom=25mm, includehead=true}\r\n\r\n\\pagestyle{scrheadings}\r\n\\clearscrheadfoot\r\n\\renewcommand\\sectionmark[1]{\\markright{\\MakeMarkcase {\\hskip .5em\\relax#1}}}\r\n\\setcounter{secnumdepth}{0}\r\n\r\n\\newcommand\\invisiblesection[1]{%\r\n \\refstepcounter{section}%\r\n \\addcontentsline{toc}{section}{\\protect\\numberline{\\thesection}#1}%\r\n \\sectionmark{#1}\r\n}\r\n\r\n\\ohead{\\ArvoRegular \\footnotesize \\rightmark}\r\n\\ofoot{\\ArvoRegular \\footnotesize Seite \\thepage\\\r\n% / \\pageref{LastPage}\r\n}\r\n\\setheadsepline{0.4pt}\r\n\\setfootsepline{0.4pt}\r\n\r\n\\begin{document}\r\n\r\n\\shorthandoff{\"}\r\n\\sloppy\r\n\\hyphenpenalty=10000\r\n\\hbadness=10000\r\n\r\n%CONTENT%\r\n\r\n\\end{document}',
'\\setcounter{page}{1}\r\n\\thispagestyle{empty}\r\n\r\n\\vspace*{-25mm}\r\n\\begin{flushright}\r\n \\ArvoRegular\r\n \\small\r\n \\textbf{\\normalsize %INTRODUCTION_BIG%}\\\\\r\n %INTRODUCTION_SMALL%\r\n\\end{flushright}\r\n\r\n\\setlength{\\fboxrule}{0.01em}\r\n\\setlength{\\fboxsep}{0.5em}\r\n\\fbox{\\begin{minipage}{\\dimexpr\\textwidth-2\\fboxsep-2\\fboxrule\\relax}\r\n\\vspace{0.2cm}\r\n\r\n\\begin{tabular}{p{4cm}>{\\RaggedLeft\\arraybackslash}p{12.2cm}}\r\n\\textbf{\\LARGE %TITLEPREFIX%} & \\textbf{\\LARGE %TITLE_RAW%}\r\n\\end{tabular}\r\n\r\n\\vspace{0.4cm}\r\n\r\n\\begin{tabular}{p{4cm}>{\\RaggedRight\\arraybackslash}p{12.2cm}}\r\n\\textbf{%APP_TITLE%} \\\\\r\n%APP_TOP_LABEL% & %APP_TOP%\r\n\\end{tabular}\r\n\r\n\\vspace{0.2cm}\r\n\\end{minipage}}\r\n\\vspace{4mm}\r\n\r\n\\invisiblesection{\\ArvoRegular %TITLE_LONG%}\r\n\r\n%TEXT%\r\n');

INSERT INTO `###TABLE_PREFIX###migration` (`version`, `apply_time`) VALUES
('m000000_000000_base', 1443797618),
('m150930_094343_amendment_multiple_paragraphs', 1443797661),
('m151021_084634_supporter_organization_contact_person', 1445519132),
('m151025_123256_user_email_change', 1445802530),
('m151104_092212_motion_type_deletable', 1445802530),
('m151104_132242_site_consultation_date_creation', 1445802530),
('m151106_083636_site_properties', 1446801672),
('m151106_183055_motion_type_two_cols', 1446834722),
('m160114_200337_motion_section_is_right', 1452801905),
('m160228_152511_motion_type_rename_initiator_form', 1457086233),
('m160304_095858_motion_slug', 1457086236),
('m000000_000000_base', '1443797618'),
('m150930_094343_amendment_multiple_paragraphs', '1443797661'),
('m151021_084634_supporter_organization_contact_person', '1445519132'),
('m151025_123256_user_email_change', '1445802530'),
('m151104_092212_motion_type_deletable', '1445802530'),
('m151104_132242_site_consultation_date_creation', '1445802530'),
('m151106_083636_site_properties', '1446801672'),
('m151106_183055_motion_type_two_cols', '1446834722'),
('m160114_200337_motion_section_is_right', '1452801905'),
('m160228_152511_motion_type_rename_initiator_form', '1457086233'),
('m160304_095858_motion_slug', '1457086236'),
('m160305_201135_support_separate_to_motions_and_amendments', '1457209261'),
('m160305_214526_support_likes_dislikes', '1457209261'),
('m160605_104819_remove_consultation_type', '1457209261'),
Expand All @@ -48,7 +51,10 @@ INSERT INTO `###TABLE_PREFIX###migration` (`version`, `apply_time`) VALUES
('m180609_095225_consultation_text_in_menu', '1528538064'),
('m180619_080947_email_settings_to_consultations', '1529396014'),
('m180621_113721_login_settings_to_consultation', '1529581178'),
('m180623_113955_motionTypeSettings', '1529754995')
('m180623_113955_motionTypeSettings', '1529754995'),
('m180901_131243_sectionPrintTitle', '1535807788'),
('m180902_182805_initiatorSettings', '1536090959'),
('m180906_171118_supporterExtraData', '1536090959')
;

SET SQL_MODE = @OLD_SQL_MODE;
Expand Down
2 changes: 1 addition & 1 deletion commands/BugfixController.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
namespace app\commands;

use app\components\HTMLTools;
use app\components\MessageSource;
use app\components\yii\MessageSource;
use app\models\db\Amendment;
use app\models\db\EMailLog;
use app\models\db\Motion;
Expand Down
Loading

0 comments on commit b72aa57

Please sign in to comment.