Meeskond "Arved": Difference between revisions

From ICO wiki
Jump to navigationJump to search
(Created page with '== Meeskond "Arved" == *Indrek Ots *Mait Poska *Joosep Püüa *Toomas Talviste *Madis Vellamäe === Ülesanne === '''Firma arvehaldussüsteem''', kus ühel kasutajal, eeltaval…')
 
 
(3 intermediate revisions by the same user not shown)
Line 19: Line 19:
== CMS ==
== CMS ==


CMS'i poolelt on võimalik lisada lehekülgi ja avaldada esileheküljel
CMS'i funktsionaalsus:
uudiseid.
*On võimalik lisada/eemaldada lehti
Lisaks sellele saab anda menüüle lisada uusi elemente, millel võib olla
*Lehele saab anda asukoha menüüs
ka alamelemendid.
*On võimalik lisada esilehele uudiseid
*On võimalik kustutada/muuta olemasolevaid uudiseid
*On võimalik muuta olemasolevaid lehti
*Sitemap faili struktuur on muudetav
 
 
Tekstiredaktoriks kasutasime [http://ckeditor.com/ CKEditor]'i. CKEditor salvestab sisestatud teksti HTML kujul, säilitades kasutaja poolt sisestatud vormingu. Meie rakenduse esileht näitab uudistest lühemat versiooni ning kui uudisele klikkida, siis on näha terve uudis. Selleks, et seda teostada, ei piisanud lihtsalt CKEditori poolt loodud teksti poolikuks lõikamisest. Tuletame meelde, et CKEditor salvestab teksti HTML kujul. Kui HTML vormingus tekst kuskilt pooleks lõigata, läheb kaduma osa tag'e ja leht ei valideeru enam. Lahenduseks sai loodud järgnev koodijupp, mis loeb sisse tükeldatud HTML stringi ja lisab lõppu puuduvad tagid.
 
<source lang="csharp">
    /// <summary>
    /// Funktsioon, mis võtab sisse html stringi ja teeb selle lühemaks.
    /// Ehk string lõigatakse soovitud koha pealt pooleks. Nii käitudes puuduvad stringist tagid, mis
    /// olid stringi teises pooles. Need lisatakse hiljem stringi lõppu, et string oleks ikka korralik
    /// html.
    /// </summary>
    /// <param name="maxLength">Stringi maksimum pikkus. See osa stringist, mis ei mahu
    /// maksimum pikkuse sisse, jäetakse välja.
    /// </param>
    /// <param name="content">String, mida hakatakse töötlema</param>
    /// <returns>Töödeldud stirng</returns>
    private static String getShortContentString(int maxLength, string content)
    {
        String contentString = content;
        if (contentString.Length > maxLength)
        {
            contentString = contentString.Substring(0, maxLength);
            Stack<String> tagStack = new Stack<string>();
            bool isInTag = false;
            bool isEndTag = false;
            bool isInTagName = false;
            bool gotTagName = false;
            bool isAttrVal = false;
            bool foundObjectTag = false;
            bool isObjectTagPopped = false;
            String tagBuilder = "";
 
            //prase contentString
            for (int i = 0; i < contentString.Length; i++)
            {
                if (isInTag == false)
                {
                    //tagi algus
                    if (contentString[i] == '<')
                    {
                        isInTag = true;
                    }
 
                }
                else
                {             
                        //ollakse tagi sees
                        if (contentString[i] == '>')
                        {
                            if (!isEndTag)
                            {
                                if (tagBuilder == "object")
                                {
                                    foundObjectTag = true;
                                }
                                tagStack.Push(tagBuilder);
                                Console.WriteLine(tagBuilder);
                            }
                            else
                            {
                                try
                                {
                                    String s = tagStack.Pop();
                                    if (s == "object")
                                    {
                                        isObjectTagPopped = true;
                                    }
                                    Console.WriteLine("removed " + s);
                                }
                                catch (Exception ex)
                                {
                                    return getShortContentString(maxLength + 200, content);
                                }
                            }
                            tagBuilder = "";
                            isInTag = false;
                            isEndTag = false;
                            gotTagName = false;
                            isInTagName = false;
                        }
                        else if (contentString[i] == '/')
                        {
                            //algab lõpetav täg
                            if (!isAttrVal)
                                isEndTag = true;
                        }
                        else if (contentString[i] == '"')
                        {
                            //algab või lõpeb atribuudi väärtus
                            isAttrVal = !isAttrVal;
                        }
                        else
                        {
                            if (contentString[i] != ' ' && isInTagName == false && gotTagName == false)
                            {
                                tagBuilder += contentString[i];
                                isInTagName = true;
                            }
                            else if (contentString[i] != ' ' && isInTagName == true && gotTagName == false)
                            {
                                tagBuilder += contentString[i];
                            }
                            else if (contentString[i] == ' ' && isInTagName == true && gotTagName == false)
                            {
                                isInTagName = false;
                                gotTagName = true;
                            }
 
                        }
                }
 
            }
            Console.WriteLine(isInTag);
 
            if (isInTag)
            {
                //remove half tag
                for (int i = contentString.Length - 1; i > 0; i--)
                {
                    if (contentString[i] == '<')
                    {
                        contentString = contentString.Substring(0, i);
                        break;
                    }
                }
 
            }
 
            //add 3 dots
            contentString += "...";
 
            // Console.WriteLine(tagStack.Count);
            int count = tagStack.Count;
 
            if (foundObjectTag == true && isObjectTagPopped == false)
            {
                return getShortContentString(maxLength + 200, content);
            }
 
            //add missing tags
            for (int i = 0; i < count; i++)
            {
                String tag = tagStack.Pop();
                contentString += "</" + tag + ">";
                //Console.WriteLine("added tag " + tag);
 
            }
        }
 
        return contentString;
    }
</source>


== Kasutajakeskond ==
== Kasutajakeskond ==

Latest revision as of 20:55, 4 June 2010

Meeskond "Arved"

  • Indrek Ots
  • Mait Poska
  • Joosep Püüa
  • Toomas Talviste
  • Madis Vellamäe

Ülesanne

Firma arvehaldussüsteem, kus ühel kasutajal, eeltavalt firmaomanikul, on võimalik end registreerida ja see järel registreerida enda firma süsteemis.

Kasutaja saab lisada enda firmale teisi kasutajad, kellel on õigus luua lisada kliente ja luua arveid. Lisaks sellel saab firmale lisada erinevaid kontakte ja arvenumbreid.

CMS

CMS'i funktsionaalsus:

  • On võimalik lisada/eemaldada lehti
  • Lehele saab anda asukoha menüüs
  • On võimalik lisada esilehele uudiseid
  • On võimalik kustutada/muuta olemasolevaid uudiseid
  • On võimalik muuta olemasolevaid lehti
  • Sitemap faili struktuur on muudetav


Tekstiredaktoriks kasutasime CKEditor'i. CKEditor salvestab sisestatud teksti HTML kujul, säilitades kasutaja poolt sisestatud vormingu. Meie rakenduse esileht näitab uudistest lühemat versiooni ning kui uudisele klikkida, siis on näha terve uudis. Selleks, et seda teostada, ei piisanud lihtsalt CKEditori poolt loodud teksti poolikuks lõikamisest. Tuletame meelde, et CKEditor salvestab teksti HTML kujul. Kui HTML vormingus tekst kuskilt pooleks lõigata, läheb kaduma osa tag'e ja leht ei valideeru enam. Lahenduseks sai loodud järgnev koodijupp, mis loeb sisse tükeldatud HTML stringi ja lisab lõppu puuduvad tagid.

    /// <summary>
    /// Funktsioon, mis võtab sisse html stringi ja teeb selle lühemaks.
    /// Ehk string lõigatakse soovitud koha pealt pooleks. Nii käitudes puuduvad stringist tagid, mis 
    /// olid stringi teises pooles. Need lisatakse hiljem stringi lõppu, et string oleks ikka korralik
    /// html.
    /// </summary>
    /// <param name="maxLength">Stringi maksimum pikkus. See osa stringist, mis ei mahu 
    /// maksimum pikkuse sisse, jäetakse välja.
    /// </param>
    /// <param name="content">String, mida hakatakse töötlema</param>
    /// <returns>Töödeldud stirng</returns>
    private static String getShortContentString(int maxLength, string content)
    {
        String contentString = content;
        if (contentString.Length > maxLength)
        {
            contentString = contentString.Substring(0, maxLength);
            Stack<String> tagStack = new Stack<string>();
            bool isInTag = false;
            bool isEndTag = false;
            bool isInTagName = false;
            bool gotTagName = false;
            bool isAttrVal = false;
            bool foundObjectTag = false;
            bool isObjectTagPopped = false;
            String tagBuilder = "";

            //prase contentString
            for (int i = 0; i < contentString.Length; i++)
            {
                if (isInTag == false)
                {
                    //tagi algus
                    if (contentString[i] == '<')
                    {
                        isInTag = true;
                    }

                }
                else
                {               
                        //ollakse tagi sees
                        if (contentString[i] == '>')
                        {
                            if (!isEndTag)
                            {
                                if (tagBuilder == "object")
                                {
                                    foundObjectTag = true;
                                }
                                tagStack.Push(tagBuilder);
                                Console.WriteLine(tagBuilder);
                            }
                            else
                            {
                                try
                                {
                                    String s = tagStack.Pop();
                                    if (s == "object")
                                    {
                                        isObjectTagPopped = true;
                                    }
                                    Console.WriteLine("removed " + s);
                                }
                                catch (Exception ex)
                                {
                                    return getShortContentString(maxLength + 200, content);
                                }
                            }
                            tagBuilder = "";
                            isInTag = false;
                            isEndTag = false;
                            gotTagName = false;
                            isInTagName = false;
                        }
                        else if (contentString[i] == '/')
                        {
                            //algab lõpetav täg
                            if (!isAttrVal)
                                isEndTag = true;
                        }
                        else if (contentString[i] == '"')
                        {
                            //algab või lõpeb atribuudi väärtus
                            isAttrVal = !isAttrVal;
                        }
                        else
                        {
                            if (contentString[i] != ' ' && isInTagName == false && gotTagName == false)
                            {
                                tagBuilder += contentString[i];
                                isInTagName = true;
                            }
                            else if (contentString[i] != ' ' && isInTagName == true && gotTagName == false)
                            {
                                tagBuilder += contentString[i];
                            }
                            else if (contentString[i] == ' ' && isInTagName == true && gotTagName == false)
                            {
                                isInTagName = false;
                                gotTagName = true;
                            }

                        }
                }

            }
            Console.WriteLine(isInTag);

            if (isInTag)
            {
                //remove half tag
                for (int i = contentString.Length - 1; i > 0; i--)
                {
                    if (contentString[i] == '<')
                    {
                        contentString = contentString.Substring(0, i);
                        break;
                    }
                }

            }

            //add 3 dots
            contentString += "...";

            // Console.WriteLine(tagStack.Count);
            int count = tagStack.Count;

            if (foundObjectTag == true && isObjectTagPopped == false)
            {
                return getShortContentString(maxLength + 200, content);
            }

            //add missing tags
            for (int i = 0; i < count; i++)
            {
                String tag = tagStack.Pop();
                contentString += "</" + tag + ">";
                //Console.WriteLine("added tag " + tag);

            }
        }

        return contentString;
    }

Kasutajakeskond

Kasutaja võimalused:

  • Registreerida firma
    • Sisestada andmed
    • Lisada kontaktid
    • Määrata arvenumbreid
  • Hallata arveid
    • Luua uusi arveid
    • Kuvada vanu arveid
    • Edastada arveid elektrooniliseposti teel