Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Yii
Code

Пабудова загрузнага: Пашыранае планаванне каманд

by
Difficulty:IntermediateLength:LongLanguages:
This post is part of a series called Building Your Startup With PHP.
Building Your Startup: Automatic Time-Zone Detection
Building Your Startup: Requesting Scheduling Changes

Belarusian (беларуская мова) translation by Alex Grigorovich (you can also view the original English article)

Final product image
What You'll Be Creating

Гэта кіраўніцтва з'яўляецца часткай будынка загрузнага з PHP серыяй на Envato Tuts+. У гэтай серыі я правяду вас праз запуск стартапа ад канцэпцыі да рэальнасці з дапамогай майго Meeting Planner прыкладання ў рэальным жыцці, напрыклад. Кожны крок па шляху, я выпушчу Meeting Planner коды ў якасці прыкладаў з адкрытым кодам, вы можаце даведацца з. Я таксама вырашаць дзелавыя пытанні запуску, звязаныя, як яны ўзнікаюць.

Пашырэнне варыянтаў планавання

Калі пачалася фаза альфа-тэставанне Planner Meeting, найзыркі разрыў асаблівасць была няздольнасць змяніць сустрэчу пасля таго, як было запланавана. Але былі і іншыя магчымасці адсутнічае, як паўторна адправіць запрашэнне страчанага па электроннай пошты, цалкам перепланировании сустрэчы або магчымасць праглядаць і рэдагаваць параметры кіравання, абраны арганізатарам.

Цікава, я пачаў разумець, што здольнасць карэктаваць сустрэчы лёгка пасля таго, як яны былі запланаваны можа зрабіць перапынак або Планоўшчык сустрэч брэнда. Напрыклад, ёсць шмат сацыяльнай інжынерыі ў наладзе сустрэчы пасля планавання.  Часта, вы павінны спытаць ўдзельніка (удзельнікаў), калі гэта нармальна, каб наладзіць час ці месца. Можа быць, вы проста хочаце сустрэцца на 15 хвілін раней ці на наступны дзень у той жа самы час і месца. Але вы не заўсёды можаце зрабіць гэтыя змены без згоды.

Вядзенне сайта лёгка зразумець і просты ў выкарыстанні з усімі гэтай магчымасцю з'яўляецца маёй галоўнай дырэктывай.  Як я мог бы дадаць большая колькасць функцый, не загрувашчваючы карыстацкі інтэрфейс або празмерна хаваць іх? Як бы гэтая праца на мабільных прыладах і настольных інтэрфейсаў?

У сённяшнім ўроку я разгледжу пашырэнне навігацыйнай панэлі, выкарыстоўваючы Bootstrap і аснову пабудовы некаторых пашыраных функцый планавання ў Planner Meeting. На наступным тыдні, я разгледжу будаваць больш складаныя функцыі для ўдзельнікаў запытваць змяненне (ы) і для іншых, каб прыняць або адхіліць іх.

Я спадзяюся, што вы будзеце апрабаваць усе новыя магчымасці планавання на жывым сайце і падзяліцца сваімі думкамі і водгукі ў каментарах ніжэй.  Я ўдзельнічаць у абмеркаванні, але вы таксама можаце звязацца са мной @reifman на Twitter. Я заўсёды адкрыты для новых мастацкіх ідэй для сустрэч Planner, а таксама прапановы для будучых эпізодаў серыі.

Нагадаем, што ўвесь код для Планоўшчык сустрэч прадастаўляецца з адкрытым зыходным кодам і запісваецца ў Yii2 Framework для PHP. Калі вы хочаце даведацца больш аб Yii2, праверыць мой паралельны шэраг Праграмаванне з Yii2.

Пашырэнне панэлі навігацыі

Па-першае, давайце паглядзім, як пашырыць існуючую панэль навігацыі. Вось спіс магчымасцяў, якія я б планаваў дадаць:

  • З улікам змяненняў у месцы, дату і час сустрэчы пасля таго, як яна была завершана.
  • Запытаная меншыя карэкціроўкі на сустрэчу, напрыклад, мы можам сустрэць на гадзіну раней? Ці ў гэтым іншым месцы прапанаваў?
  • Перепланирование сустрэчы цалкам з тымі ж удзельнікамі і месцам.
  • Паўтараючы сустрэчу з дапамогай удзельнікаў, месцы, дні тыдня і час сутак, ад мінулай сустрэчы, каб запланаваць новую сустрэчу прасцей.
  • Паказаны ўдзельнікі храналагічнай гісторыі ўсіх мерапрыемстваў па планаванні для сустрэчы.
  • Прагляд і абнаўленне настроек для сустрэчы.

Як вы можаце бачыць, не толькі там шмат функцыянальных магчымасцяў, каб пабудаваць, але я таксама не меў дакладнае ўяўленне пра тое, куды змясціць яго ў карыстацкім інтэрфейсе, не ствараючы беспарадак.

Панэль каманд таксама неабходна змяніць у залежнасці ад статусу сустрэчы. Сустрэчы, якія знаходзіліся ў стадыі планавання былі розныя варыянты, чым у чаканні, пацвердзіў, або міма завяршэння сустрэчы.

Раннія UX ідэі прывялі Вярнуцца да Bootstrap

Мая першапачатковая ідэя складалася ў тым, каб забяспечыць невялікую спасылку Дадатковыя параметры, якія будуць адлюстроўваць камандны радок схаванай. Я эксперыментаваў з гэтым на першы, але гэта не эстэтычна.

Затым я разгледзеў дакументацыю Bootstrap і знайшоў скрынку выпадаючых комба:

Build Your Startup Advanced Scheduling - Bootstrap Documentation of Dropdown

Мне спадабалася, як яна функцыянавала. Таму я вырашыў паставіць большасць дадатковых каманд у левай кнопкі-арыентаванага спісу.

Вось прыклад таго, што ён выглядае як на этапе планавання сустрэчы:

Build Your Startup Advanced Scheduling - Meeting Planner Button Dropdown

Звярніце ўвагу на тое, што самазагрузкі прапануюць клас для меню dropup. Каманда бар размешчаны ў ніжняй частцы старонкі выкарыстоўвае dropup наступным чынам:

Я таксама стварыў частковы выгляд файлаў, якія будуць адлюстраваныя ў залежнасці ад статусу сустрэчы. Напрыклад, у /frontend/views/meeting/view_confirmed.php, вы можаце ўбачыць альбо _command_bar_past.php або _command_bar_confirmed.php парцыяльны ўваходзіць:

Вызначэнне доступу да каманд для розных Гледачам

Я не хачу, каб усе бачыць, усе каманды. Арганізатары будуць бачыць больш каманд, чым удзельнікі, але налады сустрэчы часта падаюць ім доступ таксама.

Вось прыклад вызначэння таго, каб адлюстраваць магчымасць аднавіць сустрэчу і ўнесці ў яго змяненні, як калі б яна была яшчэ ў стадыі планавання:

Опцыя ўваходзіць у які расчыняецца меню Bootstrap, калі сустрэча не прайшла сваю пачатковую дату і глядач з'яўляецца арганізатарам або арганізатар дазволіў удзельнікам унесці змены.

Цяпер, давайце пагрузіліся ў будаўніцтве некаторых функцый гэтых розных каманд.

Пабудова пашыраных каманд па раскладзе

Гэта немагчыма ахапіць усе новыя працы, якія ўвайшлі ў гэтыя функцыі планавання. Для сцісласці я разгледжу толькі аснову і любыя унікальныя аспекты розных каманд.

Кожны займае больш цяпер

Пасля рэалізацыі некаторых больш глыбокіх функцый бяспекі ў рамках Планоўшчык сустрэч, я імкнуся прытрымлівацца больш строгіх стандартаў кадавання, як дадаць новыя функцыі. Я праводжу больш часу на доступ да кантролер, праверкі правоў доступу мадэлі, і абмежаванне хуткасці.

Акрамя таго, бэта-версія будзе падтрымліваць некалькі ўдзельнікаў сустрэчы, так што я павінен архітэктару код з гэтым на ўвазе, як я іду.

Увогуле, усё, што я рабіць займае трохі больш часу, чым гэта было ў хуткім рэжыме прототипирования.

Як я пабудаваў ўсе гэтыя розныя функцыі груп, я часта адчуваў павышаную нагрузку, як я дадаў да ягонай кодавай. Вы заўважыце гэтыя праверкі ў кодзе ніжэй.

Там таксама ўвагу на гістарычны часопіс Meeting, які мы збіраемся зрабіць бачным. Такім чынам, кожнае дзеянне часта патрабуе запісу часопіса. І запіс часопіса карысная для падтрымання абмежаванні хуткасці.

Ўнясенне змяненняў у нарадзе

Адзін просты спосаб вырашыць змены на сустрэчу, якая была завершана толькі, каб арганізатар, каб адкрыць яго, прымаючы яго назад у стадыі планавання. Затым, яны могуць дадаваць раз даты і месца, выбраць новыя, і зноў завяршыць сустрэчу.

Я таксама хацеў арганізатар для пашырэння магчымасцяў іх удзельнікаў, каб зрабіць гэта. Гэта запатрабавала нарэшце будаваць магчымасць праглядаць і абнаўляць налады кожнай сустрэчы.

Я дадаў налады, каб дазволіць ўдзельнікам небудзь змены запытаў арганізатараў або зрабіць іх непасрэдна.

Калі сход ствараецца, яго параметры ініцыялізацыі з наладамі карыстальніка па змаўчанні:

Вы можаце ўбачыць вынікі новага кантролера і абнаўленне прадстаўлення для MeetingSettings ніжэй:

Build Your Startup Advanced Scheduling - Meeting Settings

Вось /frontend/controllers/MeetingController.php's actionReopen():

А вось код мадэлі Meeting.php перанесці сустрэчу ў рэжым планавання:

WithinActionLimit правярае на колькасць раз, хто-то спрабуе аднавіць сустрэчу. IncreaseSequence для файла-як Мікрасхемы дату сустрэчы, час і змена месца, Мікрасхемы неабходны файл, які будзе сказана.

Малюнак ніжэй паказвае нараду, якое было пацверджана з рознымі перадавых варыянтаў:

Build Your Startup Advanced Scheduling - Command bar with fully loaded Dropdown menu

Калі карыстальнік націскае унесці змены ў меню вышэй, статус сустрэчы перамяшчаюцца назад да планавання, і яны могуць вярнуцца, каб абнавіць дату, час і месца:

Build Your Startup Advanced Scheduling - Reopened Meeting Planning

Перепланирование нараду

Калі падзеі прывялі ўдзельнік, каб зразумець, што яны проста трэба пачаць нанова, то Перепланирование опцыя адмяняе бягучае сход і стварае новае запрашэнне планавання.

У цяперашні час абмежаваць гэтую функцыю для арганізатараў (не удзельнікаў), але я магу падоўжыць яго пазней. Meeting.php::Reschedule() метад падтрымлівае альбо асоба, якая выконвае дзеянне:

Удзельнікі і наадварот месца клануюць ў новай сустрэчы.

Паўтарыць нараду

Іншы падыход да планавання, каб дазволіць ўдзельнікам дубляваць мінулыя сустрэчы. У будучыні, я мог бы дазволіць гледачу вырашаць, якія ўдзельнік, месца і час дублюецца, але цяпер, Канферэнц-Planner стварае новую сустрэчу з тымі ж удзельнікамі ў тым жа месцы-і ідэнтычны дзень тыдня і час дня і два тыдні ў будучыні.

MeetingTime::createTimePlus() ніжэй дадае час сустрэчы ў той жа дзень тыдня і час сутак, але адна тыдня ў будучыні, нават калі арыгінальная сустрэча адбылася некалькі месяцаў таму. while у той час як было неабходна для больш старых сустрэч.

Resend Запрашэнні

Я таксама пабудаваў функцыю паўторнай перадачы ў выпадку, калі ўдзельнік не атрымаў сваё першапачатковае запрашэнне або канчатковае пацверджанне.

Я планую аднавіць функцыянальнасць выходнай электроннай пошты, каб працаваць асінхронных і зрабіць лёгкую зваротную перадачу, але, на шчасце, сучасныя метады добра працавалі ў сцэнары паўторнай адпраўкі з некаторымі зменамі.

гісторыя Сустрэча

На працягу ўсёй серыі, мы стварылі часопіс аб усіх унесеных зменах сустрэч. Там зараз спосаб для наведвальнікаў, каб паглядзець гісторыю планавання. Гэта выглядае наступным чынам:

Build Your Startup Advanced Scheduling - Viewing the meeting history of events

MeetingLogController.php правярае, што глядач з'яўляецца ўдзельнікам нарады і падрыхтоўвае дадзеныя для прагляду часопіса:

Затым /frontend/views/meeting-log/index.php робіць што дадзеныя паказана вышэй:

Што далей?

Я цяпер інтэнсіўны код спрынту для завяршэння бэта-версіі.  Рэдакцыйныя багі на Envato Tuts+ імкнуліся ад іх залежыць, каб адцягнуць мяне розум кіравання робатамі і OKCupid падобных гукавых сігналаў з іх IOS харчаваннем прыкладання працоўнага працэсу, але яны пацярпелі няўдачу. 

Сустрэча развіцця Planner працягваецца хуткімі тэмпамі.Рашэнне сацыяльнай інжынерыі і UX для ўдзельнікаў сустрэчы запытваць і рэагаваць на дробныя карэкціроўкі планавання можа зрабіць перапынак або Планоўшчык сустрэч брэнда, і гэта тое, што я працую больш за ўсё.

Калі вы яшчэ няма, то планаваць сваю першую сустрэчу з СУСТРЭЧЫ. Я таксама планую напісаць падручнік пра краудфандинге, таму, калі ласка, разгледзець наступны нашу старонку Planner WeFunder Meeting.  Вы таксама можаце звярнуцца да мяне @reifman. Я заўсёды адкрыты для новых ідэй і мастацкіх тэматычных прапаноў для будучых падручнікаў.

Сачыце за ўсе гэтыя і больш маючых адбыцца навучальныя, правяраючы Building загрузнага з PHP серыяй.

Спасылкі па тэме

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.