Meeskond: HelpOut

From ICO wiki
Revision as of 20:31, 17 April 2017 by Misarapu (talk | contribs)
Jump to navigationJump to search

Meeskond

  • Mikk Sarapuu
  • Martin Paakspuu
  • Kerdo Kullamäe
  • Marvin Mardiat
  • Piret Pomerants

Veebiteenuse analüüs

Meeskond HelpOut loob veebirakenduse koos teenusega, mis lubab ühelt poolt kasutajal postitada kuulutusi ürituste kohta, mille korraldamisele otsitakse vabatahtlikke, ning teiselt poolt saavad kasutajad otsida üritusi, mille läbiviimisel nad meelsasti osaleksid. Üritused on kategoriseeritud. Selleks, et kuulutusi lisada peab ennast kasutajaks registreerima, osalemise puhul ei ole see oluline. Kuid regisreeritud kasutajal on võimalik näiteks salvestada kõik tulevased üritused rakendusesiseses kalendris. Ürituse kuulutust saab lisada nii tasuta või tasulise kuulutusena. Tasulise kuulutuse eelis seisneb selles, et kuulutusele saab lisada näiteks suurema bänneri või et see kuulutus kajastub teistest kuulutustest eespool. Tasu suurusest sõltub kuulutuse prioriteet.


XML / XSD / XSLT

XML

<?xml version="1.0" encoding="utf-8" ?>
<events>
  <event title="Lehekoristus" created="17/03/2017 00:00:00" datetime="18/03/2017 00:00:00" priority="5">
    <organizer userid="1"><![CDATA[Piret Pomerants]]></organizer>
    <description>
      <short><![CDATA[Lorem ipsum dolor sit amet, est an dicat utinam nostro.]]></short>
      <main><![CDATA[Lorem ipsum dolor sit amet, est an dicat utinam nostro. 
      Vim inermis repudiandae ad, te eum modo mutat. Mea feugait appareat ex, 
      sed posse luptatum cu, in cum diam dicunt. Nostro scaevola probatus nam ex,
      quo option efficiantur ne. Ei mea pertinacia inciderint dissentiet, 
      cu est numquam constituam, veniam discere mei ad.]]></main>
    </description>
    <participants>
      <participant userid="2" attended="19/03/2017 00:00:00"><![CDATA[Marvin Mardiat]]></participant>
      <participant userid="3" attended="19/03/2017 00:01:00"><![CDATA[Kerdo Kullamäe]]></participant>
      <participant userid="4" attended="19/03/2017 00:02:00"><![CDATA[Martin Paakspuu]]></participant>
      <participant userid="5" attended="19/03/2017 00:03:00"><![CDATA[Mikk Sarapuu]]></participant>
    </participants>
    <images>
      <image name="lehed" src="https://s-media-cache-ak0.pinimg.com/originals/81/09/0c/81090cf56edf7b1e8fcc41540f5dde5d.jpg"></image>
    </images>
    <comments>
      <comment userid="1" reply="false"><![CDATA[lorem ipsum?]]></comment>
      <comment userid="1" reply="true"><![CDATA[test1]]></comment>
    </comments>
  </event>
  <event title="Puude ladumine" created="17/03/2017 00:00:00" datetime="18/07/2017 00:00:00" priority="5">
    <organizer userid="6"><![CDATA[Marko Pomerants]]></organizer>
    <description>
      <short><![CDATA[Lorem ipsum dolor sit amet, est an dicat utinam nostro.]]></short>
      <main>
        <![CDATA[Lorem ipsum dolor sit amet, est an dicat utinam nostro. 
      Vim inermis repudiandae ad, te eum modo mutat. Mea feugait appareat ex, 
      sed posse luptatum cu, in cum diam dicunt. Nostro scaevola probatus nam ex,
      quo option efficiantur ne. Ei mea pertinacia inciderint dissentiet, 
      cu est numquam constituam, veniam discere mei ad.]]>
      </main>
    </description>
    <participants>
      <participant userid="8" attended="19/07/2017 00:01:00"><![CDATA[Juku Kullamäe]]></participant>
      <participant userid="9" attended="19/07/2017 00:02:00"><![CDATA[Kalvi Paakspuu]]></participant>
      <participant userid="10" attended="19/07/2017 00:03:00"><![CDATA[Kalle Sarapuu]]></participant>
    </participants>
    <images>
      <image name="puud" src="http://y.delfi.ee/norm/2535/28205_NIE867.jpg"></image>
    </images>
    <comments>
      <comment userid="7" reply="false"><![CDATA[Kuna üritus toimub?]]></comment>
      <comment userid="10" reply="true"><![CDATA[Kas sa ei oska lugeda?]]></comment>
    </comments>
  </event>
  <event title='Massistseen kultusfilmis "Maasikad"' created="17/04/2017 00:00:00" datetime="18/04/2017 00:00:00" priority="4">
    <organizer userid="11"><![CDATA[Piret Pakiraam]]></organizer>
    <description>
      <short><![CDATA[Lorem ipsum dolor sit amet, est an dicat utinam nostro.]]></short>
      <main>
        <![CDATA[Lorem ipsum dolor sit amet, est an dicat utinam nostro. 
      Vim inermis repudiandae ad, te eum modo mutat. Mea feugait appareat ex, 
      sed posse luptatum cu, in cum diam dicunt. Nostro scaevola probatus nam ex,
      quo option efficiantur ne. Ei mea pertinacia inciderint dissentiet, 
      cu est numquam constituam, veniam discere mei ad.]]>
      </main>
    </description>
    <participants>
      <participant userid="12" attended="19/04/2017 00:00:00"><![CDATA[Marvin Pedaalid]]></participant>
      <participant userid="13" attended="19/04/2017 00:01:00"><![CDATA[Kerdo Sadul]]></participant>
      <participant userid="14" attended="19/04/2017 00:02:00"><![CDATA[Martin Lenks]]></participant>
      <participant userid="15" attended="19/04/2017 00:03:00"><![CDATA[Mikk Kodar]]></participant>
      <participant userid="10" attended="19/04/2017 00:03:00"><![CDATA[Kalle Sarapuu]]></participant>
    </participants>
    <images>
      <image name="rahvas" src="http://www.roscoelilly.org/wp-content/uploads/2016/02/happy-crowd.jpg"></image>
    </images>
    <comments>
      <comment userid="12" reply="false"><![CDATA[Mis vanusepiirang?]]></comment>
      <comment userid="11" reply="false"><![CDATA[Süüa saab ka!]]></comment>
    </comments>
  </event>
</events>

XSD

<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="events">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" name="event">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="organizer">
                <xs:complexType>
                  <xs:simpleContent>
                    <xs:extension base="xs:string">
                      <xs:attribute name="userid" type="xs:unsignedByte" use="required" />
                    </xs:extension>
                  </xs:simpleContent>
                </xs:complexType>
              </xs:element>
              <xs:element name="description">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="short" type="xs:string" />
                    <xs:element name="main" type="xs:string" />
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
              <xs:element name="participants">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element maxOccurs="unbounded" name="participant">
                      <xs:complexType>
                        <xs:simpleContent>
                          <xs:extension base="xs:string">
                            <xs:attribute name="userid" type="xs:unsignedByte" use="required" />
                            <xs:attribute name="attended" type="xs:string" use="required" />
                          </xs:extension>
                        </xs:simpleContent>
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
              <xs:element name="images">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="image">
                      <xs:complexType>
                        <xs:attribute name="name" type="xs:string" use="optional" />
                        <xs:attribute name="src" type="xs:string" use="required" />
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
              <xs:element name="comments">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element maxOccurs="unbounded" name="comment">
                      <xs:complexType>
                        <xs:simpleContent>
                          <xs:extension base="xs:string">
                            <xs:attribute name="userid" type="xs:unsignedByte" use="required" />
                            <xs:attribute name="reply" type="xs:boolean" use="required" />
                          </xs:extension>
                        </xs:simpleContent>
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
            <xs:attribute name="title" type="xs:string" use="required" />
            <xs:attribute name="created" type="xs:string" use="required" />
            <xs:attribute name="datetime" type="xs:string" use="required" />
            <xs:attribute name="priority" type="xs:unsignedByte" use="required" />
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

XSLT (HTML)

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
    <xsl:output method="html" indent="yes"/>

    <xsl:template match="/">
      <html>
        <head>
            <title>HelpOut</title>
          </head>
        <body>
          <table border="1">
            <tr>
              <th>Ürituse nimi</th>
              <th>Korraldaja</th>
              <th>Toimumisaeg</th>
              <th>Kirjeldus</th>
              <th>Osalejad</th>
              <th>Pilt</th>
              <th>Kommentaarid</th>
            </tr>
          <xsl:for-each select="events/event">
            <tr>
              <td>
                <xsl:value-of select ="@title"/>
              </td>
              <td>
                <xsl:value-of select ="organizer"/>
              </td>
              <td>
                <xsl:value-of select ="@datetime"/>
              </td>
              <td style="width:400px">
                <b><xsl:value-of select ="description/short"/></b>
                <br/>
                <xsl:value-of select ="description/main"/>
              </td>
              <td>
                <ul>
                <xsl:for-each select="participants/participant">
                  <li>
                    <xsl:value-of select ="."/>
                  </li>
                </xsl:for-each>
                </ul>
              </td>

              <td>
                <xsl:for-each select="images/image">
                  <img width="300px">
                    <xsl:attribute name="src">
                      <xsl:value-of select="@src"/>
                    </xsl:attribute>
                  </img>
                </xsl:for-each>
              </td>
              <td>
                  <xsl:for-each select="comments/comment">
                    <xsl:if test="@reply = 'false'">
                      <b><xsl:value-of select ="."/></b><br/>
                    </xsl:if>
                    <xsl:if test="@reply = 'true'">
                      <xsl:value-of select ="."/><br/>
                    </xsl:if>
                  </xsl:for-each>
              </td>
              
            </tr>
          </xsl:for-each>
          </table>
        </body>
      </html>
      
        <!--<xsl:copy>
            <xsl:apply-templates select="@* | node()"/>
        </xsl:copy>-->
    </xsl:template>
</xsl:stylesheet>

XSLT (XML)

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
    <xsl:output method="xml" indent="yes"/>

    <xsl:template match="/">
      <events>
      <xsl:for-each select="events/event">
        <event>
          <title>
            <xsl:value-of select ="@title"/>
          </title>
          <organizer>
            <xsl:value-of select ="organizer"/>
          </organizer>
          <datetime>
            <xsl:value-of select ="@datetime"/>
          </datetime>
          <description>
            <short>
              <xsl:value-of select ="description/short"/>
            </short>
            <main>
              <xsl:value-of select ="description/main"/>
            </main>
          </description>
          <participants>
              <xsl:for-each select="participants/participant">
                <participant>
                  <xsl:value-of select ="."/>
                </participant>
              </xsl:for-each>
          </participants>

          <images>
            <xsl:for-each select="images/image">
              <image>
                <xsl:attribute name="src">
                  <xsl:value-of select="@src"/>
                </xsl:attribute>
              </image>
            </xsl:for-each>
          </images>
          <comments>
            <xsl:for-each select="comments/comment">
              <xsl:if test="@reply = 'false'">
                <comment>
                  <xsl:value-of select ="."/>
                </comment>
              </xsl:if>
              <xsl:if test="@reply = 'true'">
                <comment>
                <xsl:value-of select ="."/>
                </comment>
              </xsl:if>
            </xsl:for-each>
          </comments>

        </event>
      </xsl:for-each>
      </events>
    </xsl:template>
</xsl:stylesheet>

Arendusprotsess

  • 19.03.2017 - teema valik, wiki lehe loomine, xml loomine