at bygge din startende med folkesundhedsprogrammet: aftale et møde

, startende med folkesundhedsprogrammet: bygge din aftale et møde,,,,, 117,,,,,,,, 9,,,,,,, det cyber - mandag envato tuts + kurser vil blive reduceret til $3.- og' t miss. denne post er en del af en serie kaldet bygge din startende med folkesundhedsprogrammet. bygge din startende med folkesundhedsprogrammet: bruger indstillinger, profil, billeder og kontakt detailsbuilding din startende med folkesundhedsprogrammet: planlægning, tilgængelighed og valg,,, hvad du vil lave, denne lektion er en del af startende med folkesundhedsprogrammet bygge din serie om tuts +.i denne serie, jeg leder dig gennem iværksættelse af en startkapital fra idé til virkelighed ved hjælp af mit møde kalender app som et eksempel fra det virkelige liv.hvert skridt på vejen, vi åbner mødet planner kode som open source - eksempler, de kan lære af.vi vil også tage fat på nystartede forbundne forretningsmæssige spørgsmål, efterhånden som de opstår.,, i koden for møde kalender er skrevet i yii2 ramme for folkesundhedsprogrammet.hvis du vil lære mere om yii2, tjek lige vores række   programmering med yii2   på tuts +.du kan også vil se min viden sted, for   yii2 spørgsmål,   den yii2 udvikler udveksling, i de sidste seks tutorials, vi har lagt grundlaget for ansøgning om støtte på en række forskellige måder: brugere, steder, kontakter, indstillinger og lokalisering.jeg vil vædde på, at du vil være så meget, som jeg er, at vi er klar til at begynde at opbygge de planlægge et møde funktionalitet.tak for deres tålmodighed, som jeg har bygget den infrastruktur for sjov, integrerende dele af denne ansøgning, dog kodning tutor til støtte for planen møde funktioner vil strække sig over mindst fire episoder.de næste to episoder vil fokusere mest på at opbygge støtte til den grundlæggende bruger erfaring, at deltageren, sted og dato og tidspunkt for et møde, og at opbevare det i databasen.efter det, vil vi   dække at møde anmodning via e - mail.  , vi kommer tilbage senere i serien for at optimere og polske brugergrænsefladen, fordi det er afgørende for gennemførelsen af dette produkt; den vigtigste opgave for det senere ajourføring vil være at fjerne side styrker i møde, og opbygning af planlægningsprocessen. funktioner for denne tutorielle krævede en masse kode nogle auto, der genereres af yii er gil, og en del af i hånden.på grund af kompleksiteten ved at levere de første dele af dette element, jeg fokuserede på en temmelig rudimentær brugerflade, som jeg pudser iteratively.,, at opbygge dette træk berører så mange aspekter af programmerne i yii2 ramme: aktive rekord, migration, forbindelser og valideringer, gil kode generation bootstrap, yii2 jquery eu - udvidelser og widgets. alex, at delvis synspunkter, tør kodning praksis osv. det var vanskeligt at vælge hvad dækker her.   ser du mange ændringer til det register fra tidligere tutorielle episoder.,, hvis du har spørgsmål eller kommentarer, bedes de sende dem under.jeg vil deltage i drøftelserne, de møder, side, bootstrap tekniske vurderingsorganer, en af de første ting, jeg skal gøre, er at opbygge forskellige tekniske vurderingsorganer for møder fremtid i fortiden og aflyst.,,,,, gennemførelsen af dette er blot endnu et eksempel på, hvor stor bootstrap er, og hvor fast den yii2 integration er bootstrap 3 x støvlestrop. har før byggede øje.,,, meetingcontroller, vi før belastning, for hver af de typer møder og gøre indeks synspunkt:,, offentlig funktion actionindex() (//add filter for kommende eller tidligere $upcomingprovider = nye activedataprovider (["spørgsmål" = > møde: find() - > joinwith ('participants') - > hvor (['owner_id = > yii: $app - > brugeren - > getid()]) - > eller (['participant_id = > yii: $app - > brugeren - > fåId()])->andWhere(['Meeting.status'=>[Meeting::STATUS_PLANNING,Meeting::STATUS_CONFIRMED]]), ]); $pastProvider = new ActiveDataProvider([ 'query' => Meeting::find()->joinWith('participants')->where(['owner_id'=>Yii::$app->user->getId()])->orWhere(['participant_id'=>Yii::$app->user->getId()])->andWhere(['Meeting.status'=>Meeting::STATUS_COMPLETED]), ]); $canceledProvider = new ActiveDataProvider([ 'query' => Meeting::find()->joinWith('participants')->where(['owner_id'=>Yii::$app->user->getId()])->orWhere(['participant_id'=>Yii::$app->user->getId()])->andWhere(['Meeting.status'=>Meeting::STATUS_CANCELED]), ]); return$- > de ('index "[" upcomingprovider = > $upcomingprovider, pastprovider = > $pastprovider, canceledprovider = > $canceledprovider]);}, så i indekset, mener, at vi skal gennemføre vores bootstrap kode med tab ruder:,, < h1 > <?= $- > titel?> < /h1 > <!- nav tabs - > < ul klasse = "nav nav - øje" rolle = "det" > < li klasse = "aktive" > < en href = "# kommende" rolle = "tab" data greb = "tab" > kommende < /a > < /li > < li > < en href = "# fortid" rolle = "tab" data greb = "tab" > tidligere < /a > < /li > og lt; li > < en href = "# aflyst" rolle = "tab" data greb = "tab" > aflyst < /a > < /li > < /ul > <!- regning ruder - > < div klasse = "regning indhold" > < div klasse = "tab var aktive" id = "kommende" > < div klasse = "møde indeks" > <?= $- > de ('_grid "[" dataprovider = > $upcomingprovider]).> < /div > <!- udgangen af kommende møder regning - > < /div > < div klasse = "regning..." id = "tidligere" > <?= $- > de ('_grid "[" dataprovider = > $pastprovider]).> < /div > <!- afslutning af tidligere møder regning - > < div klasse = "regning..." id = "lukket" > <?= $- > de ('_grid "[" dataprovider = > $canceledprovider]).> < /div > <!- udgangen af aflyst møder regning - > < /div >,, som vi gå dybere ind i denne serie, lægger jeg en masse placeholders arbejde at gøre.en af dem er at gennemføre disse tab ruder via ajax, så vi er ikke laste tre forespørgsler op foran.,, en sporing, jeg skal også begynde at skabe billetter i spørgsmål efter ansøgning   fyrtårn for mit fremtidige arbejde for at gøre det lettere trackable.jeg vil tale om fyr i en fremtidig tutor.,,,,,, hvad der er bag aftale et møde?,, de simple opgave at skabe en ramme for at aftale et møde viste sig at være meget kompliceret og detaljeret under motorhjelmen.jeg tager til polske denne i etaper, som vi bevæger os gennem den serie.,, min første mål var at skabe rammebetingelser, så jeg kunne begynde afprøvning af elementer i møde planlægning.,, møder, består af en håndfuld activerecord data modeller, f.eks. deltager, meetingtime, meetingplace, meetingnote osv. jeg oprindeligt ville bare bruge yii kode generation til at bygge ud skidt for hver af disse modeller og integrere den i en samlet planlægning. side, er det tanken at bruge mvc bygge alle disse aktioner, at tørre metode, så meget som muligt.i første omgang grænsefladen vil arbejde gennem side styrker, men senere vil vi komme tilbage og integrere alle disse modeller via ajax med samme mvc kode.,, skabe et møde form, for mange af de modeller, jeg begyndte med at gennemgå den proces, der er beskrevet i tidligere tutorials med yii er code generator, "at bygge æsel.så jeg tilpassede dem efter behov.nu, er jeg fast i et meget grundlæggende skabe et møde, som det ikke engang omfatter deltagerens e - mail adresse endnu.dette gør det muligt for mig at hurtigt skabe en grundlæggende møde rekord og arbejde med planlægningen side.,,,,, når form er indgivet, kan du se møde side.jeg vil ændre denne form, og den indledende proces i gang.,,, møde side,,, husker du min model for det første lektion i denne serie.,,,,, her er et tidligt i den form, jeg har,,,,, arbejde: der er tonsvis af infrastruktur, kode (både automatisk genereres manuelt, der genereres) og for det tredje part widgets involveret i at få det til at ske.jeg vil hjælpe dig igennem det stykke for stykke.,, bootstrap paneler og tabeller, og ikke den endelige udformning, jeg valgte at bruge bootstrap   paneler  , at organisere side mellem egenskaber, opsamlingssteder, - datoer og tidspunkter og noter.   side i sig selv er leveret af mødet registeransvarlige, lyset, foranstaltninger og opfordrer til delvis udsigt til bestemte modeller for hvert af disse.,, jeg behøvede ikke at bygge det på denne måde, men jeg kun ønskede at gøre brug af alle yii er indbygget mvc ramme og integrere det så meget som muligt.mit håb er, at det i fremtiden vil være lettere at ajaxify hele page, reducere side styrker og øger kildekode enkelhed og vedligehold.,, her er hvordan mødet finansinspektørens mening foranstaltninger virker.masser   activedataproviders   for hver af de modeller, og så gør det møde på fil: /* * * viser et enkelt møde model.* @ param heltal $id * @ tilbage blandet * /offentlige funktion actionview ($id) ($timeprovider = nye activedataprovider (["spørgsmål" = > meetingtime: find() - > hvor (['meeting_id = > $id]),]); $noteprovider = nye activedataprovider (["spørgsmål" = > meetingnote: find() - > hvor (['meeting_id = > $id]),]); $placeprovider = nye activedataprovider (["spørgsmål" = > meetingplace: find() - > hvor (['meeting_id = > og $id]),]); $participantprovider = nye activedataprovider (["spørgsmål" = > deltager: find() - > hvor (['meeting_id = > $id]),]); $model = $- > findmodel ($id); $model - > prepareview();tilbage til $- > de ('view "[" model "= > $model, participantprovider = > $participantprovider, timeprovider = > $timeprovider, noteprovider = > $noteprovider, placeprovider = > $placeprovider,])), delvis udsigt, ved hjælp af alle synspunkter i hver af de associerede modeller, er det let at vise hele tiden side med mvc delvis synspunkter.mødet synspunkt, gør alle, _panel, synspunkter om andre modeller.du kan se dokumentation for yii2 er gøre metode her.,, <?= $- > de ("... /deltager /_panel" ["model" = > $model, participantprovider = > $participantprovider]).> <?= $- > de ("... /møde sted /_panel" ["model" = > $model, placeprovider = > $placeprovider]).> <?= $- > de ("... /tid /_panel" ["model" = > $model, timeprovider = > $timeprovider]).> <?= $- > de ("... /møde note /_panel" ["model" = > $model, noteprovider = > $noteprovider]).>, mangler modeller, i opbygningen af denne funktion, indså jeg, at jeg har forsømt et par nødvendige modeller:, meetingplacechoice, og meetingtimechoice,.disse skal opbevare den rejsearrangoer og deltager (er) til rådighed for specifikke, meetingplaces, og meetingtimes,.,, her er den migration, meetingplacechoice:,, $- > createtable ("{{% meeting_place_choice}}" ["id = > skema: type_pk, meeting_place_id = > skema: type_integer." for "," user_id = > skema: type_bigint. "for", "status" = > skema: type_smallint. "ikke for misligholdelse 0, created_at = > skema: type_integer. "ikke for "," updated_at = > skema: type_integer. "ikke for "], $tableoptions); $- > addforeignkey ('fk_mpc_meeting_place", "{{% meeting_place_choice}}", "meeting_place_id", "{{% meeting_place}}", "id", "c", "c"); $- > addforeignkey ('fk_mpc_user_id "," {{% meeting_place_choice}} "," user_id "," {{% bruger}} "," id "," c "," c "), og her er den migration, meetingtimechoice:,, $- > createtable (" {{% meeting_time_choice}} "[" id = > skema: type_pk, meeting_time_id = > skema: type_integer. "for", "user_id = > skema: type_bigint." for "," status "= > skema: type_smallint."ikke for misligholdelse 0, created_at = > skema: type_integer. "ikke for "," updated_at = > skema: type_integer. "ikke for "], $tableoptions); $- > addforeignkey ('fk_mtc_meeting_time", "{{% meeting_time_choice}}", "meeting_time_id", "{{% meeting_time}}", "id", "c", "c"); $- > addforeignkey ('fk_mtc_user_id "," {{% meeting_time_choice}} "," user_id "," {{% bruger}} "," id "," c "," c "), yii er activerecord migration gør det let at programmatically udvide databasen schema som dit produkt skrider frem. disse modeller bestemme tilstand af kontakten widgets (hvilket bruger tilgængelighed) se ovenfor i rækkerne for hvert sted, dato og tidspunkt.i det følgende lektion, jeg følger dig i, hvordan vi aktivere disse widgets og bruge ajax i yii til at ajourføre deres stat uden en side opdater.,, tidsplanlægning indberetninger,,, prepareview, bestemmer den status af mødet og, om nødvendigt, advarer brugeren, at opfordringen har ikke sendt:,,, offentlig funktion prepareview() {$- > setviewer(). $- > cansend(). $- > canfinalize(); //har opfordring blevet sendt, hvis ($- > cansend()) (yii: $app - > samling - > setflash herom (»advarsel«, yii:: t ('frontend, denne invitation er endnu ikke blevet fremsendt. ')) //- hvis sendte, licitation åbnet //- hvis ikke er afsluttet, er det inden for 72 timer, 48 timer), yii har indbygget støtte til visning af   bootstrap indberetninger, kaldet glimt:,,,,, kommando knapper, her er koden for eksempel møde opfattelse container med kommando knapper vist ovenfor:,, < div klasse = "panel panel default" > <!- default - panelet indhold - > < div klasse = "panel under overskriften" > < div klasse = "ror" > < div klasse = "col-lg-12" > < h1 > <?= html: koder ($- > afsnit).> < /h1 > < /div > < /div > < /div > < div klasse = "panel" > <?= $model - > besked?> < /div > < div klasse = "panel fod" > < div klasse = "ror" > < div klasse = "col-lg-6" > < /div > < div klasse = "col-lg-6" > < div stil = "flyde:," > <?= html: en (yii:: t ('frontend "," send ") ['finalize", "id = > $model - > id], ['class = > btn btn primære".- model - > isreadytosend? "handicappede: '')]).> <?= html: en (yii:: t ('frontend, færdiggøre ") ['finalize", "id = > $model - > id], ['class = > btn btn succes".- model - > isreadytofinalize? "handicappede: '')]).> <?= html: en ("['cancel", "id = > $model - > id], ['class = > btn btn primære glyphicon glyphicon fjerne btn fare,'title = > yii:: t ('frontend,'cancel ')]).> <?= html: en ("['update", "id = > $model - > id], ['class = > btn btn primære glyphicon glyphicon blyant,'title = >'edit ']).> < /div > < /div > < /div > <!- sidste række - > < /div > < /div >,, hver knap er skabt med yii er html hjælper og bootstrap knap styles:,, <?= html: en (yii:: t ('frontend "," send ") ['finalize", "id = > $model - > id], ['class = > btn btn primære".- model - > isreadytosend? "handicappede: '')]).>,, for den annullerer og redigere egenskaber, knapper, jeg plejede   glyphicons.glyphicons er smukke og frit medtages med bootstrap og integreret med yii2.,, hvad disse ordrer?,, når brugeren har tilføjet en deltager, og mindst ét sted og dato og tidspunkt, han eller hun kan sende en invitation.denne funktion vil levere et møde invitation til brugeren via e - mail, som jeg vil beskrive i en kommende lektion snart.  ,,, færdiggøre, knap tillader rejsearrangøren (eller deltager), til at ændre situationen i møde fra planlægning til kommende.tanken er, at når et sted og dato er valgt, møde kan være "klar".forud for denne, deltager vil have en chance for at evt. foreslå andre steder og dato, tid og arrangøren (eller dem begge) vil have mulighed for at vælge det sidste sted og dato.,,, ophæve, knap vil aflyse mødet og flytte den til de aflyste regning på møder   side.,, deltagere, næste, brugerne vil tilføje.  ,,,,, kan det også være nyttigt at give brugerne til at tage noter på særlige steder, dato og tid.jeg kan f.eks. udpege det her kommer til at fungere godt i mig på torsdag formiddag, men ikke fredag eftermiddag "eller", hvis de vælger denne gang, kan vi gøre det på cafe vita på capitol hill ".hvis du har en mening om dette element, som vil tilføje en bemærkning om kompleksiteten) - post under, med paneler, for hver af de modeller, som vi brugte samme hierarki af synspunkter og yii2 komponenter.mødet registeransvarlige gør for, _panel.php i, jeg frontend. synspunkter. møde sted:,, <?folkesundhedsprogrammet aspektet anvendelse yii. hjælpere. html; anvendelse yii. widgets. listview;?> < div klasse = "panel panel default" > <!- default - panelet indhold - > < div klasse = "panel under overskriften" > < div klasse = "ror" > < div klasse = "col-lg-6" > < h4 > <?= yii:: t ('frontend,'places)?> < /h4 > < /div > < div klasse = "col-lg-6" > < div stil = "flyde:," > <?= html: en ("['meeting-place /skabe", "meeting_id = > $model - > id], ['class = > btn btn primære glyphicon glyphicon plus]).> < /div > < /div > < /div > < /div > <?folkesundhedsprogrammet aspektet om ($placeprovider - > tæller > 0):?> < tabel klasse = "bord" > < thead > < tr - klasse = "lille overskrift" > < td > < /td > < td > <?= yii:: t ('frontend ", og du").> < /td > < td > <?= yii:: t ('frontend,'them)?> < /td > < td > <?folkesundhedsprogrammet aspektet om ($placeprovider - > tæller > 1) echo yii:: t ('frontend,'choose)?> < /tr > < /thead > <?= listview: widget (["dataprovider = > $placeprovider, itemoptions = > ['class = >" post "," layout '= > (punkter), itemview = > _list "," viewparams = > ['placecount = > $placeprovider - > tæller]).> < /tabel > <?php andet:?> <?folkesundhedsprogrammet aspektet endif;?> < /div >,, en skitse af bootstrap forenelig tabel i, _panel. folkesundhedsprogrammet.så bruger vi det   yii2 listview   widget udviser hver række oplysninger i en tabel.det, itemview, delvis er i _list. php,.,,, bemærke, at vi gennem en skik variable ringede, placecount via  , viewparams,.det er nyttigt for konfigureringen af de knapper i tabellen, her er den, _list.php, opfattelse, som jeg dækker langt mere indgående i næste lektion, herunder skifte input widgets og ajax gennemførelse.,, <?folkesundhedsprogrammet aspektet anvendelse yii. hjælpere. html; anvendelse yii. hjælpere. baseurl; brug. kartik. switchinput. switchinput;?> < tr > < - stil > <?= html: en ($model - > - > navn, baseurl: home(). /stedet /". $model - > - > kugle?> < /td > < - stil > <?foreach ($model->meetingPlaceChoices as $mpc) { if ($mpc->user_id == $model->meeting->owner_id) { if ($mpc->status == $mpc::STATUS_YES) $value = 1; else $value =0; echo SwitchInput::widget([ 'type'=>SwitchInput::CHECKBOX, 'name' => 'meeting-place-choice', 'id'=>'mpc-'.$mpc->id, 'value' => $value, 'pluginOptions' => ['size' => 'mini','onText' => '<i class="glyphicon glyphicon-ok"></i>','offText'=>'<i class="glyphicon glyphicon-remove"></i>','onColor' => 'success','offColor' => 'danger',], ]); }}?> < /td > < - stil > <?foreach ($model->meetingPlaceChoices as $mpc) { if (count($model->meeting->participants)==0) break; if ($mpc->user_id == $model->meeting->participants[0]->participant_id) { if ($mpc->status == $mpc::STATUS_YES) $value = 1; else if ($mpc->status == $mpc::STATUS_NO) $value =0; else if ($mpc->status == $mpc::STATUS_UNKNOWN) $value =-1; echo SwitchInput::widget([ 'type'=>SwitchInput::CHECKBOX, 'name' => 'meeting-place-choice', 'id'=>'mpc-'.$mpc->id, 'tristate'=>true, 'indeterminateValue'=>-1, 'indeterminateToggle'=>false, "handicappede" = > sandt, "værdi" = > $værdi, pluginoptions = > ['size = > "mini",'ontext = > < - klasse = "glyphicon glyphicon okay" > < jeg >,'offtext = > < - klasse = "glyphicon glyphicon fjerne" > < jeg > ",'oncolor = >" succes ",'offcolor = >" fare "]);}}?> < /td > < - stil > <?if ($placeCount>1) { if ($model->status == $model::STATUS_SELECTED) { $value = $model->id; } else { $value = 0; } echo SwitchInput::widget([ 'type' => SwitchInput::RADIO, 'name' => 'place-chooser', 'items' => [ [ 'value' => $model->id], ], 'value' => $value, 'pluginOptions' => [ 'size' => 'mini','handleWidth'=>60,'onText' => '<i class="glyphicon glyphicon-ok"></i>','offText'=>'<i class="glyphicon glyphicon-remove"></i>'], 'labelOptions' => ['style' => 'font-size: 12px'], ]); }?> < /td > < /tr >,, datoer & gange, at tilføje datoer og tidspunkter, vi integrere bootstrap jquery dato, tid og så   gennem 2amigos yii2 dato forlængelse,,,,, <?folkesundhedsprogrammet aspektet anvendelse yii. hjælpere. html; anvendelse yii. widgets. activeform; anvendelse dosamigos. datetimepicker. datetimepicker; /* @ var $denne yii. web. betragtning * /* @ var $model frontend. modeller. meetingtime * /* @ var $form yii. widgets. activeform * /?> < div klasse = "tid form" > < div klasse = "ror" > < div klasse = "col-md-4" > <?php $form = activeform: begin();?> <?= datetimepicker: widget (["model" = > $model, attribut = > "start", "sprog" = > "en", "størrelse" = > "ms", "clientoptions = > [" autoclose = > og sandt, format = > mm dd, åååå tt: ii p "," todaybtn = > sandt, minutestep = > 15, pickerposition = > nederste, venstre,]]).> < /div > < /div > < div klasse = "clearfix" > < p > < /div > < div klasse = "ror" > < div klasse = "col-md-4" > < div klasse = "gruppe" > <?= html: submitbutton ($model - > isnewrecord?yii:: t ('frontend "," tilføjer "): yii:: t ('frontend", "ajourføring") ['class = > $model - > isnewrecord? "btn btn succes: btn btn primære ']).> < /div > < /div > < /div > <?folkesundhedsprogrammet aspektet activeform: end();?>, er der et par forbedringer, vil jeg gerne gøre denne dims i fremtiden.jeg vil gerne gøre det åbent automatisk den belastning, som det i øjeblikket ser ikke ud til at have en fastsættelse af  .,,, vi bruger den enestående validator, for at sikre, at de specifikke dato og tidspunkt, ikke allerede er blevet tilføjet til møde:,, offentlig funktion rules() {afkast [[['meeting_id "," start "," suggested_by "»krævet«], [['meeting_id", "start", "suggested_by", "status", "created_at", "updated_at", "heltal], [['start", "unik", "targetattribute = > ['start",'meeting_id "budskab" = > yii:: t ('frontend, denne dato og tidspunkt, allerede er blevet foreslået. ')]]}, på mødet på side, datoerne & gange panel er bygget på samme måde som steder:,, <?folkesundhedsprogrammet aspektet anvendelse yii. hjælpere. html; anvendelse yii. widgets. listview;?> < div klasse = "panel panel default" > <!- default - panelet indhold - > < div klasse = "panel under overskriften" > < div klasse = "ror" > < div klasse = "col-lg-6" > < h4 > <?= yii:: t ('frontend,'dates & amp; gange ')?> < /h4 > < /div > < div klasse = "col-lg-6" > < div stil = "flyde:," > <?= html: en (yii:: t ('frontend "," ") ['meeting-time /skabe", "meeting_id = > $model - > id], ['class = > btn btn primære glyphicon glyphicon plus]).> < /div > < /div > < /div > < /div > <?folkesundhedsprogrammet aspektet om ($timeprovider - > tæller > 0):?> <!- bord - > < tabel klasse = "bord" > < thead > < tr - klasse = "lille overskrift" > < td > < /td > < td > <?= yii:: t ('frontend ", og du").> < /td > < td > <?= yii:: t ('frontend,'them)?> < /td > < td > <?folkesundhedsprogrammet aspektet om ($timeprovider - > tæller > 1) echo yii:: t ('frontend,'choose)?> < /td > < /tr > < /thead > <?= listview: widget (["dataprovider = > $timeprovider, itemoptions = > ['class = >" post "," layout '= > (punkter), itemview = > _list "," viewparams = > ['timecount = > $timeprovider - > tæller]).> < /tabel > <?php andet:?> <?folkesundhedsprogrammet aspektet endif;?> < /div >,, her er den, _list.php, betragtning:,, <?folkesundhedsprogrammet aspektet anvendelse yii. hjælpere. html; anvendelse frontend. modeller. møde; brug. kartik. switchinput. switchinput;?> < tr > < - stil > <?= møde: friendlydatefromtimestamp ($model - > start).> < /td > < - stil > <?foreach ($model->meetingTimeChoices as $mtc) { if ($mtc->user_id == $model->meeting->owner_id) { if ($mtc->status == $mtc::STATUS_YES) $value = 1; else $value =0; echo SwitchInput::widget([ 'type' => SwitchInput::CHECKBOX, 'name' => 'meeting-time-choice', 'id'=>'mtc-'.$mtc->id, 'value' => $value, 'pluginOptions' => ['size' => 'mini','onText' => '<i class="glyphicon glyphicon-ok"></i>','offText'=>'<i class="glyphicon glyphicon-remove"></i>','onColor' => 'success','offColor' => 'danger',], ]);}}?> < /td > < - stil > <?foreach ($model->meetingTimeChoices as $mtc) { if (count($model->meeting->participants)==0) break; if ($mtc->user_id == $model->meeting->participants[0]->participant_id) { if ($mtc->status == $mtc::STATUS_YES) $value = 1; else if ($mtc->status == $mtc::STATUS_NO) $value =0; else if ($mtc->status == $mtc::STATUS_UNKNOWN) $value =-1; echo SwitchInput::widget([ 'type' => SwitchInput::CHECKBOX, 'name' => 'meeting-time-choice', 'id'=>'mtc-'.$mtc->id, 'tristate'=>true, 'indeterminateValue'=>-1, 'indeterminateToggle'=> falske "handicappede" = > sandt, "værdi" = > $værdi, pluginoptions = > ['size = > "mini",'ontext = > < - klasse = "glyphicon glyphicon okay" > og lt. /jeg > ",'offtext = > < - klasse =" glyphicon glyphicon fjerne "> < jeg >",'oncolor = > "succes",'offcolor = > "fare"]);)?> < /td > < - stil > <?if ($timeCount>1) { if ($model->status == $model::STATUS_SELECTED) { $value = $model->id; } else { $value = 0; } echo SwitchInput::widget([ 'type' => SwitchInput::RADIO, 'name' => 'time-chooser', 'items' => [ [ 'value' => $model->id], ], 'value' => $value, 'pluginOptions' => [ 'size' => 'mini','handleWidth'=>60,'onText' => '<i class="glyphicon glyphicon-ok"></i>','offText'=>'<i class="glyphicon glyphicon-remove"></i>'], 'labelOptions' => ['style' => 'font-size: 12px'], ]); }?> < /td > < /tr >,, bemærker, at møde noter giver brugerne mulighed for at kommunikere, frem og tilbage, som de foreslår, og udvælge steder, dato og tid, uden at der faktisk e - mail hinanden separat.,,,,, her er hvad konstaterer ud på mødet side:,,,,, gennemførelsen af bemærker, er næsten identisk med ovennævnte gennemførelse af sted og dato.du kan se det, meetingnote, tilsynsførende og, jeg frontend. synspunkter. møde note, betragtning filer for mere information.

Final product image
The Meetings Page with Tabs for Upcoming Past and Canceled
Lighthouse Issue Tracker AJAXify Meeting Page Tabs
The Create a Meeting Form
The Original Meeting Planner Mockup for Scheduling a Meeting
The Current Form of Meeting Planners Schedule a Meeting Feature
Meeting Planner setFlash Bootstrap alerts
Meeting Planner Participant Panel
MeetingPlanner Suggest a Meeting Time
Add a Meeting Note
Meeting View Page with Meeting Note



Previous:
Next Page: