Explorar o código

Merge branch 'master' of ssh://biuro.biall-net.pl:2222/p5/project-bocian

Piotr Labudda %!s(int64=7) %!d(string=hai) anos
pai
achega
e2ca5420ee

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 0 - 0
theme/assets/css/styles.css


+ 457 - 0
theme/assets/less/buttons.less

@@ -0,0 +1,457 @@
+
+.btn {
+  display: inline-block;
+  padding: 10px 15px;
+  margin-bottom: 0;
+  font-size: 14px;
+  font-weight: normal;
+  line-height: 1.428571429;
+  text-align: center;
+  white-space: nowrap;
+  vertical-align: middle;
+  cursor: pointer;
+  background-image: none;
+  border: 1px solid transparent;
+  border-radius: 4px;
+  -webkit-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  -o-user-select: none;
+  user-select: none;
+}
+
+.btn:focus {
+  outline: thin dotted;
+  outline: 5px auto -webkit-focus-ring-color;
+  outline-offset: -2px;
+}
+
+.btn:hover,
+.btn:focus {
+  color: #333333;
+  text-decoration: none;
+}
+
+.btn:active,
+.btn.active {
+  background-image: none;
+  outline: 0;
+  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+  box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+}
+
+.btn.disabled,
+.btn[disabled],
+fieldset[disabled] .btn {
+  pointer-events: none;
+  cursor: not-allowed;
+  opacity: 0.65;
+  filter: alpha(opacity=65);
+  -webkit-box-shadow: none;
+  box-shadow: none;
+}
+
+.btn-default {
+  color: @brand-white;
+  background-color: @brand-primary;
+  border-color: @brand-primary;
+}
+
+.btn-default:hover,
+.btn-default:focus,
+.btn-default:focus,
+.btn-default.active,
+.open .dropdown-toggle.btn-default {
+  color: @brand-primary;
+  background-color: @brand-white;
+  border-color: @brand-primary;
+}
+
+/** pagination */
+ul.tblAjax__footer__toolbar__pagination {
+  list-style-type: none;
+
+  li {
+    display: inline-block;
+  }
+}
+ul.btn-group.tblAjax__footer__toolbar__pagination.smad-pagination  li:not(:nth-child(1)) a,
+ul.btn-group.tblAjax__footer__toolbar__pagination.smad-pagination  li:not(:nth-last-child(1)) a {
+  border-radius: 0;
+}
+ul.btn-group.tblAjax__footer__toolbar__pagination.smad-pagination  li:nth-last-child(1) a {
+  -webkit-border-top-right-radius: 4px;
+  -webkit-border-bottom-right-radius: 4px;
+  -moz-border-radius-topright: 4px;
+  -moz-border-radius-bottomright: 4px;
+  border-top-right-radius: 4px;
+  border-bottom-right-radius: 4px;
+}
+ul.btn-group.tblAjax__footer__toolbar__pagination.smad-pagination  li:nth-child(1) a {
+
+  -webkit-border-top-left-radius: 4px;
+  -webkit-border-bottom-left-radius: 4px;
+  -moz-border-radius-topleft: 4px;
+  -moz-border-radius-bottomleft: 4px;
+  border-top-left-radius: 4px;
+  border-bottom-left-radius: 4px;
+}
+.tblAjax__footer__toolbar__pagination {
+  .btn-default {
+    color: @brand-primary;
+    background-color: @brand-white;
+    border-color: @brand-primary;
+  }
+
+  .btn-default:hover,
+  .btn-default:focus,
+  .btn-default:focus,
+  .btn-default.active,
+  .open .dropdown-toggle.btn-default {
+    color: @brand-white;
+    background-color: @brand-primary;
+    border-color: @brand-primary;
+  }
+
+  .btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
+    border-radius: 0;
+  }
+}
+.footer_pagination_menu_items {
+  display: inline-block;
+}
+.tblAjax__footer__toolbar__info {
+  p {
+    font-size: 12px;
+  }
+}
+/* end pagination*/
+
+.btn-default:active:hover {
+  color: @brand-primary;
+  background-color: @brand-white;
+  border-color: @brand-primary;
+}
+
+
+.btn-default:active,
+.btn-default.active,
+.open .dropdown-toggle.btn-default {
+  color: @brand-primary;
+  background-color: @brand-white;
+  border-color: @brand-primary;
+}
+
+
+.btn-default.disabled,
+.btn-default[disabled],
+fieldset[disabled] .btn-default,
+.btn-default.disabled:hover,
+.btn-default[disabled]:hover,
+fieldset[disabled] .btn-default:hover,
+.btn-default.disabled:focus,
+.btn-default[disabled]:focus,
+fieldset[disabled] .btn-default:focus {
+  color: mix(@brand-white, @brand-primary, 50%);
+  background-color: @brand-white;
+  border-color: mix(@brand-white, @brand-primary, 50%);
+}
+
+.btn-default.disabled:active,
+.btn-default[disabled]:active,
+fieldset[disabled] .btn-default:active,
+.btn-default.disabled.active,
+.btn-default[disabled].active,
+fieldset[disabled] .btn-default.active {
+  color: @brand-primary;
+  background-color: @brand-white;
+  border-color: @brand-primary;
+}
+
+.btn-default .badge {
+  color: @brand-primary!important;
+  background-color: #fff;
+}
+
+.btn-primary {
+  color: @brand-primary;
+  background-color: @brand-white;
+  border-color: @brand-primary;
+}
+
+.btn-primary:hover,
+.btn-primary:focus,
+.btn-primary:active,
+.btn-primary.active,
+.open .dropdown-toggle.btn-primary {
+  color: @brand-white;
+  background-color: @brand-primary;
+  border-color: @brand-primary;
+}
+
+.btn-primary:active:hover {
+  color: @brand-white;
+  background-color: @brand-primary;
+  border-color: @brand-primary;
+}
+
+.btn-primary:active,
+.btn-primary:focus,
+.btn-primary.active,
+.open .dropdown-toggle.btn-primary {
+  color: @brand-white;
+  background-color: @brand-primary;
+  border-color: @brand-primary;
+}
+
+.btn-primary.disabled,
+.btn-primary[disabled],
+fieldset[disabled] .btn-primary,
+.btn-primary.disabled:hover,
+.btn-primary[disabled]:hover,
+fieldset[disabled] .btn-primary:hover,
+.btn-primary.disabled:focus,
+.btn-primary[disabled]:focus,
+fieldset[disabled] .btn-primary:focus,
+.btn-primary.disabled:active,
+.btn-primary[disabled]:active,
+fieldset[disabled] .btn-primary:active,
+.btn-primary.disabled.active,
+.btn-primary[disabled].active,
+fieldset[disabled] .btn-primary.active {
+  color: @brand-white;
+  background-color: @brand-primary;
+  border-color: @brand-primary;
+}
+
+.btn-primary .badge {
+  color: #428bca;
+  background-color: #fff;
+}
+
+.btn-warning {
+  color: @brand-white;
+  background-color: @brand-grey;
+  border-color: @brand-grey;
+}
+
+.btn-warning:hover,
+.btn-warning:focus,
+.btn-warning:active,
+.btn-warning.active,
+.open .dropdown-toggle.btn-warning {
+  color: @brand-text;
+  background-color: @brand-grey;
+  border-color: @brand-grey;
+}
+
+.btn-warning:active:hover {
+  color: @brand-text;
+  background-color: @brand-grey;
+  border-color: @brand-grey;
+}
+
+.btn-warning:active,
+.btn-warning:focus,
+.btn-warning.active,
+.open .dropdown-toggle.btn-warning {
+  color: @brand-text;
+  background-color: @brand-grey;
+  border-color: @brand-grey;
+}
+
+.btn-warning.disabled,
+.btn-warning[disabled],
+fieldset[disabled] .btn-warning,
+.btn-warning.disabled:hover,
+.btn-warning[disabled]:hover,
+fieldset[disabled] .btn-warning:hover,
+.btn-warning.disabled:focus,
+.btn-warning[disabled]:focus,
+fieldset[disabled] .btn-warning:focus,
+.btn-warning.disabled:active,
+.btn-warning[disabled]:active,
+fieldset[disabled] .btn-warning:active,
+.btn-warning.disabled.active,
+.btn-warning[disabled].active,
+fieldset[disabled] .btn-warning.active {
+  color: @brand-text;
+  background-color: @brand-grey;
+  border-color: @brand-grey;
+}
+
+.btn-warning .badge {
+  color: #f0ad4e;
+  background-color: #fff;
+}
+
+.btn-danger {
+  color: #ffffff;
+  background-color: #d9534f;
+  border-color: #d43f3a;
+}
+
+.btn-danger:hover,
+.btn-danger:focus,
+.btn-danger:active,
+.btn-danger.active,
+.open .dropdown-toggle.btn-danger {
+  color: #ffffff;
+  background-color: #d2322d;
+  border-color: #ac2925;
+}
+
+.btn-danger:active:hover {
+  color: #ffffff;
+  background-color: #d2322d;
+  border-color: #ac2925;
+}
+
+.btn-danger:active,
+.btn-danger.active,
+.open .dropdown-toggle.btn-danger {
+  background-image: none;
+}
+
+.btn-danger.disabled,
+.btn-danger[disabled],
+fieldset[disabled] .btn-danger,
+.btn-danger.disabled:hover,
+.btn-danger[disabled]:hover,
+fieldset[disabled] .btn-danger:hover,
+.btn-danger.disabled:focus,
+.btn-danger[disabled]:focus,
+fieldset[disabled] .btn-danger:focus,
+.btn-danger.disabled:active,
+.btn-danger[disabled]:active,
+fieldset[disabled] .btn-danger:active,
+.btn-danger.disabled.active,
+.btn-danger[disabled].active,
+fieldset[disabled] .btn-danger.active {
+  background-color: #d9534f;
+  border-color: #d43f3a;
+}
+
+.btn-danger .badge {
+  color: #d9534f;
+  background-color: #fff;
+}
+
+
+.btn-success {
+  color: @brand-text;
+  background-color: @brand-grey;
+  border-color: @brand-grey;
+}
+
+.btn-success:hover,
+.btn-success:focus,
+.btn-success:active,
+.btn-success.active,
+.open .dropdown-toggle.btn-success {
+  color: @brand-white;
+  background-color: @brand-primary;
+  border-color: @brand-primary;
+}
+
+.btn-success:active:hover {
+  color: @brand-white;
+  background-color: @brand-primary;
+  border-color: @brand-primary;
+}
+
+
+.btn-success:active,
+.btn-success.active,
+.open .dropdown-toggle.btn-success {
+  background-image: none;
+}
+
+.btn-success.disabled,
+.btn-success[disabled],
+fieldset[disabled] .btn-success,
+.btn-success.disabled:hover,
+.btn-success[disabled]:hover,
+fieldset[disabled] .btn-success:hover,
+.btn-success.disabled:focus,
+.btn-success[disabled]:focus,
+fieldset[disabled] .btn-success:focus,
+.btn-success.disabled:active,
+.btn-success[disabled]:active,
+fieldset[disabled] .btn-success:active,
+.btn-success.disabled.active,
+.btn-success[disabled].active,
+fieldset[disabled] .btn-success.active {
+  color: @brand-white;
+  background-color: @brand-primary;
+  border-color: @brand-primary;
+}
+
+.btn-success .badge {
+  color: #5cb85c;
+  background-color: #fff;
+}
+
+
+.btn-info {
+  color: @brand-secondary!important;
+  background-color: @brand-white;
+  border-color: @brand-secondary;
+}
+
+.btn-info:hover,
+.btn-info:focus,
+.btn-info:active,
+.btn-info.active,
+.open .dropdown-toggle.btn-info {
+  color: @brand-white!important;
+  background-color: @brand-secondary;
+  border-color: @brand-secondary;
+}
+
+.btn-info:active:hover {
+  color: @brand-white!important;
+  background-color: @brand-secondary;
+  border-color: @brand-secondary;
+}
+
+.btn-info:active,
+.btn-info.active,
+.open .dropdown-toggle.btn-info {
+  color: @brand-white!important;
+  background-color: @brand-secondary;
+  border-color: @brand-secondary;
+}
+
+.btn-info.disabled,
+.btn-info[disabled],
+fieldset[disabled] .btn-info,
+.btn-info.disabled:hover,
+.btn-info[disabled]:hover,
+fieldset[disabled] .btn-info:hover,
+.btn-info.disabled:focus,
+.btn-info[disabled]:focus,
+fieldset[disabled] .btn-info:focus,
+.btn-info.disabled:active,
+.btn-info[disabled]:active,
+fieldset[disabled] .btn-info:active,
+.btn-info.disabled.active,
+.btn-info[disabled].active,
+fieldset[disabled] .btn-info.active {
+  color: @brand-white!important;
+  background-color: @brand-secondary;
+  border-color: @brand-secondary;
+}
+
+.btn-info .badge {
+  color: #5bc0de;
+  background-color: #fff;
+}
+
+.btn.disabled, .btn[disabled], fieldset[disabled] .btn {
+  cursor: not-allowed;
+  filter: alpha(opacity=65);
+  -webkit-box-shadow: none;
+  box-shadow: none;
+  opacity: .65;
+}

+ 16 - 1
theme/assets/less/styles.less

@@ -607,7 +607,7 @@ footer {
       }
     }
 
-    .smad-depth {
+    .smad-depth, .smad-depth-kontrahenci {
       width: 80px;
       text-align: center;
     }
@@ -653,6 +653,21 @@ footer {
   }
 }
 
+/**
+ * Section button generate reaport
+ */
+.smad-generate-reaport {
+  padding: 50px 0;
+
+  .smad-generate-reaport-button {
+    padding: 20px 45px;
+    font-size: 20px;
+    font-weight: 900;
+  }
+  .smad-generate-reaport-info {
+    padding: 10px 0;
+  }
+}
 
 /**
  * Login

+ 1 - 1
theme/assets/less/variables.less

@@ -4,7 +4,7 @@
 @font-primary: 'Roboto', sans-serif;
 
 @brand-primary: #d7142d;
-@brand-secondary: #cdcccc;
+@brand-secondary: #a9a9a9;
 
 @brand-white: #fff;
 @brand-grey: @brand-secondary;

+ 5 - 5
theme/view/footer.php

@@ -9,10 +9,10 @@
 		 <div class="row">
 			  <div class="col-lg-12">
 					<ul class="menu-bottom">
-						<li><a href="#" title="O Bocianie">O Bocianie</a></li>
-						<li><a href="#" title="">Kontakt</a></li>
-						<li><a href="index.php?_route=ViewTableAjax&namespace=default_db/QUALITY_NOTICES#CREATE" title="Zgłoszenia usterek/błędów jakości" class="btn btn-success">Zgł. błędów.</a></li>
-
+						<li><a href="index.php?_route=UrlAction_Bocian&_task=about" title="O Bocianie">O Bocianie</a></li>
+            <li><a href="index.php?_route=UrlAction_Bocian&_task=training" title="Szkolenia">Szkolenia</a></li>
+						<li><a href="index.php?_route=UrlAction_Bocian&_task=helpForm" title="Pomoc">Pomoc</a></li>
+            <li><a href="index.php?_route=ViewTableAjax&namespace=default_db/QUALITY_NOTICES#CREATE" title="Zgł. błędów." class="btn btn-success">Zgł. błędów.</a>
 					</ul>
 				</div>
 			</div>
@@ -35,7 +35,7 @@
   // todo: do usuniecia
   var testUrl = 'index.php?_route=ViewTableAjax&namespace=default_db/BI_audit_ENERGA_PRACOWNICY/BI_audit_ENERGA_PRACOWNICY&backRefNS=default_db/BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA/BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA&backRefPK=26&backRefField=default_db__x3A__BI_audit_ENERGA_PRACOWNICY:BI_audit_ENERGA_PRACOWNICY';
   var responseUrl = getUrlParams(testUrl);
-console.log(responseUrl);
+
 
 // todo: przenieść do eventu który nasłuchuje zakonczenie wczytania tabeli
 setTimeout(searchColumnWithHref, 2000);

+ 145 - 21
tools/Bocian.php

@@ -8,6 +8,8 @@ Lib::loadClass('Request');
 // index.php?_route=UrlAction_BiAuditRaport  - uruchamia defaultAction
 class RouteTool_Bocian extends RouteToolBase {
 
+public static $helpEmailTo = 'dariusz@yellowgroup.pl';
+
 	public static $FIELD_LIST_PRACOWNICY = [
 		'ID',
 		'imiona',
@@ -52,7 +54,78 @@ class RouteTool_Bocian extends RouteToolBase {
 		'uwagi',
 	];
 
+/**
+ * View Page About Project
+ */
+	public function aboutAction() {
+		UI::gora();
+		echo UI::h('script', ['src'=>"static/sweetalert2.min.js"]);
+		echo UI::h('link', ['rel'=>"stylesheet", 'type'=>"text/css", 'href'=>"static/sweetalert2.min.css"]);
+		Theme::top();
+		include('page-about.view.php');
+		UI::dol();
+	}
+
+
+	/**
+	 * View Page training
+	 */
+		public function trainingAction() {
+			UI::gora();
+			echo UI::h('script', ['src'=>"static/sweetalert2.min.js"]);
+			echo UI::h('link', ['rel'=>"stylesheet", 'type'=>"text/css", 'href'=>"static/sweetalert2.min.css"]);
+			Theme::top();
+			include('page-training.view.php');
+			UI::dol();
+		}
+
+
+	/**
+	 * View Page Help form
+	 */
+		public function helpFormAction() {
+			UI::gora();
+			echo UI::h('script', ['src'=>"static/sweetalert2.min.js"]);
+			echo UI::h('link', ['rel'=>"stylesheet", 'type'=>"text/css", 'href'=>"static/sweetalert2.min.css"]);
+			Theme::top();
+
+
+
+
+			$responseSendMail = false;
+			if( V::get('button_send', 0, $_POST) != '' ){
+				print V::get('button_send', '1', $_POST); print "|";
+					// fields form
+			    $helpEmail    		= htmlentities(V::get('help_email', 0, $_POST));
+			    $helpDescription  = htmlentities(V::get('help_description', 0, $_POST));
+
+
+					if ( empty($helpDescription) && !filter_var($helpEmail, FILTER_VALIDATE_EMAIL)) {
+						throw new Exception("Błąd! Wypełnij wszystkie pola");
+					}
+
+			    $to      = self::$helpEmailTo; // uzupełnić mail
+			    $subject = 'Bocian - formularz pomocy';
+			    $message = "E-mail: " . $helpEmail . ". \r\n Treść wiadomości:\r\n " . $helpDescription;
+			    $headers = 'From: '. self::$helpEmailTo . "\r\n" .
+			        'Reply-To: '. self::$helpEmailTo . "\r\n" .
+			        'X-Mailer: PHP/' . phpversion();
+
+			    $sendMail = mail($to, $subject, $message, $headers);
+
+					if( $sendMailResponse == true ) {
+							$responseSendMail = true;
+					} else {
+						//throw new Exception("Błąd! Wystąpił błąd podczas wysyłania.");
+					}
+			}
+
+			include('page-help.view.php');
+			UI::dol();
+		}
+
 	public function defaultAction() {
+
 		UI::gora();
 		echo UI::h('script', ['src'=>"static/sweetalert2.min.js"]);
 		echo UI::h('link', ['rel'=>"stylesheet", 'type'=>"text/css", 'href'=>"static/sweetalert2.min.css"]);
@@ -1330,19 +1403,22 @@ public function showPowiazaniaEnergaRumKontrahenciPowiazania($items) {
 			throw new Exception("Nie podano wartości dla głębokości powiązań");
 		}
 
+		// Bi_analiza_onlyTarger
+		$analizaOnlyTargets = V::get('analizaOnlyTargets', '', $args);
+		if (!$analizaOnlyTargets) {
+			throw new Exception("Nie podano wartości czy zwracać wyniki tylko z obiektami docelowymi");
+		}
+
 		// Tworzenie relacji Raport do Pracownicy
 		$pracownicyIds = []; // array z nr ID na podstawie wysłanego formularza
 		$pracownicyIds = V::get('pracownicyIds', '', $args);
-		// walidacja id pracowników
-		if (!$pracownicyIds) {
-			throw new Exception("Nie wybrano pracowników");
-		}
 
 		$kontrahenciIds = []; // array z nr ID na podstawie wysłanego formularza
 		$kontrahenciIds = V::get('kontrahenciIds', '', $args);
-		// walidacja id kontrahetów
-		if (!$kontrahenciIds) {
-			throw new Exception("Nie wybrano kontrahentów");
+
+		// walidacja listy kontrahentów i pracowników
+		if ( !$kontrahenciIds && !$pracownicyIds ) {
+			throw new Exception("Nie wybrano pozycji do analizy. Wybierz pracowników/kontrahentów.");
 		}
 
 		// Tworzenie rekrodu w bazie - Raport -
@@ -1351,8 +1427,10 @@ public function showPowiazaniaEnergaRumKontrahenciPowiazania($items) {
 			'A_RECORD_CREATE_DATE' => 'NOW()',
 			'FILE_STATUS' => "TO_GENERATE",
 			'BI_analiza_minDepth' => 1,
-			'BI_analiza_maxDepth' => $depthValue
+			'BI_analiza_maxDepth' => $depthValue,
+			'BI_analiza_onlyTargets' => analizaOnlyTargets
 		]);
+
 		if ($idRaport > 0) {
 			DB::getPDO()->insert('BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA_HIST', [
 				'ID_USERS2' => $idRaport,
@@ -1360,26 +1438,46 @@ public function showPowiazaniaEnergaRumKontrahenciPowiazania($items) {
 				'A_RECORD_CREATE_DATE' => 'NOW()',
 				'FILE_STATUS' => "TO_GENERATE",
 				'BI_analiza_minDepth' => 1,
-				'BI_analiza_maxDepth' => $depthValue
+				'BI_analiza_maxDepth' => $depthValue,
+				'BI_analiza_onlyTargets' => analizaOnlyTargets
 			]);
 		}
 
 		// Tworzenie relacji Raport do Pracownicy
 		$refPowiazaniaToPracownicy = ACL::getRefTable('default_db/BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA/BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA',
 			'default_db__x3A__BI_audit_ENERGA_PRACOWNICY:BI_audit_ENERGA_PRACOWNICY');
-		foreach ($pracownicyIds as $idPracownik) {
-			DB::getPDO()->insert($refPowiazaniaToPracownicy, ['PRIMARY_KEY' => $idRaport, 'REMOTE_PRIMARY_KEY' => $idPracownik]);
-		}
-
 
-		// Tworzenie relacji Raport do Kontrahenci - analogicznie jak wyżej
+			// Tworzenie relacji Raport do Kontrahenci - analogicznie jak wyżej
 		$refPowiazaniaToKontrahenci = ACL::getRefTable('default_db/BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA/BI_audit_ENERGA_RUM_KONTRAHENCI_POWIAZANIA',
-			'default_db__x3A__BI_audit_ENERGA_RUM_KONTRAHENCI:BI_audit_ENERGA_RUM_KONTRAHENCI');
-		foreach ($kontrahenciIds as $idKontrahent) {
-			DB::getPDO()->insert($refPowiazaniaToKontrahenci, ['PRIMARY_KEY' => $idRaport, 'REMOTE_PRIMARY_KEY' => $idKontrahent ]);
+				'default_db__x3A__BI_audit_ENERGA_RUM_KONTRAHENCI:BI_audit_ENERGA_RUM_KONTRAHENCI');
+
+		/* PRACOWNICY */
+		if ( !$pracownicyIds  ) {
+			// dodajemy wszystkich pracowników
+				DB::getPDO()->execSql("insert into `{$refPowiazaniaToPracownicy}` (`PRIMARY_KEY`,`REMOTE_PRIMARY_KEY`)
+				select '{$idRaport}' as PRIMARY_KEY
+				, ID as REMOTE_PRIMARY_KEY
+				from `BI_audit_ENERGA_PRACOWNICY`
+				");
+		} else { // wybrano pracownika/ów
+			foreach ($pracownicyIds as $idPracownik) {
+				DB::getPDO()->insert($refPowiazaniaToPracownicy, ['PRIMARY_KEY' => $idRaport, 'REMOTE_PRIMARY_KEY' => $idPracownik]);
+			}
 		}
 
-		// ...
+			/* KONTRAHENCI */
+			if ( !$kontrahenciIds ) {
+				// dodajemy wszystkich pracowników
+					DB::getPDO()->execSql("insert into `{$refPowiazaniaToKontrahenci}` (`PRIMARY_KEY`,`REMOTE_PRIMARY_KEY`)
+					select '{$idRaport}' as PRIMARY_KEY
+					, ID as REMOTE_PRIMARY_KEY
+					from `BI_audit_ENERGA_RUM_KONTRAHENCI`
+					");
+			} else { // wybrano pracownika/ów
+				foreach ($kontrahenciIds as $idKontrahent) {
+					DB::getPDO()->insert($refPowiazaniaToKontrahenci, ['PRIMARY_KEY' => $idRaport, 'REMOTE_PRIMARY_KEY' => $idKontrahent ]);
+				}
+			}
 
 		return [
 			'msg' => "Zadanie do wygnerowania raportu zostało zapisane.",
@@ -1417,6 +1515,8 @@ public function showPowiazaniaEnergaRumKontrahenciPowiazania($items) {
 
 					$formSmadDepth = '<input type="text" class="form-control smad-depth-kontrahenci" placeholder="1-16" value="" />';
 
+					$formSmadSelectTarget = '<select class="form-control" id="smad-select-target-kontrahenci"><option value="n">nie</option><option value="y">tak</option></select>';
+
 					$formFilterHeadTitle = '<h2 class="title" id="smad-filter-head-title-kontrahenci">Wszyscy</h2>';
 					$formFilterHeadDesc = '<p>Liczba pozycji na liście: <span id="smad-filter-desc-kontrahenci">0</span></p>';
 					$countSelectedItem = '<div>Wybrano: <span id="count-selected-item-kontrahenci">0</span> <span><a title="wyczyść zapamietanych kontrahentów"  class="link-primary" onClick="clearListLocalStorageByType(\'kontrahenci\')"><small>(wyczyść)</small></a></span></div>';
@@ -1430,7 +1530,7 @@ public function showPowiazaniaEnergaRumKontrahenciPowiazania($items) {
 					$buttonMoveToGroup = '<a title="DODAJ WYBRANE DO GRUPY" onClick="addKontrahenciToGroup(event)" class="btn btn-info">DODAJ WYBRANE DO GRUPY</a>';
 					$buttonMoveToGroup .= '<a title="DODAJ WSZYSTKIE DO GRUPY" onClick="addKontrahenciAllToGroup(event)" class="btn btn-info" style="margin-left:12px">DODAJ WSZYSTKIE DO GRUPY</a>';
 
-					$showButtonNextStep = '<button type="button" class="btn btn-primary" onClick="generateBiAuditRaport(event)" id="button-generate-reaport">SZUKAJ POWIĄZAŃ</button>';
+					$showButtonNextStep = '';
 
 					$pagination_form = '<div id="pagination-kontrahenci"></div>';
 
@@ -1460,6 +1560,8 @@ public function showPowiazaniaEnergaRumKontrahenciPowiazania($items) {
 
 					$formSmadDepth = '<input type="text" class="form-control smad-depth" placeholder="1-16" value="" />';
 
+					$formSmadSelectTarget = '<select class="form-control" id="smad-select-target"><option value="n">nie</option><option value="y">tak</option></select>';
+
 					$formFilterHeadTitle = '<h2 class="title" id="smad-filter-head-title-pracownicy">Wszyscy</h2>';
 					$formFilterHeadDesc = '<p>Liczba pozycji na liście: <span id="smad-filter-desc-pracownicy">0</span></p>';
 					$countSelectedItem = '<div>Wybrano: <span id="count-selected-item-pracownicy">0</span> <span><a title="wyczyść zapamietanych pracowników" class="link-primary" onClick="clearListLocalStorageByType(\'pracownicy\')"><small>(wyczyść)</small></a></span></div>';
@@ -1560,11 +1662,17 @@ public function showPowiazaniaEnergaRumKontrahenciPowiazania($items) {
 											</div>
 											<div class="col-md-3">
 													<div class="form-input">
-															<div class="form-item col-md-6 smad-heder-title">głębokość powiązań:</div>
-															<div class="form-item col-md-6">
+															<div class="form-item col-md-7  col-lg-9 smad-heder-title">głębokość powiązań:</div>
+															<div class="form-item col-md-5  col-lg-3">
 																	'.$formSmadDepth.'
 															</div>
 													</div>
+													<div class="form-input">
+															<div class="form-item col-md-7  col-lg-9 smad-heder-title">Czy zwracać wyniki tylko ze znalezionymi obiektami docelowymi(z tabeli kontrahentów)?</div>
+															<div class="form-item col-md-5  col-lg-3">
+																	'.$formSmadSelectTarget.'
+															</div>
+													</div>
 											</div>
 									</div>
 							</div>
@@ -1627,6 +1735,22 @@ public function showPowiazaniaEnergaRumKontrahenciPowiazania($items) {
 			<!-- end:bottom buttons -->
 	</div>
 	<!-- start:employees-section -->
+
+	<!-- START:bottom generate reaport-->
+<div class="container-fluid smad-generate-reaport">
+    <div class="row">
+        <div class="container text-center">
+            <button type="button" class="btn btn-default smad-generate-reaport-button" onclick="generateBiAuditRaport(event)" id="button-generate-reaport" >GENERUJ RAPORT POWIĄZAŃ</button>
+        </div>
+        <div class="container smad-generate-reaport-info text-center">
+            <div class="step-title"><span class="bottom--count-selected-item-kontrahenci"></span></div>
+            <div class="step-title"><span class="bottom--count-selected-item-pracownicy"></span></div>
+						<div><strong><span class="bottom--message-warning-critical-search"></span></strong></div>
+        </div>
+    </div>
+</div>
+<!-- end:bottom generate reaport -->
+
 			';
 			return $view;
 		}

+ 189 - 46
tools/Bocian.php.view.js

@@ -49,6 +49,7 @@ function loadCurrentDepthInInput(idInput) {
    });
 }
 
+
 function updateLocalStorageBiAuditDepth(idInput) {
   $(idInput).keyup(function() {
     delayUpdate(function(){
@@ -58,7 +59,30 @@ function updateLocalStorageBiAuditDepth(idInput) {
       setItemLocalStorage('Bocian.biAuditForm.depth', responseValue);
       loadCurrentDepthInInput('.smad-depth');
 			loadCurrentDepthInInput('.smad-depth-kontrahenci');
+
+			// check depth value
+			if ( parseInt(newValue) > 4 ) {
+				// check count praconwicy/kontrahenci
+					var formItemsPraconwicyKontrahenci = countChoiseItemsPraconwicyKontrahenci();
+
+				// disable button generate reaport if not choise 'praconwicy' or 'kontrahenci'
+					if (
+						(formItemsPraconwicyKontrahenci.totalPracownicy === 0 && formItemsPraconwicyKontrahenci.totalKontrahenci != 0 ) ||
+						(formItemsPraconwicyKontrahenci.totalPracownicy != 0 && formItemsPraconwicyKontrahenci.totalKontrahenci === 0 )
+					) {
+						p5UI__notifyAjaxCallback({ type: 'error', msg: messageCriticalSearchData });
+
+						$('.bottom--message-warning-critical-search').text(messageCriticalSearchData);
+
+						console.log('popup i dodanie komunikatu niżej');
+					} else {
+						$('.bottom--message-warning-critical-search').text('');
+						console.log('popup i dodanie wyczysc komunikatu ');
+					}
+			}
+
     }, 1000 );
+
   });
 }
 
@@ -85,6 +109,49 @@ var delayUpdate = (function() {
  };
 })();
 
+/**
+ * Check count choise pracownicy/kontrahenci
+ */
+function countChoiseItemsPraconwicyKontrahenci() {
+	var countPracownicy = getItemLocalStorage('Bocian.biAuditForm.pracownicyIds');
+	var countKontrahenci = getItemLocalStorage('Bocian.biAuditForm.kontrahenciIds');
+
+	var formItems = {
+		'totalPracownicy': ((countPracownicy) ? Object.keys(countPracownicy).length : 0),
+		'totalKontrahenci': ((countKontrahenci) ? Object.keys(countKontrahenci).length : 0)
+	};
+
+	return formItems;
+}
+
+/**
+ * Załadowanie  wybranej pozycji w select  czy zwracać wyniki tylko z obiektami docelowymi onlyTarget
+ */
+function loadCurrentOnlyTargetsSelect() {
+  var analizaOnlyTargets = getItemLocalStorage('Bocian.biAuditForm.analizaOnlyTargets');
+
+	$('#smad-select-target').val(analizaOnlyTargets).attr("selected", "selected");
+	$('#smad-select-target-kontrahenci').val(analizaOnlyTargets).attr("selected", "selected");
+}
+
+/**
+ * Załadowanie do storage informacji czy zwracać wyniki tylko z obiektami docelowymi
+ */
+function updateLocalStorageBiAuditOnlyTargets(idSelect) {
+  $(idSelect).change(function() {
+
+      var newValue = $(idSelect).val();
+      var responseValue = newValue;
+
+      setItemLocalStorage('Bocian.biAuditForm.analizaOnlyTargets', responseValue);
+
+			$('#smad-select-target').val(newValue).attr("selected", "selected");
+			$('#smad-select-target-kontrahenci').val(newValue).attr("selected", "selected");
+			// load in select selected option
+			loadCurrentOnlyTargetsSelect();
+  });
+}
+
 function initLocalStorage() {
 
 	if (getItemLocalStorage('Bocian.biAuditForm.pracownicyIds') === null) {
@@ -101,6 +168,12 @@ function initLocalStorage() {
 	if (getItemLocalStorage('Bocian.biAuditForm.depth') === null) {
 		updateLocalStorageBiAuditDepth(7);
 	}
+
+	if (getItemLocalStorage('Bocian.biAuditForm.analizaOnlyTargets') === null) {
+		setItemLocalStorage('Bocian.biAuditForm.analizaOnlyTargets', 'n');
+		 //updateLocalStorageBiAuditOnlyTargets('#smad-select-target-kontrahenci');
+		 //updateLocalStorageBiAuditOnlyTargets('#smad-select-target-kontrahenci');
+	}
 }
 
 /**
@@ -247,6 +320,7 @@ function defaultBIAuditLocalStorage() {
 	setItemLocalStorage('Bocian.biAuditForm.pracownicy.filterIdGroup', 0);
 	setItemLocalStorage('Bocian.biAuditForm.kontrahenci.filterIdGroup', 0);
 	setItemLocalStorage('Bocian.biAuditForm.depth', 7);
+	setItemLocalStorage('Bocian.biAuditForm.analizaOnlyTargets', 'n');
 }
 
 
@@ -257,55 +331,90 @@ function generateBiAuditRaport(event) {
 		var pracownicyIdsArray = getItemLocalStorage('Bocian.biAuditForm.pracownicyIds');
 		var kontrahenciIdsArray = getItemLocalStorage('Bocian.biAuditForm.kontrahenciIds');
 		var depthValue = getItemLocalStorage('Bocian.biAuditForm.depth');
+		var analizaOnlyTargets = getItemLocalStorage('Bocian.biAuditForm.analizaOnlyTargets');
 
 		// validate
 		if (!depthValue || depthValue === 0) {
 			p5UI__notifyAjaxCallback({ type: 'error', msg: 'Nie podano wartości dla głębokości powiązań' });
-		} else if (!pracownicyIdsArray || pracownicyIdsArray.length === 0) {
-			p5UI__notifyAjaxCallback({ type: 'error', msg: 'Nie wybrano pracowników' });
-		} else if (!kontrahenciIdsArray || kontrahenciIdsArray.length === 0) {
-			p5UI__notifyAjaxCallback({ type: 'error', msg: 'Nie wybrano kontrahentów' });
+		} else if ( (!pracownicyIdsArray || pracownicyIdsArray.length === 0) && (!kontrahenciIdsArray || kontrahenciIdsArray.length === 0)	 ) {
+			p5UI__notifyAjaxCallback({ type: 'error', msg: 'Nie wybrano pozycji do analizy' });
 		} else {
-			// send
-			window.fetch(URL_GENERATE_BI_AUDIT_RAPORT_AJAX, {
-				  method: 'POST',
-				  headers: {
-				    'Content-Type': 'application/json'
-				  },
-					credentials: 'same-origin',
-				  body: JSON.stringify({
-				     pracownicyIds: pracownicyIdsArray,
-				     kontrahenciIds: kontrahenciIdsArray,
-				     depthValue: depthValue
-				  })
-				})
-				.then(function(response) {
-					console.log('Firsst then', response);
-					return response.text();
-				})
-				.then(function(responseText) {
-					try {
-						return JSON.parse(responseText);
-					} catch (e) {
-						throw responseText;
-					}
-				})
-				.then(function(result) {
+			var generateReaport = true; // generuj raport
 
-					if (result.type == 'success') {
+			// if not choise 'pracowniocy' or 'kontrahenci'
+			if ( (!pracownicyIdsArray || pracownicyIdsArray.length === 0)  || (!kontrahenciIdsArray || kontrahenciIdsArray.length === 0) ) {
 
-						p5UI__notifyAjaxCallback(result);
-						defaultBIAuditLocalStorage();
-						window.setTimeout(URL_TABLE_POWIAZANIA, 6000);
-						resolve(result.msg);
+				var messageConfirm = '';
+				// check selected items
+				if ( !pracownicyIdsArray || pracownicyIdsArray.length === 0 ) {
+					messageConfirm = 'Nie wybrano pracownika/ów! Czas przygotowania raportu może wydłużyć się ze względu na sprawdzenie powiązania ze wszystkimi pracownikami w systemie. Czy jesteś pewny? ';
+				}
+				if ( !kontrahenciIdsArray || kontrahenciIdsArray.length === 0 )  {
+					messageConfirm = 'Nie wybrano kontrahenta/ów! Czas przygotowania raportu może wydłużyć się ze względu na sprawdzenie powiązania ze wszystkimi kontrahentami w systemie. Czy jesteś pewny? ';
+				}
+
+				// show confirm window with message
+				if (confirm(messageConfirm)) {
+	    		generateReaport = true;
+				} else { // cancel
+					generateReaport = false;
+				}
+			}
+
+			if (generateReaport === true) {
+				// send
+				window.fetch(URL_GENERATE_BI_AUDIT_RAPORT_AJAX, {
+					  method: 'POST',
+					  headers: {
+					    'Content-Type': 'application/json'
+					  },
+						credentials: 'same-origin',
+					  body: JSON.stringify({
+					     pracownicyIds: pracownicyIdsArray,
+					     kontrahenciIds: kontrahenciIdsArray,
+					     depthValue: depthValue,
+							 analizaOnlyTargets: analizaOnlyTargets
+					  })
+					})
+					.then(function(response) {
+						console.log('Firsst then', response);
+						return response.text();
+					})
+					.then(function(responseText) {
+						try {
+							return JSON.parse(responseText);
+						} catch (e) {
+							throw responseText;
+						}
+					})
+					.then(function(result) {
+
+						if (result.type == 'success') {
+
+							p5UI__notifyAjaxCallback(result);
+							defaultBIAuditLocalStorage();
+							updateTopCounters();
+							// unchecked checkbox pracownicy
+							$('#smad-table-PRACOWNICY form').find(':checkbox').prop('checked', false);
+							// unchecked checkbox kontrahenci
+							$('#smad-table-KONTRAHENCI form').find(':checkbox').prop('checked', false);
+							//
+							$('#count-selected-item-kontrahenci').text('0');
+							$('#count-selected-item-pracownicy').text('0');
+							$('.bottom--message-warning-critical-search').text('');
+
+							window.setTimeout(URL_TABLE_POWIAZANIA, 6000);
+							resolve(result.msg);
+
+						} else {
+							reject(result.msg);
+						}
+					})
+					.catch(function(error) {
+						console.log('request failed', error)
+					});
+			}
 
-					} else {
-						reject(result.msg);
-					}
-				})
-				.catch(function(error) {
-					console.log('request failed', error)
-				});
 		}
 }
 
@@ -749,7 +858,6 @@ function createGroupPracownicy(event) {
 				.then(function(result) {
 
 					if (result.type == 'success') {
-						console.log('grupa prac1: ', result);
 						p5UI__notifyAjaxCallback(result);
 						resolve(result.body);
 					} else {
@@ -779,7 +887,7 @@ function rootChangeForm() {
 urlFetchKontrahenciPowiazania();
 	var valueUrl = global.location.hash;
 
-console.log('URL', valueUrl);
+
 	switch (valueUrl) {
 		case '#KONTRAHENCI':
 			$( ".container-bi_audit_form_kontrahenci_raport" ).html( VIEW_KONTRAHENCI );
@@ -795,7 +903,7 @@ console.log('URL', valueUrl);
 			fetchGroupPracownicy();
 			$( ".container-bi_audit_form_kontrahenci_raport" ).hide();
 			$( ".container-bi_audit_form_pracownicy_raport" ).show();
-		break;
+			break;
 
 		// case '#REAPORT':
 		// 	$( ".container-bi_audit_form_raport_data" ).html( VIEW_TREE_REAPORT );
@@ -810,6 +918,8 @@ console.log('URL', valueUrl);
 			urlFetchPracownicy(1);
 			fetchGroupPracownicy();
 			$( ".container-bi_audit_form_kontrahenci_raport" ).hide();
+			$( ".container-training" ).hide();
+			$( ".container-about" ).hide();
 			$( ".container-bi_audit_form_pracownicy_raport" ).show();
 		break;
 	}
@@ -819,6 +929,11 @@ console.log('URL', valueUrl);
 	loadCurrentDepthInInput('.smad-depth-kontrahenci');
 	updateLocalStorageBiAuditDepth('.smad-depth');
 	updateLocalStorageBiAuditDepth('.smad-depth-kontrahenci');
+	// aktualizacja select option czy zwracać wyniki tylko z obiektami docelowymi
+	updateLocalStorageBiAuditOnlyTargets('#smad-select-target');
+	updateLocalStorageBiAuditOnlyTargets('#smad-select-target-kontrahenci');
+	// load in select selected option BI_analiza_onlyTargets
+	loadCurrentOnlyTargetsSelect();
 
 }
 
@@ -1487,11 +1602,17 @@ function detectChoiseFilter() {
 		var filterIdGroup = $(this).attr("data-group-filter");
 		// aktaulna wartość  zagłebienia
 		var currentDepthValue = getItemLocalStorage('Bocian.biAuditForm.depth');
+		// czy zwracać wyniki tylko z obiektami docelowymi
+		var analizaOnlyTargets = getItemLocalStorage('Bocian.biAuditForm.analizaOnlyTargets');
+
 		//reset LocalStorage
 		// defaultBIAuditLocalStorage();
 		// ustawienie ostaniej wartości zagłebienia  przed resete
 		setItemLocalStorage('Bocian.biAuditForm.depth', currentDepthValue);
 
+		// czy zwracać wyniki tylko z obiektami docelowymi
+		setItemLocalStorage('Bocian.biAuditForm.analizaOnlyTargets', analizaOnlyTargets);
+
 		// ustawić id grupy do sesyjnej
 		setItemLocalStorage('Bocian.biAuditForm.kontrahenci.filterIdGroup', parseInt(filterIdGroup));
 		// wywylac funckje pobrania danych
@@ -1631,11 +1752,30 @@ function updateTopCounters() {
 	var countKontrahenci = getItemLocalStorage('Bocian.biAuditForm.kontrahenciIds');
 	var totalPracownicy = (countPracownicy) ? Object.keys(countPracownicy).length : 0;
 	var totalKontrahenci = (countKontrahenci) ? Object.keys(countKontrahenci).length : 0;
+	var depthValue = getItemLocalStorage('Bocian.biAuditForm.depth');
 	console.warn({totalPracownicy: totalPracownicy, totalKontrahenci: totalKontrahenci})
 	$('.top--count-selected-item-pracownicy').text(totalPracownicy ? '('+totalPracownicy+')' : '');
 	$('.top--count-selected-item-kontrahenci').text(totalKontrahenci ? '('+totalKontrahenci+')' : '');
-	$('.top--count-selected-item-pracownicy').attr('title', totalPracownicy ? "Wybrano: " + totalPracownicy + " pracowników" : '');
-	$('.top--count-selected-item-kontrahenci').attr('title', totalKontrahenci ? "Wybrano: " + totalKontrahenci + " kontrahentów" : '');
+	$('.bottom--count-selected-item-pracownicy').text(totalPracownicy ? "Wybrano: (" + totalPracownicy + ") pracownika/ów" : '');
+	$('.bottom--count-selected-item-kontrahenci').text(totalKontrahenci ? "Wybrano: (" + totalKontrahenci + ") kontrahenta/ów" : '');
+
+
+// disable button generate reaport if not choise 'praconwicy' or 'kontrahenci'
+	if ( totalPracownicy === 0 && totalKontrahenci === 0 ) {
+		$('.smad-generate-reaport-button').addClass('disabled');
+	} else {
+
+		if ( ( totalPracownicy === 0 || totalKontrahenci === 0 ) && parseInt(depthValue) > 4) {
+			$('.bottom--message-warning-critical-search').text(messageCriticalSearchData);
+			console.log('dodanie komunikatu niżej');
+		} else {
+			console.log('wyczyc komunikatu niżej');
+			$('.bottom--message-warning-critical-search').text('');
+		}
+
+
+		$('.smad-generate-reaport-button').removeClass('disabled');
+	}
 }
 
 
@@ -2048,3 +2188,6 @@ global.addKontrahenciAllToGroup = addKontrahenciAllToGroup;
 global.showViewUploadFile = showViewUploadFile;
 global.parseCsvFile = parseCsvFile;
 global.clearListLocalStorageByType = clearListLocalStorageByType;
+
+// message
+global.messageCriticalSearchData = 'Krytyczne wielkości danych do przeszukania. Optymalna wartość głębokość szukania powiaząń to: 4';

+ 24 - 0
tools/page-about.view.php

@@ -0,0 +1,24 @@
+<div class="container-fluid">
+  <div class="container"  style="padding: 50px 0;">
+      <h1>O Bocianie</h1>
+      <h4>"Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit..."</h4>
+      <h5>"Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit...."</h5>
+      <hr>
+          <p>
+            Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc nec ipsum vitae nibh efficitur vulputate id id ipsum. Integer congue nec dui ut rutrum. Nullam quis elit tellus. Nam quis ornare tortor. Mauris fermentum sem orci, eget dignissim risus fringilla vitae. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Vestibulum lacinia consectetur sollicitudin. Maecenas quis faucibus elit, eu iaculis leo. Integer viverra libero ac egestas laoreet. Suspendisse cursus tellus nec dapibus mattis. Integer eget felis porta, lacinia tellus ut, bibendum odio.
+          </p>
+          <p>
+            Nam rhoncus tortor quam, at dapibus leo commodo quis. Aliquam tempor, sapien quis facilisis facilisis, justo odio laoreet lorem, in accumsan risus erat in nulla. Aenean at risus egestas, egestas quam vitae, porta est. Curabitur non ullamcorper purus. Mauris lacinia diam et purus auctor, a porta est volutpat. Nullam in urna ut dui mattis vulputate. Nullam pharetra diam in metus vestibulum, eu dictum urna tempus. Phasellus porttitor nisi nisl, ut finibus felis consectetur at. Nulla malesuada enim eget tellus fermentum, vitae ullamcorper ante congue. Praesent fermentum finibus commodo. Sed venenatis semper nulla, in viverra mi vehicula nec. Nam est sem, posuere vel turpis ac, cursus maximus erat.
+          </p>
+          <p>
+            Vivamus feugiat suscipit nisl eget ornare. Nulla sodales ex lacus, sed tincidunt felis pulvinar vitae. Mauris ut magna quis ante ornare ullamcorper. Curabitur ut sodales sapien. Donec in arcu lacinia, tempor augue et, imperdiet est. Aenean in orci pharetra, interdum sapien nec, posuere lectus. Vivamus gravida turpis lacus, imperdiet lobortis est euismod non. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Morbi maximus tellus in enim condimentum tristique. Phasellus fringilla ultrices arcu. Fusce egestas tellus eu orci interdum, non consectetur sem consequat. Sed vehicula, dui vitae convallis aliquam, neque risus bibendum mi, in bibendum odio enim in mi.
+          </p>
+          <p>
+            Ut eu justo mauris. Morbi dignissim dolor id ante molestie eleifend. Praesent eu eleifend sapien. Vestibulum placerat tortor vel pellentesque facilisis. Sed pharetra, dolor vel aliquet placerat, metus nulla tempus massa, vitae pulvinar justo lorem ac lectus. Mauris maximus vehicula accumsan. Morbi vestibulum malesuada massa at sodales.
+          </p>
+          <p>
+            Nullam ut arcu tortor. Duis pretium enim erat, fringilla fermentum ligula dapibus eu. Sed eget nunc non ipsum tempus viverra. Praesent eu mi id justo lacinia scelerisque facilisis a est. Nam sit amet risus sapien. Quisque vel facilisis ipsum. Curabitur urna ipsum, bibendum imperdiet convallis at, aliquet vitae enim. Integer et erat elementum sapien sodales rhoncus at nec purus. Sed faucibus ipsum ut lectus volutpat suscipit non maximus lacus. Donec tincidunt purus ac dignissim posuere. Vestibulum id venenatis nisi, in rhoncus justo. Proin rutrum, dolor et luctus condimentum, est nunc efficitur nibh, eu vulputate ligula nisl sed lacus. Proin congue, ante eu aliquam egestas, quam dolor ultricies lectus, in ultrices ante odio at dolor. Nam in diam dapibus, pulvinar enim id, aliquet nunc. Aenean a massa mi. Curabitur molestie odio in ante mollis, quis eleifend lacus efficitur.
+          </p>
+      <hr>
+  </div>
+</div>

+ 41 - 0
tools/page-help.view.php

@@ -0,0 +1,41 @@
+<!-- start:form -->
+      <form method="POST" >
+        <div id="smad-form-section" class="container">
+            <div class="row">
+                <div class="smad-form text-center">
+                    <div class="smad-form-header">
+                        <header>
+                            <h2>WYPEŁNIJ FORMULARZ</h2>
+                        </header>
+                    </div>
+                    <? if ($responseSendMail == true) { ?>
+                    <div class="smad-message">
+                      <div class="success-send alert alert-success">Wiadomość została wysłana</div>
+                    </div>
+                    <? } ?>
+                    <div class="smad-form-body">
+                      <div class="form-group">
+                        <label class="control-label"><span style="padding-right: 4px;">Email</span>
+                          <i data-toggle="popover" data-trigger="hover" title="" data-content="Email kontaktowy" class="glyphicon glyphicon-info-sign frm-help"></i>
+                        </label>
+                        <div class="">
+                            <input type="text" id="help_email" name="help_email" class="form-control" value="">
+                        </div>
+                      </div>
+                      <div class="form-group">
+                        <label class="control-label"><span style="padding-right: 4px;">Treść wiadomości</span>
+                          <i data-toggle="popover" data-trigger="hover" title="" data-content="Opisz napotkany problem" class="glyphicon glyphicon-info-sign frm-help"></i>
+                        </label>
+                        <div class="">
+                            <textarea name="help_description" class="form-control" rows="5" cols="40" ></textarea>
+                        </div>
+                      </div>
+                    </div>
+                    <div class="form-group">
+                        <button type="submit" class="btn btn-primary">WYŚLIJ</button>
+                    </div>
+                </div>
+            </div>
+        </div>
+      </form>
+<!-- end:form -->

+ 24 - 0
tools/page-training.view.php

@@ -0,0 +1,24 @@
+<div class="container-fluid">
+  <div class="container" style="padding: 50px 0;">
+      <h1>Szkolenie</h1>
+      <h4>"Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit..."</h4>
+      <h5>"Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit...."</h5>
+      <hr>
+          <p>
+            Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc nec ipsum vitae nibh efficitur vulputate id id ipsum. Integer congue nec dui ut rutrum. Nullam quis elit tellus. Nam quis ornare tortor. Mauris fermentum sem orci, eget dignissim risus fringilla vitae. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Vestibulum lacinia consectetur sollicitudin. Maecenas quis faucibus elit, eu iaculis leo. Integer viverra libero ac egestas laoreet. Suspendisse cursus tellus nec dapibus mattis. Integer eget felis porta, lacinia tellus ut, bibendum odio.
+          </p>
+          <p>
+            Nam rhoncus tortor quam, at dapibus leo commodo quis. Aliquam tempor, sapien quis facilisis facilisis, justo odio laoreet lorem, in accumsan risus erat in nulla. Aenean at risus egestas, egestas quam vitae, porta est. Curabitur non ullamcorper purus. Mauris lacinia diam et purus auctor, a porta est volutpat. Nullam in urna ut dui mattis vulputate. Nullam pharetra diam in metus vestibulum, eu dictum urna tempus. Phasellus porttitor nisi nisl, ut finibus felis consectetur at. Nulla malesuada enim eget tellus fermentum, vitae ullamcorper ante congue. Praesent fermentum finibus commodo. Sed venenatis semper nulla, in viverra mi vehicula nec. Nam est sem, posuere vel turpis ac, cursus maximus erat.
+          </p>
+          <p>
+            Vivamus feugiat suscipit nisl eget ornare. Nulla sodales ex lacus, sed tincidunt felis pulvinar vitae. Mauris ut magna quis ante ornare ullamcorper. Curabitur ut sodales sapien. Donec in arcu lacinia, tempor augue et, imperdiet est. Aenean in orci pharetra, interdum sapien nec, posuere lectus. Vivamus gravida turpis lacus, imperdiet lobortis est euismod non. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Morbi maximus tellus in enim condimentum tristique. Phasellus fringilla ultrices arcu. Fusce egestas tellus eu orci interdum, non consectetur sem consequat. Sed vehicula, dui vitae convallis aliquam, neque risus bibendum mi, in bibendum odio enim in mi.
+          </p>
+          <p>
+            Ut eu justo mauris. Morbi dignissim dolor id ante molestie eleifend. Praesent eu eleifend sapien. Vestibulum placerat tortor vel pellentesque facilisis. Sed pharetra, dolor vel aliquet placerat, metus nulla tempus massa, vitae pulvinar justo lorem ac lectus. Mauris maximus vehicula accumsan. Morbi vestibulum malesuada massa at sodales.
+          </p>
+          <p>
+            Nullam ut arcu tortor. Duis pretium enim erat, fringilla fermentum ligula dapibus eu. Sed eget nunc non ipsum tempus viverra. Praesent eu mi id justo lacinia scelerisque facilisis a est. Nam sit amet risus sapien. Quisque vel facilisis ipsum. Curabitur urna ipsum, bibendum imperdiet convallis at, aliquet vitae enim. Integer et erat elementum sapien sodales rhoncus at nec purus. Sed faucibus ipsum ut lectus volutpat suscipit non maximus lacus. Donec tincidunt purus ac dignissim posuere. Vestibulum id venenatis nisi, in rhoncus justo. Proin rutrum, dolor et luctus condimentum, est nunc efficitur nibh, eu vulputate ligula nisl sed lacus. Proin congue, ante eu aliquam egestas, quam dolor ultricies lectus, in ultrices ante odio at dolor. Nam in diam dapibus, pulvinar enim id, aliquet nunc. Aenean a massa mi. Curabitur molestie odio in ante mollis, quis eleifend lacus efficitur.
+          </p>
+        <hr>
+  </div>
+</div>

Algúns arquivos non se mostraron porque demasiados arquivos cambiaron neste cambio