50 |
51 | @if (isset($session['warning'])) 52 |
53 | 54 | {{ $session['warning'] }} 55 |
56 | @endif 57 | 58 | @if (isset($session['error'])) 59 |
60 | 61 | {{ $session['error'] }} 62 |
63 | @endif 64 | 65 | @if (isset($session['info'])) 66 |
67 | 68 | {{ $session['info'] }} 69 |
70 | @endif 71 | 72 | @if (isset($session['success'])) 73 |
74 | 75 | {{ $session['success'] }} 76 |
77 | @endif 78 |
79 | 80 |
81 | @yield('content') 82 |
83 | 84 | 87 | 88 | 89 | 90 | 91 | 92 | @yield('scripts') 93 | 94 | 95 | 96 | -------------------------------------------------------------------------------- /app/views/site/en/imprint.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.master') 2 | 3 | @section('content') 4 |
5 |
6 |

Impressum (Deutsch)

7 | 8 |

Angaben gemäß § 5 TMG

9 | 10 |
11 | Tim Helfensdörfer
12 | Klippe 109
13 | 42555 Velbert
14 |
15 | Telefon: 020529285977
16 | E-Mail: thelfensdrfer@gmail.com
17 |
18 |
19 | 20 |
21 |

Imprint (English)

22 | 23 |
24 | Tim Helfensdörfer
25 | Klippe 109
26 | 42555 Velbert
27 | Germany
28 |
29 | Phone: 020529285977
30 | Email: thelfensdrfer@gmail.com
31 |
32 |
33 |
34 | @stop -------------------------------------------------------------------------------- /app/views/site/en/privacy.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.master') 2 | 3 | @section('content') 4 |
5 |
6 |

Datenschutzerklärung (Deutsch)

7 | 8 |

Geltungsbereich

9 | 10 |

Diese Datenschutzerklärung klärt Nutzer über die Art, den Umfang und Zwecke der Erhebung und Verwendung personenbezogener Daten durch den verantwortlichen Anbieter Tim Helfensdörfer (thelfensdrfer@gmail.com, Klippe 109, 42555 Velbert, 02052/9285977) auf dieser Website (im folgenden “Angebot”) auf.

11 | 12 |

Die rechtlichen Grundlagen des Datenschutzes finden sich im Bundesdatenschutzgesetz (BDSG) und dem Telemediengesetz (TMG).

13 | 14 |

Zugriffsdaten/ Server-Logfiles

15 | 16 |

Der Anbieter (beziehungsweise sein Webspace-Provider) erhebt Daten über jeden Zugriff auf das Angebot (so genannte Serverlogfiles). Zu den Zugriffsdaten gehören:

17 | 18 |

Name der abgerufenen Webseite, Datei, Datum und Uhrzeit des Abrufs, übertragene Datenmenge, Meldung über erfolgreichen Abruf, Browsertyp nebst Version, das Betriebssystem des Nutzers, Referrer URL (die zuvor besuchte Seite), IP-Adresse und der anfragende Provider.

19 | Der Anbieter verwendet die Protokolldaten nur für statistische Auswertungen zum Zweck des Betriebs, der Sicherheit und der Optimierung des Angebotes. Der Anbieterbehält sich jedoch vor, die Protokolldaten nachträglich zu überprüfen, wenn aufgrund konkreter Anhaltspunkte der berechtigte Verdacht einer rechtswidrigen Nutzung besteht.

20 | 21 |

Umgang mit personenbezogenen Daten

22 | 23 |

Personenbezogene Daten sind Informationen, mit deren Hilfe eine Person bestimmbar ist, also Angaben, die zurück zu einer Person verfolgt werden können. Dazu gehören der Name, die Emailadresse oder die Telefonnummer. Aber auch Daten über Vorlieben, Hobbies, Mitgliedschaften oder welche Webseiten von jemandem angesehen wurden zählen zu personenbezogenen Daten.

24 | 25 |

Personenbezogene Daten werden von dem Anbieter nur dann erhoben, genutzt und weiter gegeben, wenn dies gesetzlich erlaubt ist oder die Nutzer in die Datenerhebung einwilligen.

26 | 27 |

Kontaktaufnahme

28 | 29 |

Bei der Kontaktaufnahme mit dem Anbieter (zum Beispiel per Kontaktformular oder E-Mail) werden die Angaben des Nutzers zwecks Bearbeitung der Anfrage sowie für den Fall, dass Anschlussfragen entstehen, gespeichert.

30 | 31 |

Einbindung von Diensten und Inhalten Dritter

32 | 33 |

Es kann vorkommen, dass innerhalb dieses Onlineangebotes Inhalte Dritter, wie zum Beispiel Videos von YouTube, Kartenmaterial von Google-Maps, RSS-Feeds oder Grafiken von anderen Webseiten eingebunden werden. Dies setzt immer voraus, dass die Anbieter dieser Inhalte (nachfolgend bezeichnet als "Dritt-Anbieter") die IP-Adresse der Nutzer wahr nehmen. Denn ohne die IP-Adresse, könnten sie die Inhalte nicht an den Browser des jeweiligen Nutzers senden. Die IP-Adresse ist damit für die Darstellung dieser Inhalte erforderlich. Wir bemühen uns nur solche Inhalte zu verwenden, deren jeweilige Anbieter die IP-Adresse lediglich zur Auslieferung der Inhalte verwenden. Jedoch haben wir keinen Einfluss darauf, falls die Dritt-Anbieter die IP-Adresse z.B. für statistische Zwecke speichern. Soweit dies uns bekannt ist, klären wir die Nutzer darüber auf.
34 |

35 | 36 |

Cookies

37 | 38 |

Cookies sind kleine Dateien, die es ermöglichen, auf dem Zugriffsgerät der Nutzer (PC, Smartphone o.ä.) spezifische, auf das Gerät bezogene Informationen zu speichern. Sie dienen zum einem der Benutzerfreundlichkeit von Webseiten und damit den Nutzern (z.B. Speicherung von Logindaten). Zum anderen dienen sie, um die statistische Daten der Webseitennutzung zu erfassen und sie zwecks Verbesserung des Angebotes analysieren zu können. Die Nutzer können auf den Einsatz der Cookies Einfluss nehmen. Die meisten Browser verfügen eine Option mit der das Speichern von Cookies eingeschränkt oder komplett verhindert wird. Allerdings wird darauf hingewiesen, dass die Nutzung und insbesondere der Nutzungskomfort ohne Cookies eingeschränkt werden.

39 | 40 |

Sie können viele Online-Anzeigen-Cookies von Unternehmen über die US-amerikanische Seite http://www.aboutads.info/choices/ oder die EU-Seite http://www.youronlinechoices.com/uk/your-ad-choices/ verwalten.

41 | 42 |

Registrierfunktion

43 | 44 |

Die im Rahmen der Registrierung eingegebenen Daten werden für die Zwecke der Nutzung des Angebotes verwendet. Die Nutzer können über angebots- oder registrierungsrelevante Informationen, wie Änderungen des Angebotsumfangs oder technische Umstände per E-Mail informiert werden. Die erhobenen Daten sind aus der Eingabemaske im Rahmen der Registrierung ersichtlich. Dazu gehören E-Mail Adresse (und weitere Eingaben auf der Registrierungsseite) und alle Daten die die Software auf dem Server gesammelt hat.

45 | 46 |

Google Analytics

47 | 48 |

Dieses Angebot benutzt Google Analytics, einen Webanalysedienst der Google Inc. („Google“). Google Analytics verwendet sog. „Cookies“, Textdateien, die auf Computer der Nutzer gespeichert werden und die eine Analyse der Benutzung der Website durch sie ermöglichen. Die durch den Cookie erzeugten Informationen über Benutzung dieser Website durch die Nutzer werden in der Regel an einen Server von Google in den USA übertragen und dort gespeichert.

49 | Im Falle der Aktivierung der IP-Anonymisierung auf dieser Webseite, wird die IP-Adresse der Nutzer von Google jedoch innerhalb von Mitgliedstaaten der Europäischen Union oder in anderen Vertragsstaaten des Abkommens über den Europäischen Wirtschaftsraum zuvor gekürzt. Nur in Ausnahmefällen wird die volle IP-Adresse an einen Server von Google in den USA übertragen und dort gekürzt. Die IP-Anonymisierung ist auf dieser Website aktiv. Im Auftrag des Betreibers dieser Website wird Google diese Informationen benutzen, um die Nutzung der Website durch die Nutzer auszuwerten, um Reports über die Websiteaktivitäten zusammenzustellen und um weitere mit der Websitenutzung und der Internetnutzung verbundene Dienstleistungen gegenüber dem Websitebetreiber zu erbringen.

50 | Die im Rahmen von Google Analytics von Ihrem Browser übermittelte IP-Adresse wird nicht mit anderen Daten von Google zusammengeführt. Die Nutzer können die Speicherung der Cookies durch eine entsprechende Einstellung Ihrer Browser-Software verhindern; Dieses Angebot weist die Nutzer jedoch darauf hin, dass Sie in diesem Fall gegebenenfalls nicht sämtliche Funktionen dieser Website vollumfänglich werden nutzen können. Die Nutzer können darüber hinaus die Erfassung der durch das Cookie erzeugten und auf ihre Nutzung der Website bezogenen Daten (inkl. Ihrer IP-Adresse) an Google sowie die Verarbeitung dieser Daten durch Google verhindern, indem sie das unter dem folgenden Link verfügbare Browser-Plugin herunterladen und installieren: http://tools.google.com/dlpage/gaoptout?hl=de.

51 | 52 |

Alternativ zum Browser-Add-On oder innerhalb von Browsern auf mobilen Geräten, klicken Sie bitte diesen Link, um die Erfassung durch Google Analytics innerhalb dieser Website zukünftig zu verhindern. Dabei wird ein Opt-Out-Cookie auf Ihrem Gerät abgelegt. Löschen Sie Ihre Cookies, müssen Sie diesen Link erneut klicken.
53 |

54 | 55 |

Newsletter

56 | 57 |

Mit dem Newsletter informieren wir Sie über uns und unsere Angebote.

58 | 59 |

Wenn Sie den Newsletter empfangen möchten, benötigen wir von Ihnen eine valide Email-Adresse sowie Informationen, die uns die Überprüfung gestatten, dass Sie der Inhaber der angegebenen Email-Adresse sind bzw. deren Inhaber mit dem Empfang des Newsletters einverstanden ist. Weitere Daten werden nicht erhoben. Diese Daten werden nur für den Versand der Newsletter verwendet und werden nicht an Dritte weiter gegeben.

60 | 61 |

Mit der Anmeldung zum Newsletter speichern wir Ihre IP-Adresse und das Datum der Anmeldung. Diese Speicherung dient alleine dem Nachweis im Fall, dass ein Dritter eine Emailadresse missbraucht und sich ohne Wissen des Berechtigten für den Newsletterempfang anmeldet.

62 | 63 |

Ihre Einwilligung zur Speicherung der Daten, der Email-Adresse sowie deren Nutzung zum Versand des Newsletters können Sie jederzeit widerrufen. Der Widerruf kann über einen Link in den Newslettern selbst, in Ihrem Profilbereich oder per Mitteilung an die oben stehenden Kontaktmöglichkeiten erfolgen.

64 | 65 |

Widerruf, Änderungen, Berichtigungen und Aktualisierungen

66 | 67 |

Der Nutzer hat das Recht, auf Antrag unentgeltlich Auskunft zu erhalten über die personenbezogenen Daten, die über ihn gespeichert wurden. Zusätzlich hat der Nutzer das Recht auf Berichtigung unrichtiger Daten, Sperrung und Löschung seiner personenbezogenen Daten, soweit dem keine gesetzliche Aufbewahrungspflicht entgegensteht.

68 | 69 |

Die Datenschutzerklärung wurde zuletzt am 24. März 2014 bearbeitet.

70 | 71 |

Datenschutz-Muster von Rechtsanwalt Thomas Schwenke - I LAW it

72 |
73 | 74 |
75 |

Privacy (English)

76 | 77 |

This Privacy Policy governs the manner in which Tim Helfensdörfer collects, uses, maintains and discloses information collected from users (each, a "User") of the http://quptime.computersciencegenius.com/ website ("Site"). This privacy policy applies to the Site and all products and services offered by Tim Helfensdörfer.

78 | 79 |

Personal identification information

80 | 81 |

We may collect personal identification information from Users in a variety of ways, including, but not limited to, when Users visit our site, register on the site, place an order, subscribe to the newsletter, fill out a form, and in connection with other activities, services, features or resources we make available on our Site. Users may be asked for, as appropriate, name, email address. We will collect personal identification information from Users only if they voluntarily submit such information to us. Users can always refuse to supply personally identification information, except that it may prevent them from engaging in certain Site related activities.

82 | 83 |

Non-personal identification information

84 | 85 |

We may collect non-personal identification information about Users whenever they interact with our Site. Non-personal identification information may include the browser name, the type of computer and technical information about Users means of connection to our Site, such as the operating system and the Internet service providers utilized and other similar information.

86 | 87 |

Web browser cookies

88 | 89 |

Our Site may use "cookies" to enhance User experience. User's web browser places cookies on their hard drive for record-keeping purposes and sometimes to track information about them. User may choose to set their web browser to refuse cookies, or to alert you when cookies are being sent. If they do so, note that some parts of the Site may not function properly.

90 | 91 |

How we use collected information

92 | 93 |

Tim Helfensdörfer may collect and use Users personal information for the following purposes:

94 | 95 |
    96 |
  • To improve customer service
    97 | Information you provide helps us respond to your customer service requests and support needs more efficiently.
  • 98 |
  • To improve our Site
    99 | We may use feedback you provide to improve our products and services.
  • 100 |
  • To process payments
    101 | We may use the information Users provide about themselves when placing an order only to provide service to that order. We do not share this information with outside parties except to the extent necessary to provide the service.
  • 102 |
  • To send periodic emails
    103 | We may use the email address to send User information and updates pertaining to their order. It may also be used to respond to their inquiries, questions, and/or other requests. If User decides to opt-in to our mailing list, they will receive emails that may include company news, updates, related product or service information, etc. If at any time the User would like to unsubscribe from receiving future emails, we include detailed unsubscribe instructions at the bottom of each email or User may contact us via our Site.
  • 104 |
105 | 106 |

How we protect your information

107 | 108 |

We adopt appropriate data collection, storage and processing practices and security measures to protect against unauthorized access, alteration, disclosure or destruction of your personal information, username, password, transaction information and data stored on our Site.

109 | 110 |

Sharing your personal information

111 | 112 |

We do not sell, trade, or rent Users personal identification information to others. We may share generic aggregated demographic information not linked to any personal identification information regarding visitors and users with our business partners, trusted affiliates and advertisers for the purposes outlined above.We may use third party service providers to help us operate our business and the Site or administer activities on our behalf, such as sending out newsletters or surveys. We may share your information with these third parties for those limited purposes provided that you have given us your permission.

113 | 114 |

Third party websites

115 | 116 |

Users may find advertising or other content on our Site that link to the sites and services of our partners, suppliers, advertisers, sponsors, licensors and other third parties. We do not control the content or links that appear on these sites and are not responsible for the practices employed by websites linked to or from our Site. In addition, these sites or services, including their content and links, may be constantly changing. These sites and services may have their own privacy policies and customer service policies. Browsing and interaction on any other website, including websites which have a link to our Site, is subject to that website's own terms and policies.

117 | 118 |

Changes to this privacy policy

119 | 120 |

Tim Helfensdörfer has the discretion to update this privacy policy at any time. When we do, we will revise the updated date at the bottom of this page. We encourage Users to frequently check this page for any changes to stay informed about how we are helping to protect the personal information we collect. You acknowledge and agree that it is your responsibility to review this privacy policy periodically and become aware of modifications.

121 | 122 |

Your acceptance of these terms

123 | 124 |

By using this Site, you signify your acceptance of this policy. If you do not agree to this policy, please do not use our Site. Your continued use of the Site following the posting of changes to this policy will be deemed your acceptance of those changes.

125 | 126 |

This document was last updated on March 24, 2014

127 | 128 |

Privacy policy created by http://www.generateprivacypolicy.com

129 |
130 |
131 | @stop -------------------------------------------------------------------------------- /app/views/user/account.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.master') 2 | 3 | @section('title') 4 | {{ trans('user.account.title') }} 5 | @stop 6 | 7 | @section('content') 8 |

{{ trans('user.account.headline') }}

9 | 10 | {{ Form::model($user, array('route' => 'user.save', 'class' => 'form-horizontal')) }} 11 | {{ Form::token() }} 12 | 13 |
14 | {{ Form::label('email', trans('user.account.form.email'), array('class' => 'col-sm-2 control-label')) }} 15 | 16 |
17 | {{ Form::text('email', null, array('class' => 'form-control')) }} 18 | @if ($errors->has('email')) 19 | {{ $errors->first('email') }} 20 | @endif 21 |
22 |
23 | 24 |
25 | {{ Form::label('first_name', trans('user.account.form.first_name'), array('class' => 'col-sm-2 control-label')) }} 26 | 27 |
28 | {{ Form::text('first_name', null, array('class' => 'form-control', 'autocomplete' => 'off')) }} 29 | @if ($errors->has('email')) 30 | {{ $errors->first('first_name') }} 31 | @endif 32 |
33 |
34 | 35 |
36 | {{ Form::label('last_name', trans('user.account.form.last_name'), array('class' => 'col-sm-2 control-label')) }} 37 | 38 |
39 | {{ Form::text('last_name', null, array('class' => 'form-control', 'autocomplete' => 'off')) }} 40 | @if ($errors->has('email')) 41 | {{ $errors->first('last_name') }} 42 | @endif 43 |
44 |
45 | 46 |
47 | {{ Form::label('old-password', trans('user.account.form.old-password'), array('class' => 'col-sm-2 control-label')) }} 48 | 49 |
50 | {{ Form::password('old-password', array('class' => 'form-control', 'autocomplete' => 'off')) }} 51 | @if ($errors->has('old-password')) 52 | {{ $errors->first('old-password') }} 53 | @endif 54 |
55 |
56 | 57 |
58 |
59 | 60 |
61 |
62 | {{ Form::close() }} 63 | @stop -------------------------------------------------------------------------------- /app/views/user/login.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.master') 2 | 3 | @section('title') 4 | {{ trans('user.login.title') }} 5 | @stop 6 | 7 | @section('content') 8 |

{{ trans('user.login.headline') }}

9 | 10 | {{ Form::model(null, array('route' => 'user.do-login', 'class' => 'form-horizontal')) }} 11 | {{ Form::token() }} 12 | 13 |
14 | {{ Form::label('email', trans('user.login.form.email'), array('class' => 'col-sm-2 control-label')) }} 15 | 16 |
17 | {{ Form::text('email', null, array('class' => 'form-control')) }} 18 | @if ($errors->has('email')) 19 | {{ $errors->first('email') }} 20 | @endif 21 |
22 |
23 | 24 |
25 | {{ Form::label('password', trans('user.login.form.password'), array('class' => 'col-sm-2 control-label')) }} 26 | 27 |
28 | {{ Form::password('password', array('class' => 'form-control')) }} 29 | @if ($errors->has('email')) 30 | {{ $errors->first('email') }} 31 | @endif 32 |
33 |
34 | 35 |
36 |
37 | 40 |
41 |
42 | 43 |
44 |
45 | 46 |
47 |
48 | {{ Form::close() }} 49 | @stop -------------------------------------------------------------------------------- /app/views/user/register.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.master') 2 | 3 | @section('title') 4 | {{ trans('user.register.title') }} 5 | @stop 6 | 7 | @section('content') 8 |

{{ trans('user.register.headline') }}

9 | 10 |
11 |
12 | {{ Form::model(null, array('route' => 'user.do-register')) }} 13 | {{ Form::token() }} 14 | 15 |
16 | {{ Form::label('email', trans('user.register.form.email')) }} 17 | 18 | {{ Form::text('email', null, array('class' => 'form-control')) }} 19 | @if ($errors->has('email')) 20 | {{ $errors->first('email') }} 21 | @endif 22 |
23 | 24 |
25 | {{ Form::label('password', trans('user.register.form.password')) }} 26 | 27 | {{ Form::password('password', array('class' => 'form-control')) }} 28 | @if ($errors->has('password')) 29 | {{ $errors->first('password') }} 30 | @endif 31 |
32 | 33 |
34 | {{ Form::label('password_repeat', trans('user.register.form.password_repeat')) }} 35 | 36 | {{ Form::password('password_repeat', array('class' => 'form-control')) }} 37 | @if ($errors->has('password_repeat')) 38 | {{ $errors->first('password_repeat') }} 39 | @endif 40 |
41 | 42 |
43 | 44 |
45 | {{ Form::close() }} 46 |
47 | 48 |
49 | 54 |
55 |
56 | @stop -------------------------------------------------------------------------------- /app/views/user/social.blade.php: -------------------------------------------------------------------------------- 1 | @extends('layouts.master') 2 | 3 | @section('title') 4 | {{ trans('user.social.title') }} 5 | @stop 6 | 7 | @section('content') 8 |

{{ trans('user.social.headline') }}

9 | 10 |

11 | {{ trans('user.social.description') }} 12 |

13 | 14 | {{ Form::open() }} 15 | {{ Form::hidden('access_token', $token->getAccessToken()) }} 16 | {{ Form::hidden('refresh_token', $token->getRefreshToken()) }} 17 | {{ Form::hidden('end_of_life_token', $token->getEndOfLife()) }} 18 | 19 |
20 | 21 | @foreach ($emails as $email) 22 |
23 | 26 |
27 | 28 | @endforeach 29 |
30 | 31 |
32 | 33 |
34 | {{ Form::close() }} 35 | @stop -------------------------------------------------------------------------------- /artisan: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env php 2 | setRequestForConsoleEnvironment(); 45 | 46 | $artisan = Illuminate\Console\Application::start($app); 47 | 48 | /* 49 | |-------------------------------------------------------------------------- 50 | | Run The Artisan Application 51 | |-------------------------------------------------------------------------- 52 | | 53 | | When we run the console application, the current CLI command will be 54 | | executed in this console and the response sent back to a terminal 55 | | or another output device for the developers. Here goes nothing! 56 | | 57 | */ 58 | 59 | $status = $artisan->run(); 60 | 61 | /* 62 | |-------------------------------------------------------------------------- 63 | | Shutdown The Application 64 | |-------------------------------------------------------------------------- 65 | | 66 | | Once Artisan has finished running. We will fire off the shutdown events 67 | | so that any final work may be done by the application before we shut 68 | | down the process. This is the last thing to happen to the request. 69 | | 70 | */ 71 | 72 | $app->shutdown(); 73 | 74 | exit($status); -------------------------------------------------------------------------------- /bootstrap/autoload.php: -------------------------------------------------------------------------------- 1 | __DIR__.'/../app', 17 | 18 | /* 19 | |-------------------------------------------------------------------------- 20 | | Public Path 21 | |-------------------------------------------------------------------------- 22 | | 23 | | The public path contains the assets for your web application, such as 24 | | your JavaScript and CSS files, and also contains the primary entry 25 | | point for web requests into these applications from the outside. 26 | | 27 | */ 28 | 29 | 'public' => __DIR__.'/../public', 30 | 31 | /* 32 | |-------------------------------------------------------------------------- 33 | | Base Path 34 | |-------------------------------------------------------------------------- 35 | | 36 | | The base path is the root of the Laravel installation. Most likely you 37 | | will not need to change this value. But, if for some wild reason it 38 | | is necessary you will do so here, just proceed with some caution. 39 | | 40 | */ 41 | 42 | 'base' => __DIR__.'/..', 43 | 44 | /* 45 | |-------------------------------------------------------------------------- 46 | | Storage Path 47 | |-------------------------------------------------------------------------- 48 | | 49 | | The storage path is used by Laravel to store cached Blade views, logs 50 | | and other pieces of information. You may modify the path here when 51 | | you want to change the location of this directory for your apps. 52 | | 53 | */ 54 | 55 | 'storage' => __DIR__.'/../app/storage', 56 | 57 | ); 58 | -------------------------------------------------------------------------------- /bootstrap/start.php: -------------------------------------------------------------------------------- 1 | detectEnvironment(function() { 28 | if (isset($_SERVER['APPLICATION_ENV'])) 29 | return $_SERVER['APPLICATION_ENV']; 30 | else 31 | return 'development'; 32 | }); 33 | 34 | /* 35 | |-------------------------------------------------------------------------- 36 | | Bind Paths 37 | |-------------------------------------------------------------------------- 38 | | 39 | | Here we are binding the paths configured in paths.php to the app. You 40 | | should not be changing these here. If you need to change these you 41 | | may do so within the paths.php file and they will be bound here. 42 | | 43 | */ 44 | 45 | $app->bindInstallPaths(require __DIR__.'/paths.php'); 46 | 47 | /* 48 | |-------------------------------------------------------------------------- 49 | | Load The Application 50 | |-------------------------------------------------------------------------- 51 | | 52 | | Here we will load this Illuminate application. We will keep this in a 53 | | separate location so we can isolate the creation of an application 54 | | from the actual running of the application with a given request. 55 | | 56 | */ 57 | 58 | $framework = $app['path.base'].'/vendor/laravel/framework/src'; 59 | 60 | require $framework.'/Illuminate/Foundation/start.php'; 61 | 62 | /* 63 | |-------------------------------------------------------------------------- 64 | | Return The Application 65 | |-------------------------------------------------------------------------- 66 | | 67 | | This script returns the application instance. The instance is given to 68 | | the calling script so we can separate the building of the instances 69 | | from the actual running of the application and sending responses. 70 | | 71 | */ 72 | 73 | return $app; 74 | -------------------------------------------------------------------------------- /bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ping", 3 | "version": "0.1.0", 4 | "authors": [ 5 | "Tim Helfensdörfer " 6 | ], 7 | "description": "", 8 | "main": "public/index.php", 9 | "license": "MIT", 10 | "homepage": "https://github.com/t-visualappeal/ping", 11 | "private": true, 12 | "ignore": [ 13 | "**/.*", 14 | "node_modules", 15 | "bower_components", 16 | "public/js/vendor", 17 | "test", 18 | "tests" 19 | ], 20 | "dependencies": { 21 | "bootstrap": "3.0.*", 22 | "highcharts.com": "3.0.*" 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "visualappeal/ping", 3 | "description": "Website uptime monitor.", 4 | "keywords": ["ping", "uptime", "monitor"], 5 | "license": "MIT", 6 | "require": { 7 | "laravel/framework": "4.2.*", 8 | "cartalyst/sentry": "2.1.*", 9 | "rmccue/requests": "1.8.*", 10 | "artdarek/oauth-4-laravel": "1.0.*" 11 | }, 12 | "autoload": { 13 | "classmap": [ 14 | "app/commands", 15 | "app/controllers", 16 | "app/jobs", 17 | "app/models", 18 | "app/database/migrations", 19 | "app/database/seeds", 20 | "app/tests/TestCase.php" 21 | ] 22 | }, 23 | "scripts": { 24 | "post-install-cmd": [ 25 | "php artisan optimize", 26 | "npm install", 27 | "./node_modules/.bin/bower install" 28 | ], 29 | "post-update-cmd": [ 30 | "php artisan clear-compiled", 31 | "php artisan optimize", 32 | "npm update", 33 | "./node_modules/.bin/bower update" 34 | ], 35 | "post-create-project-cmd": [ 36 | "php artisan key:generate" 37 | ] 38 | }, 39 | "config": { 40 | "preferred-install": "dist" 41 | }, 42 | "minimum-stability": "stable" 43 | } 44 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ping", 3 | "version": "0.1.0", 4 | "description": "Website status check", 5 | "main": "public/index.php", 6 | "scripts": {}, 7 | "author": "Tim Helfensdörfer ", 8 | "license": "MIT", 9 | "dependencies": { 10 | "grunt": "0.4.*", 11 | "grunt-chmod": "1.0.*", 12 | "grunt-contrib-less": "1.0.*", 13 | "grunt-contrib-uglify": "0.7.*", 14 | "grunt-shell": "1.1.*", 15 | "bower": "1.3.*" 16 | }, 17 | "private": true 18 | } 19 | -------------------------------------------------------------------------------- /phpunit.xml: -------------------------------------------------------------------------------- 1 | 2 | 13 | 14 | 15 | ./app/tests/ 16 | 17 | 18 | -------------------------------------------------------------------------------- /public/.htaccess: -------------------------------------------------------------------------------- 1 | 2 | 3 | Options -MultiViews 4 | 5 | 6 | RewriteEngine On 7 | 8 | # Redirect Trailing Slashes... 9 | RewriteRule ^(.*)/$ /$1 [L,R=301] 10 | 11 | # Handle Front Controller... 12 | RewriteCond %{REQUEST_FILENAME} !-d 13 | RewriteCond %{REQUEST_FILENAME} !-f 14 | RewriteRule ^ index.php [L] 15 | 16 | -------------------------------------------------------------------------------- /public/css/.gitignore: -------------------------------------------------------------------------------- 1 | *.min.css 2 | -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VisualAppeal/ping-laravel/270bf48d9b36fa6d802daf36383c884e1c9b6b1c/public/favicon.ico -------------------------------------------------------------------------------- /public/index.php: -------------------------------------------------------------------------------- 1 | 7 | */ 8 | 9 | /* 10 | |-------------------------------------------------------------------------- 11 | | Register The Auto Loader 12 | |-------------------------------------------------------------------------- 13 | | 14 | | Composer provides a convenient, automatically generated class loader 15 | | for our application. We just need to utilize it! We'll require it 16 | | into the script here so that we do not have to worry about the 17 | | loading of any our classes "manually". Feels great to relax. 18 | | 19 | */ 20 | 21 | require __DIR__.'/../bootstrap/autoload.php'; 22 | 23 | /* 24 | |-------------------------------------------------------------------------- 25 | | Turn On The Lights 26 | |-------------------------------------------------------------------------- 27 | | 28 | | We need to illuminate PHP development, so let's turn on the lights. 29 | | This bootstraps the framework and gets it ready for use, then it 30 | | will load up this application so that we can run it and send 31 | | the responses back to the browser and delight these users. 32 | | 33 | */ 34 | 35 | $app = require_once __DIR__.'/../bootstrap/start.php'; 36 | 37 | /* 38 | |-------------------------------------------------------------------------- 39 | | Run The Application 40 | |-------------------------------------------------------------------------- 41 | | 42 | | Once we have the application, we can simply call the run method, 43 | | which will execute the request and send the response back to 44 | | the client's browser allowing them to enjoy the creative 45 | | and wonderful application we have whipped up for them. 46 | | 47 | */ 48 | 49 | $app->run(); 50 | -------------------------------------------------------------------------------- /public/js/.gitignore: -------------------------------------------------------------------------------- 1 | *.min.* 2 | -------------------------------------------------------------------------------- /public/js/main.js: -------------------------------------------------------------------------------- 1 | var locale = { 2 | de: { 3 | decimalPoint: ',', 4 | months: [ 5 | 'Januar', 6 | 'Feburar', 7 | 'März', 8 | 'April', 9 | 'Mai', 10 | 'Juni', 11 | 'Juli', 12 | 'August', 13 | 'September', 14 | 'Oktober', 15 | 'November', 16 | 'Dezember', 17 | ], 18 | shortMonths: [ 19 | 'Jan', 20 | 'Feb', 21 | 'Mär', 22 | 'Apr', 23 | 'Mai', 24 | 'Jun', 25 | 'Jul', 26 | 'Aug', 27 | 'Sep', 28 | 'Okt', 29 | 'Nov', 30 | 'Dez', 31 | ], 32 | thousandsSep: '.', 33 | weekdays: [ 34 | 'Sonntag', 35 | 'Montag', 36 | 'Dienstag', 37 | 'Mittwoch', 38 | 'Donnerstag', 39 | 'Freitag', 40 | 'Samstag' 41 | ], 42 | rangeFrom: 'Vom', 43 | rangeTo: 'Bis' 44 | }, 45 | en: { 46 | decimalPoint: '.', 47 | months: [ 48 | 'January', 49 | 'February', 50 | 'March', 51 | 'April', 52 | 'May', 53 | 'June', 54 | 'July', 55 | 'August', 56 | 'September', 57 | 'October', 58 | 'November', 59 | 'December' 60 | ], 61 | shortMonths: [ 62 | 'Jan', 63 | 'Feb', 64 | 'Mar', 65 | 'Apr', 66 | 'May', 67 | 'Jun', 68 | 'Jul', 69 | 'Aug', 70 | 'Sep', 71 | 'Oct', 72 | 'Nov', 73 | 'Dec' 74 | ], 75 | thousandsSep: ',', 76 | weekdays: [ 77 | 'Sunday', 78 | 'Monday', 79 | 'Tuesday', 80 | 'Wednesday', 81 | 'Thursday', 82 | 'Friday', 83 | 'Saturday' 84 | ], 85 | rangeFrom: 'From', 86 | rangeTo: 'To' 87 | } 88 | }; 89 | 90 | var App = { 91 | locale: 'de', 92 | getLocale: function(type) { 93 | if (typeof locale[this.locale][type] != 'undefined') { 94 | return locale[this.locale][type]; 95 | } else { 96 | return locale['en'][type]; 97 | } 98 | }, 99 | getMonthNames: function() { 100 | return this.getLocale('months'); 101 | }, 102 | getShortMonthNames: function() { 103 | return this.getLocale('shortMonths'); 104 | }, 105 | getDecimalPoint: function() { 106 | return this.getLocale('decimalPoint'); 107 | }, 108 | getThousandsSep: function() { 109 | return this.getLocale('thousandsSep'); 110 | }, 111 | getWeekdays: function() { 112 | return this.getLocale('weekdays'); 113 | }, 114 | getRangeSelectorFrom: function() { 115 | return this.getLocale('rangeFrom'); 116 | }, 117 | getRangeSelectorTo: function() { 118 | return this.getLocale('rangeTo'); 119 | }, 120 | }; 121 | 122 | if (typeof Highcharts != 'undefined') { 123 | var highchartsOptions = { 124 | credits: { 125 | enabled: false 126 | }, 127 | legend: { 128 | enabled: false 129 | }, 130 | title: { 131 | text: null 132 | }, 133 | colors: [ 134 | '#A1CF64', // Green 135 | '#D95C5C', // Red 136 | '#6ECFF5', // Blue 137 | '#564F8A', // Purple 138 | '#F05940', // Orange 139 | '#00B5AD' // Teal 140 | ], 141 | navigator: { 142 | outlineColor: '#dddddd', 143 | outlineWidth: 1, 144 | handles: { 145 | backgroundColor: '#fff', 146 | borderColor: '#999' 147 | } 148 | }, 149 | plotOptions: { 150 | area: { 151 | turboThreshold: 0 152 | } 153 | }, 154 | rangeSelector: { 155 | buttonTheme: { 156 | fill: 'none', 157 | stroke: 'none', 158 | states: { 159 | hover: { 160 | fill: '#eee', 161 | stroke: 'none' 162 | }, 163 | select: { 164 | fill: '#ccc', 165 | stroke: 'none', 166 | } 167 | } 168 | }, 169 | inputBoxBorderColor: '#eee', 170 | inputBoxHeight: 18, 171 | inputDateFormat: '%e. %b %Y', 172 | inputEditDateFormat: '%d.%m.%Y', 173 | labelStyle: { 174 | color: '#111' 175 | } 176 | }, 177 | xAxis: { 178 | lineColor: '#dddddd' 179 | }, 180 | yAxis: { 181 | gridLineColor: '#dddddd' 182 | }, 183 | tooltip: { 184 | shadow: false 185 | } 186 | }; 187 | 188 | Highcharts.setOptions({ 189 | lang: { 190 | rangeSelectorFrom: App.getRangeSelectorFrom(), 191 | rangeSelectorTo: App.getRangeSelectorTo(), 192 | months: App.getMonthNames(), 193 | shortMonths: App.getShortMonthNames(), 194 | decimalPoint: App.getDecimalPoint(), 195 | thousandsSep: App.getThousandsSep(), 196 | weekdays: App.getWeekdays() 197 | } 198 | }); 199 | } 200 | 201 | $(function() { 202 | console.log('Init application...'); 203 | 204 | var $checkUptimeChart = $('#chart-check-uptime'); 205 | var $checkLatencyChart = $('#chart-check-latency'); 206 | 207 | if ($checkUptimeChart.length) { 208 | $.getJSON($checkUptimeChart.data('url'), function(json) { 209 | $checkUptimeChart.highcharts('StockChart', $.extend(true, {}, highchartsOptions, 210 | { 211 | chart: { 212 | zoomType: 'x', 213 | type: 'area' 214 | }, 215 | plotOptions: { 216 | area: { 217 | animation: false, 218 | cropThreshold: 60 * 24 * 31 219 | } 220 | }, 221 | rangeSelector: { 222 | buttons: [{ 223 | type: 'day', 224 | count: 1, 225 | text: '1d' 226 | }, 227 | { 228 | type: 'day', 229 | count: 2, 230 | text: '2d' 231 | }, 232 | { 233 | type: 'week', 234 | count: 1, 235 | text: '1w' 236 | }, 237 | { 238 | type: 'month', 239 | count: 1, 240 | text: '1m' 241 | }], 242 | selected: 2 243 | }, 244 | series: json, 245 | tooltip: { 246 | shared: true, 247 | followPointer: true, 248 | formatter: function() { 249 | var header = Highcharts.dateFormat('%A, %e. %b, %H:%M', this.x) + '
'; 250 | if (this.y == 1) { 251 | return header + 'Online'; 252 | } else { 253 | return header + 'Offline'; 254 | } 255 | } 256 | }, 257 | xAxis: { 258 | type: 'datetime', 259 | minRange: 3600 * 1000, 260 | title: { 261 | text: null 262 | } 263 | }, 264 | yAxis: { 265 | labels: { 266 | enabled: false 267 | }, 268 | title: { 269 | text: null 270 | } 271 | } 272 | } 273 | )); 274 | }); 275 | } 276 | 277 | if ($checkLatencyChart.length) { 278 | $.getJSON($checkLatencyChart.data('url'), function(json) { 279 | $checkLatencyChart.highcharts('StockChart', $.extend(true, {}, highchartsOptions, 280 | { 281 | chart: { 282 | zoomType: 'x', 283 | type: 'area' 284 | }, 285 | plotOptions: { 286 | area: { 287 | animation: false, 288 | cropThreshold: 60 * 24 * 7 289 | } 290 | }, 291 | rangeSelector: { 292 | buttons: [{ 293 | type: 'day', 294 | count: 1, 295 | text: '1d' 296 | }, 297 | { 298 | type: 'day', 299 | count: 2, 300 | text: '2d' 301 | }, 302 | { 303 | type: 'week', 304 | count: 1, 305 | text: '1w' 306 | }], 307 | selected: 0 308 | }, 309 | series: json, 310 | tooltip: { 311 | shared: true, 312 | followPointer: true, 313 | formatter: function() { 314 | return Highcharts.dateFormat('%A, %e. %b, %H:%M', this.x) + '
' + '' + this.y + ' ' + $checkLatencyChart.data('seconds') + ''; 315 | } 316 | }, 317 | xAxis: { 318 | type: 'datetime', 319 | minRange: 3600 * 1000, 320 | title: { 321 | text: null 322 | } 323 | }, 324 | yAxis: { 325 | title: { 326 | text: null 327 | } 328 | } 329 | } 330 | )); 331 | }); 332 | } 333 | }); -------------------------------------------------------------------------------- /public/less/main.less: -------------------------------------------------------------------------------- 1 | body { 2 | color: #444; 3 | } 4 | 5 | header { 6 | nav.navbar { 7 | border: none; 8 | border-radius: 0; 9 | } 10 | } 11 | 12 | footer { 13 | margin-top: 20px; 14 | color: #999; 15 | 16 | a { 17 | color: #666; 18 | 19 | &:hover { 20 | color: #333; 21 | } 22 | } 23 | } -------------------------------------------------------------------------------- /public/packages/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/VisualAppeal/ping-laravel/270bf48d9b36fa6d802daf36383c884e1c9b6b1c/public/packages/.gitkeep -------------------------------------------------------------------------------- /public/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Disallow: -------------------------------------------------------------------------------- /queue.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | cd /var/www/computersciencegenius.com/subdomains/ping; 4 | php artisan queue:listen 5 | -------------------------------------------------------------------------------- /server.php: -------------------------------------------------------------------------------- 1 |