public Templates(Database db)
        {
            InitializeComponent();

            this.Icon = Properties.Resources.simba;
            this.editmode = false;
            this.db = db;
            images = new List<string>();
            template = new Template(this.db, Config.BasePath+Path.DirectorySeparatorChar+Config.Paths["templates"]);

            templates = Template.getTemplates(this.db);
            if (templates != null)
            {
                templates.Remove("0");
                lv_templates.Items.Clear();
                foreach (KeyValuePair<string, string> item in templates)
                {
                    ListViewItem t = new ListViewItem(item.Key);
                    t.SubItems.Add(item.Value);
                    lv_templates.Items.Add(t);
                }
            }
        }
Пример #2
0
        /// <summary>
        /// Exports the Data given
        /// </summary>
        /// <param name="type">Export Format</param>
        /// <param name="data">A Data Object</param>
        /// <param name="template">A Template to print the Data into</param>
        /// <param name="basepath">The Basepath to create the file in</param>
        /// <returns>The Path of the created Export</returns>
        public static string DataExport(ExportType type, Exportable data, Template template, string basepath, ExportCount ec, string pathtohtmltopdf)
        {
            string path = basepath + "\\" + data.Filename(ec); //need to Add fileending

            switch (type)
            {
                case ExportType.PDF:
                    path = exportPDF(data.DataName(ec), data.ToContent(ec), data.ObjectID, data.Adress, data.WorkerName, data.DateCreated, data.DateSecond, template, path, basepath, pathtohtmltopdf);
                    break;
                case ExportType.Word:
                    path = exportWord(data.DataName(ec), data.ToContent(ec), data.ObjectID, data.Adress, data.WorkerName, data.DateCreated, data.DateSecond, template, path);
                    break;
                case ExportType.Excel:
                    path = exportExcel(data.DataName(ec), data.ToContent(ec), data.ObjectID, data.Adress, data.WorkerName, data.DateCreated, data.DateSecond, template, path);
                    break;
                case ExportType.TXT:
                    path = exportTXT(data.DataName(ec), data.ToContent(ec), data.ObjectID, data.Adress, data.WorkerName, data.DateCreated, data.DateSecond, template, path);
                    break;
                case ExportType.CSV:
                    path = exportCSV(data.DataName(ec), data.ToContent(ec), data.ObjectID, data.Adress, data.WorkerName, data.DateCreated, data.DateSecond, template, path);
                    break;
                case ExportType.HTML:
                    path = exportHTML(data.DataName(ec), data.ToContent(ec), data.ObjectID, data.Adress, data.WorkerName, data.DateCreated, data.DateSecond, template, path, basepath);
                    break;
                case ExportType.XML:
                    path = exportXML(data.DataName(ec), data.ToContent(ec), data.ObjectID, data.Adress, data.WorkerName, data.DateCreated, data.DateSecond, template, path);
                    break;
                case ExportType.MarkDown:
                    path = exportMD(data.DataName(ec), data.ToContent(ec), data.ObjectID, data.Adress, data.WorkerName, data.DateCreated, data.DateSecond, template, path);
                    break;
                default:
                    break;
            }

            return path;
        }
Пример #3
0
        private static string exportHTML(string title, Content content, string id, string adress, string worker, string datecreate, string datesecond, Template template, string path, string basepath)
        {
            path += ".html";
            using (StreamWriter file = new StreamWriter(path))
            {
                //html header (containing CSS!)
                file.WriteLine("<html>");
                file.WriteLine("<head>");
                file.WriteLine("<title>" + title + "</title>");
                file.WriteLine("<style>");
                foreach (string line in getCSS(basepath + Path.DirectorySeparatorChar + "vorlagen" + Path.DirectorySeparatorChar + template.CSS_HTML))
                {
                    file.WriteLine(line);
                }
                file.WriteLine("</style>");
                file.WriteLine("</head>");

                //header
                file.WriteLine("<body>");
                file.WriteLine("<div id=\"container\">");
                if (!template.IsEmpty)
                {
                    file.WriteLine("<div id=\"header\">");
                    if (template.Header != null)
                    {
                        file.WriteLine(htmlTags(template.Header, basepath + Path.DirectorySeparatorChar + "vorlagen" + Path.DirectorySeparatorChar + template.NiceID).Replace(Template.FULLSTARTER, "").Replace(Template.DATE_NOW, DateTime.Now.ToString("dd.MM.yyyy")));
                    }
                    else
                    {

                        file.WriteLine("<div class=\"left\">" + htmlTags(template.Header_Left, basepath + Path.DirectorySeparatorChar + "vorlagen" + Path.DirectorySeparatorChar + template.NiceID).Replace(Template.DATE_NOW, DateTime.Now.ToString("dd.MM.yyyy")) + "</div>");
                        file.WriteLine("<div class=\"center\">" + htmlTags(template.Header_Center, basepath + Path.DirectorySeparatorChar + "vorlagen" + Path.DirectorySeparatorChar + template.NiceID).Replace(Template.DATE_NOW, DateTime.Now.ToString("dd.MM.yyyy")) + "</div>");
                        file.WriteLine("<div class=\"right\">" + htmlTags(template.Header_Right, basepath + Path.DirectorySeparatorChar + "vorlagen" + Path.DirectorySeparatorChar + template.NiceID).Replace(Template.DATE_NOW, DateTime.Now.ToString("dd.MM.yyyy")) + "</div>");

                    }
                    file.WriteLine("</div>");
                    file.WriteLine("<div id=\"textBefore\">");
                    file.WriteLine("<div id=\"textBefore_left\">" + Template.ReplacePlaceholder(template.TextBefore_Left.Replace(Template.LINEBREAK, "<br/>"), id, adress, worker, datecreate, datesecond) + "</div>");
                    file.WriteLine("<div id=\"textBefore_right\">" + Template.ReplacePlaceholder(template.TextBefore_Right.Replace(Template.LINEBREAK, "<br/>"), id, adress, worker, datecreate, datesecond) + "</div>");
                    file.WriteLine("</div>");

                    file.WriteLine("<div id=\"beforeContent\">" + template.BeforeContent + "</div>");
                }

                file.WriteLine("<h1>" + title + "</h1>");

                //content
                switch (content.Type)
                {
                    case DataType.Table:
                        ContentTable c = (ContentTable)content as ContentTable;
                        file.WriteLine("<table>");
                        file.WriteLine("<thead>");
                        file.WriteLine("<tr>");
                        foreach (DataColumn col in c.Table.Columns)
                        {
                            file.Write("<th scope=\"col\">" + col.Caption + "</th>");
                        }
                        file.WriteLine("</tr>");
                        file.WriteLine("</thead>");
                        file.WriteLine("<tbody>");
                        foreach (DataRow row in c.Table.Rows)
                        {
                            file.WriteLine("<tr>");
                            foreach (string item in row.ItemArray)
                            {
                                file.WriteLine("<td>" + item.Replace(Template.EMPTY, Template.HTML_SPACE) + "</td>");
                            }
                            file.WriteLine("</tr>");
                        }
                        file.WriteLine("</tbody>");
                        file.WriteLine("</table>");
                        break;
                    case DataType.Paragraphs:
                        ContentParagraphs p = (ContentParagraphs)content as ContentParagraphs;
                        file.WriteLine("<dl>");
                        foreach (KeyValuePair<string, string> item in p.Paragraphs)
                        {
                            file.WriteLine("<dt>" + item.Key + "</dt>");
                            file.WriteLine("<dd>" + item.Value + "</dd>");
                        }
                        file.WriteLine("</dl>");
                        break;
                    case DataType.Text:
                        ContentText t = (ContentText)content as ContentText;
                        file.WriteLine("<p>" + t.Text + "</p>");
                        break;
                    default:
                        break;
                }

                //footer

                if (!template.IsEmpty)
                {
                    file.WriteLine("<div id=\"afterContent\">" + template.AfterContent + "</div>");

                    file.WriteLine("<div id=\"footer\">");
                    if (template.Footer != null)
                    {
                        file.WriteLine(htmlTags(template.Footer, basepath + Path.DirectorySeparatorChar + "vorlagen" + Path.DirectorySeparatorChar + template.NiceID).Replace(Template.FULLSTARTER, "").Replace(Template.DATE_NOW, DateTime.Now.ToString("dd.MM.yyyy")));
                    }
                    else
                    {

                        file.WriteLine("<div class=\"left\">" + htmlTags(template.Footer_Left, basepath + Path.DirectorySeparatorChar + "vorlagen" + Path.DirectorySeparatorChar + template.NiceID).Replace(Template.DATE_NOW, DateTime.Now.ToString("dd.MM.yyyy")) + "</div>");
                        file.WriteLine("<div class=\"center\">" + htmlTags(template.Footer_Center, basepath + Path.DirectorySeparatorChar + "vorlagen" + Path.DirectorySeparatorChar + template.NiceID).Replace(Template.DATE_NOW, DateTime.Now.ToString("dd.MM.yyyy")) + "</div>");
                        file.WriteLine("<div class=\"right\">" + htmlTags(template.Footer_Right, basepath + Path.DirectorySeparatorChar + "vorlagen" + Path.DirectorySeparatorChar + template.NiceID).Replace(Template.DATE_NOW, DateTime.Now.ToString("dd.MM.yyyy")) + "</div>");

                    }
                    file.WriteLine("</div>");
                }
                file.WriteLine("</div>");
                file.WriteLine("</body>");
                file.WriteLine("</html>");
            }
            return path;
        }
Пример #4
0
 private static string exportExcel(string title, Content content, string id, string adress, string worker, string datecreate, string datesecond, Template template, string path)
 {
     throw new NotImplementedException();
 }
Пример #5
0
        private static string exportTXT(string title, Content content, string id, string adress, string worker, string datecreate, string datesecond, Template template, string path)
        {
            path += ".txt";
            using (StreamWriter file = new StreamWriter(path))
            {
                if (!template.IsEmpty)
                {
                    if (template.Header != null)
                    {
                        file.WriteLine(template.Header.Replace(Template.IMAGE_TAG, "<").Replace(Template.IMAGE_END, ">").Replace(Template.LINEBREAK, "\n").Replace(Template.FULLSTARTER, "").Replace(Template.DATE_NOW, DateTime.Now.ToString("dd.MM.yyyy")));
                    }
                    else
                    {
                        file.WriteLine(template.Header_Left.Replace(Template.DATE_NOW, DateTime.Now.ToString("dd.MM.yyyy")) + Template.TAB + Template.TAB + template.Header_Center.Replace(Template.DATE_NOW, DateTime.Now.ToString("dd.MM.yyyy")) + Template.TAB + Template.TAB + template.Header_Right.Replace(Template.DATE_NOW, DateTime.Now.ToString("dd.MM.yyyy")));
                    }
                    file.WriteLine("");

                    int llines = 0;
                    if (template.TextBefore_Left.Contains(Template.LINEBREAK)) llines = template.TextBefore_Left.Split(Template.LINEBREAK.ToArray(), StringSplitOptions.RemoveEmptyEntries).Length;
                    else llines = 1;

                    int rlines = 0;
                    if (template.TextBefore_Right.Contains(Template.LINEBREAK)) rlines = template.TextBefore_Right.Split(Template.LINEBREAK.ToArray(), StringSplitOptions.RemoveEmptyEntries).Length;
                    else rlines = 1;

                    if (llines > 1 && rlines > 1)
                    {
                        string[] ltext = Template.ReplacePlaceholder(template.TextBefore_Left, id, adress, worker, datecreate, datesecond).Split(Template.LINEBREAK.ToArray(), StringSplitOptions.RemoveEmptyEntries);
                        string[] rtext = Template.ReplacePlaceholder(template.TextBefore_Right, id, adress, worker, datecreate, datesecond).Split(Template.LINEBREAK.ToArray(), StringSplitOptions.RemoveEmptyEntries);
                        if (llines != rlines)
                        {
                            if (llines > rlines)
                            {
                                int j = 0;
                                for (int i = 0; i < rlines; i++)
                                {
                                    file.WriteLine(ltext[i] + Template.TAB + Template.TAB + Template.TAB + Template.TAB + rtext[i]);
                                    j++;
                                }
                                for (int i = j; i < rlines; i++)
                                {
                                    file.WriteLine(Template.TAB + Template.TAB + Template.TAB + Template.TAB + Template.TAB + rtext[i]);
                                }
                            }
                            else
                            {
                                int j = 0;
                                for (int i = 0; i < llines; i++)
                                {
                                    file.WriteLine(ltext[i] + Template.TAB + Template.TAB + Template.TAB + Template.TAB + rtext[i]);
                                    j++;
                                }
                                for (int i = j; i < rlines; i++)
                                {
                                    file.WriteLine(Template.TAB + Template.TAB + Template.TAB + Template.TAB + Template.TAB + rtext[i]);
                                }
                            }
                        }
                        else
                        {
                            for (int i = 0; i < llines; i++)
                            {
                                file.WriteLine(ltext[i] + Template.TAB + Template.TAB + Template.TAB + Template.TAB + rtext[i]);
                            }
                        }
                    }
                    else
                    {
                        file.WriteLine(template.TextBefore_Left + Template.TAB + Template.TAB + Template.TAB + Template.TAB + template.TextBefore_Right);
                    }
                    file.WriteLine("");
                }

                file.WriteLine(title);
                file.WriteLine("");
                if (!template.IsEmpty)
                {
                    file.WriteLine(template.BeforeContent);
                    file.WriteLine("");
                }
                switch (content.Type)
                {
                    case DataType.Table:
                        ContentTable c = (ContentTable)content as ContentTable;
                        foreach (DataColumn col in c.Table.Columns)
                        {
                            file.Write(col.Caption + Template.TAB);
                        }
                        file.WriteLine("");
                        file.WriteLine(new String('-', c.TableWidth));
                        foreach (DataRow row in c.Table.Rows)
                        {
                            string r = String.Join(Template.TAB, row.ItemArray);
                            r.Replace(Template.EMPTY, Template.TAB);
                            file.WriteLine(r);
                        }
                        file.WriteLine(new String('-', c.TableWidth));
                        break;
                    case DataType.Paragraphs:
                        ContentParagraphs p = (ContentParagraphs)content as ContentParagraphs;
                        foreach (KeyValuePair<string, string> item in p.Paragraphs)
                        {
                            file.WriteLine(item.Key);
                            file.WriteLine(item.Value);
                            file.WriteLine("");
                        }
                        break;
                    case DataType.Text:
                        ContentText t = (ContentText)content as ContentText;
                        file.WriteLine(t.Text);
                        break;
                    default:
                        break;
                }
                if (!template.IsEmpty)
                {
                    file.WriteLine("");
                    file.WriteLine(template.AfterContent);
                    file.WriteLine("");
                    if (template.Footer != null)
                    {
                        file.WriteLine(template.Footer.Replace(Template.IMAGE_TAG, "<").Replace(Template.IMAGE_END, ">").Replace(Template.LINEBREAK, "\n").Replace(Template.FULLSTARTER, "").Replace(Template.DATE_NOW, DateTime.Now.ToString("dd.MM.yyyy")));
                    }
                    else
                    {
                        file.WriteLine(template.Footer_Left.Replace(Template.DATE_NOW, DateTime.Now.ToString("dd.MM.yyyy")) + Template.TAB + Template.TAB + template.Footer_Center.Replace(Template.DATE_NOW, DateTime.Now.ToString("dd.MM.yyyy")) + Template.TAB + Template.TAB + template.Footer_Right.Replace(Template.DATE_NOW, DateTime.Now.ToString("dd.MM.yyyy")));
                    }
                }
            }
            return path;
        }
Пример #6
0
        private static string exportPDF(string title, Content content, string id, string adress, string worker, string datecreate, string datesecond, Template template, string path, string basepath, string pathtohtmltopdf)
        {
            string temp = basepath + ".html";
            path += ".pdf";
            //TODO: eigene PDF-Style!
            temp = exportHTML(title, content, id, adress, worker, datecreate, datesecond, template, path, basepath);

            path = PdfGenerator.HtmlToPdf(Path.GetDirectoryName(path), Path.GetFileNameWithoutExtension(path), temp, null, pathtohtmltopdf);

            File.Delete(temp);
            return path;
        }
        private void neuToolStripMenuItem_Click(object sender, EventArgs e)
        {
            lv_templates.SelectedIndices.Clear();

            lb_id.Text = "";
            tb_name.Text = "";

            rb_header_full.Checked = true;
            tb_header_full.Text = "";
            tb_header_left.Text = "";
            tb_header_center.Text = "";
            tb_header_right.Text = "";

            cb_textBefore_Left.Checked = false;
            cb_textBefore_right_id.Checked = false;
            cb_textBefore_right_worker.Checked = false;
            cb_textBefore_right_creationdate.Checked = false;
            cb_textBefore_right_second_date.Checked = false;

            tb_beforeContent.Text = "";
            tb_afterContent.Text = "";

            rb_footer_full.Checked = true;
            tb_footer_full.Text = "";

            tb_footer_left.Text = "";
            tb_footer_center.Text = "";
            tb_footer_right.Text = "";

            setEditMode(true);

            template = new Template(db, Config.BasePath + Path.DirectorySeparatorChar + Config.Paths["templates"]);
            btn_apply.Enabled = true;
            tb_name.Focus();
        }
        private void lv_templates_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (lv_templates.SelectedIndices.Count > 0)
            {
                template = new Template(db, lv_templates.SelectedItems[0].Text);

                lb_id.Text = template.ID;
                tb_name.Text = template.Name;
                if (template.Header != null)
                {
                    rb_header_full.Checked = true;
                    tb_header_full.Text = template.Header.Replace(Template.FULLSTARTER, "").Replace(Template.LINEBREAK, "\n");
                    tb_header_left.Text ="";
                    tb_header_center.Text = "";
                    tb_header_right.Text ="";
                }
                else
                {
                    rb_header_split.Checked = true;
                    tb_header_full.Text = "";
                    tb_header_left.Text = template.Header_Left;
                    tb_header_center.Text = template.Header_Center;
                    tb_header_right.Text = template.Header_Right;
                }

                cb_textBefore_Left.Checked = template.TextBefore_Left.Equals(Template.ADDR);
                cb_textBefore_right_id.Checked = template.TextBefore_Right.Contains(Template.OBJECT_ID);
                cb_textBefore_right_worker.Checked = template.TextBefore_Right.Contains(Template.WORKER);
                cb_textBefore_right_creationdate.Checked = template.TextBefore_Right.Contains(Template.DATE_CREATE);
                cb_textBefore_right_second_date.Checked = template.TextBefore_Right.Contains(Template.DATE_SECOND);

                tb_beforeContent.Text = template.BeforeContent.Replace(Template.LINEBREAK, "\n");
                tb_afterContent.Text = template.AfterContent.Replace(Template.LINEBREAK, "\n");
                if (template.Footer != null)
                {
                    rb_footer_full.Checked = true;
                    tb_footer_full.Text = template.Footer.Replace(Template.FULLSTARTER, "").Replace(Template.LINEBREAK, "\n");
                    tb_footer_left.Text = "";
                    tb_footer_center.Text = "";
                    tb_footer_right.Text = "";
                }
                else
                {
                    rb_footer_split.Checked = true;
                    tb_footer_full.Text = "";
                    tb_footer_left.Text = template.Footer_Left;
                    tb_footer_center.Text = template.Footer_Center;
                    tb_footer_right.Text = template.Footer_Right;
                }

                setEditMode(false);
            }
        }