Så fungerar systemet för Piratpartiets medlemsmöten del 1

Inledning

Piratpartiet har sen bildandet haft sina medlemsmöten (tidigare årsmöten) online. Sen 2011 har jag suttit med i mötespresidiet på fem medlemsmöten, Vårmötet 2011, Höstmötet 2011, Vårmötet 2013, Höstmötet 2013 samt Höstmötet 2014. Mötespresidiet har varit eftersatt i flera år, under höstmötet 2014 fanns det inga kandidater att välja till det presidium som ska hålla Vårmötet 2015. Partistyrelsen kommer få fyllnadsvälja personer till det kommande mötespresidiet istället. Detta inlägg är tänkt att relativt grundligt förklara hur saker går till idag och i den mån det går, förklara varför systemet ser ut som det gör. Detta inlägg utgår dock från att du som läsare har viss förståelse för webbaserade system.

 

 

Ett problem i att beskriva hur partiets medlemsmöten fungerar är hur detaljerad man ska vara. Även då jag försöker hålla mig ganska kortfattad och hoppar över lite saker som är väldigt snarlikt delar jag nämner så blir det ett ganska långt inlägg. Jag kommer därför dela upp det här i flera delar. I den första delen tar jag upp lite historia, vilka verktyg mötespresidiet har använt de senaste åren, hur man ungefär sätter upp mötesforumet, och hur man förbereder sig inför mötet. I del 2 kommer jag förklara hur allt kring motioner fungerar, del 3 kommer täcka hur resten av ett pågående medlemsmöte hanteras, och del 4 kommer att täcka protokoll och avslutande tankar.

Ställ gärna frågor, det kan lätt uppfattas som lite rörigt nedanför.

Historia

Piratpartiets ställe för kommunikation var i många år forumet på forum.piratpartiet.se (numera även mote.piratpartiet.se). Det var även där man höll årsmötena. Från bildandet t om våren 2009 var våra årsmöten och medlemsmöten som längst en helg långa. Efter det blev mötena mellan 7-14 dagar långa tills att de då nya stadgarna gick igenom och med start från Vårmötet 2011 blev våra medlemsmöten sex veckor långa som de vi har idag.

Alla tidigare medlemsmöten och årsmöten går att hitta här på forumet.

Från början användes forumets vanliga funktioner till mötena. Detta var smidigt för det behövdes ingen speciallösning för genomförandet. Däremot tog det mycket tid för presidiet att hantera det ökande antalet motioner. Till vårmötet 2011 började presidiet anpassa mötesplattformen för att göra mötena lättare att både hantera och att delta på. Johan Karlsson och Jörgen Lindell ligger bakom nästan uteslutande all kod för att förbättra våra medlemsmöten.

Utvecklingen av mötesplattformen har haft ett stort fokus på det deltagarna tar del av. De senaste åren har dock utvecklingsarbetet stannat av.

Verktyg

Mötespresidiet har sen 2011 använt teampaddor via piratenpad.de för att skriva ihop texter till mötena. Den äldsta paddan idag är 1339 dagar gammal. I huvudpaddan lagrar vi t ex kontaktuppgifter och en del andra uppgifter. Det är även där vi skriver under om att det vi tar del av stannar inom presidiet:

Sekretess för presidiet

Jag lovar att inte delge någon, utanför det presidium jag är medlem i, någonting av det som jag har tagit del av i presidiets kommunikationskanaler som inte varit avsett för publicering.

Till dagens datum är det endast en person i mötespresidiet som vägrat skriva under på den meningen.

För voice använder mötespresidiet Skype. Det finns även en skypekanal kopplad till xmpp som deltagare kan använda för att ställa frågor till mötespresidiet.

Utöver Skype och Teampaddor jobbar mötespresidiet främst via mötesplattformen som i grunden är vbulletin, samt phpmyadmin.

Att sätta upp mötesplattformen

För att kunna genomföra ett medlemsmöte behöver man konfigurera plattformen lite. Här är de saker som behöver göras för varje möte.

listaforum

Först behöver vi skapa ett par forum enligt bilden. Visningsordning 0 innebär att de inte är synliga på själva sidan.

skapatradar

Därefter behöver vi skapa ett gäng med inlägg i dessa nya forum, lite allmän information, stadgar, personvalstrådar som vi behöver ha id till senare, och handlingar generellt.

/*******************************************************************
         * Piratpartiets höstmöte 2014
         ******************************************************************/  

        $meetingid = 11; // mötets id-nummer
        $motesnamn[$meetingid] = 'Piratpartiets höstmöte 2014'; // namnet på mötet
        $this->valid_usergroup[$meetingid] = 16;  // användargrupp som  member_of_usergroup_set_in_settings kollar (ifall den är vald på raden  under)
        $attending_validation[$meetingid] =  'member_of_usergroup_set_in_settings'; // namnet på en funktion som  validerar ifall man har rätt att delta på mötet
        $visa_nominerade_default[$meetingid] = true; // ifall listan över nominerade ska vara utfälld eller inte som default
        $administration_group[$meetingid] = 30; // användargruppen som administrerar det här mötet  

        //platser på mötet
        $motesrot[$meetingid] = 882; // mötesroten
        $nomineringsforum[$meetingid] = 888;    // det forumet nominerar skapas i (dolt)
        $motionsforum[$meetingid] = 883;    // det forumet som motioner visas och skapas i
        $personvalsforum[$meetingid] = 884;    // det forumet personvalen visas i
        $kandideringsforum[$meetingid] = 884; //det forumet man svarar på kandideringar i och där utfrågningstrådarna visas
         $voteringstradar[$meetingid] = 889; //forumet som trådarna med pollarna  i skapas i. Rättigheter för partimedlemmar: Kan se forum, Kan se  innehåll i ämnen och Kan rösta i omröstningar. Presidiet: Alla ja.  Övriga: Alla nej.
        //ifall saker är tillåtna att göra eller inte
        $lagga_yrkande[$meetingid] = false;
        $dra_tillbaka_yrkande[$meetingid] = false;
        $lyfta_yrkande[$meetingid] = false;
        $motionera[$meetingid] = false;
        $nominera[$meetingid] = false;
        $acceptera_nominering[$meetingid] = false;
        $gilla_yrkande[$meetingid] = true;
        $redigera_nominering[$meetingid] = false;
        $rapportera_yrkande[$meetingid] = true;  

         //övriga inställningar som inte är riktigt inhackade än
        //id-n för de olika rollerna.  

        $roller[$meetingid]['styrelsen'][] = 'ledamot2015';
        $roller[$meetingid]['styrelsen'][] = 'ledamot2016';
        $roller[$meetingid]['styrelsen'][] = 'ledamot2017';
        $roller[$meetingid]['presidium'][] = 'ordforande';
        $roller[$meetingid]['presidium'][] = 'vice';
        $roller[$meetingid]['justerare'][] = 'justerare';
        $roller[$meetingid]['valberedning'][] = 'ledamot2015';
        $roller[$meetingid]['revisor'][] = 'revisor';
        $roller[$meetingid]['revisor'][] = 'ersattare2015'; 

        //namn på de olika rollgrupperna
        $roller_namn[$meetingid]['styrelsen'] = 'Partistyrelsen';
        $roller_namn[$meetingid]['presidium'] = 'Mötespresidium';
        $roller_namn[$meetingid]['justerare'] = 'Justerare';
        $roller_namn[$meetingid]['valberedning'] = 'Valberedning';
        $roller_namn[$meetingid]['revisor'] = 'Revisor';  

        //namn på de olika rollerna i rollgrupperna
        $roller_namn[$meetingid]['styrelsen_ledamot2017'] = 'Styrelseledamot till och med 2017';
        $roller_namn[$meetingid]['styrelsen_ledamot2016'] = 'Styrelseledamot till och med 2016 (fyllnadsval)';
        $roller_namn[$meetingid]['styrelsen_ledamot2015'] = 'Styrelseledamot till och med 2015 (fyllnadsval)';
        $roller_namn[$meetingid]['valberedning_ledamot2015'] = 'Ledamot i valberedningen till och med 2016';
        $roller_namn[$meetingid]['presidium_ordforande'] = 'Mötesordförande kommande period';
        $roller_namn[$meetingid]['presidium_vice'] = 'Vice mötesordförande kommande period';
        $roller_namn[$meetingid]['justerare_justerare'] = 'Justerare av mötets protokoll';
        $roller_namn[$meetingid]['revisor_revisor'] = 'Revisor 2015';
        $roller_namn[$meetingid]['revisor_ersattare2015'] = 'Revisorsersättare 2015'; 

        //vilka trådar som de olika rollgrupperna behandlas i
        $roller_tradar[$meetingid]['styrelsen'] = 39815;
        $roller_tradar[$meetingid]['presidium'] = 39812;
        $roller_tradar[$meetingid]['justerare'] = 39816;
        $roller_tradar[$meetingid]['valberedning'] = 39813;
        $roller_tradar[$meetingid]['revisor'] = 39814; 

        //frågor som ställs till kandidaterna
        $pp_fragor_svar[$meetingid][0]['kort_fraga'] = 'Ålder';
        $pp_fragor_svar[$meetingid][0]['kort_svar'] = '';
        $pp_fragor_svar[$meetingid][1]['kort_fraga'] = 'Bostadsort';
        $pp_fragor_svar[$meetingid][1]['kort_svar'] = '';
        $pp_fragor_svar[$meetingid][2]['kort_fraga'] = '';
        $pp_fragor_svar[$meetingid][2]['kort_svar'] = '';
        $pp_fragor_svar[$meetingid][3]['kort_fraga'] = '';
        $pp_fragor_svar[$meetingid][3]['kort_svar'] = '';
        $pp_fragor_svar[$meetingid][4]['kort_fraga'] = '';
        $pp_fragor_svar[$meetingid][4]['kort_svar'] = '';  

Alla möten har ett eget id. Höstmötet 2014 hade id 11. Resten är någorlunda självförklarande. Man anger vilka forum mötet ska hållas i, vilka inställningar som ska vara på eller av och vilka roller som det ska hållas val till. De som sitter i det aktuella mötespresidiet behöver finnas med i samma användargrupp.

Nästa sak att fixa är stilmallar, där hanteras de olika sidorna för när man ska nominera någon, nomineringsmail som går ut, och liknande.

$stylevar[htmldoctype]
<html xmlns="http://www.w3.org/1999/xhtml" dir="$stylevar[textdirection]" lang="$stylevar[languagecode]">
<head>
$headinclude
<script type="text/javascript">
function showinterface(ifacenamn) {
  var children = document.getElementById('kandidatbeskrivningar').childNodes;

  for(i=0; i < children.length; i++) {
    if(children[i].style)
      children[i].style.display = "none";
  }

  if(document.getElementById(ifacenamn).style)
    document.getElementById(ifacenamn).style.display = "block";

  if(ifacenamn == 'migsjalv') {
    document.getElementById('theform').setAttribute("onSubmit", '');
    document.getElementById('namnpadennominerade').innerHTML = 'Vad heter du?';
    document.getElementById('vadvilldunominerapersonentill').innerHTML = 'Vad kandiderar du till?';
	$(".vilkenpos").html('Vilken eller vilka roller kandiderar du till?');
  } else {
    document.getElementById('theform').setAttribute("onSubmit", 'return vB_Editor['vB_Editor_001'].prepare_submit(this.subject.value, 0)');
    document.getElementById('namnpadennominerade').innerHTML = 'Namnet på den nominerade:';
	$(".vilkenpos").html('Vilken eller vilka roller vill du nominera personen till?');
    document.getElementById('vadvilldunominerapersonentill').innerHTML = 'Vad vill du nominera personen till?';
  }
}
</script>
<title>$vboptions[bbtitle] - Nominera kandidat till förtroendeuppdrag</title>
</head>
<body$onload>
$header
$navbar
$postpreview
<form id="theform" action="newthread.php?do=postthread&amp;f=$forumid&amp;do2=nominering" method="post" name="vbform"<if condition="!is_browser('webtv')"> onsubmit="return vB_Editor['$editorid'].prepare_submit(this.subject.value, $vboptions[postminchars])"</if>>
<table class="tborder" cellpadding="$stylevar[cellpadding]" cellspacing="$stylevar[cellspacing]" border="0" width="100%" align="center">
<tr>
    <td class="tcat">
        <span class="smallfont" style="float:$stylevar[right]"><strong>$vbphrase[forum]</strong>: <a href="forumdisplay.php?$session[sessionurl]f=$foruminfo[forumid]">$foruminfo[title]</a></span>
        Nominera kandidat till förtroendeuppdrag
    </td>
</tr>
<tr>
    <td class="panelsurround" align="center">
    <div class="panel">
        <div style="width:$stylevar[formwidth]" align="$stylevar[left]">
<!-- FAQ -->
    <h3>
        Nominera till mötet</h3>

        <if condition="$motestexter = $vbulletin->motestexter"></if>
$motestexter[ny_nominering_info_top]

    <div id="accordion">
        <h3>
            <a href="#">Vad är att nominera?</a></h3>
        <div>
            Medlemsmötet kommer att göra en rad val. För att mötet ska kunna välja personer
            till de olika posterna måste dessa först ha föreslagits för mötet. Att föreslå en
            person till en post kallas för att nominera.
        </div>

        <h3>
            <a href="#">Vad innebär de olika posterna?</a></h3>
        <div>
                <i>Partistyrelsen</i> är partiets högsta beslutande organ näst efter medlemsmötet och fungerar som ett långsiktigt, beslutande och strategiskt organ för partiet och har ett kollektivt ansvar för partiets verksamhet och att medlemsmötets beslut genomförs.
                I partistyrelsens ansvar ingår särskilt: <br />a) att utforma förslag på reviderat principprogram,
                <br />b) att inför höstmötet utforma förslag till verksamhetsplan för nästa verksamhetsår,
                <br />c) att efter val av ny partistyrelse och avslutat verksamhetsår redovisa ekonomisk berättelse och verksamhetsberättelse inför kommande vårmöte, <br />d) att besluta om budget för verksamhetsåret och löpande redovisa ekonomiskt läge gentemot budget med största praktiskt möjliga transparens.
                <br /><br />
                  <i>Valberedningens</i> uppgift är att ta fram förslag på personer till de val som förrättas på medlemsmöte.
                   <br /><br />
                  <i>Revisorernas</i> uppgift är att, i enlighet med god revisionssed, granska partiets räkenskaper, förvaltning och verksamhet, samt att upprätta revisionsberättelse för det verksamhets- och räkenskapsår de blivit valda.
                            <br /><br />
                   <i>Mötespresidiet</i> administrerar partiets medlemsmöten och väljs för en mötesperiod av sex månader.
                                <br /><br />
                   <i>Mötesordförande</i> leder mötespresidiet och har utslagsröst i ordningsfrågor.
                                 <br /><br />
                    <i>Justerarnas</i> uppgift är att, när protokollet är skrivet, granska detta för att se att det överensstämmer med vad som beslutades på mötet.
        </div>
        <h3>
            <a href="#">Kan jag nominera samma person till flera poster?</a></h3>
        <div>
            Ja, men samma person kan inte väljas till olika poster hur som helst. Personen får till exempel
            inte sitta i styrelsen eller partiledningen om den väljs till mötespresidium, valberedning
            eller revisor. Men det hindrar inte att samma person föreslås till flera poster. Om personen
            inte meddelar oss i mötespresidiet andra önskemål i förväg kommer den att bli vald
            till ett längre mandat framför ett kortare, samt till styrelsen före en revisorsroll.
            Inom styrelsen och valberedningen rangordnas sammankallande över ledamot, samt att
            revisor tillsätts före dess ersättare.
        </div>
        <h3>
            <a href="#">Behöver jag fråga den jag nominerar?</a></h3>
        <div>
            Nej, men det skadar inte om du gör det.
        </div>
        <h3>
            <a href="#">Varför behöver behöver jag uppge mailadress och/eller telefonnummer?</a></h3>
        <div>
            Mötespresidiet kommer att kontakta alla personer som har nominerats för att tala
            om för dem att de har nominerats och be dem acceptera eller tacka nej till sin nominering.
            Därför behövs kontaktuppgifter till den du nominerar. I vissa fall
            kan uppgifterna även behövas för att kunna skilja en medlem från en annan.
        </div>
        <h3>
            <a href="#">Vem kan nomineras?</a></h3>
        <div>
            För att en person ska vara valbar krävs det att personen är medlem i partiet. Undantaget
            är posten som revisor samt revisors ersättare, vilka en person kan väljas till utan
            att vara medlem.
        </div>
    </div>
 <script>
        $(function () {
            $("#accordion").accordion({
                autoHeight: false
            });
        });
</script>
<br />
<!-- FAQ -->
        <fieldset class="smallfont" style="width:$stylevar[formwidth]">
      <legend>Vem vill du nominera?</legend>
        <input type="radio" name="vem" value="migsjalv" onclick="showinterface('migsjalv')"; $pp_nominering_vem_migsjalv /> Mig själv
        <input type="radio" name="vem" value="nagonannan" onclick="showinterface('nagonannan')"; $pp_nominering_vem_nagonannan /> Någon annan
    </fieldset>

                <table cellpadding="0" cellspacing="0" border="0" class="fieldset">
                    <tr>
                      <td class="smallfont">
              <br />
              <span id="namnpadennominerade">Namnet på den nominerade:</span>
              <br />
              <input type="text" class="bginput" name="subject" value="$subject" size="40" maxlength="$vboptions[titlemaxchars]" tabindex="1" />
              </td>
              <td class="smallfont" style="padding-left: 6px;">
              <br />
              <span id="vadvilldunominerapersonentill">Vad vill du nominera personen till?</span>
              <br />
              <script type="text/javascript">
                function visa_subinterface_kandiderartill(listan) {
                  for(var i = 0; i < listan.options.length; ++i)
                    if(listan.options[i].value != 'null')
                      if(document.getElementById('pp_nominering_kandiderartill_' + listan.options[i].value) != null)
                        document.getElementById('pp_nominering_kandiderartill_' + listan.options[i].value).style.display = 'none';
                  if(listan.options[listan.selectedIndex].value != 'null')
                    if(document.getElementById('pp_nominering_kandiderartill_' + listan.options[listan.selectedIndex].value) != null)
                      document.getElementById('pp_nominering_kandiderartill_' + listan.options[listan.selectedIndex].value).style.display = 'block';
                }

              </script>
              <select class="bginput" name="kandiderartill" id="selectkandiderartill" onchange="visa_subinterface_kandiderartill(this)">
                <option value="null">--- Välj i listan ---</option>
$vilkarollerskavivalja
		</select>
                      </td>
                    </tr>
                    <tr>
            <td class="smallfont" colspan="2">
              <br />
$vilkenrollkod
            </td>
          </tr>
        </table>
        <div id="kandidatbeskrivningar">
        <!-- start Nominera någon annan -->
            <div id="nagonannan" style="display: block;">
        <table cellpadding="0" cellspacing="0" border="0" class="fieldset">
                    <tr>
                      <td class="smallfont">
                        <br />
                        Mailadress* till den nominerade:
                        <br />
                        <input type="text" class="bginput" name="mailadress" value="$pp_nominering_mailadress" size="40" maxlength="$vboptions[titlemaxchars]" tabindex="1" />
                      </td>
                      <td class="smallfont" style="padding-left: 6px;">
                        <br />
                        Telefonnummer* till den nominerade:
                        <br />
                        <input type="text" class="bginput" name="telefonnummer" value="$pp_nominering_telefonnummer" size="40" maxlength="$vboptions[titlemaxchars]" tabindex="1" />
                      </td>
                    </tr>
                    <tr>
                      <td colspan="2" class="smallfont">*Vi behöver antingen mailadress eller telefonnummer (gärna båda) för att kunna kontakta den nominerade.<br /><br /></td>
                    </tr>
                </table>
                <!-- message area -->
                <div class="smallfont">Motivering till nomineringen:</div>
                $messagearea
                <!-- / message area -->
                <br />
            </div>
            <!-- end Nominera någon annan -->

            <!-- start Nominera Mig själv -->
            <div id="migsjalv" style="display: none;">

                <br />
                När du klickar på "Skicka in nominering" så registreras din kandidatur och du kommer till formuläret där du kan skriva din kandidatförklaring. Där accepterar du också din nominering.   <br />

                <br />
            </div>
      <!-- end Nominera Mig själv -->              

<script type="text/javascript">
showinterface('<if condition="$pp_nominering_vem_migsjalv">migsjalv<else />nagonannan</if>');
visa_subinterface_kandiderartill(document.getElementById('selectkandiderartill'));
</script>            

          </div>
        </div>
    </div>

    <div style="margin-top:$stylevar[cellpadding]px">
       Följande rader är borttagna pga diverse anledningar...
       ...
       ...
       ...
       ...
       ...
       ...
       ...
       ... 

    </div>
    </td>
</tr>
</table>
</form>
<br />
$footer
</body>
</html>

En del stilmallar är unika för varje möte. Andra är generella. T ex den för mail om nominering, den är generell och behöver ändras möte för möte. Utöver partiets medlemsmöten används även plattformen för Ung Pirats kongressombudsval och kongress, samt partiets val av riksdagslista och liknande.

När vi kommit så långt behöver vi fixa lite mer mötestexter.

motestexter

Tidigare låg allt detta i stilmallarna som nämndes ovan. För att göra det lite lättare har vissa saker lagts på sidan ovan. Siffrorna indikerar för vilket mötes id man vill ändra innehåll för. Om vi t ex går in på mötestexter för lista_kandidat_mitt nummer 11 hittar vi följande för höstmötet 2014:

motestexter2

Detta är text som sedan hamnar under rubriken på varje tråd som har med personval att göra. Likt (källa):

motestexter3

När vi har kommit så långt är det dags att fixa till vänstermenyn.

$motion2014H[] = array('<span style="float: right;"></span>Stadgar [avklarad]' => $motioner_a);
$motion2014H[] = array('<span style="float: right;"></span>Sakpolitik [avklarad]' => $motioner_b);
$motion2014H[] = array('<span style="float: right;"></span>Övrigt [avklarad]' => $motioner_c); 

$propp2014H[] = array('P01: Tillsättande av Personuppgiftsombud [avklarad]' => '/showthread.php?t=39818');
$propp2014H[] = array('P02: Utredning och tidtabell för organisations- och stadgerevision [avklarad]' => '/showthread.php?t=39819'); 

$dokument[] = array('Kallelse till höstmötet 2014' => '/showthread.php?p=292451&postcount=1');
$dokument[] = array('Valberedningens förslag' => '/showthread.php?p=292448&postcount=1');
$dokument[] = array('Piratpartiets stadgar' => '/showthread.php?p=292454&postcount=1');
$dokument[] = array('Mötesordning' => '/showthread.php?p=292468&postcount=4');
$dokument[] = array('Ordlista över mötestermer' => '/showthread.php?p=292453&postcount=1'); 

$dokument[] = array('Nuvarande förtroendevalda' => '/showthread.php?p=292450&postcount=1');
$dokument[] = array('Piratpartiets politik' => '/showthread.php?p=292452&postcount=1'); 

$fyllnadsval[] = array('<span style="float: right;"></span>Fyllnadsval styrelsen [avklarad]' => '/showthread.php?t=39815'); 

$root[] = array('<b>Mötet är nu avslutat. Tack alla som deltagit!</b>' => '/showthread.php?p=294379'); 

$sluttider['<b><span class="attrostai">Voteringar jag inte röstat i</span></b>']='2014-11-16 17:59:59';
$sluttider['<b>Samtliga öppna voteringar</b>']='2014-11-16 17:59:59'; 

$sluttider['Voteringspass 5 startar om (endast vid behov)']='2014-11-15 00:01:00';
$sluttider['<b>Deadline för att acceptera nominering är om</b>']='2014-10-13 18:59:59';
$sluttider['<b>Möjligheten att lägga yrkanden slutar om</b>']='2014-10-19 21:59:59';
$sluttider['<b>Möjligheten att lyfta tillbakadragna yrkanden stänger om</b>']='2014-10-22 21:59:59';
$sluttider['<b>Presidiets utkast till voteringsordningsförslag diskuteras i ytterligare</b>']='2014-10-29 23:59:59'; 

$root[] = array('<hr />Allmän information från presidiet' => '/showthread.php?p=292648&postcount=1'); 

$root[] = array('Tidsplan för mötet' => '/showthread.php?p=292649&postcount=2'); 

$root[] = array('<hr /><b>Dagordning</b>' => '/showthread.php?p=292449&postcount=1');
$root[] = array('<span style="float: right;"></span>1. Mötets öppnande [avklarad]' => '/showthread.php?p=292624&postcount=1');
$root[] = array('<span style="float: right;"></span>2. Mötets behörighet [avklarad]' => '/showthread.php?p=292643&postcount=1');
$root[] = array('<span style="float: right;"></span>3. Eventuellt godkännande av fyllnadsvalda mötespresidium [avklarad]' => '/showthread.php?p=292644&postcount=1');
$root[] = array('<span style="float: right;"></span>4. Val av två justerare [avklarad]' => '/showthread.php?t=39816');
$root[] = array('<span style="float: right;"></span>5. Godkännande av voteringsordningen [avklarad]' => '/showthread.php?t=39903');
$root[] = array('<span style="float: right;"></span>6. Eventuella bordlagda frågor från tidigare medlemsmöte [avklarad]' => '/showthread.php?p=292647&postcount=1');
$root[] = array('<span style="float: right;"></span>7. Propositioner [avklarad]' => $propp2014H);
$root[] = array('<span style="float: right;"></span>8. Motioner [avklarad]' => $motion2014H);
$root[] = array('<span style="float: right;"></span>9. Kommande års verksamhetsplan [avklarad]' => '/showthread.php?t=39849');
$root[] = array('<span style="float: right;"></span>10. Val av kommande års partistyrelse [avklarad]' => '/showthread.php?t=39815');
$root[] = array('<span style="float: right;"></span>11. Val av kommande års revisorer [avklarad]' => '/showthread.php?t=39814');
$root[] = array('<span style="float: right;"></span>12. Val av kommande års valberedning [avklarad]' => '/showthread.php?t=39813');
$root[] = array('<span style="float: right;"></span>13. Eventuella fyllnadsval [avklarad]' => $fyllnadsval);
$root[] = array('<span style="float: right;"></span>14. Val av mötespresidium för kommande mötesperiod [avklarad]' => '/showthread.php?t=39812');
$root[] = array('<span style="float: right;"></span>15. Mötets avslutande [avklarad]' => '/showthread.php?p=294379&postcount=1'); 

$root[] = array('<hr />Ordningsfrågor' => '/forumdisplay.php?f=885');
$root[] = array('Dokument' => $dokument);
$root[] = array('Reservationer' => '/forumdisplay.php?f=886');
$root[] = array('Ordet är fritt' => '/forumdisplay.php?f=887');
$root[] = array('Allmänna frågor till presidiet' => '/showthread.php?p=292473');

Koden ovanför körs sedan via lite trevlig kod och skapar detta:

vanstermenyn

För att göra arbetet med vänstermenyn lite lättare använder vi ett spreadsheet som ser ut så här:

tradomat

För att kunna lista voteringarna i vänstermenyn och därmed underlätta för mötesdeltagarna under voteringsveckorna behöver vi ändra lite mer kod.

$userid = $vbulletin->userinfo['userid'];
if($userid) {
//hämta alla voteringarna som är aktiva just nu
    $sql = "SELECT vb_pp_votering.voteringid, t1.threadid AS pollthreadid,  t1.title, pollvoteid
                    FROM vb_poll
                    LEFT JOIN vb_pollvote ON vb_poll.pollid = vb_pollvote.pollid
                    AND vb_pollvote.userid = $userid
                    LEFT JOIN vb_thread t1 ON vb_poll.pollid = t1.pollid
                    LEFT JOIN vb_pp_votering ON vb_pp_votering.pollid = vb_poll.pollid
                    WHERE t1.forumid IN (883, 882, 884, 889, 888)
                    AND t1.open = 1 AND vb_poll.active = 1"; 

    $res = $db->query_read($sql);
    $orostade_voteringstradar = array();
    $orostade_voteringar = array();
    $alla_voteringstradar = array();
    $alla_voteringar = array();
    while($row = $db->fetch_array($res)) {
        //samla in dom voteringarna som man har röstat i
        //pollvoteid == NULL betyder att man inte röstat i den voteringen
        if($row['pollvoteid'] == '') {
            //voteringid == NULL betyder att det är en "gammaldags" votering
            if($row['voteringid'] == '') {
                if($row['pollthreadid'] != 35754) //fulhack
                    $orostade_voteringstradar[$row['pollthreadid']] = $row['title'];
            } else {
                $orostade_voteringar[] = $row;
            }
        }
        //samla in alla voteringarna
        //voteringid == NULL betyder att det är en "gammaldags" votering
        if($row['voteringid'] == '') {
            if($row['pollthreadid'] != 35754) //fulhack
                $alla_voteringstradar[$row['pollthreadid']] = $row['title'];
            } else {
            $alla_voteringar[] = $row;
        }
    }
    //hämta trådarna för alla "nya" voteringarna
    $vs = array();
    foreach($alla_voteringar AS $v) {
        $vs[] = $v['voteringid'];
    }
    if(count($vs) > 0) {
        $vs_str = implode(',',$vs);
        $sql = "SELECT vb_thread.threadid, vb_thread.title, vb_pp_votering.voteringid FROM vb_thread
        LEFT JOIN vb_pp_votering ON vb_pp_votering.motionid = vb_thread.motionid
        WHERE vb_pp_votering.voteringid IN ($vs_str)
        AND vb_thread.motionid > 0  AND vb_pp_votering.meetingid = 11";
        $res = $db->query_read($sql);
        while($row = $db->fetch_array($res)) {
            $alla_voteringstradar[$row['threadid']] = $row['title']; 

            //kolla ifall det är en oröstad votering också
            foreach($orostade_voteringar AS $or_v) {
                if($row['voteringid'] == $or_v['voteringid']) {
                    $orostade_voteringstradar[$row['threadid']] = $row['title'];
                }
            }
        }
    } 

Genom att ändra id på raden där det ovan stod ”883, 882, 884, 889, 888” till de forum id som det aktuella mötet har vet systemet var den ska leta efter voteringar och sedan genom annan kod lägga upp det till mötesdeltagaren i vänstermenyn.

När allt detta är gjort och alla texter är ihopskrivna så är det dags för nästa steg. Kallelsen.

Kallelse

4.1.2 Partistyrelsen ansvarar för att kalla till medlemsmöte, dels via partiets hemsida samt via e-post till de medlemmar som har gett partiet sin adress.

Partistyrelsen har oftast medvetet, och någon enstaka gång omedvetet delegerat kallelsen till mötespresidiet.

Själva kallelsen är ganska enkel. Höstmötets kallelse såg ut så här:

Kallelse till Piratpartiets höstmöte 2014

Styrelsen kallar härmed till höstmöte för Piratpartiet. Mötet startar måndagen den 6 oktober klockan 19.00 och slutar sex veckor senare, söndagen den 16 november klockan 19.00.

Höstmötet kommer att äga rum på partiets mötesplattform https://mote.piratpartiet.se och alla medlemmar är hjärtligt välkomna att delta. I mötets omröstningar har du som varit medlem i minst två månader innan omröstningens start rösträtt. Är du osäker på om du har rösträtt kan presidiet hjälpa dig att kontrollera detta.

Höstmötet kommer som vanligt att välja personer till förtroendeuppdrag inom partiet (se komplett lista längre ner), samt anta en verksamhetsplan för 2015. Utöver detta kommer mötet även att behandla styrelsens propositioner och mötet kommer även ta ställning till medlemmarnas insända motioner. Mer information om hur du skickar in motioner finns längre ner.

Denna kallelse innehåller följande rubriker:
Dagordning för mötet
Val på mötet
Valberedningens förslag
Nomineringar till valen
Skicka in motioner
Möteshandlingar
Aktuella uppgifter i Pirateweb?
Delta på mötet, hur gör jag?
Har du några frågor?

Dagordning för mötet
På höstmötet behandlas endast följande punkter:
1. Mötets öppnande
2. Mötets behörighet
3. Eventuellt godkännande av fyllnadsvalda mötespresidium
4. Val av två justerare
5. Godkännande av voteringsordningen
6. Eventuella bordlagda frågor från tidigare medlemsmöte
7. Propositioner
8. Motioner
9. Kommande års verksamhetsplan
10. Val av kommande års partistyrelse
11. Val av kommande års revisorer
12. Val av kommande års valberedning
13. Eventuella fyllnadsval
14. Val av mötespresidium för kommande mötesperiod
15. Mötets avslutande

Diskussion i samtliga ärenden kommer att starta i samband med mötets öppnande. Dagordningens punkt två till fyra kommer att behandlas under mötets första dagar. Punkt fem kommer att behandlas under mötets fjärde vecka. Samtliga voteringar i punkt sex till 14 i dagordningen kommer att hållas de sista två veckorna av mötet.

Val på mötet
Följande förtroendeuppdrag ska väljas på mötet:

Styrelsen
1 st ledamot, med mandat t o m 2015-12-31 (fyllnadsval)
1 st ledamot, med mandat t o m 2016-12-31 (fyllnadsval)
5 st ledamöter, med mandat t o m 2017-12-31

Valberedningen
3 st ledamöter, med mandat tom 2016-12-31

Revisorer
2 st revisorer, med mandat t o m 2015-12-31
2 st personliga ersättare, med mandat t o m 2015-12-31

Mötespresidiet
1 st mötesordförande för kommande mötesperiod
6 st rangordnade vice mötesordföranden för kommande mötesperiod

Valberedningens förslag
Valberedningen har inkommit med förslag och det är inlagt i mötessystemet. En sammanställning av valberedningens förslag finns här: https://mote.piratpartiet.se/showthread.php?t=39802

Nomineringar till valen
Vill du föreslå dig själv eller någon annan till de val som ska hållas på medlemsmötet behöver du skicka in en nominering. Senast söndagen 5 oktober klockan 23.59 måste du ha nominerat via https://mote.piratpartiet.se/forumdisplay.php?f=890

Skicka in motioner
Som medlem är du välkommen att skicka in ett eller flera förslag på beslut, vilket kallas motioner, till medlemsmötet. Motioner ska vara inskickade via https://mote.piratpartiet.se/forumdisplay.php?f=891 senast söndagen 5 oktober klockan 23.59 för att behandlas på det här medlemsmötet. Motioner som inkommer senare behandlas istället på vårmötet 2015.

Möteshandlingar
Styrelsens förslag till verksamhetsplan 2015: Saknas
Styrelsens propositioner: https://mote.piratpartiet.se/forumdisplay.php?f=883
Valberedningens förslag: https://mote.piratpartiet.se/showthread.php?t=39802
Allmänna motioner: https://mote.piratpartiet.se/forumdisplay.php?f=883 - motionerna visas enligt stadgan upp samma dygn som mötet öppnas.

Aktuella uppgifter i Pirateweb?
Mötespresidiet kommunicerar med dig med hjälp av de uppgifter som finns i partiets medlemshanteringssystem PirateWeb. Har du fel epostadress eller mobilnummer kan vi tyvärr inte nå dig med viktig information. Gå därför gärna in där och kontrollera att de uppgifterna stämmer. https://pirateweb.net/Pages/v4/v3/Account/BasicDetails.aspx

Delta på mötet, hur gör jag?
För att kunna delta på mötet krävs det att du är inloggad, Du kan logga in med för- och efternamn, mailadress eller medlemsnummer tillsammans med samma lösenord som du har till PirateWeb. Har du inte redan ett forumanvändarnamn kommer du att få välja ett när du loggar in första gången. Har du ett gammalt forumanvändarnamn så går det givetvis bra att fortsätta logga in med detta, tillsammans med tillhörande lösenord. Om du vill rösta så måste det dock vara kopplat till ditt medlemskap i PirateWeb.

Du som glömt ditt lösenord till PirateWeb kan få ett nytt genom att klicka här:
https://pirateweb.net/Pages/Public/SE/People/RequestNewPassword.aspx

Har du problem att logga in, eller frågor om ditt medlemskap, kontakta mötespresidiet via denna epostadress så hjälper vi dig: motespresidiet@piratpartiet.se

Har du några frågor?
Du når mötespresidiet genom att maila [email]motespresidiet@piratpartiet.se[/email] eller skriv din fråga i tråden för allmänna frågor https://mote.piratpartiet.se/showthread.php?p=292473

Väl mött på medlemsmötet!

/Styrelsen och mötespresidiet

Kallelsen skickas sen via mötespresidiets konto på pirateweb.

Nomineringar

När kallelsen gått ut till medlemmarna är nästa steg att öppna upp för nomineringar och motioner. Genom att sätta ”$nominera[$meetingid] = true;” i inställningarna går det att börja nominera kandidater. För att de nominerade ska kunna hantera sina nomineringar behöver de få en nomineringskod.

shownominerade

Mötespresidiet har en sida med en lista över alla nominerade, deras nomineringskod, kontaktuppgifter, roller personen blivit nominerad till, vem som nominerat personen, samt den viktiga biten här, möjligheten att skicka ut mail och sms om detta med en enkel knapptryckning. Detta fungerar så länge personen som nominerat någon har angett korrekta kontaktuppgifter.

kontaktuppgifter

Om vi skulle behöva ändra de angivna kontaktuppgifter behöver vi gå in i databasen via phpmyadmin för att korrigera detta.

När mötet öppnar och det ska gå att börja acceptera nomineringar och inte längre gå att nominera personer behöver ”$nominera[$meetingid] = true;” sättas till false. ”$acceptera_nominering[$meetingid] = false;” och ”$redigera_nominering[$meetingid] = false;” behöver sättas till true. När deadline att acceptera sina nomineringar har passerat behöver dessa sättas till false igen och stilmallen nomineringar behöver uppdateras så att rutan för att ange sin unika kod inte syns längre.

I nästa del

Nästa del kommer att behandla hela processen kring motioner.